»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
Mouq Isn't that a spec-bug? 00:03
:p
00:04 FROGGS left
lue whoops. I was thinking "STD Perl 6" :P 00:04
00:05 berekuk joined, DarthGandalf left
lue here we are: github.com/perl6/specs/issues/61 00:06
00:08 ajr_ left 00:09 rurban joined 00:10 DarthGandalf joined, ssutch left 00:16 Psyche^_ left, ssutch joined 00:18 Psyche^ joined
timotimo since when does --gen-nqp=master no longer checkout master before building nqp? :( 00:18
oh, it *does* work! 00:22
huh
i wonder where the "is behind origin/master and can be fast-forwarded" message came from
00:25 rurban left 00:26 eternaleye joined
timotimo oi, what is this? i do --gen-nqp=master and it says nqp-j is too old? why doesn't the installation work? 00:27
i rm'd nqp-j, re-ran make all install and now it works?! 00:28
what foul sorcery is this!
00:31 dmol joined 00:40 dmol left
timotimo i wonder what takes up all the time in stage post. 00:41
the obviously "slower than it has to be" part i can see is that it uses many instances of multiple ~ in a row
which, iirc, will give unnecessary copies 00:42
that could conceivably be fixed in the nqp optimiser by creating nqp::join calls for those cases automatically 00:43
00:47 pdurbin joined
timotimo nqp: my $time := now(); for ^1000 { nqp::split(' ', 'start pmc tgt string pos int off int eos int rep int cur pmc curclass pmc bstack pmc cstack pmc'); } say(now() - $time); 00:48
camelia nqp-jvm: OUTPUT«Confused at line 2, near "for ^1000 "␤ in panic (gen/jvm/stage2/NQPHLL.nqp:379)␤ in comp_unit (gen/jvm/stage2/NQP.nqp:922)␤ in TOP (gen/jvm/stage2/NQP.nqp:820)␤ in parse (gen/jvm/stage2/QRegex.nqp:1247)␤ in parse (gen/jvm/stage2/NQPHLL.nqp:1378)␤ in…»
..nqp-moarvm: OUTPUT«Confused at line 2, near "for ^1000 "␤panic␤»
..nqp-parrot: OUTPUT«Confused at line 2, near "for ^1000 "␤current instr.: 'panic' pc 16305 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
timotimo oh, right. nqp.
nqp: my $time := now(); my int $i := 1000; while $i > 0 { $i := $i + 1; nqp::split(' ', 'start pmc tgt string pos int off int eos int rep int cur pmc curclass pmc bstack pmc cstack pmc'); } say(now() - $time); 00:49
camelia nqp-jvm: OUTPUT«Confused at line 2, near "while $i >"␤ in panic (gen/jvm/stage2/NQPHLL.nqp:379)␤ in comp_unit (gen/jvm/stage2/NQP.nqp:922)␤ in TOP (gen/jvm/stage2/NQP.nqp:820)␤ in parse (gen/jvm/stage2/QRegex.nqp:1247)␤ in parse (gen/jvm/stage2/NQPHLL.nqp:1378)␤ in…»
..nqp-parrot: OUTPUT«Confused at line 2, near "while $i >"␤current instr.: 'panic' pc 16305 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
..nqp-moarvm: OUTPUT«Confused at line 2, near "while $i >"␤panic␤»
timotimo ... huh? 00:50
nqp: my $time := now(); my int $i := 1000; while ($i > 0) { $i := $i + 1; nqp::split(' ', 'start pmc tgt string pos int off int eos int rep int cur pmc curclass pmc bstack pmc cstack pmc'); } say(now() - $time);
camelia nqp-parrot: OUTPUT«Confused at line 2, near "while ($i "␤current instr.: 'panic' pc 16305 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
..nqp-jvm: OUTPUT«Confused at line 2, near "while ($i "␤ in panic (gen/jvm/stage2/NQPHLL.nqp:379)␤ in comp_unit (gen/jvm/stage2/NQP.nqp:922)␤ in TOP (gen/jvm/stage2/NQP.nqp:820)␤ in parse (gen/jvm/stage2/QRegex.nqp:1247)␤ in parse (gen/jvm/stage2/NQPHLL.nqp:1378)␤ in…»
..nqp-moarvm: OUTPUT«Confused at line 2, near "while ($i "␤panic␤»
Mouq nqp: say(now())
camelia nqp-moarvm: OUTPUT«No lexical found with name '&now'␤frame_name_0␤»
..nqp-jvm: OUTPUT«java.lang.NullPointerException␤ in (/tmp/olhW2KiD1g:1)␤ in (gen/jvm/stage2/NQPHLL.nqp:1100)␤ in eval (gen/jvm/stage2/NQPHLL.nqp:1086)␤ in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1292)␤ in command_eval (gen/jvm/stage2/NQPHLL.nqp:1196)␤ in command_line…»
..nqp-parrot: OUTPUT«Could not find sub &now␤current instr.: '' pc 45 ((file unknown):70821799) (/tmp/sTQ6Wtba4b:1)␤»
Mouq nqp: say(nqp::now())
camelia nqp-parrot: OUTPUT«Error while compiling op now (source text: "nqp::now()"): No registered operation handler for 'now'␤current instr.: '' pc 58571 (gen/parrot/stage2/QAST.pir:21439) (gen/parrot/stage2/QAST.nqp:3584)␤»
..nqp-moarvm: OUTPUT«Error while compiling op now (source text: "nqp::now()"): No registered operation handler for 'now'␤frame_name_1109␤»
..nqp-jvm: OUTPUT«Method 'type' not found for invocant of class 'NQPMu'␤ in coerce (gen/jvm/stage2/QAST.nqp:4097)␤ in as_jast (gen/jvm/stage2/QAST.nqp:2981)␤ in (gen/jvm/stage2/QAST.nqp:3678)␤ in compile_all_the_stmts (gen/jvm/stage2/QAST.nqp:3666)␤ in as_jast (gen/jvm…»
timotimo oh, whoops. 00:51
thanks
Mouq hopes that once ::, :::, <commit> are implemented, NQP's errors can easily be made less terrible
timotimo nqp: say(nqp::time()) 00:52
camelia nqp-moarvm: OUTPUT«Error while compiling op time (source text: "nqp::time()"): No registered operation handler for 'time'␤frame_name_1109␤»
..nqp-parrot: OUTPUT«Error while compiling op time (source text: "nqp::time()"): No registered operation handler for 'time'␤current instr.: '' pc 58571 (gen/parrot/stage2/QAST.pir:21439) (gen/parrot/stage2/QAST.nqp:3584)␤»
..nqp-jvm: OUTPUT«Method 'type' not found for invocant of class 'NQPMu'␤ in coerce (gen/jvm/stage2/QAST.nqp:4097)␤ in as_jast (gen/jvm/stage2/QAST.nqp:2981)␤ in (gen/jvm/stage2/QAST.nqp:3678)␤ in compile_all_the_stmts (gen/jvm/stage2/QAST.nqp:3666)␤ in as_jast (gen/jvm…»
timotimo how do i even ...
ah! 00:53
nqp: say(nqp::time_n())
Mouq nqp: say(nqp::time_n)
timotimo :)
camelia nqp-parrot: OUTPUT«1383871988.602␤»
..nqp-jvm: OUTPUT«1.383871988443E9␤»
..nqp-moarvm: OUTPUT«1383871984.011313␤»
nqp-moarvm: OUTPUT«1383871988.736559␤»
..nqp-parrot: OUTPUT«1383871993.77833␤»
..nqp-jvm: OUTPUT«1.383871993585E9␤»
timotimo good good
nqp: my $time := nqp::time_n(); my int $i := 1000; while ($i > 0) { $i := $i + 1; nqp::split(' ', 'start pmc tgt string pos int off int eos int rep int cur pmc curclass pmc bstack pmc cstack pmc'); } say(nqp::time_n() - $time);
camelia nqp-parrot: OUTPUT«Confused at line 2, near "while ($i "␤current instr.: 'panic' pc 16305 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
..nqp-jvm: OUTPUT«Confused at line 2, near "while ($i "␤ in panic (gen/jvm/stage2/NQPHLL.nqp:379)␤ in comp_unit (gen/jvm/stage2/NQP.nqp:922)␤ in TOP (gen/jvm/stage2/NQP.nqp:820)␤ in parse (gen/jvm/stage2/QRegex.nqp:1247)␤ in parse (gen/jvm/stage2/NQPHLL.nqp:1378)␤ in…»
..nqp-moarvm: OUTPUT«Confused at line 2, near "while ($i "␤panic␤»
timotimo er, that's also an infinite loop.
Mouq would be interested to see a nqp::time_s
timotimo nqp: my $time := nqp::time_n(); my int $i := 1000; while ($i > 0) { $i := $i + 1; nqp::split(' ', 'start pmc tgt string pos int off int eos int rep int cur pmc curclass pmc bstack pmc cstack pmc'); }; say(nqp::time_n() - $time); 00:54
nooo
timeout please
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«(timeout)»
timotimo nqp: my $time := nqp::time_n(); my int $i := 1000; while ($i > 0) { $i := $i - 1; nqp::split(' ', 'start pmc tgt string pos int off int eos int rep int cur pmc curclass pmc bstack pmc cstack pmc'); }; say(nqp::time_n() - $time);
camelia nqp-moarvm: OUTPUT«0.041667␤»
..nqp-jvm: OUTPUT«0.013000011444091797␤»
..nqp-parrot: OUTPUT«0.0045619010925293␤»
timotimo well, that's not terribly slow ... 00:55
(this is called once per compiled Regex object)
impressive that parrot is 10x faster than moar, but they may have executed in parallel or something 00:57
Mouq nqp: my $time := nqp::time_n; nqp::split(' ', 'start pmc tgt string pos int off int eos int rep int cur pmc curclass pmc bstack pmc cstack pmc'); say(nqp::time_n() - $time);
camelia nqp-moarvm: OUTPUT«0.000022␤»
..nqp-parrot: OUTPUT«1.09672546386719e-05␤»
..nqp-jvm: OUTPUT«0␤»
00:58 tobyink left, btyler left
timotimo you think it was the loops fault? 00:58
01:01 preflex left
timotimo nqp-p: my $time_a := nqp::time_n(); my int $i := 1000; while $i > 0 { $i := $i - 1; "foo" ~ "bar" ~ "baz" ~ "quux" }; say(nqp::time_n() - $time_a); $time_a := nqp::time_n(); while $i < 1000 { $i := $i + 1; nqp::join("", ["foo", "bar", "baz", "quux"]) }; say(nqp::time_n() - $time_a); 01:02
camelia nqp-parrot: OUTPUT«0.00133299827575684␤0.00516510009765625␤»
timotimo nqp-j: my $time_a := nqp::time_n(); my int $i := 1000; while $i > 0 { $i := $i - 1; "foo" ~ "bar" ~ "baz" ~ "quux" }; say(nqp::time_n() - $time_a); $time_a := nqp::time_n(); while $i < 1000 { $i := $i + 1; nqp::join("", ["foo", "bar", "baz", "quux"]) }; say(nqp::time_n() - $time_a);
camelia nqp-jvm: OUTPUT«0.003000020980834961␤0.006999969482421875␤»
timotimo nqp-m: my $time_a := nqp::time_n(); my int $i := 1000; while $i > 0 { $i := $i - 1; "foo" ~ "bar" ~ "baz" ~ "quux" }; say(nqp::time_n() - $time_a); $time_a := nqp::time_n(); while $i < 1000 { $i := $i + 1; nqp::join("", ["foo", "bar", "baz", "quux"]) }; say(nqp::time_n() - $time_a);
camelia nqp-moarvm: OUTPUT«0.001935␤0.002369␤»
timotimo huh. so much for that hypothesis.
nqp-m: my $time_a := nqp::time_n(); my int $i := 10000; while $i > 0 { $i := $i - 1; "foofoo" ~ "barbar" ~ "bazbaz" ~ "quuxquux" }; say(nqp::time_n() - $time_a); 01:03
camelia nqp-moarvm: OUTPUT«0.055504␤»
01:03 preflex joined, ChanServ sets mode: +v preflex, risou_awy is now known as risou
timotimo nqp-m: my $time_a := nqp::time_n(); my int $i := 10000; while $i > 0 { $i := $i - 1; nqp::join("", ["foofoo", "barbar", "bazbaz", "quuxquux"] }; say(nqp::time_n() - $time_a); 01:03
camelia nqp-moarvm: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}' at line 2, near "nqp::join("␤panic␤»
timotimo nqp-m: my $time_a := nqp::time_n(); my int $i := 10000; while $i > 0 { $i := $i - 1; nqp::join("", ["foofoo", "barbar", "bazbaz", "quuxquux"]) }; say(nqp::time_n() - $time_a);
camelia nqp-moarvm: OUTPUT«0.070415␤»
timotimo so constructing the list is probably slower? 01:04
anyway, i'll get some rest
01:08 btyler joined 01:11 berekuk left 01:15 cognominal joined 01:21 risou is now known as risou_awy
lue idly wonders if comparing a list to key => key => key => ... => True is more efficient than to [item, item, item, ... item] 01:26
comparing to [] takes about 2s per list right now :) 01:28
01:29 btyler left, xenoterracide left 02:00 jnap left 02:34 jeff_s1 joined 02:36 jeff_s2 left 02:45 colomon left 02:47 colomon joined 03:04 risou_awy is now known as risou 03:21 risou is now known as risou_awy 03:30 tipdbmp left
dalek gs.hs: 45cfed0 | au++ | HsSyck/ (3 files):
* 0.51, switched to hashtables package.
03:35
03:40 tipdbmp joined 03:45 SamuraiJack joined 03:54 jeff_s2 joined 03:55 jeff_s1 left 04:17 REPLeffect left 04:24 preflex_ joined, ChanServ sets mode: +v preflex_ 04:25 preflex left, preflex_ is now known as preflex 04:30 REPLeffect joined 04:36 ingy^ joined
timotimo (can't sleep :( ) 04:50
just after running perl Configure.pl --backend=parrot,jvm --gen-nqp=master i get "nqp-p is too old", when i "perl Configure.pl" after that, it works fine 04:51
i wonder if list literals could be handled better by getting an explicit pre-growing done by the compiler or something 05:00
or if that makes any difference at all
but for now i'll try to sleep again
nqp-p: my $time_a := nqp::time_n(); my int $i := 10000; while $i > 0 { $i := $i - 1; my $l := ["foofoo", "barbar", "bazbaz", "quuxquux", "abc", "def", "ghi"]; }; say(nqp::time_n() - $time_a); 05:02
camelia nqp-parrot: OUTPUT«0.0372607707977295␤»
timotimo nqp-p: my $time_a := nqp::time_n(); my int $i := 10000; while $i > 0 { $i := $i - 1; my $l := nqp::list("foofoo", "barbar", "bazbaz", "quuxquux", "abc", "def", "ghi"); }; say(nqp::time_n() - $time_a);
camelia nqp-parrot: OUTPUT«0.0614409446716309␤»
timotimo huh
that's interesting. but it also seems to be pretty fast on its own
maybe the former gets a WVal and the latter doesn't? 05:03
nqp-p: my $time_a := nqp::time_n(); my int $i := 10000; while $i > 0 { $i := $i - 1; my $l := nqp::list_s("foofoo", "barbar", "bazbaz", "quuxquux", "abc", "def", "ghi"); }; say(nqp::time_n() - $time_a);
camelia nqp-parrot: OUTPUT«0.0475258827209473␤»
05:05 risou_awy is now known as risou
diakopter tadzik: you seem sleepy 05:06
05:10 thou joined 05:21 risou is now known as risou_awy 05:22 [Sno] left
lue diakopter: sure that's not you? ;) 05:28
05:32 rurban joined 05:33 davecc left 05:36 rurban left 05:55 ingy^ left 06:08 rurban joined
moritz \o 06:11
06:17 itz_ left 06:21 BenGoldberg left, itz joined 06:27 kaleem joined 06:32 nnunley left 06:42 [Sno] joined 06:53 rurban left 07:00 darutoko joined 07:06 risou_awy is now known as risou 07:11 raiph left 07:24 risou is now known as risou_awy
dalek ecs: 5e2c420 | larry++ | S03-operators.pod:
Adopt quietfanatic++'s suggestion of Less/More

The problem is not the sign of the numeric values, which is consistent with common usage in C and Perl. The problem is that the names seemed to be answering the opposite question from the "less, same, or greater" operators, which are asking about the left operand, not the right one.
fixes 61
07:30
07:30 tobyink joined 07:45 awwaiid left 07:49 cognominal left 07:52 awwaiid joined 07:54 tobyink left, rurban joined 07:55 cognominal joined 08:01 thou left 08:03 jac50 joined, brrt joined, rurban left 08:04 jac50 is now known as lemOn91 08:09 xenoterracide joined 08:10 thou joined 08:11 awwaiid left 08:13 Util_ is now known as Util
moritz
.oO( Order::Less? we are orderless! )
08:16
08:16 ssutch left 08:18 awwaiid joined 08:22 daniel-s__ left 08:26 cognominal left, cognominal joined 08:38 zakharyas joined 08:42 lemOn91 left 08:45 brrt left 08:49 cognominal left 08:51 eternaleye left
jnthn
.oO( more or less )
08:52
09:01 rurban joined 09:03 dmol joined 09:05 eternaleye joined, eternaleye left, eternaleye joined 09:07 risou_awy is now known as risou 09:08 hummeleB1 left 09:12 kivutar joined 09:16 rurban left 09:20 kaleem left 09:21 kaleem joined 09:23 risou is now known as risou_awy 09:24 kaleem left 09:40 FROGGS[mobile] joined 09:43 tobyink joined 09:44 kaleem joined 09:54 woosley left 09:55 iSlug joined 10:08 brrt joined 10:11 FROGGS joined 10:12 FROGGS[mobile] left 10:16 daxim_ joined 10:32 fhelmberger joined
dalek Heuristic branch merge: pushed 653 commits to rakudo/sized-arrays by FROGGS 10:34
Heuristic branch merge: pushed 42 commits to rakudo/sized-arrays by FROGGS 10:37
timotimo oh, cool! are you going to bring that branch up to speed? 10:38
FROGGS at least so I can run a spectest :o) 10:39
dalek kudo/sized-arrays: 0defacb | (Tobias Leich)++ | perl6-j:
removed perl6-j
10:43 kivutar left 10:48 p5eval_ left 10:50 p5eval joined 11:03 denis_boyun joined 11:04 brrt left 11:07 brrt joined, brrt left, risou_awy is now known as risou 11:10 pdurbin left, berekuk joined
jnthn FROGGS++ 11:15
moritz uhm, so the pull request github.com/rakudo/rakudo/pull/217 was against another rakudo branch, not nom?
moritz is rather confused
11:20 cognominal joined 11:23 dmol left 11:24 risou is now known as risou_awy 11:33 daxim_ left 11:35 bbkr joined 11:44 denis_boyun left 11:55 kresike joined
kresike hello all you happy perl6 people 11:55
12:02 berekuk left
lizmat hi kresike! 12:03
timotimo hello there
(from a train o/)
12:03 brrt joined
timotimo i was hoping i could get some productivity done from here, since many good commits seem to happen on trains for other perl6ers :) 12:03
moritz \o timotimo.train :-) 12:06
lizmat
.oO( an excellent train of thought )
fwiw, I'm working on Increase/Decrease -> Less/More transition 12:08
moritz lizmat++
12:09 daxim_ joined
timotimo nqp-p: my $time := nqp::time_n(); my int $i := 0; while $i < 5000 { $i := $i + 1; nqp::eqat("$foobar", "$", 0) }; say(nqp::time_n() - $time); 12:11
camelia nqp-parrot: OUTPUT«Use of undeclared variable '$foobar' at line 2, near "\", \"$\", 0)"␤current instr.: 'panic' pc 16305 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
timotimo nqp-p: my $time := nqp::time_n(); my int $i := 0; while $i < 5000 { $i := $i + 1; nqp::substr("$foobar", 0, 1) eq '$' }; say(nqp::time_n() - $time);
camelia nqp-parrot: OUTPUT«Use of undeclared variable '$foobar' at line 2, near "\", 0, 1) e"␤current instr.: 'panic' pc 16305 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
timotimo derp
nqp-p: my $time := nqp::time_n(); my int $i := 0; while $i < 5000 { $i := $i + 1; nqp::eqat('$foobar', "$", 0) }; say(nqp::time_n() - $time);
camelia nqp-parrot: OUTPUT«Error while compiling op eqat (source text: "nqp::eqat('$foobar', \"$\", 0)"): No registered operation handler for 'eqat'␤current instr.: '' pc 58571 (gen/parrot/stage2/QAST.pir:21439) (gen/parrot/stage2/QAST.nqp:3584)␤»
timotimo ah, haven't bumped up the NQP_REVISION far enough yet
12:14 berekuk joined
timotimo yay, on parrot, eqat is 3x faster than substr+eq in the case of a 1-length substring 12:16
FROGGS cool! 12:19
timotimo++
dalek ast: 3a5af16 | (Elizabeth Mattijsen)++ | S (16 files):
Increase/Decrease -> Less/More migration

