Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-08-02

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:50 vendethiel joined #perl6-dev
01:52 ilbot3 joined #perl6-dev
01:52 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
02:55 japhb buggable: speed
02:55 buggable japhb, ?????????????????????????????????????????????????? data for 2017-07-12–2017-08-01; range: 4.025s–4.960s; 2% slower
03:40 Geth ¦ rakudo/nom: 01dbd874ee | (Nick Logan)++ (committed using GitHub Web editor) | src/core/Version.pm
03:40 Geth ¦ rakudo/nom: Improve Version smart match with different lengths (#1118)
03:40 Geth ¦ rakudo/nom:
03:40 Geth ¦ rakudo/nom: If RHS has more version parts than LHS then pad LHS with `.0` until both versions have a similar number of parts. If the RHS is longer, continue with the current behavior of padding with `.*`.
03:40 Geth ¦ rakudo/nom: e.g. `say v6 ~~ v6c` is now False.
03:40 Geth ¦ rakudo/nom:
03:40 Geth ¦ rakudo/nom: Fixes `perl6 -e 'use Test:ver(v6.c.1.2.3);'` (...in that it now fails instead of loading a `v6.c`)
03:40 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/01dbd874ee
04:16 pduh joined #perl6-dev
04:16 pduh left #perl6-dev
07:53 astj joined #perl6-dev
08:01 Geth ¦ roast/Altai-man-patch-1: 54415941e4 | Altai-man++ (committed using GitHub Web editor) | S09-subscript/slice.t
08:01 Geth ¦ roast/Altai-man-patch-1: Test for #131827
08:01 Geth ¦ roast/Altai-man-patch-1:
08:01 Geth ¦ roast/Altai-man-patch-1: Lizmat++ for the actual bugfix. Closes https://rt.perl.org/Public/Bug/Display.html?id=131827
08:01 Geth ¦ roast/Altai-man-patch-1: review: https://github.com/perl6/roast/commit/54415941e4
08:01 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131827
08:02 Geth ¦ roast: Altai-man++ created pull request #292: Test for #131827
08:02 Geth ¦ roast: review: https://github.com/perl6/roast/pull/292
08:02 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131827
08:03 astj joined #perl6-dev
08:17 vendethiel joined #perl6-dev
08:37 https_GK1wmSU joined #perl6-dev
08:38 [Tux] This is Rakudo version 2017.07-116-g01dbd874e built on MoarVM version 2017.07-266-ged84a632
08:38 [Tux] csv-ip5xs        2.559
08:38 [Tux] test            12.362
08:38 [Tux] test-t           4.152 - 4.242
08:38 [Tux] csv-parser      12.996
08:40 https_GK1wmSU left #perl6-dev
09:29 dogbert17 joined #perl6-dev
09:35 AlexDani` joined #perl6-dev
09:56 Geth ¦ roast: 6da51968d3 | Altai-man++ (committed by Zoffix Znet) | S09-subscript/slice.t
09:56 Geth ¦ roast: Test for #131827 (#292)
09:56 Geth ¦ roast:
09:56 Geth ¦ roast: Lizmat++ for the actual bugfix. Closes https://rt.perl.org/Public/Bug/Display.html?id=131827
09:56 Geth ¦ roast: review: https://github.com/perl6/roast/commit/6da51968d3
09:56 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131827
10:00 buggable joined #perl6-dev
10:04 Geth ¦ roast: fe8754b9ee | (Zoffix Znet)++ (committed using GitHub Web editor) | S09-subscript/slice.t
10:04 Geth ¦ roast: Fix test description
10:04 Geth ¦ roast: review: https://github.com/perl6/roast/commit/fe8754b9ee
10:14 AlexDani` after reading https://github.com/perl6/doc/issues/1428 I have this question
10:14 AlexDaniel why does this leak memory? say (1…?).map(*+2).grep(* < 0)[^10]
10:15 AlexDaniel and, can somebody confirm it?
10:16 jnthn Indexing calls .cache
10:17 jnthn But that shouldn't account for lunch
10:17 jnthn uh, for much
10:17 jnthn hah
10:17 AlexDaniel (^?) does not leak, but (1…?) does
10:31 Zoffix AlexDaniel: yeah, confirmed; leaks about 5MB per second
10:31 Zoffix perl6 -e 'loop { $ = (1...?).map(*+2).grep(* < 0)[^10] }' # leaks
10:31 Zoffix perl6 -e 'loop { $ = (1..?).map(*+2).grep(* < 0)[^10] }' # doesn't
10:32 AlexDaniel what's the point of that loop there?
10:33 Zoffix Oh, well then there's no leaking hehe
10:33 Zoffix It just never finishes
10:34 AlexDaniel well, that's the point? All of the values are thrown away, so yes, it doesn't finish but it shouldn't take more memory as it goes
10:35 AlexDaniel at least, that's what I expected
10:35 jnthn Note that the bigints are getting bigger
10:35 jnthn Dunno if that's where it comes from
10:36 AlexDaniel I don't think it's *so* fast
10:37 Zoffix s: (1...?), 'iterator', \()
10:37 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/01dbd87/src/core/Seq.pm#L50
10:38 Zoffix s: (1...?).iterator, 'pull-one', \()
10:38 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/01dbd87/src/core/Iterable.pm#L96
10:39 Zoffix s: &SEQUENCE
10:39 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/01dbd87/src/core/operators.pm#L112
10:41 Zoffix AlexDaniel: dunno, something with continuations? Range.iterator just has a custom Iterator, while sequence operator uses gather/take, and this "leaks" too:   perl6 -e 'gather { loop { take 1 } }.map(*+2).grep(* < 0).head: 10'
10:42 AlexDaniel not sure why leaks is in quotes, that's some actual leakage there :)
10:42 Zoffix OK
10:43 Zoffix Doesn't leak without map, strangely
10:43 AlexDaniel hmmmmmm
10:44 Zoffix Or even without WhateverCode in map
10:45 Zoffix perl6 -e 'gather { loop { take 1 } }.map( * + 2).grep(* < 0).head: 10' # leaks
10:45 Zoffix perl6 -e 'gather { loop { take 1 } }.map({$_+2}).grep(* < 0).head: 10' # doesn't
10:47 lizmat m: dd (* + 2).signature
10:47 camelia rakudo-moar 01dbd8: OUTPUT: «{ ... }?»
10:48 lizmat m: dd { $_ + 2 }.signature
10:48 camelia rakudo-moar 01dbd8: OUTPUT: «:(;; $_? is raw)?»
10:48 lizmat that seems a weird sig for the WhateverCode?
10:49 Zoffix m: dd ((* + 2)).signature
10:49 camelia rakudo-moar 01dbd8: OUTPUT: «:(;; $whatevercode_arg_1 is raw)?»
10:49 jnthn It curries the .signature :)
10:50 jnthn m: say (* + 2).signature.WHAT
10:50 camelia rakudo-moar 01dbd8: OUTPUT: «(WhateverCode)?»
10:50 jnthn :)
10:50 lizmat ah, duh
10:51 lizmat ok, the difference in signature is that optionalness of the {$_} case
10:52 Zoffix perl6 -e 'gather { loop { take 1 } }.map(-> $_ is raw {$_+2}).grep(* < 0).head: 10' # doesn't leak
11:00 AlexDaniel ok, RT #131829
11:00 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131829
11:56 AlexDaniel joined #perl6-dev
11:56 vendethiel joined #perl6-dev
12:17 AlexDaniel joined #perl6-dev
12:41 AlexDaniel joined #perl6-dev
12:41 lizmat I'm thinking of adding a 'method increasing(--> False) { }' to Iterator
12:41 lizmat allowing an iterator to override it with --> True, to indicate that the iterator is guaranteed to produce increasing values
12:42 jnthn o.O
12:42 jnthn What for, ooc?
12:42 lizmat Which would be True for Range.iterator
12:42 lizmat if an iterator is used to create a slice
12:42 lizmat it would remove the need to cache
12:42 AlexDaniel joined #perl6-dev
12:43 jnthn Except the .cache is actually done by AT-POS
12:43 lizmat well, it wouldn't have to use AT-POS in some situations, is my point
12:44 jnthn I'm not sure making .[...] have unpredictable caching semantics is wise though
12:44 lizmat I have a patch that would make @a[1,2,3] about 6x faster
12:44 lizmat but it creates a MMD hell
12:45 lizmat and while making it, I realised we have still quite a few bugs in that area
12:45 jnthn I'd rather see some method like head/tail but with indices that you promise are ascending
12:45 jnthn The calling of .cache ain't a bug though
12:45 jnthn It's just how .[...] is designed
12:45 lizmat I'm not saying it's a bug
12:46 lizmat I'm just saying that in case of 1...Inf[^10]  it's not needed
12:47 lizmat in any case, I'm considering a hash_slice/array_slice overhauil
12:49 lizmat fixing things like:
12:49 lizmat m: dd ("a".."z")[(1,2,3),4,5]
12:49 camelia rakudo-moar 01dbd8: OUTPUT: «(("b", "c", "d"), "e", "f")?»
12:49 lizmat versus:
12:49 lizmat m: dd ("a".."z")[(1,2,3),4,5]:p
12:49 camelia rakudo-moar 01dbd8: OUTPUT: «(4 => "e", 5 => "f")?»
12:49 jnthn *nod*
12:49 jnthn Note that at the moment is one of the worst times to do any performance measurement fwiw
12:50 lizmat well, pretty sure it won't be merge ready until way after the TPCiA
12:50 jnthn :)
12:50 jnthn Fair enough
12:50 jnthn Not saying that as a reason not to work on it
12:50 jnthn Just noting that any measurements you do right now might not hold up in a week or so's time
12:50 lizmat yeah, got ya  :-)
12:53 jnthn Actually array/hash indexing was one of the cases I had in mind wiht the spesh redesign
12:53 jnthn In that AT-POS and friends tend to be stable in their first 2 args but not their third
12:54 jnthn Now we'll typically have the data to see that
12:54 jnthn And with some work that's yet to some, be able to specialize only on the first 2
12:54 jnthn *yet to come
12:55 jnthn Which means in real-world code that indexes lots of different types of thing we should be able to spend more time in spesh'd/JITted code
12:56 lizmat wouldn't a similar thing apply to time spent in pull-one or push-all ?
12:57 jnthn The .push called by push-all for sure
12:57 jnthn pull-one and push-all don't have much variance in their arguments
12:58 jnthn But they do of course have a good bit internally
12:58 jnthn And yeah, we should have more samples now
12:58 jnthn So can hopefully get less deopts
12:58 lizmat cool
12:59 lizmat hopefully the bug that needs extra scopes in Any-iterable will be gone as well  :-)
13:01 Geth_ joined #perl6-dev
13:03 cog_ joined #perl6-dev
13:35 Geth ¦ rakudo/nom: 5f68c77527 | (Elizabeth Mattijsen)++ | src/core/Any-iterable-methods.pm
13:35 Geth ¦ rakudo/nom: Remove extra scopes
13:35 Geth ¦ rakudo/nom:
13:35 Geth ¦ rakudo/nom: They do not appear to be necessary anymore.  And in light of the work
13:35 Geth ¦ rakudo/nom: jnthn++ is doing atm, it would seem a good time to get rid of them.
13:35 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5f68c77527
13:45 astj joined #perl6-dev
14:30 Geth ¦ rakudo/nom: 3c797b05fd | (Elizabeth Mattijsen)++ | src/core/array_slice.pm
14:30 Geth ¦ rakudo/nom: Revert "Add missing deconts, spotted by sena_kun++"
14:30 Geth ¦ rakudo/nom:
14:30 Geth ¦ rakudo/nom: This reverts commit 59ba9c025eb95b33817fe60fb4bb600bb57d80db.
14:30 Geth ¦ rakudo/nom:
14:30 Geth ¦ rakudo/nom: Fixes RT #131830
14:30 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3c797b05fd
14:30 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131830
14:30 Geth ¦ rakudo/nom: 7599e0c3ff | (Elizabeth Mattijsen)++ | src/core/array_slice.pm
14:30 Geth ¦ rakudo/nom: Revert "Make @a[Range] about 3x faster"
14:30 Geth ¦ rakudo/nom:
14:30 Geth ¦ rakudo/nom: This reverts commit a256c26d850c0e5ff986a6dfa1b1ef1ffaf55f40.
14:30 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7599e0c3ff
14:30 lizmat hmmm... one revert too many
14:30 lizmat ah, no, just right  :-)
14:32 Zoffix lizmat: how come that commit caused the issue? It added the Range candidate but the issue says it's the `:(\SELF, int $pos)` candidate that's conflicting?
14:32 Zoffix I mean, according to the commitable bot that commit does indeed causes the bug, but why :\
14:34 lizmat I have no idea
14:34 lizmat but since I'm rethinking the whole slicing business
14:35 Zoffix lizmat: Ah... my good guess would be the `:D` on SELF
14:35 lizmat and it produced an issua at a distance, I rather revert since it is a performance thing only that should not affect anything else
14:35 Zoffix Other candidates don't got it, so it makes it more narrower
14:35 lizmat well, then we actually have a bigger issue, cause the other candidates should probably have it
14:35 Zoffix Well, maybe :\
14:36 Zoffix I mean maybe my hypothesis.. There's no :D on other candidates, but at the same time, the error complains about `int` candidate, not Range.
14:36 lizmat this is a. one of the oldest parts of rakudo, and b. the first big thing I did in Rakudo
14:36 lizmat a lot has happened since  :-)
14:39 Zoffix m: use NativeCall; multi foo (List:D \SELF, Range:D \range, *%_) {}; multi foo (\SELF, int $pos) {}; multi foo (NativeCall::Types::CArray:D \array, $pos) {}; foo CArray[Str].new, my int $ = 1
14:39 camelia rakudo-moar 5f68c7: ( no output )
14:39 * Zoffix shrugs
14:39 Zoffix Oh well, a puzzle for another day.
14:59 mspo joined #perl6-dev
15:00 mspo would you guys be open to replacing the perl6 shell script with a c program?
15:00 mspo so it works on bsd/osx?
15:02 lizmat fwiw, in principle I wouldn't mind, but I'm not sure I'm qualified to judge that
15:04 mspo I wrote one (although I'm a bad c programming) https://gist.github.com/msporleder/62d5bbd5dda6dd23d81d83730e8c77de
15:05 mspo seems to work locally.  The libpath stuff would need to be generated at compile time via some method so it had the PREFIX
15:05 jnthn A more ideal solution would be to have it just embed moar rather than shelling out to it, though admittedly that's more work :)
15:06 jnthn But yeah, in principle, I'm happy with something like this happening
15:07 mspo jnthn: if moar itself had a if (argv[0] == "perl6") { behave-like-perl6(); } it might also work via a link
15:08 jnthn mspo: That's a less good way to do it :)
15:08 mspo jnthn: okay
15:09 mspo anyway small steps before something more ambitious like embedding moar
15:12 vendethiel joined #perl6-dev
15:16 Zoffix FWIW MSVC MoarVM tries to support will complain about those variables declared after statements
15:17 ilmari .oO( -Werror=declaration-after-statement )
15:17 timotimo yes
15:18 vendethiel- joined #perl6-dev
15:25 Geth ¦ rakudo: Altai-man++ created pull request #1127: Tests for RT #131830
15:25 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1127
15:25 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131830
15:27 AlexDaniel joined #perl6-dev
15:27 ilmari huh, that redirects to …/issues/1127, which 404s
15:27 Geth ¦ rakudo/nom: 6cc858a0e6 | Altai-man++ (committed using GitHub Web editor) | t/04-nativecall/05-arrays.t
15:27 Geth ¦ rakudo/nom: Tests for RT #131830
15:27 Geth ¦ rakudo/nom:
15:27 Geth ¦ rakudo/nom: Closes https://rt.perl.org/Public/Bug/Display.html?id=131830
15:27 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6cc858a0e6
15:27 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131830
15:27 Geth ¦ rakudo/nom: c43ba0d01b | (Zoffix Znet)++ (committed using GitHub Web editor) | t/04-nativecall/05-arrays.t
15:27 Geth ¦ rakudo/nom: Merge pull request #1127 from Altai-man/patch-1
15:27 Geth ¦ rakudo/nom:
15:27 Geth ¦ rakudo/nom: Tests for RT #131830
15:27 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131830
15:27 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c43ba0d01b
15:29 Zoffix ilmari: weird. Link works fine for me.
15:30 Zoffix Maybe a race between webhook generating stuff and links to PR working
15:31 ilmari yeah, it worked after a moment
15:35 ugexe Zoffix: they are trying to install to a custom location but refuse to set PERL6LIB. each time I point it out they say they understand but don't do anything to suggest they do, or complain that zef does not automatically set such env vars (instead of his packaging script)
15:36 ugexe the error could be better yeah, probably that way because of how CU::RR.run-script invokes scripts now (via require $some-path)
15:49 robertle joined #perl6-dev
17:15 astj joined #perl6-dev
17:32 astj joined #perl6-dev
18:06 mspo what writes that perl6 shell script?
18:06 mspo if I wanted to try and do a PR with the wrapper program instead
18:14 Zoffix mspo: something in CompUnit* modules. Try grepping for parts of its code
18:24 ugexe there has to be a perl6 entry point, so that would prevent the ability to precompile bin scripts (which we dont do yet either)
18:26 mspo ugexe: you mean compile a standalone binary?
18:26 mspo ugexe: I'm trying to replace perl6.sh with perl6.c, but it's basically the exact same thing
18:27 ugexe i mean precompile them like modules
18:28 ugexe I put my bin scripts in Foo::CLI and inside bin/script is just `use Foo::CLI` (so it gets precompiled)
18:28 ugexe the wrapper does something similar now, `require $some-path-to-script;`
18:29 ugexe but you can't just launch a precompiled script, it needs a perl6 entry point
18:30 ugexe additionally it needs to know how to parse versions/auths/apis etc like CompUnit::Repository, because it has to be able to handle multiple versions of the same distribution being installed
18:31 mspo are we talking about the same thing?  Mine just looks like this: exec /usr/pkg/bin/moar  --execname="$0" --libpath="/usr/pkg/share/nqp/lib" --libpath="/usr/pkg/share/nqp/lib" --libpath="/usr/pkg/share/perl6/lib" --libpath="/usr/pkg/share/perl6/runtime" /usr/pkg/share/perl6/runtime/perl6.moarvm "$@"
18:32 ugexe oh not the wrappers it creates for modules... gotcha
18:32 mspo ugexe: I'm talking about the thing you put in #!
18:36 AlexDaniel joined #perl6-dev
20:40 jnthn A while back I think we had to comment out (or similar) some native candidates because of a spesh bug. There's a chance it was what I just fixed in https://github.com/MoarVM/MoarVM/commit/3f33a8419b
20:49 https_GK1wmSU joined #perl6-dev
20:50 Zoffix RT#131306
20:50 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131306
20:51 Zoffix with kludges existing in https://github.com/rakudo/rakudo/blob/nom/src/core/Int.pm#L400-L413
20:51 https_GK1wmSU left #perl6-dev
20:57 lizmat sub a(Any:U $a) { say nqp::isconcrete($a) }     # can that ever say 1 ??   Don't think so, right ?
21:02 Zoffix That's my understanding of it, yeah
21:19 Geth ¦ rakudo/nom: 84d052a012 | (Elizabeth Mattijsen)++ | src/core/Any.pm
21:19 Geth ¦ rakudo/nom: Simplify Hash creation for auto-vivification
21:19 Geth ¦ rakudo/nom:
21:19 Geth ¦ rakudo/nom: Also add comment to remember that the isconcrete check is necessary
21:19 Geth ¦ rakudo/nom: even though the signature has a :U
21:19 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/84d052a012
21:25 Zoffix :)
21:45 Geth ¦ rakudo/nom: e86bdfca41 | (Elizabeth Mattijsen)++ | src/core/Perl.pm
21:45 Geth ¦ rakudo/nom: Remove a 3-year old hack
21:45 Geth ¦ rakudo/nom:
21:45 Geth ¦ rakudo/nom: Pretty sure this is not needed anywhere anyhow.  Removal did *not*
21:45 Geth ¦ rakudo/nom: cause any spectest to fail.
21:45 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e86bdfca41
21:46 lizmat and that concludes my hacking for today&
22:24 jsimonet joined #perl6-dev
22:29 Geth ¦ rakudo: MasterDuke17++ created pull request #1128: Remove kludge for RT131306
22:29 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1128
22:29 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131306
22:33 https_GK1wmSU joined #perl6-dev
22:34 https_GK1wmSU left #perl6-dev
23:23 Geth ¦ rakudo/nom: e4802f4a5e | MasterDuke17++ | src/core/Int.pm
23:23 Geth ¦ rakudo/nom: Remove kludge for RT131306
23:23 Geth ¦ rakudo/nom:
23:23 Geth ¦ rakudo/nom: https://irclog.perlgeek.de/perl6-dev/2017-08-02#i_14959534
23:23 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e4802f4a5e
23:23 Geth ¦ rakudo/nom: d9f51da884 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Int.pm
23:23 Geth ¦ rakudo/nom: Merge pull request #1128 from MasterDuke17/remove_kludge_for_RT131306
23:23 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131306
23:23 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131306
23:23 Geth ¦ rakudo/nom:
23:23 Geth ¦ rakudo/nom: Remove kludge for RT131306
23:23 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131306
23:23 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d9f51da884
23:23 Geth joined #perl6-dev
23:28 jnthn About that merge, the fix is at MoarVM HEAD but I'm not sure there was a version bump
23:30 Zoffix There wasn't. The PR test said spectest pased, so I'm guessing some earlier changed fixed the issue.
23:30 Zoffix s/test/text/;
23:30 Zoffix (there *are* tests covering the bug: https://github.com/perl6/roast/commit/c1d62112f3 )
23:31 MasterDuke oops, i was on moarvm HEAD
23:31 Zoffix Ohhh. lol :)
23:31 * Zoffix is too tired to do the bumps and goes to bed
23:31 Zoffix \o

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary