RabidGravy | boom! The last big push before the Weekend! | 06:22 | |
[Tux] | This is Rakudo version 2016.10-78-g8c35481 built on MoarVM version 2016.10-15-g715e39a | 06:54 | |
csv-ip5xs 3.241 | |||
test 14.663 | 06:55 | ||
test-t 6.953 | |||
csv-parser 17.795 | |||
nine | Python is sooo easy and exteremly consistent. Dictionaries (hashes) are objects. So which method gives you the number of elements? Right! None of them! it's len(mydict). There's a get-Method for accessing an element, so surely there's a set, too. Right? Of course not. | 09:13 | |
Method names consisting of multiple words are just pasted together like iteritems or popitem or setdefault, but of course not has_key. That one really needs the underscore. | 09:14 | ||
Speaking of... how do you delete an item? Remove the key? Of course it's pop! Because dicts are really almost exactly like arrays. And of course anyone can guess the difference between pop and popitem immediately. | |||
DrForr | I think we need to stage an intervention. | 09:16 | |
nine | Sorry...porting a performance enhancement to Inline::Python turned out to be a tad harder than it would have to be. | 09:18 | |
tadzik | nine: isn't len(mydict) the same as mydict.__len__()? | 09:19 | |
nine | tadzik: I guess so. I mean it's there, but it's not exactly documented. There's a lot of "should" in "Emulating container types" | 09:26 | |
dalek | ast: beb24a6 | (Athos Ribeiro)++ | S32-list/reduce.t: Add test for reduce with one item (#178) * Closes #62 |
10:02 | |
lizmat | Files=1150, Tests=53692, 210 wallclock secs (12.59 usr 3.57 sys + 1285.99 cusr 120.01 csys = 1422.16 CPU) | 10:44 | |
dalek | kudo/nom: 33eeb32 | lizmat++ | src/core/Regex.pm: Make %h ~~ /foo/ 2x faster, fix @a ~~ /foo/ - make fast internal method using an iterator - make %h case use that with %h.keys.iterator - make @a case use that with @a.iterator This also fixes "a"...* ~~ / z / which was broken with e4dc8b6ed1f9b3b48 1f76b17 | lizmat++ | src/core/Grammar.pm: Streamline argument handling in Grammar - rewrite in nqp ops - don't use defaults in sigs when we don't need them - default case rule TOP better optimizable through literal call - lookup cursor initialization only once |
11:34 | |
lizmat | rakudo/nom: review: github.com/rakudo/rakudo/commit/33eeb32 | 11:35 | |
travis-ci | Rakudo build failed. Elizabeth Mattijsen 'Streamline argument handling in Grammar | 13:28 | |
travis-ci.org/rakudo/rakudo/builds/171376943 github.com/rakudo/rakudo/compare/3...76b17ee37f | |||
buggable | [travis build above] ā Did not recognize some failures. Check results manually. All failures are on JVM only. | ||
viki | java.lang.NullPointerException on install and failing NativeCall tests | 13:30 | |
gfldex | m: sub testy is pure { state $T = ::('Int') }; subset DInt where { state $ = ::('Int') }; my $i = 1; my $start = now; $i ~~ DInt for 1..10000; say now - $start; $start = now; $i ~~ Int for 1..10000; say now - $start; | 13:36 | |
camelia | rakudo-moar 1f76b1: OUTPUTĀ«0.0557100ā¤0.0075574ā¤Ā» | ||
gfldex | m: subset DInt where { $ = ::('Int') }; my $i = 1; my $start = now; $i ~~ DInt for 1..10000; say now - $start; $start = now; $i ~~ Int for 1..10000; say now - $start; | ||
camelia | rakudo-moar 1f76b1: OUTPUTĀ«0.6448545ā¤0.007716ā¤Ā» | ||
gfldex | is this a bug? | ||
i was under the impression that `$` and `state $` are equivalent | 13:38 | ||
m: subset DInt where state $ = ::('Int'); my $i = 1; my $start = now; $i ~~ DInt for 1..10000; say now - $start; $start = now; $i ~~ Int for 1..10000; say now - $start; | |||
camelia | rakudo-moar 1f76b1: OUTPUTĀ«0.0569909ā¤0.00746177ā¤Ā» | ||
viki | QAST::Var(lexical $x :decl(statevar)) for state $x and QAST::Var(lexical $ANON_VAR__1 :decl(statevar)) for $; so I'd say $ is state | 13:41 | |
gfldex | jnthn: is this a case of confused optimiser? | 13:43 | |
viki | m: subset DInt where $ = ::('Int'); my $i = 1; my $start = now; $i ~~ DInt for 1..10000; say now - $start; | ||
camelia | rakudo-moar 1f76b1: OUTPUTĀ«0.6516949ā¤Ā» | ||
viki | That barfs a whole bunch of output on my 2016.10-15-g43dbc96 | ||
Oh, unescaped ' in shell ~_~ | 13:44 | ||
gfldex | we need a better shell :) | ||
viki | The { ++$ } is roughly the same as { ++(state $x) }, but { $ = ::("Int") } is 9x slower than { state $x = ::("Int") }; that's with Optimizer disabled | 13:48 | |
dalek | kudo/nom: 553677f | lizmat++ | src/core/Cursor.pm: Remove no longer used MATCH_SAVE method |
14:00 | |
kudo/nom: e29e476 | lizmat++ | src/core/ (4 files): use nqp::null instead of Nil in tight loops Looks like nqp::until/while optimize better with using a low-level Nil (aka nqp::null) than with a HLL Nil. Since these are usually hot loops, it makes sense to do this small change |
|||
lizmat | viki: building JVM now to check on Grammar fixes failing on JVM: will look at it when I'm back from being afk& | 14:01 | |
DrForr | Oh, reminds me - I'll SMS you folks when I get to Echt; I've got the one rollaboard bag that'll magically explode into 3 :) | 14:03 | |
lizmat: ^ | |||
jnthn | gfldex: If I had to make a guess, I'd say code-gen issue more than optimizer issue | 14:10 | |
travis-ci | Rakudo build failed. Elizabeth Mattijsen 'use nqp::null instead of Nil in tight loops | 14:51 | |
travis-ci.org/rakudo/rakudo/builds/171396383 github.com/rakudo/rakudo/compare/1...9e476efc59 | |||
dalek | kudo/nom: f22f894 | lizmat++ | src/core/Any.pm: Make slice adverb helper sub 2x as fast This should help in frequent accesses like %h<a>:p:exists . |
15:23 | |
timotimo | wow | 15:24 | |
is that only for two adverbs at once? or one or more? or two or more? | 15:25 | ||
[Coke] | lizmat++ | 15:27 | |
lizmat | that's only for when there are more than one | 15:28 | |
if I remember correctly :-) | |||
dalek | kudo/nom: 0dc6f79 | lizmat++ | src/core/Grammar.pm: Only coerce to Capture if there's something to coerce This also appears to fix the breakage on the JVM |
15:55 | |
gfldex | m: my $v where $ = say 'foo'; my $v2 where state $ = say 'bar'; | 16:02 | |
camelia | rakudo-moar f22f89: OUTPUTĀ«fooā¤Ā» | ||
gfldex | is this a bug? | ||
lizmat | m: my $v where $ = say 'foo'; my $v2 where state $ = say 'bar'; INIT say "starting" | 16:04 | |
camelia | rakudo-moar f22f89: OUTPUTĀ«startingā¤fooā¤Ā» | ||
lizmat | weird | 16:05 | |
gfldex | m: my $v = state $ = say 'foo'; say $v | 16:06 | |
camelia | rakudo-moar f22f89: OUTPUTĀ«fooā¤Trueā¤Ā» | ||
gfldex | m: my $v = $ = say 'foo'; say $v | ||
camelia | rakudo-moar f22f89: OUTPUTĀ«fooā¤Trueā¤Ā» | ||
gfldex | seams to need the where clause | ||
viki | seems so | 16:09 | |
travis-ci | Rakudo build failed. Elizabeth Mattijsen 'Make slice adverb helper sub 2x as fast | 16:37 | |
travis-ci.org/rakudo/rakudo/builds/171420722 github.com/rakudo/rakudo/compare/e...2f8941e71c | |||
Rakudo build passed. Elizabeth Mattijsen 'Only coerce to Capture if there's something to coerce | 17:24 | ||
travis-ci.org/rakudo/rakudo/builds/171428723 github.com/rakudo/rakudo/compare/f...c6f79274ec | |||
viki | nqp:: False() | 19:00 | |
nqp: False() | |||
camelia | nqp-moarvm: OUTPUTĀ«Cannot invoke this object (REPR: Null; VMNull)ā¤ at <tmp>:1 (<ephemeral file>:<mainline>)ā¤ from gen/moar/stage2/NQPHLL.nqp:1428 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:eval)ā¤ from gen/moar/stage2/NQPHLL.nqp:1631 (/home/camelia/rakudo-mā¦Ā» | ||
viki | If I'm getting "No such method 'CALL-ME' for invocant of type 'Bool'", that's definitely from somewhere in Rakudo, right? | ||
I'm having trouble finding where it comes from | |||
geekosaur | m: my Bool $x = False; $x() | 19:01 | |
camelia | rakudo-moar 0dc6f7: OUTPUTĀ«No such method 'CALL-ME' for invocant of type 'Bool'ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā» | ||
timotimo | nqp: LolViki() | 19:02 | |
camelia | nqp-moarvm: OUTPUTĀ«Cannot invoke this object (REPR: Null; VMNull)ā¤ at <tmp>:1 (<ephemeral file>:<mainline>)ā¤ from gen/moar/stage2/NQPHLL.nqp:1428 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:eval)ā¤ from gen/moar/stage2/NQPHLL.nqp:1631 (/home/camelia/rakudo-mā¦Ā» | ||
timotimo | nqp doesn't have True and False | ||
or Bool in geenral | |||
viki | I see | ||
viki gets a bright idea | 19:22 | ||
use MONKEY-TYPING; augment class Bool { method CALL-ME (|c) { dd ["got called", callframe(2).file, callframe(2).line, |c]} } | 19:23 | ||
:) | |||
geekosaur | that's one way to do it. a slightly more principled way is to do the same as part of mixing in the Callable role. | 19:24 | |
geekosaur still would like to know if the ad hoc handling of Callable-s is by design... it's kinda ruining what looks like a sane story for Callable | 19:25 | ||
viki successfully located the bug | 19:29 | ||
Bug toast for dinner \o/ | |||
hmm | 19:38 | ||
m: dd {;}.phasers('QUIT')[0] | |||
camelia | rakudo-moar 0dc6f7: OUTPUTĀ«Bool::Falseā¤Ā» | ||
viki | m: dd {;}.phasers('QUIT') | ||
camelia | rakudo-moar 0dc6f7: OUTPUTĀ«()ā¤Ā» | ||
viki | m: dd ()[0] | ||
camelia | rakudo-moar 0dc6f7: OUTPUTĀ«Bool::Falseā¤Ā» | ||
viki | star: dd ()[0] | ||
camelia | star-m 2016.04: OUTPUTĀ«Nilā¤Ā» | ||
viki | .ask lizmat would you know how to fix ()[0] to return Nil again instead of False? Bisectable points to this commit as the suspect: github.com/rakudo/rakudo/commit/4e...7208758e2a | 19:39 | |
yoleaux2 | viki: I'll pass your message to lizmat. | ||
viki | hm, that looks simple enough for me to try a hand at it | 19:41 | |
after relocation (~1hr) | 19:42 | ||
aye. I see it | 19:47 | ||
viki & | |||
[Coke] wonders what geekosaur is referring to | 20:13 | ||
geekosaur | CALL-ME is used in a bunch of places, independently of any Callable role. But the documentation talks about the Callable role and never mentions CALL-ME. | 20:14 | |
the logical inference is that CALL-ME is the "action" method of Callable --- but this is neither mentioned in the docs (until recently and that is speculative) nor the actual implementation | 20:15 | ||
[Coke] | danke. | 20:16 | |
geekosaur | (if nothing else, explicitly using Callable would make errors like the one viki got much clearer: instead of a CALL-ME appearing out of nowhere, it would report a type error) | 20:18 | |
and report it in the right place relative to the user's code instead of making them wonder why a missing CALL-ME method is reported out of rakudo's guts somewhere | 20:20 | ||
dalek | kudo/nom: f50e39b | lizmat++ | src/core/List.pm: Add missing Nils, spotted by Zoffix++ |
20:44 | |
lizmat | . | 20:45 | |
yoleaux2 | 19:39Z <viki> lizmat: would you know how to fix ()[0] to return Nil again instead of False? Bisectable points to this commit as the suspect: github.com/rakudo/rakudo/commit/4e...7208758e2a | ||
lizmat | fixed :-) | ||
FROGGS | lizmat++ | 20:46 | |
viki | Ah, cool. I only spotted one of them. Thanks lizmat++ | 20:53 | |
That also fixes IO::Socket::Async crashing when connection is disconnected by peer \o/ | 20:54 | ||
lizmat | :-) | ||
cool! | |||
dalek | kudo/nom: 4034f71 | lizmat++ | src/core/Mu.pm: Simplify return value |
21:07 | |
japhb | Any objection to bumping moar and nqp revs? It's been a while ... | 21:16 | |
viki | none from me | 21:17 | |
japhb | Or are we holding them static for some reason (e.g. the Debian testing work)? | ||
viki: ack | |||
timotimo | have there actually been valuable commits in moar and nqp? | 21:18 | |
i believe jnthn fixed some stuff, but he accompanied the fixes with bumps, didn't he? | 21:19 | ||
japhb | timotimo: A number of fixes in Moar, I believe, from jnthn's last Perl 6 day | ||
I don't think so. | |||
dalek | ast: cb75098 | (Zoffix Znet)++ | S02-lists/indexing.t: Test ()[0] returns Nil |
||
timotimo | oh, OK | 21:20 | |
lizmat | no objections from me either :-) | ||
FROGGS | no objections from me | 21:26 | |
dalek | p: 8d43ff5 | (Geoffrey Broadwell)++ | tools/build/MOAR_REVISION: Bump MOAR_REVISION to pick up recent fixes |
21:27 | |
kudo/nom: 627a77e | (Geoffrey Broadwell)++ | tools/build/NQP_REVISION: Bump NQP_REVISION to pick up recent Moar fixes |
21:29 | ||
TimToady | .botsnack | 21:48 | |
yoleaux2 | :D | ||
TimToady now relaxing after giving opening keynote in Puerto Vallarta... | 21:49 | ||
I saw my name go past several times in the last week, but given the lack of connectivity here, will take a while to backlog... | |||
FROGGS | hi TimToady | 21:50 | |
TimToady | only got through to here because I hardwired my home machine's IP address; as usual it's DNS that is serving, or should I say, has served, as the canary in the mine | 21:53 | |
can't get to the ir clogs, for instance | 21:54 | ||
viki | .oO( infra-red clogs ) |
21:55 | |
japhb | .oO( ur-clog: the shoe prototype ) |
22:19 | |
geekosaur | crocs? :p | 22:30 | |
TimToady | viki, gfldex: note that $ = foo is not (state $ = foo), but (state $) = foo | 22:32 | |
viki | aahhh. Thanks, TimToady++ |