As per recent spec change
12:20
timotimo same for longer strings
but it doesn't help terribly much, as it can do a million of those operations in a tenth of a second anyway
now, there's two spots in the regex compiler where it emits substr + eq which i *could* try to turn into eqat instead. sounds like it's worth it? it's for newline-cclass and any literal 12:21
i'll definitely have to rebuild the stage0 files for that, though 12:23
dalek kudo/nom: 132a970 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Increase/Decrease -> Less/More migration

As per recent spec change. Added Increase/Decrease as DEPRECATED subs. Not sure how I can add Order::Increase/Order::Decrease as DEPRECATED subs :-(
12:25
moritz r: our sub Order::Blafu is DEPREACATED('blubb') { }; Order::Blafu 12:28
camelia rakudo-jvm 882e33: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.␤»
..rakudo-parrot 5bd51c: OUTPUT«===SORRY!=== Error while compiling /tmp/x2CN6r3NEO␤Can't use unknown trait 'is DEPREACATED' in a sub declaration.␤at /tmp/x2CN6r3NEO:1␤------> ␤ expecting any of:␤ rw parcel hidden_from_backtrace␤ pure defau…»
moritz p: our sub Order::Blafu is DEPRECATED('blubb') { }; Order::Blafu
camelia rakudo-parrot 5bd51c: OUTPUT«Could not find symbol '&Blafu'␤ in method <anon> at gen/parrot/CORE.setting:11984␤ in any at gen/parrot/Metamodel.nqp:2691␤ in any find_method_fallback at gen/parrot/Metamodel.nqp:2679␤ in any find_method at gen/parrot/Metamodel.nqp:946␤ …»
moritz p: package Order { our sub Blafu is DEPRECATED('blubb') { } }; Order::Blafu
camelia rakudo-parrot 5bd51c: OUTPUT«Saw 1 call to deprecated code during execution.␤================================================================================␤Sub Blafu (from Order) called at:␤ /tmp/HGh3KsuQCh, line 1␤Please use blubb instead.␤-----------------------------…»
moritz p: package Order { our sub Blafu is DEPRECATED('blubb') { } }; Order::Blafu; say Order::Increase 12:29
camelia rakudo-parrot 5bd51c: OUTPUT«Could not find symbol '&Increase'␤ in method <anon> at gen/parrot/CORE.setting:11984␤ in any at gen/parrot/Metamodel.nqp:2691␤ in any find_method_fallback at gen/parrot/Metamodel.nqp:2679␤ in any find_method at gen/parrot/Metamodel.nqp:946…»
moritz ah, that overrides the namespace, so no good
jnthn p: Order::<&Blafu> = anon sub Blafu() is DEPRECATED { 1 }; say Order::Blafu 12:30
camelia rakudo-parrot 5bd51c: OUTPUT«1␤Saw 1 call to deprecated code during execution.␤================================================================================␤Sub Blafu (from GLOBAL) called at:␤ /tmp/cy9D01nkSH, line 1␤Please use something else instead.␤---------------…»
jnthn "use somethign else"? :) 12:31
timotimo well ... cloning moarvm over a super thin phone connection .... :(
jnthn p: Order::<&Blafu> = anon sub Blafu() is DEPRECATED('your mom') { 1 }; say Order::Blafu
camelia rakudo-parrot 5bd51c: OUTPUT«1␤Saw 1 call to deprecated code during execution.␤================================================================================␤Sub Blafu (from GLOBAL) called at:␤ /tmp/_MpLD6MQMh, line 1␤Please use your mom instead.␤---------------------…»
jnthn ah, k
timotimo i'm glad i got all the data i'll need for the next minutes 12:34
jnthn timotimo: Just hope there ain't too many tunnels :) 12:35
timotimo oh there are.
i know this line already. this is from my home to my parent's home
at least i got an ICE for the biggest part of the yo^H^Hjourney :) 12:36
ICEs are nice
in theory there's a wifi hotspot in this one, but i'm pretty sure it's very expensive
jnthn
.oO( ICE ICE baby... )
moritz yes, you have to sell your soul to t-online
jnthn The Swedish train I was only the other day had free wifi, but only 'cus they're testing out a new wifi instatllation. 12:37
One that uses 4G.
The latency did feel a bit lower. 12:38
btw, is the r-j evalbot running latest? I'd hoped that yesterday's fixes to help evalserver would make ti more rreliable 12:39
timotimo hm. if the substr+eq part of 'literal' and newline actually get 3x faster, maybe it'll make a noticable difference in setting parse time. that would be awesome :)
i don't really have a good system do^H^Hto do time measurements on though
brrt dutch trains have free wifi too, rather slow, and also provided by t-mobile
dalek kudo/nom: c31f307 | (Elizabeth Mattijsen)++ | src/core/Order.pm:
Add signatures to Increase/Decrease
12:40
ast: e4d9c67 | (Elizabeth Mattijsen)++ | S02-types/deprecations.t:
Add deprecation tests for Increase/Decrease
12:41
jnthn lizmat: While I don't know of anything immediately better, the subs will parse as listops as opposed to the term that Increase used to parse as
lizmat: Oh, maybe we can actually do it as a term...
timotimo turns out my moarvm is 522 commits behind >_> 12:42
jnthn r: sub term:<Blah>() is DEPRECATED('a dugong') { 1 }; say Blah
camelia rakudo-parrot 5bd51c: OUTPUT«1␤»
..rakudo-jvm 882e33: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.␤»
lizmat jnthn: is DEPRECATED doesn't work in settings 12:43
jnthn lizmat: huh?
timotimo /usr/bin/ld: 3rdparty/sha1/libsha1.a(sha1.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC - is there something i must do differently?
jnthn I thought that's where you'd been using it?
timotimo tried reconfiguring
jnthn timotimo: Try a realclean
FROGGS timotimo: make realclean
timotimo thanks
lizmat jnthn: I call the DEPRECATED sub inside the Increase sub
jnthn lizmat: oh... 12:44
lizmat: but my example above wasn't int he setting.
lizmat that's the "is DEPRECATED" work horse
FROGGS because your 3rdparty libs are built without -fPIC, and won't be rebuild when they are there
lizmat jnthn: I think it just gets ignored on terms ?
jnthn p: sub infix:<wtf>(*@a) { say @a.join('wtf') }; say 'omg' wtf 'bbq'
lizmat ah, ok, I get your pount
camelia rakudo-parrot 5bd51c: OUTPUT«omgwtfbbq␤True␤» 12:45
jnthn p: sub infix:<wtf>(*@a) is DEPRECATED('a toaster') { @a.join('wtf') }; say 'omg' wtf 'bbq'
camelia rakudo-parrot 5bd51c: OUTPUT«omgwtfbbq␤Saw 1 call to deprecated code during execution.␤================================================================================␤Sub infix:<wtf> (from GLOBAL) called at:␤ /tmp/qOYk38w3mr, line 1␤Please use a toaster instead.␤------…»
FROGGS >.<
12:45 risou_awy is now known as risou
jnthn p: sub term:<wtf>() is DEPRECATED('a dancing hamster') { 'wtf' }; say wtf 12:46
camelia rakudo-parrot 5bd51c: OUTPUT«wtf␤»
jnthn o.O
lizmat maybe terms don't have phasers ?
jnthn oh, I wonder...
p: sub term:<wtf>() is DEPRECATED('a dancing hamster') { say 'DON'T INLINE ME'; 'wtf' }; say wtf
camelia rakudo-parrot 5bd51c: OUTPUT«===SORRY!=== Error while compiling /tmp/VY8Cc4OHgd␤Two terms in a row␤at /tmp/VY8Cc4OHgd:1␤------> RECATED('a dancing hamster') { say 'DON'⏏T INLINE ME'; 'wtf' }; say wtf␤ expecting any of:␤ post…»
jnthn p: sub term:<wtf>() is DEPRECATED('a dancing hamster') { say 'DO NOT INLINE ME'; 'wtf' }; say wtf 12:47
camelia rakudo-parrot 5bd51c: OUTPUT«DO NOT INLINE ME␤wtf␤Saw 1 call to deprecated code during execution.␤================================================================================␤Sub term:<wtf> (from GLOBAL) called at:␤ /tmp/jmqp2rKFtx, line 1␤Please use a dancing hamst…»
jnthn Bah
The inliner had better check for lack of phasers :)
Or we jsut have another phase-order problem again in routine_def.
Probably the latter
lizmat well
jnthn Anyway, that wants an RT.
lizmat in any case, I think I can fix Increase/Decrease 12:48
moritz p: sub term:<wtf>() { LEAVE { say 'not here anymore' } 42 }; say wtf
camelia rakudo-parrot 5bd51c: OUTPUT«===SORRY!=== Error while compiling /tmp/OAVRLfMkHW␤Two terms in a row␤at /tmp/OAVRLfMkHW:1␤------> f>() { LEAVE { say 'not here anymore' } ⏏42 }; say wtf␤ expecting any of:␤ postfix␤ sta…»
moritz p: sub term:<wtf>() { LEAVE { say 'not here anymore' }; 42 }; say wtf
camelia rakudo-parrot 5bd51c: OUTPUT«not here anymore␤42␤»
jnthn moritz: The ENTER is added by a trait; I guess that's the "issue". 12:49
lizmat ah, I see what you mean
ok, will follow up on that
jnthn I can probably fix it quite easily, but not from teaching
lizmat you have plenty of other things to fix :-) 12:50
lemme see if I can fix this
timotimo it's time for me to get a new laptop with a stronger processor ...
jnthn
.oO( Like, the naming of EVERYTHING in src/vm/jvm/core/Threading.pm :P )
timotimo this build is taking forever 12:51
granted, three backends, but still!
jnthn timotimo: So I heard you're building Perl 6 on rails...
:P
lizmat jnthn: if you want, I can have a go at that...
jnthn lizmat: Go for it! :)
timotimo :) 12:52
i've been ogling a friend's t440s for a bit, that seems like a really great device
jnthn lizmat: Tehre's also tests in t/spec/S17-concurrency that may help, though will also want an update
lizmat jnthn: would it be an idea to create a Promise.pm c.s for parakudo ? 12:53
that would just fail ?
12:54 SmokeMachine left
jnthn lizmat: japhb suggested a single-threaded emulation even 12:58
lizmat: It *will* deadlock 12:59
lizmat: If you do certain things
lizmat: But may make some things work
lizmat maybe we need an "is EMULATED" ?
jnthn Just call it is BROKEN :P
lizmat hehe 13:00
timotimo parrot and jvm builds finished, now for some moar
hoelzro hehe
moar builds!
lizmat is there any reason you want to keep that in src/jvm ?
jnthn timotimo: I have a T430s and it's ncie. Got the wireless hardware bug fixed today too :)
lizmat: What will eventually happen is we'll separate out the VM-specific from the VM-independent. But I'm not really ready for that yet. 13:01
lizmat ok, I'll just focus on renaming
jnthn And we may end up with none of it VM-specific some day and nqp:: ops for stuff 13:02
We'll see :)
lizmat indeed :-)
jnthn: would you mind putting classes into their own files yet? or is that too soon as well? 13:03
jnthn lizmat: Oh, I'm +1 to splitting up the huge Threading.pm :)
It's misnamed and huge.
lizmat that was my feeling as well 13:04
jnthn Just hadn't go around to it yet :)
And no reason I have to do it :)
timotimo jnthn: how many things are still missing for moar-support to land?
jnthn timotimo: dunno :) 13:05
The next big thign is basic sig binding :)
timotimo huh^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^Hdamn, i can't build nqp-moar at the moment
Unable to parse expression in method_def; couldn't find final ')' at line 4328, near "MAST::Node"
is that something known?
jnthn I thought we'd fixed all those... 13:06
timotimo hm. maybe something i have is out of date?
jnthn That or we've a leftover bug 13:07
timotimo i don't want to have fresh stage0 for parrot and jvm, but not for moar :(
13:07 pernatiy joined
jnthn Why are you making a fresh stage0, ooc? 13:08
timotimo i guess i can develop it on parrot only for the moment 13:09
also, the constant stage0 updates are making the nqp repo prohibitively big
jnthn eeks, I have the first talk of the morning! act.yapc.eu/npw2013/schedule
timotimo: Yes, that's why I was asking you why you're doing another one :)
13:09 kivutar joined
moritz timotimo: make m-bootstrap-files ? 13:10
timotimo you were?
moritz: won't work if i can't get nqp-moar to compile in the first place ;) 13:11
moritz timotimo: right :-)
timotimo jnthn: the fresh stage0 is supposed to have eqat, so that i can use it in several places (like the implementation of literal or the cclass for newline in the regex compiler might help performance at least a tiny bit)
13:12 benabik left
moritz you only need that if you use it in nqp source code, not if you use it in generated code 13:12
timotimo ah, ok. but i'm still using it in some places to replace combinations of substr + eq 13:13
in the same compiler, for example
and in the grammar, actions, module loader, ... 13:14
now i'm going through a lot of tunnels :| 13:16
ooc, how hard could it possibly be to make enumcharlist use ranges instead of huge amounts of values when you have big character classes? 13:17
moritz timotimo: I've long wanted to use bitmaps for the first 255 codepoints, and skiplists for the rest 13:18
timotimo that sounds good
i can re^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^Hi can freely re-use registers in pir code, right? 13:20
moritz yes 13:21
lizmat pir?
*shudder* 13:22
:-)
13:25 denis_boyun joined
lizmat jnthn: alas, putting sub term:<Increase> into settings, doesn't work :-( 13:26
timotimo hehe
what's the simplest way to negate the value in a register? (0/1 based)
lizmat only works outside of settings :-(
reverting to ordinary sub :-( 13:27
moritz nqp: say(nqp::not(1)) 13:28
camelia nqp-parrot: OUTPUT«Error while compiling op not (source text: "nqp::not(1)"): No registered operation handler for 'not'␤current instr.: '' pc 58571 (gen/parrot/stage2/QAST.pir:21439) (gen/parrot/stage2/QAST.nqp:3584)␤» 13:29
..nqp-moarvm: OUTPUT«Error while compiling op not (source text: "nqp::not(1)"): No registered operation handler for 'not'␤frame_name_1109␤»
..nqp-jvm: OUTPUT«Method 'type' not found for invocant of class 'NQPMu'␤ in coerce (gen/jvm/stage2/QAST.nqp:4097)␤ in as_jast (gen/jvm/stage2/QAST.nqp:2981)␤ in (gen/jvm/stage2/QAST.nqp:3678)␤ in compile_all_the_stmts (gen/jvm/stage2/QAST.nqp:3666)␤ in as_jast (gen/jvm…»
moritz nqp: say(nqp::neg(1))
camelia nqp-parrot: OUTPUT«Error while compiling op neg (source text: "nqp::neg(1)"): No registered operation handler for 'neg'␤current instr.: '' pc 58571 (gen/parrot/stage2/QAST.pir:21439) (gen/parrot/stage2/QAST.nqp:3584)␤»
..nqp-moarvm: OUTPUT«Error while compiling op neg (source text: "nqp::neg(1)"): No registered operation handler for 'neg'␤frame_name_1109␤»
..nqp-jvm: OUTPUT«Method 'type' not found for invocant of class 'NQPMu'␤ in coerce (gen/jvm/stage2/QAST.nqp:4097)␤ in as_jast (gen/jvm/stage2/QAST.nqp:2981)␤ in (gen/jvm/stage2/QAST.nqp:3678)␤ in compile_all_the_stmts (gen/jvm/stage2/QAST.nqp:3666)␤ in as_jast (gen/jvm…»
timotimo i went with $ops.push_pirop('lt', %*REG<fail>, 1, %*REG<fail>);
13:31 ajr joined, ajr is now known as Guest13104, Guest13104 is now known as ajr_
FROGGS nqp-p: say(nqp::neg_i(1)) 13:33
camelia nqp-parrot: OUTPUT«-1␤»
FROGGS nqp-p: say(nqp::neg_i(0))
camelia nqp-parrot: OUTPUT«0␤»
FROGGS nqp-p: say(nqp::neg_i(-1))
camelia nqp-parrot: OUTPUT«1␤»
FROGGS nqp-p: say(nqp::bitneg_i(1)) 13:34
camelia nqp-parrot: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I5003')␤ in file '(file unknown)' line 51114903␤␤␤»
moritz nqp-p: say(1-1)
camelia nqp-parrot: OUTPUT«0␤»
moritz nqp-p: say(1-0)
camelia nqp-parrot: OUTPUT«1␤»
moritz if it's always 0 or 1, 1 - $reg works fine :-)
13:38 colomon left
timotimo uaii'm not very good at this pir thing 13:39
error:imcc:The opcode 'nqp_string_equal_at_ic_s_sc_i' (nqp_string_equal_at<4>) was not found. Check the type and number of the arguments
FROGGS nqp-p: say( Q:PIR { $I100 = 0␤$I101 = not $I100␤say $I101 } ) 13:43
camelia nqp-parrot: OUTPUT«1␤␤»
FROGGS nqp-p: say( Q:PIR { $I100 = 1␤$I101 = not $I100␤say $I101 } )
camelia nqp-parrot: OUTPUT«0␤␤»
13:45 woolfy left
FROGGS nqp-p: say( Q:PIR { $I100 = 7␤$I101 = not $I100␤say $I101 } ) 13:45
camelia nqp-parrot: OUTPUT«0␤␤»
13:45 woolfy joined
timotimo so, i must be doing this wrong 13:46
13:46 colomon joined
timotimo $ops.push_pirop('nqp_string_equal_at', %*REG<fail>, %*REG<tgt>, $litpost, %*REG<pos>); 13:47
why would it ever have the first parameter be ic? that's the register i'm trying to write to
13:49 denis_boyun left
timotimo ah, finally a bit of network ... hopefully 13:49
moritz: you mucked about with the rxcompiler recently. do you have an idea? 13:53
FROGGS timotimo: can you paste the generated pir line? 13:54
13:55 dmol joined, berekuk left
timotimo nqp_string_equal_at rx85_fail207, rx85_tgt, ucs4:"_", rx85_pos 13:57
13:57 colomon left
timotimo huh, is that really how to put a string literal in there? 13:57
13:58 berekuk joined
jnthn lizmat: oh, yeah...if you want a term added it also nmeeds to go in the grammar, same like any infix things too 13:58
timotimo: $ops.push_pirop('lt', %*REG<fail>, 1, 13:59
13:59 colomon joined
jnthn timotimo: I'm pretty sure you don't mean fail there 13:59
14:00 tobyink left
moritz timotimo: where is the op defined? 14:00
14:01 lizmat left
timotimo moritz: in nqp.ops 14:01
it's in the current master, too
14:02 lizmat joined
timotimo jnthn: if the node is negated, i want to invert the value of fail, which would at that point contain the result value of my eqat call 14:02
that's what i thought. is that still wrong?
jnthn timotimo: but fail is a label, not a register?
timotimo it ... is?
well, that would explain it then i guess?
jnthn sure,t hat's why we can goto %*REG<fail> :)
moritz yes, a label to jump to 14:03
timotimo ah, so gt and friends are gotos
jnthn right
timotimo that explains it!
jnthn ;)
timotimo i'd goto fail if the match doesn't go through, right?
jnthn yeah
FROGGS we should totally do more pir in future :o) 14:04
jnthn I...uh...no. :P
FROGGS *g*
14:04 kaleem left
timotimo what op do i use to compare numbers fo requality? 14:04
FROGGS I enjoy it somehow
timotimo eq_i?
FROGGS AST::Operations.add_core_pirop_mapping('iseq_i', 'iseq', 'Iii' 14:05
moritz so iseq 14:06
timotimo: I think eq jumps to a label if equal, or something funny
lizmat jnthn: any objection to moving the Promise c.s. exceptions to src/core/Exception ? 14:07
timotimo oh, i want to jump
but i thought eq is string equlaity
jnthn timotimo: nooooooo....don't jump! 14:08
timotimo: eq depends on regiser type I think
timotimo ;
ah, ok
jnthn timotimo: I think iseq is used for getting the result
Like if you don't want to jump
lizmat: I don't really see why to do that... 14:09
moritz ♫ let's do the PIR jump again ♬
jnthn lizmat: It puts whem further away from the things they relate to.
timotimo the code seems to continue compiling past nqphll now
that's a good sign
if i have network coverage (damn you, eplus!) i'll update you on my progress
lizmat jnthn: well that seems to be the meme of src/core/Exception
stub them, and then define them in src/core/Exception 14:10
timotimo what does c.s mean? :/
lizmat cum suis
FROGGS coffee shop?
ohh
lizmat and the like ?
jnthn can't say
moritz ah, I usually use 'et al' for that :-)
but that's just "and others"
lizmat hmmm.. oddly enough, this seems to be Dutch :-) 14:11
FROGGS "Acronym Finder: CS stands for Cum Suis (Latin: and associates). This definition appears very rarely."
jnthn Not in lizmat's messages :P
FROGGS *g*
lizmat hehe
jnthn lizmat: Well, I think Threading stuff comes after exceptions, though... 14:12
FROGGS the rare stuff happens pretty often here in #perl6 :o)
jnthn lizmat: We could move 'em there I guess...
timotimo now that i've figured out (with your help) how to use the fail thing, i get excellent network coverage
lizmat it's what been done everywhere else in core, afaik
timotimo what is this >_<
jnthn lizmat: But it may be more conveneint to keep them near the stuff tehy relate to while we're still going through name changes.
lizmat yes, I'll keep them close for now 14:13
we don't want abandoned exceptions hanging around
jnthn aye
moritz
.oO( dangling exception at line 25 )
14:13 araujo left
jnthn
.oO( exceptional dangling at high line 10 )
14:14
14:14 araujo joined, araujo left, araujo joined
lizmat who said anything about dangling? 14:14
:-)
14:14 rurban joined
FROGGS .oO( exceptional dumpling at high line 10 ) 14:15
moritz nobody! The IR clogs prove it. DELETE FROM ilbot_lines WHERE line LIKE '%dangling%';
FROGGS only her smile remains :o)
timotimo wow 14:17
a noticable difference
from 233 seconds to 224 seconds for stage parse
hoelzro wow
such noticable dffirence
amaze
moritz timotimo++ 14:18
FROGGS wanna have!
timotimo r: say224/233
hoelzro many plus
timotimo well, it's still a very noisy set of just two data points
camelia rakudo-jvm 882e33: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.␤»
..rakudo-parrot c31f30: OUTPUT«===SORRY!=== Error while compiling /tmp/x6PhUXHs0b␤Undeclared routine:␤ say224 used at line 1␤␤»
timotimo r: say 224/233
camelia rakudo-parrot c31f30: OUTPUT«0.961373␤»
..rakudo-jvm 882e33: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.␤»
timotimo 5%, won't knowk that
knock*
14:18 nnunley joined
timotimo i'll upload my code and someone with a beefier machine can do speed measurements for me (please) 14:18
moritz j: say 'alive' 14:19
14:19 Hugh_ joined
moritz timotimo: sure, will do 14:19
timotimo this may take a while :(
camelia rakudo-jvm 882e33: OUTPUT«(timeout)»
timotimo stage0 through thin phne connection 14:20
dalek p/eqat_use: e41972e | (Timo Paulssen)++ | src/vm/ (19 files):
update stage0 for parrot and jvm to get eqat op.
p/eqat_use: 1e21ec9 | (Timo Paulssen)++ | src/vm/parrot/QAST/Compiler.nqp:
use eqat instead of substr+eq in the parrot qast compiler
p/eqat_use: 5bf513d | (Timo Paulssen)++ | src/ (5 files):
use the new nqp::eqat op in a couple of places
p/eqat_use: 2608c7a | (Timo Paulssen)++ | src/vm/parrot/QAST/Compiler.nqp:
use eqat in the literal regex code on parrot
FROGGS fetches
moritz builds 14:22
14:27 thou left 14:29 kivutar left
moritz dammit, I should have done a reference timing *before* 14:29
14:30 SmokeMachine joined, dmol left, SamuraiJack left 14:31 raiph joined
timotimo know that feel :) 14:32
moritz parrot with eqat_use stage parse: 116.610
will post the other timings when I have them 14:33
timotimo ty
changing trains now
online with my phone
14:34 berekuk left 14:35 johnny5_ left
moritz JVM with eqat_use stage parse: 45.171 14:36
14:37 xenoterracide left, johnny5_ joined
timotimo jvm does not have many changes 14:37
moritz now building nqp/master again
lizmat moritz: 50.270 just now, without these
timotimo i hope the winnings are for real 14:38
dalek kudo/sized-arrays: 3823b87 | moritz++ | tools/lib/NQP/Configure.pm:
[Configure] get rid of spurious "NQP too old" messages
moritz eeks, I was on the wrong branch the whole time :-)
well, shouldn't matter much for relative comparison
14:38 cognominal left
moritz I'll cherry-pick that commit into nom later on 14:39
timotimo :)
dalek kudo/nom: 8e64a83 | (Elizabeth Mattijsen)++ | / (15 files):
Split Threading.pm into components

