Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-11-13

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:00 dalek rakudo/nom: b3aa8cf | (L. Grondin)++ | src/core/List.pm:
00:00 dalek rakudo/nom: implement List.combinations(Range $)
00:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b3aa8cfa44
00:00 dalek rakudo/nom: 5c5fbc8 | (L. Grondin)++ | src/core/List.pm:
00:00 dalek rakudo/nom: fixing indent
00:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5c5fbc8ce2
00:00 dalek rakudo/nom: d41dd80 | timo++ | /:
00:00 dalek rakudo/nom: Merge pull request #213 from grondilu/nom
00:00 dalek rakudo/nom:
00:00 dalek rakudo/nom: List.combinations with a Range argument
00:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d41dd803bf
00:00 timotimo nope, it duplicates the commits :(
00:00 jnthn d'oh!
00:00 * timotimo forcepushes
00:00 jnthn I guess one thing or the other changed the sha1's
00:02 timotimo oh!
00:02 timotimo it could be that i rebased
00:02 timotimo yeah, i did
00:06 timotimo r: sub foo { regex bar { ... } };
00:06 camelia rakudo-parrot 1371cc, rakudo-jvm 1371cc: OUTPUT«Useless declaration of a has-scoped method in mainline␤»
00:09 * timotimo ta/me takes care of old pull requests
00:11 timotimo wow. for some reason, the setting just parsed in 107.8s, which is i believe a new short-term record!
00:11 timotimo did the move of arity do that much of a difference?!?
00:12 * timotimo can hardly believe it
00:12 Psyche^_ joined #perl6
00:13 timotimo r: say "though, it also saves { 589350 - 5950 } steps executed in buildplans that would do a hash lookup for arity and fail to find it"
00:13 camelia rakudo-parrot 1371cc, rakudo-jvm 1371cc: OUTPUT«though, it also saves 583400 steps executed in buildplans that would do a hash lookup for arity and fail to find it␤»
00:14 dalek rakudo/nom: 34922a2 | (Rob Hoelz)++ | src/Perl6/Actions.nqp:
00:14 dalek rakudo/nom: Add "did you mean?" when trying to embed a regex in a sub
00:14 dalek rakudo/nom:
00:14 dalek rakudo/nom: Example:
00:14 dalek rakudo/nom:
00:14 dalek rakudo/nom: sub foo {
00:14 dalek rakudo/nom:     regex re {
00:14 dalek rakudo/nom:         ...
00:14 dalek rakudo/nom:     }
00:14 dalek rakudo/nom: }
00:14 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/34922a2b17
00:14 dalek rakudo/nom: 69eddb2 | timo++ | src/Perl6/Actions.nqp:
00:14 dalek rakudo/nom: Merge pull request #209 from hoelzro/regex-sub
00:14 dalek rakudo/nom:
00:14 dalek rakudo/nom: Add "did you mean?" when trying to embed a regex in a sub
00:14 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/69eddb2eb6
00:14 * timotimo would like to put https://github.com/rakudo/rakudo/pull/226 up for consideration again
00:16 timotimo r: "foo" +> 1;
00:16 camelia rakudo-parrot 1371cc: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤  in method Int at gen/parrot/CORE.setting:11979␤  in sub infix:<+>> at gen/parrot/CORE.setting:4021␤  in sub infix:<+>> at gen/parro…»
00:16 camelia ..rakudo-jvm 1371cc: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤  in block  at /tmp/ooi4dFtdDx:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤…»
00:17 timotimo r: 1234 +> 1;
00:17 camelia rakudo-parrot 1371cc, rakudo-jvm 1371cc: ( no output )
00:19 timotimo r: 1234 ~> 1;
00:19 camelia rakudo-jvm 1371cc: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/IYBpLzl0Vy�Preceding context expects a term, but found infix > instead�at /tmp/IYBpLzl0Vy:1�------> [32m1234 ~>[33m�[31m 1;[0m�»
00:19 camelia ..rakudo-parrot 1371cc: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/LdJzCtzvSN�Preceding context expects a term, but found infix > instead�at /tmp/LdJzCtzvSN:1�------> [32m1234 ~>[33m�[31m 1;[0m�»
00:19 timotimo r: 1234 ~< 1;
00:19 camelia rakudo-parrot 1371cc: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/tQxzXqPAH9â�¤Unable to parse expression in quote words; couldn't find final '>'â�¤        â�¤at /tmp/tQxzXqPAH9:1â�¤------> [32m1234 ~< 1;[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤        â€¦Â»
00:19 camelia ..rakudo-jvm 1371cc: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/qZZcOlwd2Tâ�¤Unable to parse expression in quote words; couldn't find final '>'â�¤        â�¤at /tmp/qZZcOlwd2T:1â�¤------> [32m1234 ~< 1;[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤        pos…»
00:33 dalek rakudo/nom: fe8c3c0 | Mouq++ | src/ (2 files):
00:33 dalek rakudo/nom: Makes string-wise shifts parse and fail as NYI
00:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fe8c3c0f97
00:33 dalek rakudo/nom: b2c8ca5 | Mouq++ | src/core/Str.pm:
00:33 dalek rakudo/nom: Use typed NYI exception
00:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b2c8ca5dea
00:33 dalek rakudo/nom: f4e2a0a | (Timo Paulssen)++ | src/ (2 files):
00:33 dalek rakudo/nom: Merge branch 'stringshift' of github.com:Mouq/rakudo into Mouq-stringshift
00:33 dalek rakudo/nom:
00:33 dalek rakudo/nom: Conflicts:
00:33 dalek rakudo/nom: src/Perl6/Grammar.nqp (conflicting cursor optimisations)
00:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f4e2a0a344
00:33 dalek rakudo/nom: a02c75c | (Timo Paulssen)++ | src/core/Str.pm:
00:33 dalek rakudo/nom: add missing X::NYI stub
00:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a02c75c251
00:34 dalek perl6-roast-data: 2bf6255 | coke++ | / (3 files):
00:34 dalek perl6-roast-data: today (automated commit)
00:34 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/2bf6255186
00:35 timotimo i'd like to bump discussion of https://github.com/rakudo/rakudo/pull/160 again, too
00:38 jnthn timotimo: 160 tells people at compile time that something won't work, rather than letting them get confused by it. And I can't imagine anybody has code that relies on the current behavior because it, well, will never work of course :)
00:38 jnthn r: sub foo(Int *@a) { }; foo(1,2,3)
00:38 camelia rakudo-jvm e71f99: OUTPUT«(timeout)»
00:38 camelia ..rakudo-parrot e71f99: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional[Int] but got Array instead␤  in sub foo at /tmp/XdAFQQCrsZ:1␤  in block  at /tmp/XdAFQQCrsZ:1␤  in any  at /tmp/XdAFQQCrsZ:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in a…»
00:38 jnthn Yeah.
00:38 jnthn So +1 to 160
00:38 jnthn Better to tell people stuff just won't work sooner rather than later.
00:39 robinsmidsrod joined #perl6
00:40 timotimo thank you :)
00:44 dalek rakudo/nom: 0628efe | (Timo Paulssen)++ | src/Perl6/Actions.nqp:
00:44 dalek rakudo/nom: Fail when a *@ has a type constraint
00:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0628efe1bc
00:44 dalek rakudo/nom: 73485c0 | (Timo Paulssen)++ | src/Perl6/Actions.nqp:
00:44 dalek rakudo/nom: complain for **@ as well.
00:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/73485c07ab
00:44 dalek rakudo/nom: e54ad44 | timo++ | src/Perl6/Actions.nqp:
00:44 dalek rakudo/nom: Merge pull request #160 from timo/fail_typed_slurpy_early
00:44 dalek rakudo/nom:
00:44 dalek rakudo/nom: Fail typed slurpy early
00:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e54ad44247
00:45 timotimo jnthn: i think the 4.6megs of unnecessary ints for Nodes has shaved off another 3% of parse time on my machine
00:47 jnthn \o/
00:48 timotimo i really like this kind of LHF
00:48 timotimo things that catch the eye of a curious bystander and appear obviously wrong when being prodded for a few minutes
00:48 jnthn There's probably a few more things we can do in QAST space.
00:51 timotimo do you think a hash of hashes would be more efficient than having a hash in every Node?
00:51 timotimo i can think of arguments for both yes and no
00:52 jnthn Ah, for annotations?
00:53 jnthn Yeah, that hash bothers me a bit too but not sure what to do with it...
00:53 timotimo agreed.
00:53 jnthn The $foo<bar> way of annotating is fairly engrained.
00:53 timotimo yeah, and it's super neat to have
01:00 TimToady but for most of those a short linear list would be more efficient than a hash
01:02 [Coke] the recent todo of stuff that is based on a unicode version is nice- be nicer if perl6 exposed the version of unicode it was using so we could write the tests more explicitly.
01:02 [Coke] TimToady: can we have that in one of the global config vars?
01:03 TimToady seems like a no-brainer
01:04 TimToady except, of course, for bikeshedding the name/locatoin
01:05 TimToady maybe a $*UNICODE object to go with $*VM, $*DISTRO, etc.
01:05 TimToady since it doesn't quite seem to attach to any of them
01:06 [Coke] that works. do we need to track anything other than version just yet?
01:07 TimToady dunno; me wonders what happens when someone lies about the Unicode version over a dynamic scope...
01:08 TimToady and what if constant folding has already been done based on Unicode properties?
01:08 [Coke] ... I suppose if we were crazy we could make it read write, and offer to try to support the various versions.
01:08 TimToady s/crazy/crazier/
01:08 [Coke] saner to keep it readonly.
01:08 [Coke] mmhehehe
01:10 TimToady well, PROCESS::UNICODE is readonly, but that doesn't prevent someone from hiding it in a dynamic scope
01:11 TimToady presumably $?UNICODE is the compiler's idea of unicode
01:11 [Coke] I thought someone said they had a clean run of spectests on rakudo.jvm
01:11 TimToady do we allow the introduction of a new version of unicode after compilation?
01:11 timotimo aaw dangit, i've b0rked some spectests
01:12 timotimo turns out :(Mu *@_) was used to verify the correct signature of sub positional { @_[0] }
01:12 timotimo r: sub positional { @_[0] }; say &positional.signature.perl;
01:12 [Coke] TimToady: I could see maybe having to deal with different files with different versions, no?
01:12 camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«:(*@_)␤»
01:12 timotimo r: sub positional { @_[0] }; say &positional.signature.perl; say &positional.signature eqv :(*@_);
01:12 camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«:(*@_)␤False␤»
01:13 timotimo why is that False? is a given @_ type-constrained Mu or something?
01:13 TimToady [Coke]: that idea is very ouch, esp if extended to 'this row of the database is v5, and that row is v6'
01:14 [Coke] r: my $a = "a\nb\tc d"; $a ~~ss/a b c d/w x y z/; say $a;
01:14 camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«wb      xdy z␤»
01:15 [Coke] so I'm happy for now with "you get what version we support", or maybe at best "you can pick one when we start up but as soon as possible."
01:17 [Coke] r: use Test; my $a = "a\nb\tc d"; $a ~~ss/a b c d/w x y z/; is $a, "w\nx\ty z"
01:17 camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«not ok 1 - ␤#      got: 'wb     xdy z'␤# expected: 'w␤# x       y z'␤»
01:17 TimToady I'm thinking the compiler can pick for now, and maybe relax it later
01:17 [Coke] WFM. I just want a little introspection so we can keep running tests.
01:17 TimToady since there are likely optimizations that can be done if we nail down the Unicode version
01:17 TimToady and they're largely backward compat anyway
01:18 * timotimo unsure if should revert
01:18 [Coke] rt wish: I'm looking at the perl6 queue. the default for the "create ticket" button should change.
01:19 TimToady r: sub positional { @_[0] }; say &positional.signature eqv &positional.signature;
01:19 camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«True␤»
01:21 TimToady r: say :(*@_) eqv :(*@_)
01:21 camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«False␤»
01:21 TimToady heh
01:22 dalek roast: a2f7811 | coke++ | S05-substitution/subst.t:
01:22 dalek roast: rakudo fudge
01:22 dalek roast: review: https://github.com/perl6/roast/commit/a2f781118d
01:22 TimToady r: my $s = :(*@_); say $s eqv $s
01:22 camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«True␤»
01:23 TimToady looks kinda like eqv is using === semantics there
01:23 TimToady not that siggies are meant to be very comparable in the first place...
01:24 timotimo would it be okay if i turned those comparisons into string comparisons?
01:24 * TimToady guesses it's considering the two @_ to be different things
01:25 TimToady r: my $a = 42; my $b = 43; :($a,$b) = $b,$a; say $a,$b
01:25 camelia rakudo-parrot e71f99: OUTPUT«Cannot modify an immutable value␤  in block  at /tmp/I_3gH_P9AF:1␤  in any  at /tmp/I_3gH_P9AF:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/parrot/stage2/NQPHLL.nq…»
01:25 camelia ..rakudo-jvm e71f99: OUTPUT«Cannot modify an immutable value␤  in block  at /tmp/jSGDtYunos:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in any command_eval at…»
01:25 TimToady r: my $a = 42; my $b = 43; :($a,$b) ::= $b,$a; say $a,$b
01:26 camelia rakudo-parrot e71f99: OUTPUT«WARNINGS:␤Useless use of "," in expression "::= $b,$a" in sink context (line 1)␤Not enough positional parameters passed; got 0 but expected 2␤  in block  at /tmp/hAQxC0u_Eu:1␤  in any  at /tmp/hAQxC0u_Eu:1␤  in any  at gen/parrot/stage2/NQPHLL.…»
01:26 camelia ..rakudo-jvm e71f99: OUTPUT«WARNINGS:␤Useless use of "," in expression "::= $b,$a" in sink context (line 1)␤Flattening named argument must have VMHash REPR␤  in block  at /tmp/oxqciv0ae5:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/N…»
01:26 TimToady r: my $a = 42; my $b = 43; :($a,$b) ::= ($b,$a); say $a,$b
01:26 camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«4342␤»
01:26 TimToady so :(*@a) should be binding to the same @a outside of the :()
01:27 [Coke] rj: my $file = "";
01:27 [Coke] for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) +% ';'/;
01:27 camelia rakudo-jvm e71f99: ( no output )
01:27 [Coke] rj: my $file = ""; for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) +% ';'/;
01:28 camelia rakudo-jvm e71f99: OUTPUT«(timeout)»
01:28 [Coke] rp: my $file = ""; for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) +% ';'/;
01:28 camelia rakudo-parrot e54ad4: OUTPUT«(timeout)»
01:28 davecc joined #perl6
01:29 timotimo i think i need sleep now
01:29 wbill joined #perl6
01:29 BenGoldberg constant a = b; constant b = a; say a
01:29 BenGoldberg rn: constant a = b; constant b = a; say a
01:30 camelia rakudo-jvm e54ad4: OUTPUT«(timeout)»
01:30 camelia ..niecza v24-98-g473bd20: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤  at Niecza.StashCursor.Core (System.String key, Boolean final, Niecza.StashCursor& sc, Niecza.Variable& v, Niecza.Variable bind_to) [0x00000] in…»
01:30 camelia ..rakudo-parrot e54ad4: OUTPUT«===SORRY!===␤Could not find sub &b␤»
01:30 [Coke] r: say $%*ENV
01:30 camelia rakudo-jvm e54ad4: OUTPUT«("TERM" => "xterm", "SHELL" => "/bin/bash", "LANGUAGE" => "en_US:en", "SHLVL" => "1", "NODE_PATH" => "/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript", "XFILESEARCHPATH" => "/usr/dt/app-defaults/\%L/Dt", "PATH" => "/usr/local/bin:/usr/bin:/bin:/…»
01:30 camelia ..rakudo-parrot e54ad4: OUTPUT«("XDG_SESSION_ID" => "34", "TERM" => "screen", "SHELL" => "/bin/bash", "XDG_SESSION_COOKIE" => "0fb35708baf397c3245138f75177f445-1382763292.469061-1266680044", "SSH_CLIENT" => "87.158.155.58 41019 22", "SSH_TTY" => "/dev/pts/1", "USER" => "p6eval", "LS_C…»
01:30 jeff_s1 joined #perl6
01:32 BenGoldberg Why did r-j timeout, but r-p merely couldn't find sub &b?
01:32 TimToady [Coke]: that goes up to 2.2GB here and has been running for 5 minutes
01:34 TimToady so I doubt rj is gonna finish that in 5 seconds
01:35 TimToady 10 minutes now
01:37 * TimToady wonders if putting :r on that match would make it run faster
01:39 * TimToady gives up after 15 cpu minutes
01:39 dalek roast: 93db1ca | coke++ | S (23 files):
01:39 dalek roast: remove references to "browser" os.
01:39 dalek roast:
01:39 dalek roast: it's from an old version of pugs++
01:39 dalek roast: review: https://github.com/perl6/roast/commit/93db1caeef
01:39 [Coke] TimToady: yah, the bug was "takes too long in jvm"
01:39 [Coke] s/bug/rt/
01:43 [Coke] what's the name of this form: $%*ENV ? dynamic scalar itemizer?
01:44 TimToady well, the $ doesn't care what's after it really
01:45 TimToady it just does a .item to %*ENV
01:45 [Coke] roger.
01:47 dalek roast: 9e9ca28 | coke++ | S02-magicals/env.t:
01:47 dalek roast: add test for RT #117951
01:47 dalek roast: review: https://github.com/perl6/roast/commit/9e9ca281f4
01:47 synopsebot Link: https://rt.perl.org/rt3//Public/Bug/Display.html?id=117951
01:48 [Coke] std: 555 ~~!~~ 666
01:48 camelia std b469b42: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Expecting a term, but found either infix ~~ or redundant prefix ~â�¤  (to suppress this message, please use space between ~ ~) at /tmp/NThmybfRcw line 1:â�¤------> [32m555 ~~!~~[33mâ��[31m 666[0mâ�¤Parse failedâ�¤FAILED 00:01 …»
01:48 [Coke] r: 555 ~~!~~ 666
01:48 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: ( no output )
01:49 * timotimo arrived home
01:49 [Coke] (RT #76436)
01:49 synopsebot Link: https://rt.perl.org/rt3//Public/Bug/Display.html?id=76436
01:50 TimToady [Coke]: the takes-too-long looks like GC thrash to me
01:50 TimToady since it's running 1.5 cpus constantly
01:51 [Coke] https://rt.perl.org/Ticket/Display.html?id=120380
01:53 [Coke] r: sub infix:[/./] { say $^a, $^b }; 5@4
01:53 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«===SORRY!===␤No such method 'ast' for invocant of type 'NQPMu'␤»
01:53 TimToady yeah, eventually get java.lang.OutOfMemoryError: Java heap space
01:57 TimToady just a note on that--the string concat only takes 4 seconds, the rest is all the pattern matching
01:57 TimToady dinner &
01:57 [Coke] r: my @a := gather { for 1..3 { take $_; say @a.perl } }; say @a.perl;
01:57 camelia rakudo-parrot e54ad4: OUTPUT«().list␤splice() not implemented in class 'Mu'␤  in method reify at gen/parrot/CORE.setting:7140␤  in method gimme at gen/parrot/CORE.setting:7566␤  in method perl at gen/parrot/CORE.setting:7913␤  in method perl at gen/parrot/CORE.setting:1018…»
01:57 camelia ..rakudo-jvm e54ad4: OUTPUT«().list␤Cannot do aggregate operation on a type object␤  in block  at gen/jvm/CORE.setting:7122␤  in method gimme at gen/jvm/CORE.setting:7540␤  in block  at /tmp/L_xHImBKFj:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at…»
01:58 [Coke] (RT #66820)
01:58 synopsebot Link: https://rt.perl.org/rt3//Public/Bug/Display.html?id=66820
02:01 nnunley joined #perl6
02:02 lue joined #perl6
02:05 [Coke] r: $foo:: = 42; say $foo::; # RT # 76400
02:05 camelia rakudo-jvm e54ad4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/MANE8TYdIaâ�¤Variable '$foo' is not declaredâ�¤at /tmp/MANE8TYdIa:1â�¤------> [32m$foo::[33mâ��[31m = 42; say $foo::; # RT # 76400[0mâ�¤    expecting any of:â�¤        postfixâ�¤Â»
02:05 camelia ..rakudo-parrot e54ad4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/Ry4A8W96Yeâ�¤Variable '$foo' is not declaredâ�¤at /tmp/Ry4A8W96Ye:1â�¤------> [32m$foo::[33mâ��[31m = 42; say $foo::; # RT # 76400[0mâ�¤    expecting any of:â�¤        postfixâ�¤Â»
02:05 [Coke] arglebargle. (this is what happens when testneeded lingers too long.
02:06 * [Coke] heads out, might see you in a few hours.
02:31 Woodi joined #perl6
02:35 woosley joined #perl6
02:51 BenGoldberg r: say my $foo:: = 1; ++$foo::::
02:51 camelia rakudo-jvm e54ad4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/S7erNqg5RR�Name component may not be null�at /tmp/S7erNqg5RR:1�------> [32msay my $foo:: = 1; ++$foo::[33m�[31m::[0m�»
02:51 camelia ..rakudo-parrot e54ad4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/2DSA5Ga5hB�Name component may not be null�at /tmp/2DSA5Ga5hB:1�------> [32msay my $foo:: = 1; ++$foo::[33m�[31m::[0m�»
02:52 BenGoldberg Hmm, nevermind
03:05 lue [Coke]: to me, $foo:: looks like you either were trying to declare a package, or that you expected it to be foo::<$> and for that to be a valid variable.
03:06 lue r: my $foo:: = 42
03:06 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: ( no output )
03:07 BenGoldberg r: say my $foo:: = 42
03:07 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«42␤»
03:08 lue [Coke]: your examples (which lack a scope decl. like C<my>) are giving the right error, but C<my $foo::> shouldn't work because foo::<$> is a silly variable name.
03:08 lue std: my $foo::
03:08 camelia std b469b42: OUTPUT«ok 00:01 121m␤»
03:08 lue std: my foo::<$>
03:08 camelia std b469b42: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Malformed my at /tmp/NoeCANdx_m line 1:â�¤------> [32mmy [33mâ��[31mfoo::<$>[0mâ�¤    expecting any of:â�¤       nameâ�¤   scoped declaratorâ�¤      typenameâ�¤Parse failedâ�¤FAILED 00:01 120mâ�¤Â»
03:14 bbkr joined #perl6
03:16 * colomon is having one of those horrible moments when last week's extensive refactoring turns out to have been a complete mistake.
03:36 rurban1 joined #perl6
03:47 DarthGandalf joined #perl6
04:18 preflex_ joined #perl6
04:21 kaleem joined #perl6
04:31 BenGoldberg std: my $foo:: = 1; say $foo::
04:31 camelia std b469b42: OUTPUT«ok 00:01 123m␤»
04:40 raiph joined #perl6
04:49 BenGoldberg nr: my @a := 1, 1, { my ($a, $b) = @_[*-1, *-2]; [+] @_[*-$a,*-$b] } ... *; print @a[^10]
04:49 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4, niecza v24-98-g473bd20: OUTPUT«1123345566»
04:49 BenGoldberg nr: my @a := 1, 1, { my ($a, $b) = @_[*-1, *-2]; [+] @_[*-$a,*-$b] } ... *; print @a[999]
04:50 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«(timeout)»
04:50 camelia ..niecza v24-98-g473bd20: OUTPUT«502»
04:51 BenGoldberg r: my @a := 1, 1, { [+] @a[*-$^a,*-$^b] } ... *; print @a[999]
04:51 camelia rakudo-parrot e54ad4: OUTPUT«Cannot use negative index -1 on List␤  in method Numeric at gen/parrot/CORE.setting:11999␤  in sub infix:<+> at gen/parrot/CORE.setting:3923␤  in sub infix:<+> at gen/parrot/CORE.setting:3921␤  in sub  at gen/parrot/CORE.setting:16541␤  in bloc…»
04:51 camelia ..rakudo-jvm e54ad4: OUTPUT«Cannot use negative index -1 on List␤  in sub  at gen/jvm/CORE.setting:16261␤  in block  at /tmp/EO9cXjRbGv:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/sta…»
04:52 BenGoldberg r: constant @a = 1, 1, { [+] @a[*-$^a,*-$^b] } ... *; print @a[999]
04:52 camelia rakudo-jvm e54ad4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/iD3ajzkpRUâ�¤Variable '@a' is not declaredâ�¤at /tmp/iD3ajzkpRU:1â�¤------> [32monstant @a = 1, 1, { [+] @a[*-$^a,*-$^b][33mâ��[31m } ... *; print @a[999][0mâ�¤    expecting any of:â�¤        pos…»
04:52 camelia ..rakudo-parrot e54ad4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/EpJdrXud5vâ�¤Variable '@a' is not declaredâ�¤at /tmp/EpJdrXud5v:1â�¤------> [32monstant @a = 1, 1, { [+] @a[*-$^a,*-$^b][33mâ��[31m } ... *; print @a[999][0mâ�¤    expecting any of:â�¤        â€¦Â»
04:57 SamuraiJack_ joined #perl6
04:58 [Sno] joined #perl6
05:05 johnny5_ joined #perl6
05:31 raiph joined #perl6
05:33 daniel-s joined #perl6
05:39 thou joined #perl6
05:51 logie joined #perl6
06:18 rurban1 joined #perl6
06:19 xinming_ joined #perl6
06:25 [Sno] joined #perl6
06:33 PacoAir joined #perl6
06:50 kaleem joined #perl6
07:01 nnunley joined #perl6
07:17 ponbiki joined #perl6
07:19 FROGGS joined #perl6
07:20 Rix joined #perl6
07:25 logie joined #perl6
07:36 iSlug joined #perl6
07:38 stevan_ joined #perl6
07:39 FROGGS timotimo: the :(Mu *@_) is only to allow to get called by nqp code, so it does not expect to get variables that ~~ Any
07:40 FROGGS so, it is a special case IMO
07:50 FROGGS timotimo: but it would be nice to know why :(Str *@_) won't work
08:01 moritz \o
08:01 moritz timotimo++ # rakudo commit bit
08:01 brrt joined #perl6
08:06 zakharyas joined #perl6
08:06 iSlug joined #perl6
08:38 PacoAir joined #perl6
08:44 FROGGS hi moritz
08:54 dmol joined #perl6
09:18 fhelmberger joined #perl6
09:19 rurban1 joined #perl6
09:25 diakopter hm
09:32 dakkar joined #perl6
09:51 dram joined #perl6
09:55 masak morning, #perl6 :)
09:57 moritz good antenoon, masak
09:57 nwc10 good UGT, #perl6
09:58 moritz \o nwc10
10:05 dayangkun joined #perl6
10:08 SevenWolf joined #perl6
10:09 lizmat good *, #perl6!
10:14 hoelzro ahoy lizmat !
10:14 lizmat hoelzro o/
10:22 dram r: %*ENV{'ENV_TEST'} = 'foo'; shell 'env | grep ENV_TEST';
10:22 preflex dram: you have 1 new message. '/msg preflex messages' to read it.
10:22 camelia rakudo-jvm e54ad4: ( no output )
10:22 camelia ..rakudo-parrot e54ad4: OUTPUT«shell is disallowed in restricted setting␤  in sub restricted at src/RESTRICTED.setting:2␤  in sub shell at src/RESTRICTED.setting:7␤  in block  at /tmp/59vXnsUlxR:1␤  in any  at /tmp/59vXnsUlxR:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146…»
10:26 dram r: my $foo = "FOO"; say qq:ww/$foo "bar baz"/.perl;
10:26 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«("FOO", "bar baz")␤»
10:26 dram great, FROGGS++
10:27 dram r: %*ENV{'ENV_TEST'} = 'foo'; say qx/env/ ~~ /ENV_TEST/;
10:27 camelia rakudo-parrot e54ad4: OUTPUT«qx, qqx is disallowed in restricted setting␤  in sub restricted at src/RESTRICTED.setting:2␤  in sub QX at src/RESTRICTED.setting:9␤  in block  at /tmp/B6wERwfiDL:1␤  in any  at /tmp/B6wERwfiDL:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146…»
10:27 camelia ..rakudo-jvm e54ad4: OUTPUT«「ENV_TEST」␤␤»
10:27 dalek roast: 2466d6c | (Elizabeth Mattijsen)++ | S17-concurrency/ (6 files):
10:27 dalek roast: Remove safeguarding against rakudo.parrot
10:27 dalek roast:
10:27 dalek roast: No longer needed since we can indicate skip in the spectest.data file, moritz++
10:27 dalek roast: review: https://github.com/perl6/roast/commit/2466d6ca2f
10:28 dram hmm, qx// and shell() have been disabled in rakudo-parrot?
10:29 moritz for the evalbot at least
10:29 moritz we should do that for rakudo-jvm too
10:29 dram hmm, It seems that both qx// and run() do not respect %*ENV change, shell() has no problem.
10:30 moritz :(
10:30 dram May somebody have a try?
10:30 dram in rakudo.parrot, jvm is ok
10:32 dalek roast: 3d27820 | (Elizabeth Mattijsen)++ | S17-concurrency/thread.t:
10:32 dalek roast: Add concurrency test for hashes
10:32 dalek roast:
10:32 dalek roast: Unfortunately, this hangs 1/5 times it runs on my machine.  So I've marked it
10:32 dalek roast: to be skipped for the moment.
10:32 dalek roast: review: https://github.com/perl6/roast/commit/3d27820172
10:34 denis_boyun joined #perl6
11:02 kurahaupo joined #perl6
11:23 FROGGS joined #perl6
11:29 tgt joined #perl6
11:45 timotimo if i just assign 3 to a ResizableIntegerArray and don't push any values, are they all 0?
11:48 timotimo because nqp generates "assign 3, assign 0, push 0, push 0, push 0" on every startup it seems
11:48 timotimo and that could probably be 4 instructions less
11:48 * timotimo tries it
11:50 timotimo nqp: my @a := (1, 2, 3, 4, 5); for @a { say($_); last; }
11:50 camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«1␤»
11:52 timotimo interesting. +@foo makes a float in nqp
11:52 timotimo that can't be optimal
11:52 timotimo (but it also can't make much of a difference)
11:55 iSlug joined #perl6
11:56 ggoebel16 joined #perl6
11:58 FROGGS timotimo: I guess it is a num so it can store inf
11:59 timotimo right, but in NQP that doesn't make sense :)
11:59 timotimo anyway. it seems like i save a couple of pushes to every ResizableIntegerArray that is used to build a StaticLexpad
11:59 timotimo that could very well be worth a tiny bit of time
12:00 moritz I guess it's a Num because that's what prefix:<+> in the most general case does
12:00 moritz and there's no multi candidate to do something else
12:01 FROGGS timotimo: nah, I stay pessimistic this time :o)
12:01 brrt joined #perl6
12:02 timotimo moritz: that's what i thought. it's probably not worth it going around in the code replacing +@foo with nqp::elems(@foo), though, i don't think
12:02 timotimo except maybe in very hot paths
12:02 moritz agreed
12:02 timotimo FROGGS: also, yeah, the saving is so tiny, it's probably invisible
12:03 FROGGS MATCH() and CAPHASH() are very hot btw... I tried to optimise them but I'm not good at that
12:03 timotimo is setup_static_lexpad something that gets called often?
12:03 timotimo i'll have a look-see :)
12:03 timotimo probably already pounded into shape by our most brilliant coders :(
12:04 FROGGS rakudo$ grep setup_static_lexpad -R * | wc -l
12:04 FROGGS 3719
12:04 FROGGS it appears very often in the setting.pir at least
12:09 timotimo here in method !LITERAL it uses substr + eq to compare in the case-sensitive case; when the stage0 update for eqat lands, i can make that bit faster, though it's probably not as hot.
12:11 timotimo one thing i can think of is to move the check for $!from and $!to below the iscclass
12:11 timotimo the iscclass test should fail very quickly if it's one of the two, but checking for the two literals takes at least twice that time, right?
12:11 FROGGS is the iscclass that efficient?
12:11 FROGGS I dunno
12:11 timotimo hm. it may not be.
12:11 FROGGS I didn't try that
12:12 timotimo well, i guess i'll try and measure.
12:12 FROGGS what I tried was to save a loop, that is to move most of the stuff from MATCH to CAPHASH
12:12 FROGGS it worked, but there was no performance gain
12:13 timotimo nqp: my $time := nqp::time_n(); my $str := "$!from"; say(nqp::iscclass(nqp::const::CCLASS_NUMERIC, $key, 0)); say($time - nqp::time_n());
12:13 camelia nqp-moarvm: OUTPUT«Attribute '$!from' not declared at line 2, near "\"; say(nqp"␤panic␤»
12:13 camelia ..nqp-parrot: OUTPUT«Attribute '$!from' not declared at line 2, near "\"; say(nqp"␤current instr.: 'panic' pc 16305 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
12:13 camelia ..nqp-jvm: OUTPUT«Attribute '$!from' not declared at line 2, near "\"; say(nqp"␤  in panic (gen/jvm/stage2/NQPHLL.nqp:379)␤  in  (gen/jvm/stage2/NQP.nqp:2309)␤  in  (gen/jvm/stage2/NQP.nqp:2295)␤  in  (gen/jvm/stage2/NQP.nqp:2262)␤  in variable (gen/jvm/stage2/NQP.nqp:2252)…»
12:14 timotimo nqp-p: my $time := nqp::time_n(); my $str := '$!from'; say(nqp::iscclass(nqp::const::CCLASS_NUMERIC, $key, 0)); say($time - nqp::time_n());
12:14 camelia nqp-parrot: OUTPUT«Use of undeclared variable '$key' at line 2, near ", 0)); say"␤current instr.: 'panic' pc 16305 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)␤»
12:14 timotimo nqp-p: my $time := nqp::time_n(); my $str := '$!from'; say(nqp::iscclass(nqp::const::CCLASS_NUMERIC, $str, 0)); say($time - nqp::time_n());
12:14 camelia nqp-parrot: OUTPUT«0␤-8.91685485839844e-05␤»
12:14 timotimo nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!from' || $str eq '$!to'); say($time - nqp::time_n());
12:14 camelia nqp-parrot: OUTPUT«0␤-0.000134944915771484␤»
12:15 timotimo look, much more efficient!!!!! ;)
12:15 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '$!from'; say(nqp::iscclass(nqp::const::CCLASS_NUMERIC, $str, 0)); say($time - nqp::time_n());
12:15 camelia nqp-parrot: OUTPUT«0␤-8.51154327392578e-05␤»
12:15 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '$!from'; say(nqp::iscclass(nqp::const::CCLASS_NUMERIC, $str, 0)); say($time - nqp::time_n());
12:15 camelia nqp-parrot: OUTPUT«0␤-8.10623168945312e-05␤»
12:15 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!from' || $str eq '$!to'); say($time - nqp::time_n());
12:15 camelia nqp-parrot: OUTPUT«0␤-7.79628753662109e-05␤»
12:15 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!from' || $str eq '$!to'); say($time - nqp::time_n());
12:15 camelia nqp-parrot: OUTPUT«0␤-0.000102043151855469␤»
12:16 denis_boyun joined #perl6
12:17 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!to' || $str eq '$!from'); say($time - nqp::time_n());
12:17 camelia nqp-parrot: OUTPUT«0␤-7.89165496826172e-05␤»
12:17 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!to' || $str eq '$!from'); say($time - nqp::time_n());
12:17 camelia nqp-parrot: OUTPUT«0␤-7.89165496826172e-05␤»
12:17 FROGGS no
12:18 Celelibi joined #perl6
12:19 timotimo actually, it may be wise to turn the two eqs into an eqat($key, '$!', 0) && (eqat($key, 'from', 2) || eqat($key, 'to', 2))
12:20 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '$!peter'; say($str eq '$!to' || $str eq '$!from'); say($time - nqp::time_n());
12:20 camelia nqp-parrot: OUTPUT«0␤-7.60555267333984e-05␤»
12:20 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '$!peter'; say($str eq '$!to' || $str eq '$!from'); say($time - nqp::time_n());
12:20 camelia nqp-parrot: OUTPUT«0␤-7.67707824707031e-05␤»
12:20 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '$!peter'; say(eqat($str, '$!', 0) && (eqat($str, 'from', 2) || eqat($str, 'to', 2))); say($time - nqp::time_n());
12:20 camelia nqp-parrot: OUTPUT«Could not find sub &eqat␤current instr.: '' pc 76 ((file unknown):50) (/tmp/vRDqzgMDzG:1)␤»
12:20 timotimo nqp::eqat
12:21 FROGGS nqp-p: my $time := nqp::time_n(); my $str := '$!peter'; say(nqp::eqat($str, '$!', 0) && (nqp::eqat($str, 'from', 2) || nqp::eqat($str, 'to', 2))); say($time - nqp::time_n());
12:21 camelia nqp-parrot: OUTPUT«Error while compiling op eqat (source text: "nqp::eqat($str, '$!', 0)"): No registered operation handler for 'eqat'␤current instr.: '' pc 58571 (gen/parrot/stage2/QAST.pir:21439) (gen/parrot/stage2/QAST.nqp:3584)␤»
12:21 FROGGS nqp-p: nqp::eqat_i
12:21 camelia nqp-parrot: OUTPUT«Error while compiling op eqat_i (source text: "nqp::eqat_i"): No registered operation handler for 'eqat_i'␤current instr.: '' pc 58638 (gen/parrot/stage2/QAST.pir:21459) (gen/parrot/stage2/QAST.nqp:3587)␤»
12:21 FROGGS nqp-p: nqp::eqat_s
12:21 camelia nqp-parrot: OUTPUT«Error while compiling op eqat_s (source text: "nqp::eqat_s"): No registered operation handler for 'eqat_s'␤current instr.: '' pc 58638 (gen/parrot/stage2/QAST.pir:21459) (gen/parrot/stage2/QAST.nqp:3587)␤»
12:21 timotimo oh, it's not merged in yet?
12:22 timotimo 62e2415 - Merge branch 'eqat_unused' (6 days ago)
12:22 timotimo nqp-p say("what's my version?");
12:22 timotimo nqp-p: say("what's my version?");
12:22 camelia nqp-parrot: OUTPUT«what's my version?␤»
12:22 timotimo ...
12:22 timotimo is there a variable that i can print out?
12:22 moritz something with nqp::backendconfig
12:22 timotimo i'll fiddle around
12:22 FROGGS that is about the backend only
12:23 FROGGS nqp: say($_) for nqp::backendconfig
12:23 camelia nqp-moarvm: OUTPUT«ccoptiflags␤uvrule␤tomobjects␤ldshared␤sharule␤ccinstflags␤ldlibs␤ldimp␤shaobjects␤hasreadline␤mtclean␤ccdefflags␤obj␤ldflags␤lddir␤name␤noreturnattribute␤dllexport␤defs[0]␤defs[1]␤dcclean␤moar␤ldrpath␤dcrule␤ldusr…»
12:23 camelia ..nqp-parrot: OUTPUT«git_describe␤sha1␤a␤ar␤ar_extra␤ar_out␤archname␤arflags␤as␤backtrace␤bigendian␤bindir␤bison_version␤blib_dir␤build_dir␤byteorder␤cat␤cc␤cc_debug␤cc_exe_out␤cc_inc␤cc_ldflags␤cc_o_out␤cc_shared␤ccflags␤ccwarn␤chmo…»
12:23 camelia ..nqp-jvm: OUTPUT«runtime.jars␤runtime.classpath␤runtime.bootclasspath␤runtime.prefix␤»
12:23 FROGGS nqp-m: nqp::backendconfig<version> # this will be printed as moar::version
12:23 camelia nqp-moarvm: ( no output )
12:23 FROGGS nqp-m: say(nqp::backendconfig<version>) # this will be printed as moar::version
12:23 camelia nqp-moarvm: OUTPUT«2013.10-120-gb08a229␤»
12:24 FROGGS nqp: use nqp-config;
12:24 camelia nqp-parrot: OUTPUT«"load_bytecode" couldn't find file 'nqp-config.pbc'␤current instr.: '' pc 1946 (gen/parrot/stage2/module_loader.pir:895) (src/vm/parrot/ModuleLoader.nqp:55)␤»
12:24 camelia ..nqp-jvm: OUTPUT«java.nio.file.NoSuchFileException: nqp-config␤  in  (src/vm/jvm/ModuleLoader.nqp:62)␤  in load_module (src/vm/jvm/ModuleLoader.nqp:52)␤  in load_module (gen/jvm/stage2/NQP.nqp:284)␤  in statement_control:sym<use> (gen/jvm/stage2/NQP.nqp:2041)␤  in !reduce (…»
12:24 camelia ..nqp-moarvm: OUTPUT«(signal ABRT)While looking for 'nqp-config.moarvm': no such file or directory␤frame_name_33␤»
12:25 pernatiy joined #perl6
12:25 timotimo moritz: can you check if the nqp-p is rebuilding properly?
12:25 FROGGS nqp: use HLL::Compiler
12:25 camelia nqp-moarvm: OUTPUT«(signal ABRT)While looking for 'HLL/Compiler.moarvm': no such file or directory␤frame_name_33␤»
12:25 camelia ..nqp-jvm: OUTPUT«java.nio.file.NoSuchFileException: HLL/Compiler␤  in  (src/vm/jvm/ModuleLoader.nqp:62)␤  in load_module (src/vm/jvm/ModuleLoader.nqp:52)␤  in load_module (gen/jvm/stage2/NQP.nqp:284)␤  in statement_control:sym<use> (gen/jvm/stage2/NQP.nqp:2041)␤  in !reduce…»
12:25 camelia ..nqp-parrot: OUTPUT«"load_bytecode" couldn't find file 'HLL/Compiler.pbc'␤current instr.: '' pc 1946 (gen/parrot/stage2/module_loader.pir:895) (src/vm/parrot/ModuleLoader.nqp:55)␤»
12:25 timotimo nqp::eqat really should exist.
12:26 FROGGS yeah
12:28 grondilu joined #perl6
12:28 timotimo hm. eqat will specialize to ordat if the needle is 1 long, but if i use $! as the needle, i can shave off a character for both further eqat calls
12:29 timotimo oh, actually, eqat has different semantics!
12:29 timotimo because if the string is '$!from_mars', or '$!to_earth', it will still succeed in the eqat case, but not in the eq case :(
12:29 iSlug joined #perl6
12:30 FROGGS nqp-p: use NQPHLL; my $compiler := HLL::Compiler.new(); $compiler.language('nqp'); say( $compiler.version ) # meh
12:30 camelia nqp-parrot: OUTPUT«This is nqp version  built on parrot 5.9.0 revision RELEASE_5_9_0␤»
12:30 moritz yes, maybe nqp-p is too old
12:31 moritz or it picks up the wrong one
12:31 moritz or, dunno
12:36 timotimo how about i write a tool that uses git diff's output to minimize the diff between a previous and following stage0?
12:36 timotimo at least for parrot?
12:36 stevan_ joined #perl6
12:36 timotimo it could build a library of old/new cuids and just revert the new ids
12:37 FROGGS sounds a bit dangerous
12:37 timotimo it could make upcoming stage0 updates for parrot (not that i would expect terribly many to happen) much much smaller
12:37 timotimo sadly, rewriting history to do the same thing to older stage0s would be a tad excessive
12:37 moritz just a tad :-)
12:37 timotimo FROGGS: my interest is piqued, so i'll try to build it now :)
12:38 timotimo like 90% of all changes look like this:
12:38 timotimo -    nqp_get_sc_object $P5180, "7A67D46DDEA3C60BB73DFB1CA4F76715F3D1212C-1382959237.84144", 26
12:38 timotimo +    nqp_get_sc_object $P5180, "7A67D46DDEA3C60BB73DFB1CA4F76715F3D1212C-1384344785.94814", 26
12:38 FROGGS right, because it is a timestamp :o)
12:38 timotimo it seems like the only change is the unix timestamp at the end
12:38 timotimo so, yay or nay? :)
12:40 moritz it's a fun experiment in the very least :-)
12:40 moritz if nqp builds after that, things are likely not too wrong
12:40 moritz so, a firm +0.8 from me :-)
12:40 timotimo :D
12:40 FROGGS *g*
12:41 FROGGS +0.2 from me than *g*
12:43 timotimo oops. a change i made somewhere caused nqp-jvm to not build any more
12:52 timotimo r: say "A" ~~ /<xdigit>/
12:52 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«「A」␤ xdigit => 「A」␤␤»
12:55 timotimo okay. now editing patch files will not be very easy
12:55 timotimo i should probably edit the files instead.
12:59 timotimo java.lang.StackOverflowError >_<
13:00 timotimo i thought lines() has been fixed for that?
13:01 brrt1 joined #perl6
13:05 kaleem joined #perl6
13:08 timotimo ... that just killed my pc >_<
13:09 diakopter :D
13:09 timotimo one of these days i'll pin my X and desktop environment and terminals into memory so that they don't get swapped out ...
13:09 timotimo or just the sshd
13:11 timotimo aha! almost got a shell on the sshd!
13:12 timotimo ah, that's because perl6 exited. but my desktop is still not responding due to 3gb of ram being in my swap >_<
13:13 FROGGS timotimo: I just built a nqp-j HEAD
13:13 timotimo can you use lines()?
13:14 timotimo er, right. yeah. that's not what you were trying to do
13:14 timotimo i'm nqp::istype-ing a NQPMu or something
13:15 timotimo sudo swapoff -a >_>
13:21 timotimo should qx allow me to pipe through grep?
13:24 moritz yes
13:25 timotimo strange.
13:25 timotimo well, the output of git diff is 11MB in size
13:25 timotimo it's not really a big surprise that rakudo-parrot would gobble up all available memory to call lines() on that
13:26 rindolf joined #perl6
13:26 timotimo 166k lines
13:27 timotimo qx{git diff | grep 'cuid'} seems to just consume 100% cpu forever :\
13:27 timotimo nope, wrong.
13:27 timotimo that part works fine. the 100% cpu usage comes from lines it seems
13:30 timotimo putting it into a file and using 'fname'.IO.lines seems to work much better
13:35 logie joined #perl6
13:36 FROGGS gather/take again?
13:40 timotimo may be. but i thought lines() was ungathertake'd?
13:42 moritz that was split, no?
13:45 timotimo hm, perhaps
13:48 timotimo the tool is somewhat slow, but it seems to do the recognizing part right at least.
13:50 kaleem joined #perl6
13:54 timotimo welp. this could take a while >_<
13:56 timotimo the program estimates 12 minutes for the analysis alone
14:00 kivutar joined #perl6
14:00 timotimo but yeah, lines() uses gather/take. maybe it could be made to use map instead.
14:01 [Coke] "indicate skip in spectest.data file" - does this include both "make spectest" and "t/spec/test_summary" ?
14:05 timotimo [Coke]: how long until you start the daily star run?
14:06 timotimo oh, actually, on the JVM i can just use the async file reader instead of lines()
14:07 moritz [Coke]: I have patched t/harness; no idea of t/spec/test_summary uses that
14:08 denisboyun joined #perl6
14:13 timotimo perl6-p stage0_diff_minifier.p6  775,74s user 2,06s system 99% cpu 13:00,96 total
14:17 * timotimo fixed a missing method rename in IOAsyncFile and uses jvm instead of parrot to compare times
14:18 FROGGS joined #perl6
14:18 timotimo it would be pretty cool if the channel that gets returned from IO::Async::File or something related to the object would have a promise to tell me how many lines it read when it's finished
14:19 timotimo channels buffer a bunch of entries, right?
14:21 timotimo seems to be about 2x faster or so.
14:21 timotimo at best.
14:21 timotimo Cannot receive a message on a closed channel  - whoops
14:22 timotimo perl6-j stage0_diff_minifier.p6  333,81s user 1,27s system 126% cpu 4:25,67 total  -  it wosuld seem like it was about 3x as fast
14:24 dalek rakudo/nom: 9f06098 | (Timo Paulssen)++ | src/vm/jvm/core/IOAsyncFile.pm:
14:24 dalek rakudo/nom: chase rename of Channel.finish -> close
14:24 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9f06098522
14:25 geekosaur why did I misread that as "chaos rename"
14:27 timotimo perl6-j stage0_diff_minifier.p6  270,70s user 1,33s system 130% cpu 3:28,56 total
14:27 timotimo that's very good timing actually
14:27 timotimo r: say "wow, that's {13 / 4.5} times as fast!"
14:28 camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«wow, that's 2.888889 times as fast!␤»
14:30 timotimo ah, IO::Async::File isn't actually specced yet, so no need to make spectests
14:30 timotimo unless of course i go ahead and build the spectests and then write the specs :P
14:31 logie joined #perl6
14:33 [Coke] timotimo: few hours. I'll push it this afternoon
14:34 [Coke] I don't think t/spec/test_summary uses t/harness, I think it only uses the raw data file.
14:34 [Coke] (and has to work across implementations)
14:34 timotimo :)
14:35 moritz how does t/spec/test_summary skip #icu files when rakudo was built without icu support?
14:36 lowpro30 joined #perl6
14:36 nnunley joined #perl6
14:36 [Coke] it doesn't.
14:36 dalek roast: 1896270 | (Timo Paulssen)++ | S32-list/combinations.t:
14:36 dalek roast: smartlinks for List.combinations
14:36 dalek roast: review: https://github.com/perl6/roast/commit/18962705fa
14:36 [Coke] SFAIK. (which has never been an issue for the daily runs, because I have icu)
14:37 [Coke] so, we don't have to fix it immediately, but I'd like to get it sorted out in teh next few weeks. having a separate thing I can invoke to get the list of test files to run would be spiffy.
14:37 [Coke] then the logic to generate that can live in rakudo, and t/harness & test_summary can both invoke it.
14:38 [Coke] -> $dayjob
14:38 dalek roast: a5b4ce0 | moritz++ | test_summary:
14:38 dalek roast: [test_summary] skip #jvm files on rakudo-jvm
14:38 dalek roast: review: https://github.com/perl6/roast/commit/a5b4ce06cc
14:38 moritz ... or a simple, one-line patch :-)
14:38 moritz not idea, but better than nothing for now
14:38 timotimo jnthn: how do you feel about giving IO::Async::File a promise that is kept with the number of lines that were read when the line splitting is finished?
14:39 timotimo hm. but then it'd have to return not a simple Channel object, because for a Channel you can't put in values that overtake other values
14:40 timotimo oh, this could actually work!
14:45 * timotimo has an early prototype
14:46 bluescreen10 joined #perl6
14:48 kaare_ joined #perl6
14:51 timotimo i wonder if maybe a bit of async work could be done in stage jast ... there's gotta be a way to make that part faster >_<
14:53 rurban1 joined #perl6
15:00 * timotimo goes for a jog
15:03 btyler joined #perl6
15:26 thou joined #perl6
15:34 jnap joined #perl6
15:39 pecastro joined #perl6
15:44 fhelmberger_ joined #perl6
15:51 rurban1 joined #perl6
15:53 ingy2^ joined #perl6
15:54 timotimo in a method where i don't have access to a CodeFrame (in java code), but to a ThreadContext, how do i get at an argument i can pass as the Integer class to box_i?
15:54 timotimo or can i somehow directly pass a java-level integer in Ops.invokeDirect?
15:55 ingy2^ left #perl6
16:10 jnthn timotimo: Whatre you trying to do? But yeah, the latter way is the right one I suspect
16:10 jnthn You just pass the integer as an arg and make sure hte callsite descriptor has an INT in it for that slot
16:10 jnthn See things like findmethod that call with a native str for ideas
16:16 FROGGS[mobile] joined #perl6
16:17 timotimo i'm trying to let IO::Async::File.lines return a channel that has a promise attached to it that gets kept with the number of lines in total as soon as the async line reader has reached the end
16:18 timotimo i want to use it to generate a time estimate for completion in my consumer
16:18 timotimo if $lines_channel.total_promise.has_result { say "$lines_so_far / $lines_channel.total_promise.result()" } more or less
16:19 timotimo i wonder why i get the error that i get. unless of course the asynchronous lines() op is used in more than one place
16:20 timotimo Unhandled exception: Not enough positional parameters passed; got 0 but expected 1 in  (gen/jvm/CORE.setting)
16:20 timotimo i can't get a better stacktrace out of it, which suggests to me that it happens in the java code rather than the nqp code
16:21 jnthn um...wait, you probably aren't gonna find out the total number until fairly close to the end, no?
16:21 jnthn I mean, you are at the moment, but that's only 'cus I implemented it in a hurry and there's no back-preasure stuff going on...
16:22 jnthn So it is reading lines in with little regard to how fast they're being pulled out of the channel. But it shouldn't stay that way.
16:23 timotimo ah, hm.
16:26 timotimo that's fine then
16:27 jnthn If you are reading a million line file but only pulling 10,000 a second out of the channel, then we really shoudln't drag all million lines in as fast as we possibly can...
16:27 timotimo you're right
16:35 kaleem joined #perl6
16:47 daxim http://www.riffraff.info/2007/5/20/a-spell-corrector-in-perl6-part-3
16:50 tadzik sub substitution? Should be 'sub stitution'
16:52 jaffa4 joined #perl6
16:55 * TimToady agrees with dram++ that http://irclog.perlgeek.de/perl6/2013-11-13#i_7853191 is a bug in r-p
16:58 rindolf joined #perl6
17:00 TimToady .join is kind of an unfortunate method name for threads
17:00 TimToady maybe it should be .rejoin to avoid confusion with the stringy method
17:00 timotimo sounds like a valid concern
17:01 TimToady or .await, like we do for promises
17:01 hoelzro I think something with 'wait' in it makes sense
17:01 * hoelzro thinks about waitpid for processes
17:02 jnthn TimToady: Yeah, I didn't like "join", but it's the normal name for it... :)
17:02 denis_boyun joined #perl6
17:02 TimToady just because other languages choose suboptimal names doesn't necessarily mean we have to copy them
17:02 jnthn But as I don't really want people to use Thread directly anyway...I guess I don't actualy care that much what we call it :)
17:03 TimToady we intentionally break a lot of the unfortunate overloadings of other languages
17:03 TimToady we don't use + to concatenate strings either :)
17:03 jnthn True :)
17:04 jnthn Not defending keeping join, more just saying why it is that way now
17:04 TimToady nodnod
17:04 jnthn .wait_for_termination is kinda long but descriptive. .wait I guess works.
17:05 jnthn .oO( Look! Look! I have a MacBook Pro!! :P )
17:06 timotimo jnthn: https://github.com/perl6/nqp/blob/master/src/QRegex/Cursor.nqp#L765 - do you think the checks in this if tree are hot? i'm thinking of using eqat to see if it starts with a $ for a quick fail, for example, or moving the iscclass up to the front, in the hopes that that fails faster (no or to consider)
17:07 TimToady I can see why they picked 'join', if the idea is that you're sending a message to the object.  in 'await($thread)' the object is passive, not active
17:07 TimToady but 'join' is still a lousy word even in that case
17:07 TimToady should be more like .finishup
17:07 timotimo jnthn: https://github.com/perl6/nqp/blob/master/src/QRegex/Cursor.nqp#L55 - could this be done faster with a nqp::isnull, or does that give the same code?
17:07 timotimo same for the $!cstack below
17:08 jnthn timotimo: They'll be hot, yeah. And moving the numeric one up front is worth it I guess
17:08 jnthn timotimo: as that's the rare case
17:08 TimToady it's like .finish-and-I'll-wait-for-you
17:09 timotimo yeah
17:09 jnthn timotimo: The second one ain't worth changing I don't think.
17:09 timotimo nqp: say(nqp::ord('$'))
17:09 camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«36␤»
17:10 timotimo what names are usually in that? do many of them start with a $?
17:10 jnthn Not sure
17:11 timotimo er ... apparently empty strings sometimes?!
17:11 jnthn Sometimes.
17:11 timotimo OK, didn't expect that
17:11 jnthn The cstack isn't only for captures.
17:11 jnthn It's actually a cursor statck
17:12 timotimo oh, there's a $hash := nqp::hash() unless $hash; in the inner loop, even though at the beginning there's my $hash := nqp::hash()
17:13 timotimo should i make the my $hash := nqp::hash() not bind a value, or should i remove the initialisation attempt code from the inner loop?
17:14 jnthn I don't actually see where you mean
17:14 timotimo one sec
17:14 timotimo https://github.com/perl6/nqp/blob/master/src/QRegex/Cursor.nqp#L773
17:15 dalek specs: 2d03d45 | larry++ | S17-concurrency.pod:
17:15 dalek specs: tweak .join to .finish (to complement .start)
17:15 dalek specs:
17:15 dalek specs: Avoiding unfortunate name collision with Str.join in the usersphere.
17:15 dalek specs: Since we're trying to preserve OO notions, we tell the thread to finish
17:15 dalek specs: (implying we'll wait for them) rather than use a method name like 'await',
17:15 dalek specs: which makes no sense as a message to a thread object, since waiting is
17:15 dalek specs: not what the thread is supposed to do.
17:15 dalek specs: review: https://github.com/perl6/specs/commit/2d03d45dae
17:16 jnthn timotimo: Thsoe lines do indeed look useless
17:16 timotimo yeah, since it's bindattr'd down bottom, i'll remove that single line
17:16 timotimo same for the list
17:16 FROGGS joined #perl6
17:16 jnthn Look like leftover from a previous optimization attempt
17:16 iSlug joined #perl6
17:16 timotimo er, i have different code in front of me anyway
17:16 jnthn Though, we may actually want to try that opt again...
17:17 timotimo no, i just swapped the branches m)
17:17 timotimo can do.
17:18 jnthn I think that for the list bit we mostly don't (in grammars) make positional capture
17:18 jnthn *captures
17:18 jnthn Now, putting a null in the object will end badly
17:18 jnthn But we may be able to declare a single array outside the method as the empty
17:19 timotimo yes, i can do that
17:19 jnthn The hash one, I hvae a bad feeling I tried that and something went horribly wrong...
17:19 jnthn iirc, 'cus EXPR cheats somewhere... :)
17:21 timotimo ifnull returns the first argument, unless it's null in which case it returns the second argument, right?
17:22 FROGGS nqp: say(nqp::isnull(nqp::null, 1, 2))
17:22 camelia nqp-parrot: OUTPUT«Error while compiling op isnull (source text: "nqp::isnull(nqp::null, 1, 2)"): Operation 'isnull' requires 1 operands, but got 3␤current instr.: '' pc 58571 (gen/parrot/stage2/QAST.pir:21439) (gen/parrot/stage2/QAST.nqp:3584)␤»
17:22 camelia ..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…»
17:22 camelia ..nqp-moarvm: OUTPUT«Error while compiling op isnull (source text: "nqp::isnull(nqp::null, 1, 2)"): Arg count 3 doesn't equal required operand count 2 for op 'isnull'␤frame_name_1109␤»
17:23 jnthn timotimo: yes, but more than that, it doesn't even evaluate the second argument if the first is not null
17:23 jnthn timotimo: So it's got short-circuit semantics too
17:23 [Sno] joined #perl6
17:23 timotimo great
17:25 beastd joined #perl6
17:26 timotimo yeah, the hash part is dangerous apparently, but the list part works apparently
17:26 FROGGS what is on our plan for today?
17:26 tgt joined #perl6
17:26 timotimo the usual :)
17:27 FROGGS hmmm
17:27 jnthn FROGGS: Being really tired despite only having done a quick visit to the office and a short flight, apparently...
17:27 timotimo if you want to, you can try to figure out what part of stage jast is so darn slow
17:27 jnthn oh, I wonder if it's 'cus I didn't really have lunch...
17:27 jnthn :)
17:28 FROGGS jnthn: hehe, well, should have had lunch by now :o)
17:28 FROGGS timotimo: I can try, somehow
17:28 jnthn I had a hotdog. :)
17:29 FROGGS hmmm, I had no lunch too when I think about it :/
17:29 * jnthn suspects he can find something rather more exciting for dinner...
17:29 FROGGS but I had a second breakfast at 10a.m. at work
17:30 timotimo yup, all of the optimisations i've done shaves off a bit of time from parsing
17:30 timotimo i'm now at 106.2s when i was at 110 a few days ago
17:31 jnthn r: say 106.2 / 110
17:31 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0.965455␤»
17:32 FROGGS just a few percent and we can stop working on moarvm \o/
17:32 moritz timotimo++
17:32 moritz FROGGS: just another 80% and we can stop working on moarvm? :-)
17:33 jnthn We'll still have the startup time :P
17:33 FROGGS jnthn: not on parrot :o)
17:33 FROGGS moritz: something about that, yes :o)
17:38 rindolf FROGGS: hi.
17:38 FROGGS hi rindolf
17:38 rindolf FROGGS: what's up?
17:39 FROGGS rindolf: just skimming through RT tickets to find something fixable
17:39 FROGGS rindolf: you?
17:39 timotimo FROGGS: so no making stage jast faster?
17:41 FROGGS timotimo: I will, after rejecting one ticket :o)
17:41 rindolf FROGGS: I published this blog post which is making fun of the GNU project - http://shlomif-tech.livejournal.com/67311.html
17:41 timotimo cool! :)
17:50 SamuraiJack_ joined #perl6
17:56 timotimo my desktop needs zram >_<
17:57 jnthn ramz!
17:57 moritz teh ramz!
17:58 dalek nqp: c11b5e7 | (Timo Paulssen)++ | src/vm/parrot/QAST/Operations.nqp:
17:58 dalek nqp: optimize only-0s list_i
17:58 dalek nqp: review: https://github.com/perl6/nqp/commit/c11b5e7310
17:58 dalek nqp: 5034588 | (Timo Paulssen)++ | src/QRegex/Cursor.nqp:
17:58 dalek nqp: twiddle NQPCursor.MATCH a bit:
17:58 dalek nqp:
17:58 dalek nqp: most of the times we don't actually have positionals,
17:58 dalek nqp: so keep a shared empty list.
17:58 dalek nqp: almost all of the keys start with non-$, so quick-check for that.
17:58 dalek nqp: iscclass is probably faster than the eq checks were, so do it first
17:58 dalek nqp: review: https://github.com/perl6/nqp/commit/5034588224
18:01 timotimo oh
18:01 timotimo wow, that was easy
18:04 timotimo huh
18:04 timotimo now my computer froze
18:05 moritz can't be so bad if you can still (or again) IRC :-)
18:05 timotimo i have a laptop next to my desktop :)
18:05 timotimo for when rakudo decides to be memory hungry like it kind of always is
18:06 timotimo i can't tell if it's still working or really froze completely
18:06 timotimo the sshd isn't responding, so the htop i'm running in it is useless
18:06 tadzik I used to turn off chromium when I was compiling rakudo
18:06 geekosaur (ctrl-q :p )
18:06 tadzik then I bought another 2 gigs of ram :)
18:07 timotimo i'm at 8 gigs ... :/
18:07 jnthn dinner &
18:07 tadzik well, the machine I'm typing on has 256 megs, and it's said to be able to run rakudo at some point
18:08 tadzik erm, I heard it was able to
18:08 tadzik a while ago
18:08 Rotwang joined #perl6
18:08 timotimo well, my 8gigs are not sufficient to do 4 spectest runners at the same time
18:09 timotimo at least if i have my browser open at the same time as well
18:09 ssutch joined #perl6
18:09 moritz for r-p that should be enough
18:09 timotimo my laptop is going to have 12.
18:10 tadzik huh,weird. I have no problems with TEST_JOBS=4 on 8gig
18:10 tadzik ...or so I think :&
18:10 timotimo i used to have no problems either
18:10 timotimo but ... browser :\
18:10 * timotimo resets the computer
18:11 tadzik are you one of these people who don't close tabs? :P
18:11 timotimo no, but i have things open like twitter and google+ that just add more data and never seem to delete stuff
18:11 tadzik ah, yes
18:12 timotimo could i interest you in adopting my code for the table parser, so that you could perhaps integrate it into rakudo?
18:12 timotimo i don't seem to get back to it
18:12 tadzik pod table parser?
18:12 tadzik sure thing
18:12 tadzik I need to take care of my Pod child occasionally :)
18:13 moritz tadzik, our perl 6 podigy :-)
18:13 zakharyas joined #perl6
18:15 flussence .oO( I know people who have 3-4 digit numbers of tabs open and think it's normal... )
18:15 tadzik if only there was a way to save a url somewhere and be able to open it later
18:16 moritz you'd need imaginary numbers for that.
18:16 tadzik imaginary tabs
18:17 moritz http://shlomif-tech.livejournal.com/67311.html
18:17 moritz oh sorry, wrong URL
18:17 moritz http://www.mercurynie.com.au/mathguys/articles/1998/980311g1.jpg # imaginary numbers
18:17 * moritz keeps mixing up his two paste buffers
18:18 lowpro30_ joined #perl6
18:20 tadzik I like them merged
18:20 diakopter tadzik: dogenail
18:21 diakopter tadzik: dogenail is leaving soonz
18:26 diakopter .. and has left
18:26 diakopter free hundred firty free fousand fink it frough
18:35 lizmat I was wondering whether it would make sense to add this candidate for postfix:<++>
18:36 lizmat multi postfix:<++>(Mu:D \a is rw --> Nil) { a = a.succ }
18:36 lizmat and then have the optimizer use *that* candidate when doing a ++ in sink context ?
18:39 FROGGS would it pick that candidate at all?
18:39 lizmat good question
18:39 lizmat anyway, I just realized that using prefix ++ does exactly that
18:39 lizmat so if you want to increment fast *and* you're not interested in the value at that point
18:40 lizmat use prefix ++
18:40 TimToady P5 does that optimization
18:40 TimToady one of the many reasons it's important to know when you're in sink context
18:41 timotimo hm, that sounds like something i could try to do ...
18:41 timotimo we generate a sink and a non-sink branch, right?
18:41 moritz and the optimizer already tracks sink context
18:41 timotimo oh, it does?
18:42 moritz r: 1+2; say 42
18:42 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«WARNINGS:␤Useless use of "+" in expression "1+2" in sink context (line 1)␤42␤»
18:42 timotimo oooh
18:42 timotimo i can totally do that optimisation :)
18:42 lizmat .oO( I love work, I can watch it for hours ;-)
18:43 timotimo it won't be worth very much, though ... :|
18:43 timotimo can we do something similar in nqp?
18:43 lizmat why won't it be worth mouch?
18:43 lizmat much ?
18:43 timotimo i've seen a few ++'s there
18:43 TimToady should save some GC pressure to not make a copy
18:43 timotimo because i don't think we have postfix++ very often in the slowest paths?
18:44 dalek rakudo-star-daily: 7c93f59 | coke++ | log/ (5 files):
18:44 dalek rakudo-star-daily: today (automated commit)
18:44 dalek rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/7c93f59b36
18:45 timotimo cool, it lost a bunch of SORRYs due to URI
18:45 timotimo but what's with LWP/Simple?
18:45 rindolf joined #perl6
18:47 moritz at least it found the submodule this time :-)
18:51 timotimo [Coke]: your services are invaluable :)
18:53 dalek star: 96845f6 | moritz++ | modules/ (2 files):
18:53 dalek star: update some somdule revisions
18:53 dalek star: review: https://github.com/rakudo/star/commit/96845f6e4c
18:56 ggoebel16 joined #perl6
18:59 rindolf joined #perl6
19:04 ggoebel joined #perl6
19:05 logie joined #perl6
19:06 bluescreen10 joined #perl6
19:10 lue hello world o/
19:10 timotimo hellue
19:11 tadzik ...I was just about to say that
19:11 FROGGS hehe
19:11 FROGGS hi lue
19:11 lue o/
19:21 jac50 joined #perl6
19:23 timotimo the stage0 optimizer will only be so helpful, because the moarvm and jvm stage0s will still give big diffs, don't think i can do anything about those :(
19:25 timotimo i guess i could just update the stage0 for nqp-p and only use eqat inside vm/parrot
19:29 timotimo java.lang.ClassFormatError: Unknown constant tag 105 in class file 1EF69CB6D2DAB8EB258E8A6E2CD79D4FB985CB6A
19:29 timotimo what the hell did i do? o_O
19:35 timotimo r: (:foo<bar>, :baz<quux>).hash.fmt("%s:%s").say
19:35 camelia rakudo-parrot 9f0609: OUTPUT«foo:bar␤baz:quux␤»
19:35 camelia ..rakudo-jvm 9f0609: OUTPUT«baz:quux␤foo:bar␤»
19:37 dalek star: 517cc37 | moritz++ | modules/Perl6-MIME-Base64:
19:37 dalek star: update MIME::Base64 to a version that hopefully precompiles
19:37 dalek star: review: https://github.com/rakudo/star/commit/517cc3765c
19:37 moritz timotimo: that should fix the LWP::Simple compilation errors
19:38 timotimo cool :)
19:39 timotimo r: my @a = <foo bar --snip-- baz quux>; for @a { say (m/'--snip--'/ ff True) }
19:39 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«Nil␤Nil␤1␤Nil␤Nil␤»
19:39 moritz (the problem was that MIME::Base64 only require'd the ::PIR and ::Perl modules, and our dependency detecton doesn't recognize that)
19:40 timotimo ah, that's not so good
19:40 moritz so I cheated the dependeny detection
19:40 moritz with a multi-line comment that contained fake use statements
19:40 * moritz feels vaguely dirty
19:40 timotimo ;(
19:41 timotimo r: my @a = <foo bar --snip-- baz quux>; for @a { say(m/'--snip--'/ ff *) }
19:41 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«Nil␤Nil␤1␤2␤3␤»
19:41 timotimo that's not how i remember flipflop working
19:43 timotimo well, i guess it kinda is
19:43 timotimo returns a falsey value until it flips, then truey values until it flops again
19:44 moritz so why doesn't * flop it again?
19:44 timotimo ff * is supposed to be a flipflop that never flops
19:45 timotimo so, a latch
19:48 timotimo No such method 'jast' for invocant of type 'NQPMu'  -  bleeeeeeh
19:48 timotimo i don't want to hunt this bug >_<
19:48 Rotwang joined #perl6
19:51 TimToady x() ff * interprets "whatever" as "run forever" by analogy to 1..*
19:53 TimToady equivalent to /foo/,$ in a language like sed
19:54 TimToady remember that the operator always gets first crack at the meaning of *, and the autopriming is only a fallback
19:58 timotimo r: while (True, True, True, True, False).pick() { my $_ = "hi"; when 'hi' { say "bug!" } }
19:58 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'value' for invocant of type 'NQPMu'␤»
19:59 timotimo oh, parrot has it as well! :o
19:59 timotimo locally i get 'no such method jast' instead for the jvm
20:03 FROGGS timotimo: about stage jast... it just calls $compiler.as_jast for QAST::Op a gazillian times, that's why it needs its time
20:05 timotimo so there's nothing that sticks out as particularly optimizable?
20:05 FROGGS timotimo: no
20:05 logie joined #perl6
20:06 timotimo i feared as much :(
20:07 ggoebel17 joined #perl6
20:13 dmol joined #perl6
20:14 ggoebel joined #perl6
20:17 TimToady n: while (True, True, True, True, False).pick() { my $_ = "hi"; when 'hi' { say "bug!" } }
20:17 camelia niecza v24-98-g473bd20: OUTPUT«Potential difficulties:â�¤  Useless redeclaration of variable $_ (see  line 0) at /tmp/a4JGtGpwls line 1:â�¤------> [32mTrue, True, True, False).pick() { my $_ [33mâ��[31m= "hi"; when 'hi' { say "bug!" } }[0mâ�¤â�¤Â»
20:18 TimToady and offhand I'd say it's not a bug for it to say 'bug!'
20:19 TimToady n: for True, False { my $_ = "hi"; when 'hi' { say "bug!" } }
20:19 camelia niecza v24-98-g473bd20: OUTPUT«Potential difficulties:â�¤  Useless redeclaration of variable $_ (see  line 0) at /tmp/4bs5MeD9kz line 1:â�¤------> [32mfor True, False { my $_ [33mâ��[31m= "hi"; when 'hi' { say "bug!" } }[0mâ�¤â�¤Unhandled exception: Writing to readonly scalarâ�¤â€¦Â»
20:20 TimToady r: for True, False { $_ = "hi"; when 'hi' { say "bug!" } }
20:20 camelia rakudo-jvm 9f0609: OUTPUT«Cannot modify an immutable value␤  in block  at /tmp/0QvA_5oN_W:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in any command_eval at…»
20:20 camelia ..rakudo-parrot 9f0609: OUTPUT«Cannot modify an immutable value␤  in block  at /tmp/skVVTqtpI4:1␤  in any  at /tmp/skVVTqtpI4:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/parrot/stage2/NQPHLL.nq…»
20:20 TimToady r: for True, False <-> $_ { $_ = "hi"; when 'hi' { say "bug!" } }
20:20 camelia rakudo-parrot 9f0609: OUTPUT«Cannot modify an immutable value␤  in block  at /tmp/KwO8mH6Xa2:1␤  in any  at /tmp/KwO8mH6Xa2:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/parrot/stage2/NQPHLL.nq…»
20:20 camelia ..rakudo-jvm 9f0609: OUTPUT«Cannot modify an immutable value␤  in block  at /tmp/5weXNrHrz2:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in any command_eval at…»
20:20 TimToady that's a bug though
20:20 timotimo TimToady: yeah, it should say bug. but it should also compile
20:21 TimToady oh wait, nevermind
20:21 timotimo bad use of "say bug" i guess
20:21 TimToady r: for True, False -> $_ is copy { $_ = "hi"; when 'hi' { say "bug!" } }
20:21 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«bug!␤bug!␤»
20:21 TimToady that's not a bug :)
20:21 timotimo yeah, but that's not what my code looks like :P
20:22 TimToady anyway, 'my $_' doesn't generally declare a different $_
20:23 timotimo i didn't have my $_ in my original code, gimme a sec
20:23 timotimo r: while (True, True, True, True, False).pick() { $_ = "hi"; when 'hi' { say "bug!" } }
20:23 camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
20:23 camelia ..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:23 timotimo that's the bug i was hitting
20:24 FROGGS r: while (True, True, True, True, False).pick() { $_ = "hi" }
20:24 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: ( no output )
20:24 TimToady that should presumably fail
20:25 TimToady oh, wait, more branedeath
20:25 TimToady that doesn't bind $_ unless you do it explicitly
20:25 TimToady r: while (True, True, True, True, False).pick() -> $_ { $_ = "hi"; when 'hi' { say "bug!" } }
20:25 camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
20:25 camelia ..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:25 FROGGS r: my $i = 0; while $i++ < 2 { when 'hi' { } } # so it does not like a when in a loop ?
20:25 camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
20:25 camelia ..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:26 * jnthn back
20:26 TimToady well, it's supposed to like when inside something functions as a topicalizer by *binding* to $_
20:26 * FROGGS front
20:26 TimToady r: while (True, True, True, True, False).pick() -> $_ is copy { $_ = "hi"; when 'hi' { say "bug!" } }
20:26 camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
20:26 camelia ..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:27 TimToady but it doesn't seem to work for while
20:27 FROGGS r: my $i = 0; until $i++ > 2 { when 'hi' { } } # so it does not like a when in a loop ?
20:27 jnthn Looks like something is putting a QAST tree together "wrong"
20:27 camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
20:27 camelia ..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:28 FROGGS r: for ^2 { when 'hi' { } } # so it does not like a when in a loop ?
20:28 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: ( no output )
20:28 TimToady it's supposed to be fine with a when anywhere inside a construct that *binds* to $_ as a paramter
20:28 TimToady which that 'for' does
20:28 TimToady so does the while if you add -> $_, but it's not seeming to pick that up
20:29 TimToady otherwise it should fail with 'succeed without surrounding topicalizer' or some such
20:30 moritz maybe try with the optimizer switched off
20:30 jnthn TimToady: My (wild) guess is that it's an unfortunate interaction with code-gen of the control exception handlers and the suceed handler installed when there's a "when"
20:30 moritz ISTR that the optimizer does funny stuff with $_ occasionally
20:30 timotimo r: say (0.1234).round(1)
20:30 FROGGS perl6-p --optimize=0 -e 'r: my $i = 0; while $i++ < 2 { when "hi" { } }'
20:30 FROGGS ===SORRY!===
20:30 FROGGS Error while compiling op handle: StopIteration
20:30 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0␤»
20:30 timotimo r: say (0.1234).round(0.1)
20:30 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0.1␤»
20:30 timotimo r: say (0.1234).round(0.2)
20:31 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0.2␤»
20:31 timotimo r: say (0.1234).round(0.9999)
20:31 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0␤»
20:31 timotimo how does that work?
20:31 FROGGS timotimo: the algorithm is in the spe
20:31 FROGGS spec*
20:31 timotimo oke
20:31 TimToady n: if True -> $_ { when *.so { say "okay!" } }
20:31 timotimo ah, cool
20:31 camelia niecza v24-98-g473bd20: OUTPUT«okay!␤»
20:31 TimToady r: if True -> $_ { when *.so { say "okay!" } }
20:31 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«okay!␤»
20:32 TimToady r: while True -> $_ { when *.so { say "okay!" }; last }
20:32 camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
20:32 camelia ..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:32 TimToady so rakudo can handle the 'if ->' but not the 'while ->'
20:32 TimToady n: while True -> $_ { when *.so { say "okay!" }; last }
20:32 camelia niecza v24-98-g473bd20: OUTPUT«(timeout)okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤okay!␤oka…»
20:33 TimToady er, right
20:33 moritz ... except the "last;" part :-)
20:33 * TimToady gives that snippet last rights
20:34 FROGGS r: my $i = 0; while $i++ < 2 { 1 when 'hi'  }
20:34 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: ( no output )
20:35 FROGGS O.o
20:35 TimToady try *.so
20:35 TimToady nr: while True -> $_ { once when *.so { say "okay!" }; last }
20:35 camelia niecza v24-98-g473bd20: OUTPUT«[31m===[0mSORRY![31m===[0m��Unexpected block in infix position (method call needs colon or parens to take arguments) at /tmp/RS6EjNHKlK line 1:�------> [32mwhile True -> $_ { once when *.so [33m�[31m{ say "okay!" }; last }[0m��Undec…»
20:35 camelia ..rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
20:35 camelia ..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:36 TimToady there, a bug for everyone :)
20:36 TimToady n: while True -> $_ { START when *.so { say "okay!" }; last }
20:36 camelia niecza v24-98-g473bd20: OUTPUT«okay!␤»
20:37 rurban1 joined #perl6
20:37 TimToady s/START/okay/ is LHF for someone
20:37 TimToady s/okay/once/
20:37 rurban1 left #perl6
20:38 iSlug joined #perl6
20:39 * TimToady should quit while he's behind...
20:40 FROGGS behind?
20:40 FROGGS behind what?
20:40 * FROGGS .oO( the curtain? )
20:40 nwc10 behind on his coffee, I think
20:40 jnthn timotimo: On the stage0 diffs thing - remember that git compresses, and that compression algos probably make a very nice job of the big textual deltas...
20:42 timotimo jnthn: getting rid of almost all of the textual deltas is going to make a difference
20:42 timotimo you can compress it or you can not even represent it in the first place :)
20:43 timotimo don't you agree that nqp takes way too long to clone?
20:43 timotimo 108 megabytes in the .git folder
20:44 * timotimo git gc's
20:44 lue I'm stumped as to how I suddenly got "Unknown QAST node type NQPMu" [ I've commented out everything I added since the last time I ran it successfully and it still errors. :( ]
20:45 bluescreen100 joined #perl6
20:45 timotimo every variable that doesn't get a value bound to it ends up as NQPMu, as well as all names that nqp doesn't recognize without a sigil
20:46 jnthn timotimo: Yes, I just think that the JVM rebootstraps are likely where much of it comes from
20:46 timotimo hmm
20:46 jnthn (I'm guessing, it's just that we didn't tend to consider the repo big back then... :))
20:46 lue timotimo: the problem is is that the backtrace, as has come to be the pattern, is entirely useless :(
20:47 timotimo yeah :(
20:47 jnthn lue: --target=ast
20:47 jnthn lue: Look for where the tree is busted
20:47 FROGGS maybe there's a Nil/nil somewhere
20:47 lue so, esp. considering I've dummied out everything since the last time it worked, I'm really hopelessly stumped.
20:47 lue jnthn: I'll try that. Do that on NQP or on the exercise?
20:48 jnthn On your compiler
20:48 jnthn lue: So yo can see the ast it builds
20:48 FROGGS lue: take the line in your shell that explodes, and pass that flag
20:49 lue FROGGS: I know. I was just asking if it was nqp --target=ast phpish.nqp or nqp phpish.nqp --target=ast
20:49 jnthn the latter
20:51 timotimo okay, 70M after compression
20:54 lue Hm. It appears I've got an AST for the whole file, and the only noticeable things is two QAST::Op(null) entries under a QAST::Stmts, which appears to be normal. Hmm...
20:54 FROGGS r: $_ = 42; my $i = 0; while $i++ < 2 { when 'hi' { } }
20:54 camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
20:54 camelia ..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:55 dmol joined #perl6
20:56 lue Oh, I think I found it. Apparently I didn't save or something when I removed a particular bit of regex, because doing that again got me a sensible and normal syntax error :) .
20:57 timotimo oops
20:58 lowpro30 joined #perl6
20:58 timotimo jnthn: i'm a bit annoyed that i can't easily while $channel.receive -> $data { ... }
20:58 timotimo because it raises an exception if it's finished
20:58 timotimo hm, isn't there something like .?receive that i could do?
20:58 lue (now to find out why a third <ident> breaks things...)
20:59 timotimo r: class A { method receive { die "bad luck!" } }; say A.new.?receive;
20:59 camelia rakudo-jvm 9f0609: OUTPUT«bad luck!␤  in block  at /tmp/KhU4LVFG0v:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in any command_eval at src/Perl6/Compiler.nqp…»
20:59 camelia ..rakudo-parrot 9f0609: OUTPUT«bad luck!␤  in method receive at /tmp/7GqSQ_yK6T:1␤  in block  at /tmp/7GqSQ_yK6T:1␤  in any  at /tmp/7GqSQ_yK6T:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/par…»
20:59 timotimo r: class A { method receive { die "bad luck!" } }; say A.new.*receive;
20:59 camelia rakudo-parrot 9f0609: OUTPUT«bad luck!␤  in method receive at /tmp/sK0H_Wkz3p:1␤  in method dispatch:<.*> at gen/parrot/CORE.setting:1211␤  in block  at /tmp/sK0H_Wkz3p:1␤  in any  at /tmp/sK0H_Wkz3p:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/p…»
20:59 camelia ..rakudo-jvm 9f0609: OUTPUT«bad luck!␤  in method dispatch:<.*> at gen/jvm/CORE.setting:1200␤  in block  at /tmp/L4RnbCzKSz:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.n…»
20:59 timotimo r: class A { method receive { die "bad luck!" } }; say A.new.+receive;
20:59 camelia rakudo-parrot 9f0609: OUTPUT«bad luck!␤  in method receive at /tmp/4rWTpcPvT9:1␤  in method dispatch:<.*> at gen/parrot/CORE.setting:1211␤  in method dispatch:<.+> at gen/parrot/CORE.setting:1189␤  in block  at /tmp/4rWTpcPvT9:1␤  in any  at /tmp/4rWTpcPvT9:1␤  in any  a…»
20:59 camelia ..rakudo-jvm 9f0609: OUTPUT«bad luck!␤  in method dispatch:<.*> at gen/jvm/CORE.setting:1200␤  in method dispatch:<.+> at gen/jvm/CORE.setting:1180␤  in block  at /tmp/U2JlNqTbHV:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nq…»
20:59 jnthn timotimo: Yes, the spec actually suggests a possible way to deal with that :)
20:59 FROGGS r: class A { method receive { die "bad luck!" } }; say A.new.?receive.WHAT;
21:00 camelia rakudo-jvm 9f0609: OUTPUT«bad luck!␤  in block  at /tmp/feRL0I2r5r:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in any command_eval at src/Perl6/Compiler.nqp…»
21:00 camelia ..rakudo-parrot 9f0609: OUTPUT«bad luck!␤  in method receive at /tmp/OcrmWd2e93:1␤  in block  at /tmp/OcrmWd2e93:1␤  in any  at /tmp/OcrmWd2e93:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/par…»
21:00 jnthn timotimo: For now, write it with select, or whatever we call that nowadays :)
21:00 jnthn .oO( Can somebody write me a dictionary? :) )
21:01 timotimo ah, with winner.
21:01 timotimo i'm using while $channel.peek at the moment :\
21:01 jnthn Yes, that'll get you a race condition...
21:02 timotimo it ... will?
21:02 jnthn Most immediately because it assumes that if there's nothing to peek then the channel is finished...
21:02 timotimo oh!
21:02 timotimo that's silly :)
21:03 timotimo i'll do the winner thing then
21:03 jnthn But also if you peek, then receive, and you have many receivers...
21:04 jnthn I'm pondering a $channel.receive_loop(-> $x { ... }) or so. With a TimToady++ized name... :)
21:04 timotimo yeah, i'd like that
21:05 lue jnthn: Doing these exercises, I've come to appreciate Perl 6's ability to Just Print the Variable Contents™. :)
21:05 [Coke] moritz: are you doing the star release this month?
21:06 [Coke] I see the daily star run is once against working (thanks to everyone who did all the work in star to make that happen.)
21:06 [Coke] be nice if we got star to pull the latest version of each, (I run the latest, but it's not necessarily what star's going to build with) and if we cleared out all the deprecation warnings.
21:06 [Coke] I'll see about putting in some pull requests.
21:07 [Coke] (after $dayjob)
21:07 [Coke] ->
21:09 timotimo actually, my $line = do winner { when $c { $c.receive }; when $c.closed { last } }; seems good enough
21:10 lue woah, I just noticed a line in the --target=ast output which is: "    - ". Think that might be the NQPMu that's plaguing me? :)
21:10 jnthn sounds like
21:10 timotimo sounds about right
21:10 * lue still doesn't know how a third <ident> call in a rule causes that though :(
21:11 timotimo aaw, winner isn't up to spec at the moment
21:11 timotimo does winner return the value of the block that won, ooc?
21:11 lue I'll just go .WHATing the nodes that are maked in every method to find the problem :)
21:11 jnthn timotimo: argh, yeah, the when syntax is new...
21:11 timotimo spec says it should, good
21:12 jnthn timotimo: And I can imagine since that's more than "just a rename" we ain't doing it yet...
21:17 lue Grr. The third <ident> wasn't the problem, it just so happened that it stopped a syntax error which otherwise prevents the bigger problem from being complained about :) . I suspect it's a lack of action methods for the interface rules causing the issue.
21:19 lowpro30_ joined #perl6
21:21 itz has there been any historic discussion or drafts about the possible contents of the standard library?
21:24 FROGGS what is the "standard library" anyway?
21:24 PerlJam FROGGS++  (I was thinking the same thing)
21:26 timotimo so, how do i substitute programmatically now?
21:27 itz FROGGS: what's defined by the non-existant S30?
21:27 itz "
21:27 itz "TBD"
21:27 PerlJam itz: well then ... it's whatever you write and commit to that document  :)
21:28 FROGGS itz: well, I know that much already :o)
21:28 FROGGS I thought it might be about the C API of a libper6.so
21:28 FROGGS libperl6*
21:28 itz do we just still the "included batteries" from somewhere else?
21:28 itz steal even
21:28 lue I get the suspicion that Perl 6 incorporates a lot of what were "standard libraries" in Perl 5. Whatever other modules you get with a distribution is highly variable.
21:29 lue (iow, I'm not too clear on the idea of standard libraries at the moment. At this point, why wouldn't it be just part of Perl 6 core?)
21:30 lowpro30 joined #perl6
21:30 itz I'd assume standard libraries means core? how would the two be different?
21:30 FROGGS lue: maybe just to pollute your namespace on request... use STD
21:30 lue itz: core as in "what you get when you don't 'use' anything."
21:31 timotimo how do i best find and replace pieces of text in a string using a the source string as a key to the hash?
21:31 FROGGS itz: since when do we steal the included batteries?
21:32 PerlJam perhaps a good start would be to define the terms "core" and "standard library".  It seems lue already has a handle on one of them  :)
21:32 * lue would say S30 is a relic of "organization based on the camel book" and doesn't accurately reflect the way Perl *6* is, but he doesn't know what the standard libraries would entail.
21:34 lue The only module that comes to mind is Term::ANSIColor . I really can't think of anything else useful enough to come with every P6 distribution all the time but not, eh, "core enough" to be integrated with Perl 6. :)
21:34 lue (even then some would argue that color output is a common enough feature that P6 should be able to Just Do It™ without modules.)
21:34 FROGGS then DBIish should be there too :o)
21:34 FROGGS and maybe many of the star modules
21:35 lue FROGGS: that's a good starting point.
21:35 PerlJam and now we've started down the slippery slope methinks
21:35 lue Other issue: S30 can't be a list of specific modules, because presumably at some point the spec will be frozen, but those modules can evolve and die independently of the spec, even after freezing.
21:36 FROGGS I'd just rip it out
21:36 FROGGS there are things that don't need to be written in stone
21:36 lue .oO(10 years after S30 freezes with the rest of 6.0.0: "Don't use the spec-issued DBIish, it's been dead for years. Use DBIlike")
21:37 lue Essentially, "a module that provides these functions for color output" is OK, "the module Term::ANSIColor by tadzik" is not.
21:38 itz surely a module name could be given as an example and that list of examples added to as other modules are written
21:39 lue itz: yeah, I'm just planning for the eventual (and potentially never-happening, admittedly) spec freeze, where the Perl 6 core is fixed, but the modules that it references can change status. Unless my imagery of freezing isn't quite as preservationist...
21:40 lue (then I'd argue a spec that requires maintenance even after freezing is suspicious somewhat.)
21:40 lue Basically, I only see S30 doing well as "here's a list of functionality people will expect from standard Perl 6 that we don't think is quite 'core enough', so you must provide modules that satisfy them."
21:41 PerlJam I lean towards rejecting this "core" idea (unless by "core" you mean something essential to using and operating a Perl 6 compiler)
21:41 lue That's what it is with a list of modules too, by the way. But listing modules easily dates the spec :) .
21:42 lue PerlJam: when I say "core", I mean "what is available to you when you don't 'use' any modules." So you're rejecting Perl 6? :D
21:42 PerlJam lue: And what would those things be?
21:43 itz you are using core in a different way to perl 5
21:43 lue PerlJam: See S01..S29, S31, S32
21:43 lue and S33
21:43 lue r: say "Everything available to this interpreter right now is \"core\""
21:44 camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«Everything available to this interpreter right now is "core"␤»
21:44 lue itz: I've never used Perl 5, so I'm not surprised :)
21:46 PerlJam lue: I guess I'm more saying that different Perl6's will have different things available to them without having to "use" a module first.
21:47 PerlJam But, I guess the "general purpose" setting will have certain things that people come to expect
21:47 lue PerlJam: I'm assuming a fully spec-compliant Perl 6. Aside from small, backend-specific things like nqp:: and Q:PIR, I don't see what you mean.
21:48 lue I'm also assuming a Perl 6 implementation, if it wishes to provide extra stuff, would do so through modules instead of integrated constructs. Like R* does :)
21:49 lue My issues come from 1) is it necessary to supply a list of moduleland functionality impls. *must* provide (instead of them choosing to), and 2) how would that be specified?
21:52 itz I don't see it need be manditory
21:52 lue itz: in my eyes, if it's in the spec, the implementation *must* provide it to be Perl 6 compliant.
21:52 itz I thought the test suite defined perl6
21:52 lue s/Perl 6 compliant/considered Perl 6/;
21:53 lue itz: and an S30 spec means S30 tests.
21:53 itz "must" isn't very perl :)
21:53 itz are you arguing S30 shouldn't exist?
21:53 lue itz: except when needing to qualify as Perl 6 :)
21:54 lue itz: I suppose so. I'm afraid I don't see the point of defining a weird middle ground where A) This functionality is not common/general use/etc. enough be a part of STD/core/favorite name for such [more]
21:54 lue B) It's still useful enough to require, so we'll have it be as modules
21:55 lue C) we'll put it in the spec so you must have modules (which by their very nature are things you don't need all the time)
21:56 itz most languages aren't just syntax
21:56 lue S30 looks to me like a "rose by any other name" issue: we want this to be part of Perl 6, but we don't want to call it standard P6. We'll call them "modules" instead then.
21:57 timotimo jnthn: i just got "cannot receive a message on a closed channel" even though i used the winner construct
21:58 itz how do you write S27 tests if you believe each sections needs tests? :)
21:59 jnthn timotimo: Does your usage of it - naming aside - look like my one from my recent slides?
21:59 timotimo i don't recall the slides
22:00 timotimo i have my $line = winner( $line_channel => { $line_channel.receive }, $line_channel.closed => { last })
22:00 timotimo oh, hold on
22:00 jnthn What? You don't religiously read and memorize all my talks?!
22:00 timotimo could it be that doesn't make it a closure?
22:00 jnthn Oh, it's because $line_channel => { $_ } is what you want :)
22:00 FROGGS timotimo: see https://rt.perl.org/Ticket/Display.html?id=120498
22:00 FROGGS it is the same as when {} in while/until
22:00 jnthn timotimo: It does the receiving for you.
22:00 lue itz: S27 feels like another relic of camel-book organization to me to be honest :D . Not really relevant to Perl 6 the compiler. (The only draft of S27, featuring only a drinking game, attests to this)
22:00 jnthn And just passes the value
22:00 timotimo oh?
22:01 jnthn You can write $line_channel -> $msg { $msg } if it's clearer
22:01 timotimo you mean => ->, right?
22:01 jnthn uh
22:01 jnthn yes :)
22:01 lue S99 is the only spec I'm aware of which doesn't need tests, and that's obvious.
22:01 jnthn lue: We hve to test the drinking game? :)
22:02 jnthn wfm!
22:02 FROGGS *g*
22:02 FROGGS +1
22:02 lue jnthn: it's not spec yet!
22:03 timotimo jnthn: can i write $line_channel instead of $line_channel => -> $msg { $msg }?
22:03 * lue imagines a disclaimer at the top of relevant specs: "This spec does not need to be part of the test suite for Perl 6 'certification'" Would that work for people?
22:03 c1sung_ joined #perl6
22:03 jnthn timotimo: No, it wants a pair
22:04 timotimo hm
22:04 jnthn timotimo: but as I mentioned, if you are just returning it then $line_channel => { $_ } will do
22:04 * timotimo writes {$^a} instead
22:04 lue With such a disclaimer, I'll let go the "S30 must be tested" line, and pick up "S30 feels like something that should be tested" and hold on to "what's the value of S30 anyway?" :)
22:04 tadzik guys, guys
22:04 tadzik you're talking about "what's core"; moritz wrote a good blogpost on hat
22:04 tadzik that *
22:05 jnthn hah, blogpost on hat needs drawing
22:05 itz maybe if there was a list of the sort of modules which should be in core/std lib it would encourage people to write them?
22:05 lue Heh heh heh. I remember being on the exact opposite position two years ago. To boot, I apparently didn't even know of S30 :D https://rdstar.wordpress.com/2010/12/31/core-plus-plus-concept/
22:06 lue my non-knowing of S30 prompted the "crazy new syntax" part of the idea :P
22:07 * lue should update the blog's banner...
22:07 itz tadzik: do you have the link handy?
22:08 itz http://perlgeek.de/blog-en/perl-6/how-core-is-core.html
22:12 lue moritz's blog post makes me think: why not S32::Test? :P On a more serious note, I personally don't see a place for category C modules. (I assume cat. D would be "all the other modules out there")
22:12 lue Cat. C is a distribution-specific decision, imo
22:14 BenGoldberg joined #perl6
22:15 FROGGS v5 perhaps
22:15 FROGGS or rakudo-debugger
22:16 pernatiy joined #perl6
22:21 lue FROGGS: is Perl 5 support now module-ized, or is v5.pm just temporary (like Set.pm was)
22:22 FROGGS lue: it is a module, that requires a few micro-tweaks of rakudo
22:23 * lue would assign v5 to Cat.A and rakudo-debugger to Cat.C, which would be distribution-specific :)
22:26 kurahaupo joined #perl6
22:26 lue (S32::v5 sounds like a cool idea, now that I think about it...)
22:27 lowpro30 joined #perl6
22:27 preflex joined #perl6
22:31 * timotimo is compiling an nqp with minified bootstrap files
22:32 lowpro30_ joined #perl6
22:33 timotimo meh, it didn't write the entirety of the file out
22:33 lowpro30__ joined #perl6
22:36 timotimo it misses exactly the last line it seems
22:38 jnthn 'night, #perl6
22:55 tadzik huh, what happenend to 'make realclean'in nqp?
22:59 timotimo is there a reason for re-using object registers?
23:00 timotimo on parrot, i mean
23:01 timotimo i don't understand where the last line gets lost :(
23:01 timotimo is there still a race condition?
23:03 lue timotimo: I might be silly for suggesting this, but... off-by-one?
23:04 timotimo https://github.com/perl6/nqp/blob/master/src/vm/parrot/stage0/NQPCORE.setting-s0.pir#L4830  -  like here for example?
23:04 timotimo does it need to be a fresh $P500N each time?
23:04 timotimo would parrot benefit performance-wise if it did re-use the same each time?
23:05 timotimo lue: well, not on my end. i get the line and immediately print it
23:05 timotimo interestingly, it re-uses these registers a bit further down
23:07 timotimo https://github.com/perl6/nqp/blob/master/src/vm/parrot/stage0/NQPCORE.setting-s0.pir#L506 - and here, there's registers being set that could already have been the first argument to nqp_get_sc_object instead
23:08 timotimo ah, one of the as_post's does that
23:08 timotimo (the one for WVal of course)
23:10 daniel-s joined #perl6
23:11 frettled joined #perl6
23:18 hummeleBop1 joined #perl6
23:19 * lue is finally done with Exercise 8 o/
23:21 timotimo i'm hoping i can get a tiny shred of performance out of the removal of unnecessary corecions
23:25 timotimo er, not even coercions
23:25 timotimo but redundant set operations
23:25 timotimo probably not worth much :|
23:45 timotimo apparently for some reason that was necessary
23:57 lizmat timotimo++
23:57 lizmat meanwhile, I'm calling it a day, good night, #perl6!
23:58 timotimo the code i removed was necessary, so it broke when i tried to make it better :(
23:58 timotimo so timotimo--

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

Perl 6 | Reference Documentation | Rakudo