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++