No other changes made to content just yet. Keeping the old Threading.pm around for reference for now.
14:40
14:41 beastd joined 14:43 jnap joined
timotimo fwiw i did not run many tests with my changes 14:43
soit may be wrong but still succeed in building nqp&raludo 14:44
14:47 btyler joined, bluescreen10 joined
moritz parrot with nqp/master: 116.489 14:49
timotimo aaw
so it was all noise? 14:51
moritz wait for the JVM timing
timotimo sadface
jvm should not see changes
at least for stage parse 14:52
moritz 44.926 14:53
14:53 benabik joined
timotimo that's just noise, yeah 14:54
it should have done *something* 14:55
now I'm disappointed :(
FROGGS patched parse-p: 124.726 / 123.368 / 122.815 / 118.608 14:58
6 seconds difference for the same code?
btw, only xchat, an editor and this is running
timotimo you think i made the performance less reliable? 15:00
lizmat FROGGS: remember ribasushi's talk at YAPC?
timotimo hehe
15:00 kaare_ joined
lizmat if you want reliable benchmarks, make sure any auto-turbo or de-turbo settings are off 15:01
timotimo mhhyes
FROGGS lizmat: yeah, that might be it... 15:02
dalek gs.hs: 281b626 | au++ | HsSyck/ (3 files):
* s/Changes/changelog/ for hackage
timotimo use cpufreq to set the frequency to your machines minimum
FROGGS no time to do that now though :/
bbl
timotimo so do you have unlatched timings?
k
btw, the regex compiler for literal uses lc instead of fc for literals with ignorecase 15:18
15:18 rindolf joined, Ulti joined
timotimo but since fc can changebthe strlen, i'm not one hundred percent sure how to change it 15:19
i guess I'll need test cases to makebthe change work
diakopter timotimo: did you have an idea of how many eqat invocations there are? 15:20
timotimo not really, no 15:21
should i measure it?
only for regexes or for everything?
15:22 lizmat left
diakopter or how much time of the parse stage was spent in the things eqat replaced? 15:22
timotimo or are you just going to tell me to measure first next time? :)
i did not have sufficient measurement, no 15:23
all i knew was eqat is about 3x faster than substr+ eq
andbthen i just replaced those occurrences 15:24
diakopter oh
15:25 cognominal joined
diakopter well if it's only 0.5% of total run time, the max improvement you could see is 0.33% 15:25
timotimo yes i know
but it is very hard to figure these things out 15:26
diakopter a routine-level profiler is not far fetched.. I'm working on it for moar
..shouldn't actually be horrible overhead.. 15:27
timotimo maybe i will try perf again
15:28 xinming_ left, xinming joined
timotimo last time i looked it spent like 30% of time allocating memory or something? 15:28
15:28 lizmat joined
timotimo notbsure i remember correctly 15:29
lizmat new glassfiber connection and/or new FritzBox not as reliable as I would hope
timotimo that may have been niecza on mono, too?
15:29 ajr_ left, xenoterracide joined 15:30 ajr joined 15:31 ajr is now known as Guest38107, Guest38107 is now known as ajr_ 15:33 fhelmberger_ joined 15:34 lizmat left, lizmat joined
dalek kudo/nom: 9d83492 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ (2 files):
select() -> winner() migration
15:35
lizmat more later, cycling & dinner&
15:36 fhelmberger_ left, fhelmberger left
jnthn away for a bit & 15:42
15:45 To_______ joined 15:46 To_______ is now known as tgt, tgt left, brrt left 15:47 To_______ joined, To_______ is now known as tgt, tgt left 15:48 tgt joined 16:00 denis_boyun joined
timotimo i've arrived :) 16:09
diakopter o_O
16:10 denis_boyun left 16:13 tipdbmp left, Hugh_ left, tipdbmp joined
kresike bye folks 16:15
16:15 kresike left
raiph p5eval: @ar1 = qw(foo bar); @ar2 = qw(a b c d); print scalar (@ar1, @ar2); # blogs.perl.org/users/ovid/2013/11/a...-quiz.html 16:20
p5eval raiph: 41
diakopter p5eval: @ar1 = qw(foo bar); @ar2 = qw(a b c d); scalar (@ar1, @ar2); 16:22
p5eval diakopter: 4
diakopter raiph: it auto-prints already
[.. in case you weren't already aware/realized]
raiph p: my @ar1 = <foo bar>; my @ar2 = <a b c d>; print $(@ar1, @ar2); 16:23
camelia rakudo-parrot 8e64a8: OUTPUT«foo bar a b c d»
raiph diakopter: ovid's post is about a p5 result that's surprising
diakopter: (i did know about the autoprint) 16:24
16:25 [Sno] left 16:29 daxim_ left
timotimo i'm glad that kind of stuff is a bit more transparent in perl6 :) 16:32
diakopter p: my @ar1 = <foo bar>; my @ar2 = <a b c d>; print item (@ar1, @ar2); 16:35
camelia rakudo-parrot 9d8349: OUTPUT«foo bar a b c d»
diakopter p: my @ar1 = <foo bar>; my @ar2 = <a b c d>; print list (@ar1, @ar2);
camelia rakudo-parrot 9d8349: OUTPUT«foobarabcd» 16:36
diakopter p: my @ar1 = <foo bar>; my @ar2 = <a b c d>; print sink (@ar1, @ar2);
camelia ( no output )
16:37 araujo left
diakopter p: my @ar1 = <foo bar>; my @ar2 = <a b c d>; say (sink @ar1, @ar2).WHAT; 16:37
camelia rakudo-parrot 9d8349: OUTPUT«Nil␤»
16:37 araujo joined
cxreg does rakudko-jvm implement most of that heretical S17? 16:43
timotimo yes, that's right
cxreg having written a ton of node.js in the last year it looks so pleasant to work in 16:44
16:47 denis_boyun joined 16:55 denis_boyun left 17:02 SmokeMachine left 17:09 rurban left 17:11 stevan_ left 17:12 kivutar joined
timotimo i still have no idea how to read (or even interpret) kcachegrind, but it seems like a bunch of time is getting spent in publish_parrot_vtable_handler_mapping or something like that? 17:14
does that ring any bells?
17:17 denis_boyun joined
arnsholt The squares in the kcachegrind display are scaled so that more time == more area 17:20
17:21 SmokeMachine joined
timotimo in the callee map, yeah? 17:21
arnsholt Yeah 17:22
17:22 zakharyas left 17:30 ajr joined, ajr_ left 17:31 ajr is now known as Guest63932, Guest63932 is now known as ajr_
timotimo it seems like is_narrower gets a fair amount of time 17:32
huh, that's a very tight routine
17:33 berekuk joined
timotimo ah, wrong is_narrower 17:33
17:33 ingy^ joined, jac50 joined 17:37 stevan__ joined 17:41 risou is now known as risou_awy 17:42 risou_awy is now known as risou 17:44 Rotwang joined 17:46 [Sno] joined, denis_boyun left 17:51 ingy^ left 17:52 pernatiy left 18:00 risou is now known as risou_awy 18:04 jac50 is now known as lemOn91
dalek kudo/nom: cdcb429 | moritz++ | tools/lib/NQP/Configure.pm:
[Configure] get rid of spurious "NQP too old" messages
18:18
18:22 SamuraiJack joined, ajr_ left, ssutch joined 18:33 lizmat left, lizmat joined 18:41 darutoko left 18:47 kivutar left
lue Hello world o/ 18:55
18:58 dmol joined 18:59 kivutar joined 19:01 SamuraiJack left 19:03 cognominal left 19:04 dmol left
tadzik helue world 19:06
lue Why does nqp-j refuse to install to /usr/local like a normal person? :( 19:10
(looks like it means I can't compile rakudo-p and -j in the same makefile ._.) 19:13
19:22 berekuk left 19:23 berekuk joined 19:32 colomon left
lizmat is back 19:40
woolfy \o/
lizmat quelle surprise! 19:41
timotimo yay, i just ordered my new laptop :) 19:42
19:42 risou_awy is now known as risou 19:48 zakharyas joined 19:50 berekuk left 19:51 kivutar left 19:53 rindolf left
moritz lue: what did you try, what went wrong? 19:56
tadzik oh, what will it be?
lue moritz: just, for some reason in nqp `perl Configure.pl --backend=parrot' will install to /usr/local upon "sudo make install", and `perl Configure.pl --backend=jvm` doesn't. 19:57
19:58 ingy^ joined
moritz lue: both install to ./install without any given --prefix 19:58
19:58 denisboyun joined
moritz lue: maybe you had some remnant of auld days when you configured with a different prefix 19:59
... left in your build dir
20:00 stevan__ left
lue moritz: nope. I can assure you nqp-p configure goes to /usr/local . I've run plenty of git clean -dfx, but can do it again and run configure and look at the makefile 20:00
20:00 risou is now known as risou_awy
moritz lue: maybe if it dound a prrot configured with prefix /usr/local 20:00
*found
lue moritz: that would likely be it. I'm not a --gen user, after all. 20:01
20:01 colomon joined, tobyink joined
lizmat jnthn: in src/vm/jvm/core/Threading.pm, line 784, there is an assignment to $ssn that is never used 20:02
seems to me something is amiss there
same on line 806, BTW 20:04
20:06 berekuk joined 20:07 FROGGS left 20:09 ingy^ left
lizmat jnthn: perhaps $lock.protect could take additional parameters to be passed to the code to protect? 20:12
timotimo has on the table in front of him: a nintendo 64 expansion pak 20:14
4 megabytes. with heatsink thingie on the side 20:15
just wow
20:16 berekuk left 20:17 lizmat left 20:19 denisboyun left
lue timotimo: 4 MB with 9b/B, IIRC :) 20:19
timotimo wow, seriously? 20:20
20:20 stevan_ joined
timotimo is that for error correction or something? 20:20
lue z-depth info, I believe /me sees if he can double-check 20:22
timotimo didn't see anything about it on the wikipedia article
20:22 lizmat joined
dalek kudo/nom: 0eb6a26 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ (5 files):
Some more Concurrency to spec migrations

Subscribable -> Supply
  Lock.run -> Lock.protect
  *.subscribe -> *.tap
  *.subscriptions -> *.tappers
20:23
timotimo The Nintendo console utilized 4 MB RDRAM running with a 500 MHz clock on a 9-bit bus, providing 500 MB/s bandwidth.
20:23 raiph left
lue en.wikipedia.org/wiki/Nintendo_64_...ons#Memory (but seems you found it :D) 20:24
timotimo: Maybe I read the "z-depth" bit [;)] from the super-illegal-to-have-had-in-possession-to-read-so-certainly-i-didn't technical docs. 20:25
timotimo hah :D
yeah, 8 bits of z-depth would be very little
lue (fun fact: the N64 SDK came with stuff for Windows and SGI workstations. SGI ≈ Unix) 20:26
lizmat jnthn: src/vm/jvm/core/asyncops.pm, lines 52,57,58 use an array @waiting that doesn't seem to be actually used anywhere
was that left behind from some debugging ?
timotimo yeah, at that time sgi was big for graphics development, no? 20:29
i think the wipeout people developed for sgi first and then had to downscale the game quite a bit for it to run on the playstation
dalek ast: 9603768 | (Elizabeth Mattijsen)++ | S17-concurrency/su (2 files):
Another part of Subscribable -> Supply migration
20:30
20:30 berekuk joined 20:31 FROGGS joined
lue Wow. What took 100 entries 91.7576215s to process on Parrot takes just 21.618s on JVM :) 20:31
tadzik timotimo, timotimo 20:34
what's that laptop gonna be?
timotimo t440s 20:38
fullhd, 12 gigs of ram, SSD+HDD :D
lizmat timotimo
timotimo lizmatlizmat
lizmat
.oO( felt a Sheldon like urge after tadzik's double timotimo )
timotimo :D
dalek kudo/nom: 42960c4 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ (3 files):
More Concurrency up-to-specness

  *.run -> *.start
Please note that Thread already had a .start method: renamed that to jvm_start.
20:43
20:44 Hellcat joined 20:45 Hellcat is now known as Guest25321, Guest25321 left, Guest25321 joined 20:46 Guest25321 left, Guest25321 joined
timotimo wow, the entirety of get-local-timezone-offset on my laptop takes 0.1 seconds 20:48
that seems a tad excessive
20:49 Guest25321 left
lue "Your timezone offset appears to be UTC-8.00002777777" 20:50
20:52 p5eval left
perigrin there was a pretty awful doc bug in that version of UTC. 20:53
timotimo $date eq any(tai-utc::leap-second-dates) - this could be slow 20:56
lue r: say any(tai-utc::leap-second-dates); # worth a shot
timotimo was about to print that :)
camelia rakudo-parrot cdcb42, rakudo-jvm 882e33: OUTPUT«any(1972-06-30, 1972-12-31, 1973-12-31, 1974-12-31, 1975-12-31, 1976-12-31, 1977-12-31, 1978-12-31, 1979-12-31, 1981-06-30, 1982-06-30, 1983-06-30, 1985-06-30, 1987-12-31, 1989-12-31, 1990-12-31, 1992-06-30, 1993-06-30, 1994-06-30, 199…»
timotimo r: say tai-utc::leap-second-dates.elems; 20:57
camelia rakudo-parrot cdcb42, rakudo-jvm 882e33: OUTPUT«25␤»
timotimo no, i was wrong. that only gets touched if there's a second >= 60
lue wonders how many timezones you could divide the Earth into before it gets too silly to keep track. 20:58
20:58 denis_boyun joined, Mouq left
geekosaur by some arguments that's anything over 1... 20:59
timotimo :) 21:02
dalek kudo/nom: 186b451 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ (2 files):
Still more S17-Concurrency up-to-specness

keeper -> vow
timotimo i don't think infix:«>» knows to automatically assume modulo-60 arithmetics if the lhs is called $!seconds ;)
the next thing that may be slow is the when blocks with any-junctions 21:04
lue timotimo: I'm not entirely sure you should worry about .1s :) 21:09
timotimo cool, i can teach the optimizer to do junctions in when-blocks, too! 21:10
21:21 Eg0N|2 joined 21:26 kaare_ left, Eg0N|2 left
lizmat wonders whether Sockets shouldn't be doing Supply 21:27
tadzik isn't supply something that may lose data? 21:28
they could be UDP then :P
lizmat
.oO( deja vu )
geekosaur .oO { I could tell you a joke about UDP, but... } 21:29
21:29 Hellcat joined
dalek kudo/nom: 6f360f5 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Supply.pm:
Supply.untap should be Supply.close
21:30
21:30 Hellcat is now known as Guest39759 21:31 BenGoldberg joined
tadzik should sockets support compile-time tapping? I know a government or two which may be interested in that 21:31
dalek kudo/nom: 6da29b2 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/Thread (2 files):
Unrename internal Thread.run->Thread.start

This seems to refer to something called "run" in the JVM bowels, of which I know nothing about.
ast: 7999141 | (Elizabeth Mattijsen)++ | S17-concurrency/ (4 files):
Bring S17-concurrency tests up to spec
21:32
21:34 Guest39759 left 21:36 jnap left
lizmat preflex: tell jnthn src/vm/jvm/core should be up to spec again 21:36
preflex Consider it noted.
tadzik aawesome 21:38
lizmat++
moritz ... and all the examples from the slides broken :-)
lizmat not all, I don't think, but many, yes
preflex: tell jnthn please let me know if I should fix your slides as well 21:39
preflex Consider it noted.
21:44 benabik left 21:47 denis_boyun left 21:53 zakharyas left
dalek ecs: d0b6770 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
s/Supply/Publish/ where needed

Supply was both a role and a class. Publish is a class that does Supply. Well, at least, that's how it's implemented now.
21:54
21:56 bluescreen10 left, bluescreen10 joined 21:59 denis_boyun joined, tgt left
diakopter . 22:05
lizmat
.oO( do what again? )
diakopter .
geekosaur resting? 22:10
timotimo huh, i really can't pinpoint why get-local-timezone-offset would be so slow 22:11
dalek ecs: d68bb65 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Add CAS
22:12
lue timotimo: I'm confused now. .1s isn't slow for much to me. Or did you get a worse time...? 22:14
22:15 dmol joined
diakopter lizmat: did jnthn mention about the cas nqp ops? 22:16
lizmat you mean in the spec ?
timotimo 0.1s for constructing three datetime objects and converting from unix time twice and to unix time once?
lizmat no, not as NQP op
diakopter anytime
did he mention cas? 22:17
22:17 btyler left
timotimo (though now i've removed a debug-say that may have taken a big chunk of time due to IO being IO) 22:17
lizmat the spec mentions CAS, read it :-)
anyway, earlier today, he said that a lot of the features now in src/vm/jvm/core would become nqp::ops once we know what we need 22:18
diakopter well I'm curious how much it matches what jnthn and I discuused/designed/planned extensively in kiev
lizmat realizes she missed the Scheduler.schedule -> cue migration
timotimo lue: that's really enough stuff to do to justify 0.1s? 22:19
22:20 BenGoldberg left
timotimo running the empty program takes about 1.1s and apparently 10% of that is calculating the timezone interval that isn't used in 99.99% of all one liners 22:20
22:21 BenGoldberg joined
lizmat feels like something that should be lazy :-) 22:22
tadzik :o
diakopter lizmat: I don't understabd what happened to the huge expanse of things jnthn and I discussed in Kiev
22:23 jnap joined
lizmat neither: I was in Kiev, but not at those discussions, was I ? 22:23
timotimo tadzik: good news, i found out how to make the empty program take 10% less time! ;)
diakopter this cas section makes no sense
22:24 berekuk left
diakopter you can't implement cas in Perl 6 22:24
22:25 ssutch left, berekuk joined 22:26 denis_boyun left
lizmat I think the spec is more to explain the idea, 22:26
22:27 denis_boyun joined
diakopter it doesn't explain the idea 22:29
timotimo how is such a lazy thing like $PROCESS::TZ best handled? with a proxy that caches the value upon first access?
lizmat it probably needs to be done as an nqp op, I agree, but I still don't see why we could not have a cas() exposed at Perl6 level
timotimo: except that that probably doesn't work that early in settings ? 22:30
diakopter we can, but it needs to have locks at some level, hopefully the nqp cas oo
op
the cas sub, I mean
lizmat wonders whether we need an "on access" attribute on variables
diakopter also, this doesn't work for lvalues deeply 22:31
22:32 bluescreen10 left
diakopter the idea is i want to cas an array slot 22:32
lizmat I would say: patches welcome ? 22:33
diakopter but they're not 22:35
timotimo oh my. the vast majority of the time is spent inside DateTime.new(now).posix.Int 22:42
as in 0.088 out of 0.1s
timotimo gets more time resolution to figure out if .new or .posix.Int is to blame 22:43
these build times on my old laptop are pretty prohibitive ... 22:44
r: my $time = nqp::time_n(); get-local-timezone-offset(); say nqp::time_n() - $time; 22:45
camelia rakudo-jvm 882e33: OUTPUT«(timeout)»
..rakudo-parrot 6da29b: OUTPUT«0.0676708221435547␤»
timotimo okay, on a faster machine that may not be terribly much time saved
i wonder how fast camelia runs the empty program, all in all
22:46 lemOn91 left
timotimo p: my $time = nqp::time_n(); now; say nqp::time_n() - $time; 22:53
camelia rakudo-parrot 6da29b: OUTPUT«0.0195190906524658␤»
timotimo p: my $time = nqp::time_n(); DateTime.new(now); say nqp::time_n() - $time;
camelia rakudo-parrot 6da29b: OUTPUT«0.04715895652771␤»
timotimo p: my $time = nqp::time_n(); DateTime.new(now).posix; say nqp::time_n() - $time;
camelia rakudo-parrot 6da29b: OUTPUT«0.0777351856231689␤»
timotimo p: my $time = nqp::time_n(); DateTime.new(now).posix.Int; say nqp::time_n() - $time;
camelia rakudo-parrot 6da29b: OUTPUT«0.0484480857849121␤»
timotimo oh wow, that's a noisy measurement 22:54
lue considers working on perl6/book ... 22:55
timotimo that would be cool
note that parts of the book are reproduced in possibly slightly altered form in the p6doc repo as well
classtut and friends
lue timotimo: yeah, but book form is still nice :) 22:57
timotimo yeah, just saying there's an almost 1:1 copy of the text in another repo as well
lue wants to start by undoing the seemingly silly use of nonfree fonts he can't find in portage, and isn't motivated to hunt for :P 22:58
At least so I can compile the book, that is.
timotimo p: say now.WHAT 22:59
camelia rakudo-parrot 6da29b: OUTPUT«(Instant)␤»
22:59 tobyink left
timotimo p: say now.to-posix 22:59
camelia rakudo-parrot 6da29b: OUTPUT«1383951594.255217 False␤»
lue I'd probably start a modernize branch if/when I decide to act on that class of urges :) (Pod6, all XeLaTeX, etc. ...) 23:00
timotimo p: my Instant $n = now; say now.to-posix; say DateTime.new(now).posix;
camelia rakudo-parrot 6da29b: OUTPUT«1383951623.037775 False␤1383951623␤»
timotimo oh man, leap seconds ...
tomorrow i'll try to give the new method that turns an Int into a DateTime native int arithmetics and see if that helps at all 23:02
for now i'll sleep
&
23:02 iSlug left
lizmat gnight, timotimo 23:02
23:06 sftp left, beastd left
lue I'm not sure if the formatting mixups are caused by my font changes or not, and I don't have the nonfree fonts to test this :P 23:07
timotimo questhub.io/realm/perl/quest/527d67...604d0000ca - i'd love somebody to comment there, or tell me here, why the sub is the way it is, because i'm not sure i get it.
lue Huh. Something is messing up the rendering, and I don't think it's just my font choice... 23:14
23:18 sftp joined 23:21 aindilis left
lue
.oO(Our lovely perl5 scripts are introducing mojibake. /me kinda wishes a book veteran was around.)
23:21
lizmat timotimo: having been there, I don't think there is an easier way 23:22
unless you can prevent the craation of the DateTime
23:30 Shellcat joined 23:36 FROGGS left
dalek kudo/nom: d2cc298 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ (3 files):
Hopefully final Concurrency up-to-specness

  .schedule -> .cue
  .schedule_in -> .cue( :in )
  .schedule_every -> .cue( :every )
   -> .cue( :at )
Alas, there seems to be a MMD bug preventing this from working:
Ambiguous call to 'cue'; these signatures all match:
  :(ThreadPoolScheduler : &code, Mu *%_)
Leaving this to jnthn++ to figure out why
23:43
ast: 8b42d46 | (Elizabeth Mattijsen)++ | S17-concurrency/scheduler.t:
Adapt test to .schedule* -> .cue migration
23:44
23:48 ssutch joined, FROGGS joined
dalek kudo/nom: 405e482 | (Elizabeth Mattijsen)++ | src/vm/jvm/core/ (2 files):
Too many proto's may spoil the broth
23:50
23:58 denis_boyun left