»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
dalek kudo/nom: b3aa8cf | (L. Grondin)++ | src/core/List.pm:
implement List.combinations(Range $)
00:00
kudo/nom: 5c5fbc8 | (L. Grondin)++ | src/core/List.pm:
fixing indent
kudo/nom: d41dd80 | timo++ | /:
Merge pull request #213 from grondilu/nom

List.combinations with a Range argument
timotimo nope, it duplicates the commits :(
jnthn d'oh!
timotimo forcepushes
jnthn I guess one thing or the other changed the sha1's
timotimo oh! 00:02
it could be that i rebased
yeah, i did
00:05 btyler left 00:06 dmol left
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␤»
timotimo ta/me takes care of old pull requests 00:09
wow. for some reason, the setting just parsed in 107.8s, which is i believe a new short-term record! 00:11
did the move of arity do that much of a difference?!?
timotimo can hardly believe it 00:12
00:12 Psyche^_ joined
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␤»
dalek kudo/nom: 34922a2 | (Rob Hoelz)++ | src/Perl6/Actions.nqp:
Add "did you mean?" when trying to embed a regex in a sub

Example:
sub foo {
   regex re {
   ...
   }
  }
00:14
kudo/nom: 69eddb2 | timo++ | src/Perl6/Actions.nqp:
Merge pull request #209 from hoelzro/regex-sub

Add "did you mean?" when trying to embed a regex in a sub
timotimo would like to put github.com/rakudo/rakudo/pull/226 up for consideration again
00:16 Psyche^ left
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…»
..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␤…»
timotimo r: 1234 +> 1; 00:17
camelia ( no output )
timotimo r: 1234 ~> 1; 00:19
camelia rakudo-jvm 1371cc: OUTPUT«===SORRY!=== Error while compiling /tmp/IYBpLzl0Vy␤Preceding context expects a term, but found infix > instead␤at /tmp/IYBpLzl0Vy:1␤------> 1234 ~>⏏ 1;␤»
..rakudo-parrot 1371cc: OUTPUT«===SORRY!=== Error while compiling /tmp/LdJzCtzvSN␤Preceding context expects a term, but found infix > instead␤at /tmp/LdJzCtzvSN:1␤------> 1234 ~>⏏ 1;␤»
timotimo r: 1234 ~< 1;
camelia rakudo-parrot 1371cc: OUTPUT«===SORRY!=== Error while compiling /tmp/tQxzXqPAH9␤Unable to parse expression in quote words; couldn't find final '>'␤ ␤at /tmp/tQxzXqPAH9:1␤------> 1234 ~< 1;⏏<EOL>␤ expecting any of:␤ …»
..rakudo-jvm 1371cc: OUTPUT«===SORRY!=== Error while compiling /tmp/qZZcOlwd2T␤Unable to parse expression in quote words; couldn't find final '>'␤ ␤at /tmp/qZZcOlwd2T:1␤------> 1234 ~< 1;⏏<EOL>␤ expecting any of:␤ pos…»
dalek kudo/nom: fe8c3c0 | Mouq++ | src/ (2 files):
Makes string-wise shifts parse and fail as NYI
00:33
kudo/nom: b2c8ca5 | Mouq++ | src/core/Str.pm:
Use typed NYI exception
kudo/nom: f4e2a0a | (Timo Paulssen)++ | src/ (2 files):
Merge branch 'stringshift' of github.com:Mouq/rakudo into Mouq-stringshift

Conflicts: src/Perl6/Grammar.nqp (conflicting cursor optimisations)
kudo/nom: a02c75c | (Timo Paulssen)++ | src/core/Str.pm:
add missing X::NYI stub
rl6-roast-data: 2bf6255 | coke++ | / (3 files):
today (automated commit)
00:34
timotimo i'd like to bump discussion of github.com/rakudo/rakudo/pull/160 again, too 00:35
00:36 robinsmidsrod left
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
r: sub foo(Int *@a) { }; foo(1,2,3)
camelia rakudo-jvm e71f99: OUTPUT«(timeout)»
..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…»
jnthn Yeah.
So +1 to 160
Better to tell people stuff just won't work sooner rather than later.
00:39 robinsmidsrod joined
timotimo thank you :) 00:40
dalek kudo/nom: 0628efe | (Timo Paulssen)++ | src/Perl6/Actions.nqp:
Fail when a *@ has a type constraint
00:44
kudo/nom: 73485c0 | (Timo Paulssen)++ | src/Perl6/Actions.nqp:
complain for **@ as well.
kudo/nom: e54ad44 | timo++ | src/Perl6/Actions.nqp:
Merge pull request #160 from timo/fail_typed_slurpy_early

Fail typed slurpy early
timotimo jnthn: i think the 4.6megs of unnecessary ints for Nodes has shaved off another 3% of parse time on my machine 00:45
jnthn \o/ 00:47
timotimo i really like this kind of LHF 00:48
things that catch the eye of a curious bystander and appear obviously wrong when being prodded for a few minutes
jnthn There's probably a few more things we can do in QAST space.
timotimo do you think a hash of hashes would be more efficient than having a hash in every Node? 00:51
i can think of arguments for both yes and no
jnthn Ah, for annotations? 00:52
Yeah, that hash bothers me a bit too but not sure what to do with it... 00:53
timotimo agreed.
jnthn The $foo<bar> way of annotating is fairly engrained.
timotimo yeah, and it's super neat to have
TimToady but for most of those a short linear list would be more efficient than a hash 01:00
[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
TimToady: can we have that in one of the global config vars?
TimToady seems like a no-brainer 01:03
except, of course, for bikeshedding the name/locatoin 01:04
maybe a $*UNICODE object to go with $*VM, $*DISTRO, etc. 01:05
since it doesn't quite seem to attach to any of them
[Coke] that works. do we need to track anything other than version just yet? 01:06
TimToady dunno; me wonders what happens when someone lies about the Unicode version over a dynamic scope... 01:07
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.
TimToady s/crazy/crazier/
[Coke] saner to keep it readonly.
mmhehehe
TimToady well, PROCESS::UNICODE is readonly, but that doesn't prevent someone from hiding it in a dynamic scope 01:10
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
TimToady do we allow the introduction of a new version of unicode after compilation?
timotimo aaw dangit, i've b0rked some spectests
turns out :(Mu *@_) was used to verify the correct signature of sub positional { @_[0] } 01:12
r: sub positional { @_[0] }; say &positional.signature.perl;
[Coke] TimToady: I could see maybe having to deal with different files with different versions, no?
camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«:(*@_)␤»
timotimo r: sub positional { @_[0] }; say &positional.signature.perl; say &positional.signature eqv :(*@_);
camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«:(*@_)␤False␤»
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'
[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␤»
[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:15
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'␤»
TimToady I'm thinking the compiler can pick for now, and maybe relax it later
[Coke] WFM. I just want a little introspection so we can keep running tests.
TimToady since there are likely optimizations that can be done if we nail down the Unicode version
and they're largely backward compat anyway
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.
TimToady r: sub positional { @_[0] }; say &positional.signature eqv &positional.signature; 01:19
camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«True␤»
TimToady r: say :(*@_) eqv :(*@_) 01:21
camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«False␤»
TimToady heh
dalek ast: a2f7811 | coke++ | S05-substitution/subst.t:
rakudo fudge
01:22
TimToady r: my $s = :(*@_); say $s eqv $s
camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«True␤»
TimToady looks kinda like eqv is using === semantics there 01:23
not that siggies are meant to be very comparable in the first place...
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
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…»
..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…»
TimToady r: my $a = 42; my $b = 43; :($a,$b) ::= $b,$a; say $a,$b
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
..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…»
TimToady r: my $a = 42; my $b = 43; :($a,$b) ::= ($b,$a); say $a,$b
camelia rakudo-parrot e71f99, rakudo-jvm e71f99: OUTPUT«4342␤»
TimToady so :(*@a) should be binding to the same @a outside of the :()
[Coke] rj: my $file = ""; 01:27
for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) +% ';'/;
camelia ( no output )
[Coke] rj: my $file = ""; for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) +% ';'/; 01:28
camelia rakudo-jvm e71f99: OUTPUT«(timeout)»
[Coke] rp: my $file = ""; for ^20000 {$file ~= "$_;"}; say $file ~~ /(\d+) +% ';'/;
camelia rakudo-parrot e54ad4: OUTPUT«(timeout)»
01:28 davecc joined
timotimo i think i need sleep now 01:29
01:29 wbill joined
BenGoldberg constant a = b; constant b = a; say a 01:29
rn: constant a = b; constant b = a; say a
camelia rakudo-jvm e54ad4: OUTPUT«(timeout)» 01:30
..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…»
..rakudo-parrot e54ad4: OUTPUT«===SORRY!===␤Could not find sub &b␤»
[Coke] r: say $%*ENV
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:/…»
..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
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:32 DarthGandalf left
TimToady so I doubt rj is gonna finish that in 5 seconds 01:34
01:34 tgt left
TimToady 10 minutes now 01:35
TimToady wonders if putting :r on that match would make it run faster 01:37
TimToady gives up after 15 cpu minutes 01:39
dalek ast: 93db1ca | coke++ | S (23 files):
remove references to "browser" os.

it's from an old version of pugs++
[Coke] TimToady: yah, the bug was "takes too long in jvm"
s/bug/rt/
what's the name of this form: $%*ENV ? dynamic scalar itemizer? 01:43
TimToady well, the $ doesn't care what's after it really 01:44
it just does a .item to %*ENV 01:45
[Coke] roger.
01:46 thou left
dalek ast: 9e9ca28 | coke++ | S02-magicals/env.t:
add test for RT #117951
01:47
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=117951
[Coke] std: 555 ~~!~~ 666 01:48
camelia std b469b42: OUTPUT«===SORRY!===␤Expecting a term, but found either infix ~~ or redundant prefix ~␤ (to suppress this message, please use space between ~ ~) at /tmp/NThmybfRcw line 1:␤------> 555 ~~!~~⏏ 666␤Parse failed␤FAILED 00:01 …»
[Coke] r: 555 ~~!~~ 666
camelia ( no output )
timotimo arrived home 01:49
[Coke] (RT #76436)
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=76436
TimToady [Coke]: the takes-too-long looks like GC thrash to me 01:50
since it's running 1.5 cpus constantly
[Coke] rt.perl.org/Ticket/Display.html?id=120380 01:51
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'␤»
TimToady yeah, eventually get java.lang.OutOfMemoryError: Java heap space
just a note on that--the string concat only takes 4 seconds, the rest is all the pattern matching 01:57
dinner &
[Coke] r: my @a := gather { for 1..3 { take $_; say @a.perl } }; say @a.perl;
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…»
..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…»
[Coke] (RT #66820) 01:58
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=66820
01:59 nnunley left 02:01 nnunley joined 02:02 lue left, lue joined
[Coke] r: $foo:: = 42; say $foo::; # RT # 76400 02:05
camelia rakudo-jvm e54ad4: OUTPUT«===SORRY!=== Error while compiling /tmp/MANE8TYdIa␤Variable '$foo' is not declared␤at /tmp/MANE8TYdIa:1␤------> $foo::⏏ = 42; say $foo::; # RT # 76400␤ expecting any of:␤ postfix␤»
..rakudo-parrot e54ad4: OUTPUT«===SORRY!=== Error while compiling /tmp/Ry4A8W96Ye␤Variable '$foo' is not declared␤at /tmp/Ry4A8W96Ye:1␤------> $foo::⏏ = 42; say $foo::; # RT # 76400␤ expecting any of:␤ postfix␤»
[Coke] arglebargle. (this is what happens when testneeded lingers too long.
[Coke] heads out, might see you in a few hours. 02:06
02:29 Woodi left 02:31 Woodi joined 02:35 woosley joined
BenGoldberg r: say my $foo:: = 1; ++$foo:::: 02:51
camelia rakudo-jvm e54ad4: OUTPUT«===SORRY!=== Error while compiling /tmp/S7erNqg5RR␤Name component may not be null␤at /tmp/S7erNqg5RR:1␤------> say my $foo:: = 1; ++$foo::⏏::␤»
..rakudo-parrot e54ad4: OUTPUT«===SORRY!=== Error while compiling /tmp/2DSA5Ga5hB␤Name component may not be null␤at /tmp/2DSA5Ga5hB:1␤------> say my $foo:: = 1; ++$foo::⏏::␤»
BenGoldberg Hmm, nevermind 02:52
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:05
r: my $foo:: = 42 03:06
camelia ( no output )
BenGoldberg r: say my $foo:: = 42 03:07
camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«42␤»
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
std: my $foo::
camelia std b469b42: OUTPUT«ok 00:01 121m␤»
lue std: my foo::<$>
camelia std b469b42: OUTPUT«===SORRY!===␤Malformed my at /tmp/NoeCANdx_m line 1:␤------> my ⏏foo::<$>␤ expecting any of:␤ name␤ scoped declarator␤ typename␤Parse failed␤FAILED 00:01 120m␤»
03:12 bbkr left 03:14 bbkr joined
colomon is having one of those horrible moments when last week's extensive refactoring turns out to have been a complete mistake. 03:16
03:32 [Sno] left 03:36 rurban1 joined 03:38 raiph left 03:40 rurban1 left 03:47 DarthGandalf joined 03:50 davecc left 03:55 jnap1 left 04:14 ggoebel16 left 04:18 preflex_ joined, ChanServ sets mode: +v preflex_ 04:20 preflex left 04:21 preflex_ is now known as preflex, kaleem joined
BenGoldberg std: my $foo:: = 1; say $foo:: 04:31
camelia std b469b42: OUTPUT«ok 00:01 123m␤»
04:40 raiph joined
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»
BenGoldberg nr: my @a := 1, 1, { my ($a, $b) = @_[*-1, *-2]; [+] @_[*-$a,*-$b] } ... *; print @a[999]
camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«(timeout)» 04:50
..niecza v24-98-g473bd20: OUTPUT«502»
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…»
..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…»
BenGoldberg r: constant @a = 1, 1, { [+] @a[*-$^a,*-$^b] } ... *; print @a[999] 04:52
camelia rakudo-jvm e54ad4: OUTPUT«===SORRY!=== Error while compiling /tmp/iD3ajzkpRU␤Variable '@a' is not declared␤at /tmp/iD3ajzkpRU:1␤------> onstant @a = 1, 1, { [+] @a[*-$^a,*-$^b]⏏ } ... *; print @a[999]␤ expecting any of:␤ pos…»
..rakudo-parrot e54ad4: OUTPUT«===SORRY!=== Error while compiling /tmp/EpJdrXud5v␤Variable '@a' is not declared␤at /tmp/EpJdrXud5v:1␤------> onstant @a = 1, 1, { [+] @a[*-$^a,*-$^b]⏏ } ... *; print @a[999]␤ expecting any of:␤ …»
04:54 dwarring left 04:56 kaleem left 04:57 SamuraiJack_ joined 04:58 [Sno] joined 05:04 johnny5_ left 05:05 johnny5_ joined 05:18 raiph left 05:21 [Sno] left 05:31 raiph joined 05:34 daniel-s joined 05:39 thou joined 05:51 logie joined 05:53 raiph left 06:03 BenGoldberg left 06:18 rurban1 joined 06:19 logie left, xinming_ joined 06:22 xinming left 06:25 [Sno] joined 06:33 PacoAir joined 06:34 PacoAir left 06:46 nnunley left 06:47 thou left 06:50 kaleem joined 07:01 nnunley joined 07:02 rurban1 left 07:12 ponbiki left 07:17 ponbiki joined, ponbiki is now known as Guest14161, Guest14161 is now known as ponpon 07:19 FROGGS joined 07:20 Rix joined 07:25 logie joined 07:29 logie left 07:36 iSlug joined 07:38 stevan_ joined
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:39
so, it is a special case IMO 07:40
timotimo: but it would be nice to know why :(Str *@_) won't work 07:50
moritz \o 08:01
timotimo++ # rakudo commit bit
08:01 brrt joined 08:06 zakharyas joined, iSlug left, iSlug joined 08:13 nnunley left 08:38 PacoAir joined
FROGGS hi moritz 08:44
08:54 dmol joined 09:14 cognominal left 09:16 johnny5_ left 09:18 fhelmberger joined 09:19 rurban1 joined 09:23 rurban1 left
diakopter hm 09:25
09:29 ssutch left 09:32 dakkar joined 09:51 dram joined
masak morning, #perl6 :) 09:55
moritz good antenoon, masak 09:57
nwc10 good UGT, #perl6
moritz \o nwc10 09:58
10:05 dayangkun joined 10:08 SevenWolf joined 10:09 lizmat_ is now known as lizmat
lizmat good *, #perl6! 10:09
10:13 SevenWolf left
hoelzro ahoy lizmat ! 10:14
lizmat hoelzro o/
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.
camelia ( no output )
..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…»
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")␤»
dram great, FROGGS++
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…»
..rakudo-jvm e54ad4: OUTPUT«「ENV_TEST」␤␤»
dalek ast: 2466d6c | (Elizabeth Mattijsen)++ | S17-concurrency/ (6 files):
Remove safeguarding against rakudo.parrot

No longer needed since we can indicate skip in the spectest.data file, moritz++
dram hmm, qx// and shell() have been disabled in rakudo-parrot? 10:28
moritz for the evalbot at least 10:29
we should do that for rakudo-jvm too
dram hmm, It seems that both qx// and run() do not respect %*ENV change, shell() has no problem.
moritz :( 10:30
dram May somebody have a try?
in rakudo.parrot, jvm is ok
dalek ast: 3d27820 | (Elizabeth Mattijsen)++ | S17-concurrency/thread.t:
Add concurrency test for hashes

Unfortunately, this hangs 1/5 times it runs on my machine. So I've marked it to be skipped for the moment.
10:32
10:34 denis_boyun joined 10:35 dayangkun left 10:49 denis_boyun left 11:00 iSlug left 11:02 kurahaupo joined 11:05 brrt left 11:16 FROGGS left 11:23 FROGGS joined 11:29 tgt joined
timotimo if i just assign 3 to a ResizableIntegerArray and don't push any values, are they all 0? 11:45
because nqp generates "assign 3, assign 0, push 0, push 0, push 0" on every startup it seems 11:48
and that could probably be 4 instructions less
timotimo tries it
nqp: my @a := (1, 2, 3, 4, 5); for @a { say($_); last; } 11:50
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«1␤»
timotimo interesting. +@foo makes a float in nqp 11:52
that can't be optimal
(but it also can't make much of a difference)
11:55 iSlug joined 11:56 ggoebel16 joined
FROGGS timotimo: I guess it is a num so it can store inf 11:58
timotimo right, but in NQP that doesn't make sense :) 11:59
anyway. it seems like i save a couple of pushes to every ResizableIntegerArray that is used to build a StaticLexpad
that could very well be worth a tiny bit of time
moritz I guess it's a Num because that's what prefix:<+> in the most general case does 12:00
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
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
except maybe in very hot paths
moritz agreed
timotimo FROGGS: also, yeah, the saving is so tiny, it's probably invisible
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?
i'll have a look-see :)
probably already pounded into shape by our most brilliant coders :(
FROGGS rakudo$ grep setup_static_lexpad -R * | wc -l 12:04
3719
it appears very often in the setting.pir at least
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:09
one thing i can think of is to move the check for $!from and $!to below the iscclass 12:11
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?
FROGGS is the iscclass that efficient?
I dunno
timotimo hm. it may not be.
FROGGS I didn't try that
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
it worked, but there was no performance gain
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␤»
..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)␤»
..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)…»
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)␤»
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());
camelia nqp-parrot: OUTPUT«0␤-8.91685485839844e-05␤»
timotimo nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!from' || $str eq '$!to'); say($time - nqp::time_n());
camelia nqp-parrot: OUTPUT«0␤-0.000134944915771484␤»
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());
camelia nqp-parrot: OUTPUT«0␤-8.51154327392578e-05␤»
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());
camelia nqp-parrot: OUTPUT«0␤-8.10623168945312e-05␤»
FROGGS nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!from' || $str eq '$!to'); say($time - nqp::time_n());
camelia nqp-parrot: OUTPUT«0␤-7.79628753662109e-05␤»
FROGGS nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!from' || $str eq '$!to'); say($time - nqp::time_n());
camelia nqp-parrot: OUTPUT«0␤-0.000102043151855469␤»
12:16 denis_boyun joined
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␤»
FROGGS nqp-p: my $time := nqp::time_n(); my $str := '0'; say($str eq '$!to' || $str eq '$!from'); say($time - nqp::time_n());
camelia nqp-parrot: OUTPUT«0␤-7.89165496826172e-05␤»
FROGGS no
12:18 kaleem left, Celelibi joined
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:19
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␤»
FROGGS nqp-p: my $time := nqp::time_n(); my $str := '$!peter'; say($str eq '$!to' || $str eq '$!from'); say($time - nqp::time_n());
camelia nqp-parrot: OUTPUT«0␤-7.67707824707031e-05␤»
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());
camelia nqp-parrot: OUTPUT«Could not find sub &eqat␤current instr.: '' pc 76 ((file unknown):50) (/tmp/vRDqzgMDzG:1)␤»
timotimo nqp::eqat
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)␤»
FROGGS nqp-p: nqp::eqat_i
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)␤»
FROGGS nqp-p: nqp::eqat_s
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)␤»
timotimo oh, it's not merged in yet?
62e2415 - Merge branch 'eqat_unused' (6 days ago) 12:22
nqp-p say("what's my version?");
nqp-p: say("what's my version?");
camelia nqp-parrot: OUTPUT«what's my version?␤»
timotimo ...
is there a variable that i can print out?
12:22 iSlug left
moritz something with nqp::backendconfig 12:22
timotimo i'll fiddle around
FROGGS that is about the backend only
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…»
..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…»
..nqp-jvm: OUTPUT«runtime.jars␤runtime.classpath␤runtime.bootclasspath␤runtime.prefix␤»
FROGGS nqp-m: nqp::backendconfig<version> # this will be printed as moar::version
camelia ( no output )
FROGGS nqp-m: say(nqp::backendconfig<version>) # this will be printed as moar::version 12:24
camelia nqp-moarvm: OUTPUT«2013.10-120-gb08a229␤»
FROGGS nqp: use nqp-config;
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)␤»
..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 (…»
..nqp-moarvm: OUTPUT«(signal ABRT)While looking for 'nqp-config.moarvm': no such file or directory␤frame_name_33␤»
12:25 pernatiy joined
timotimo moritz: can you check if the nqp-p is rebuilding properly? 12:25
FROGGS nqp: use HLL::Compiler
camelia nqp-moarvm: OUTPUT«(signal ABRT)While looking for 'HLL/Compiler.moarvm': no such file or directory␤frame_name_33␤»
..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…»
..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)␤»
timotimo nqp::eqat really should exist.
FROGGS yeah 12:26
12:28 grondilu joined
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:28
oh, actually, eqat has different semantics! 12:29
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
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␤»
moritz yes, maybe nqp-p is too old
or it picks up the wrong one 12:31
or, dunno
12:36 stevan_ left
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
at least for parrot?
12:36 stevan_ joined
timotimo it could build a library of old/new cuids and just revert the new ids 12:36
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
sadly, rewriting history to do the same thing to older stage0s would be a tad excessive
moritz just a tad :-)
timotimo FROGGS: my interest is piqued, so i'll try to build it now :)
like 90% of all changes look like this: 12:38
- nqp_get_sc_object $P5180, "7A67D46DDEA3C60BB73DFB1CA4F76715F3D1212C-1382959237.84144", 26
+ nqp_get_sc_object $P5180, "7A67D46DDEA3C60BB73DFB1CA4F76715F3D1212C-1384344785.94814", 26
FROGGS right, because it is a timestamp :o)
timotimo it seems like the only change is the unix timestamp at the end
so, yay or nay? :)
moritz it's a fun experiment in the very least :-) 12:40
if nqp builds after that, things are likely not too wrong
so, a firm +0.8 from me :-)
timotimo :D
FROGGS *g*
+0.2 from me than *g* 12:41
12:41 pecastro_ left
timotimo oops. a change i made somewhere caused nqp-jvm to not build any more 12:43
12:48 dram left
timotimo r: say "A" ~~ /<xdigit>/ 12:52
camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«「A」␤ xdigit => 「A」␤␤»
timotimo okay. now editing patch files will not be very easy 12:55
i should probably edit the files instead.
java.lang.StackOverflowError >_< 12:59
12:59 SamuraiJack_ left
timotimo i thought lines() has been fixed for that? 13:00
13:01 brrt1 joined 13:02 brrt left 13:04 brrt1 left 13:05 kaleem joined
timotimo ... that just killed my pc >_< 13:08
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 ...
or just the sshd
aha! almost got a shell on the sshd! 13:11
ah, that's because perl6 exited. but my desktop is still not responding due to 3gb of ram being in my swap >_< 13:12
FROGGS timotimo: I just built a nqp-j HEAD 13:13
timotimo can you use lines()?
er, right. yeah. that's not what you were trying to do 13:14
13:14 denis_boyun left
timotimo i'm nqp::istype-ing a NQPMu or something 13:14
sudo swapoff -a >_> 13:15
should qx allow me to pipe through grep? 13:21
moritz yes 13:24
timotimo strange. 13:25
well, the output of git diff is 11MB in size
it's not really a big surprise that rakudo-parrot would gobble up all available memory to call lines() on that 13:26
13:26 rindolf joined
timotimo 166k lines 13:26
qx{git diff | grep 'cuid'} seems to just consume 100% cpu forever :\ 13:27
nope, wrong.
that part works fine. the 100% cpu usage comes from lines it seems
putting it into a file and using 'fname'.IO.lines seems to work much better 13:30
13:35 logie joined
FROGGS gather/take again? 13:36
13:38 kaleem left 13:39 iSlug left
timotimo may be. but i thought lines() was ungathertake'd? 13:40
moritz that was split, no? 13:42
timotimo hm, perhaps 13:45
the tool is somewhat slow, but it seems to do the recognizing part right at least. 13:48
13:49 rindolf left 13:50 kaleem joined
timotimo welp. this could take a while >_< 13:54
13:56 logie left
timotimo the program estimates 12 minutes for the analysis alone 13:56
14:00 kivutar joined
timotimo but yeah, lines() uses gather/take. maybe it could be made to use map instead. 14:00
[Coke] "indicate skip in spectest.data file" - does this include both "make spectest" and "t/spec/test_summary" ? 14:01
14:05 FROGGS left
timotimo [Coke]: how long until you start the daily star run? 14:05
oh, actually, on the JVM i can just use the async file reader instead of lines() 14:06
moritz [Coke]: I have patched t/harness; no idea of t/spec/test_summary uses that 14:07
14:08 denisboyun joined
timotimo perl6-p stage0_diff_minifier.p6 775,74s user 2,06s system 99% cpu 13:00,96 total 14:13
timotimo fixed a missing method rename in IOAsyncFile and uses jvm instead of parrot to compare times 14:17
14:18 FROGGS joined
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:18
channels buffer a bunch of entries, right? 14:19
14:20 kaleem left
timotimo seems to be about 2x faster or so. 14:21
at best.
Cannot receive a message on a closed channel - whoops
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:22
dalek kudo/nom: 9f06098 | (Timo Paulssen)++ | src/vm/jvm/core/IOAsyncFile.pm:
chase rename of Channel.finish -> close
14:24
geekosaur why did I misread that as "chaos rename" 14:25
timotimo perl6-j stage0_diff_minifier.p6 270,70s user 1,33s system 130% cpu 3:28,56 total 14:27
that's very good timing actually
r: say "wow, that's {13 / 4.5} times as fast!"
camelia rakudo-parrot e54ad4, rakudo-jvm e54ad4: OUTPUT«wow, that's 2.888889 times as fast!␤» 14:28
timotimo ah, IO::Async::File isn't actually specced yet, so no need to make spectests 14:30
unless of course i go ahead and build the spectests and then write the specs :P
14:31 logie joined
[Coke] timotimo: few hours. I'll push it this afternoon 14:33
I don't think t/spec/test_summary uses t/harness, I think it only uses the raw data file. 14:34
(and has to work across implementations)
timotimo :)
moritz how does t/spec/test_summary skip #icu files when rakudo was built without icu support? 14:35
14:36 lowpro30 joined, nnunley joined
[Coke] it doesn't. 14:36
dalek ast: 1896270 | (Timo Paulssen)++ | S32-list/combinations.t:
smartlinks for List.combinations
[Coke] SFAIK. (which has never been an issue for the daily runs, because I have icu)
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
then the logic to generate that can live in rakudo, and t/harness & test_summary can both invoke it.
-> $dayjob 14:38
dalek ast: a5b4ce0 | moritz++ | test_summary:
[test_summary] skip #jvm files on rakudo-jvm
moritz ... or a simple, one-line patch :-)
not idea, but better than nothing for now
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?
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:39
oh, this could actually work! 14:40
timotimo has an early prototype 14:45
14:46 bluescreen10 joined 14:48 kaare_ joined
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:51
14:53 rurban1 joined
timotimo goes for a jog 15:00
15:02 FROGGS left 15:03 btyler joined 15:20 rurban1 left 15:26 thou joined 15:34 jnap joined 15:39 pecastro joined 15:44 fhelmberger_ joined 15:47 fhelmberger left 15:48 fhelmberger_ left 15:51 rurban1 joined 15:53 ingy2^ joined
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
or can i somehow directly pass a java-level integer in Ops.invokeDirect?
15:55 ingy2^ left 16:05 bluescreen10 left
jnthn timotimo: Whatre you trying to do? But yeah, the latter way is the right one I suspect 16:10
You just pass the integer as an arg and make sure hte callsite descriptor has an INT in it for that slot
See things like findmethod that call with a native str for ideas
16:16 FROGGS[mobile] joined
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:17
i want to use it to generate a time estimate for completion in my consumer 16:18
if $lines_channel.total_promise.has_result { say "$lines_so_far / $lines_channel.total_promise.result()" } more or less
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:19
Unhandled exception: Not enough positional parameters passed; got 0 but expected 1 in (gen/jvm/CORE.setting) 16:20
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:20 [Sno] left
jnthn um...wait, you probably aren't gonna find out the total number until fairly close to the end, no? 16:21
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...
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:22
timotimo ah, hm. 16:23
that's fine then 16:26
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:30 denisboyun left 16:35 kaleem joined 16:46 kaleem left
daxim www.riffraff.info/2007/5/20/a-spell...rl6-part-3 16:47
tadzik sub substitution? Should be 'sub stitution' 16:50
16:52 jaffa4 joined
TimToady agrees with dram++ that irclog.perlgeek.de/perl6/2013-11-13#i_7853191 is a bug in r-p 16:55
16:56 ingy^ left 16:58 rindolf joined, zakharyas left
TimToady .join is kind of an unfortunate method name for threads 17:00
maybe it should be .rejoin to avoid confusion with the stringy method
timotimo sounds like a valid concern
TimToady or .await, like we do for promises 17:01
hoelzro I think something with 'wait' in it makes sense
hoelzro thinks about waitpid for processes
jnthn TimToady: Yeah, I didn't like "join", but it's the normal name for it... :) 17:02
17:02 denis_boyun joined
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 :)
TimToady we intentionally break a lot of the unfortunate overloadings of other languages 17:03
we don't use + to concatenate strings either :)
jnthn True :)
Not defending keeping join, more just saying why it is that way now 17:04
TimToady nodnod
jnthn .wait_for_termination is kinda long but descriptive. .wait I guess works.
17:05 tgt left
jnthn
.oO( Look! Look! I have a MacBook Pro!! :P )
17:05
timotimo jnthn: github.com/perl6/nqp/blob/master/s...r.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:06
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
but 'join' is still a lousy word even in that case
should be more like .finishup
timotimo jnthn: github.com/perl6/nqp/blob/master/s...or.nqp#L55 - could this be done faster with a nqp::isnull, or does that give the same code?
same for the $!cstack below
jnthn timotimo: They'll be hot, yeah. And moving the numeric one up front is worth it I guess 17:08
timotimo: as that's the rare case
TimToady it's like .finish-and-I'll-wait-for-you
timotimo yeah 17:09
jnthn timotimo: The second one ain't worth changing I don't think.
timotimo nqp: say(nqp::ord('$'))
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«36␤»
timotimo what names are usually in that? do many of them start with a $? 17:10
jnthn Not sure
timotimo er ... apparently empty strings sometimes?! 17:11
jnthn Sometimes.
timotimo OK, didn't expect that
jnthn The cstack isn't only for captures.
It's actually a cursor statck
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:12
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:13
jnthn I don't actually see where you mean 17:14
timotimo one sec
github.com/perl6/nqp/blob/master/s...r.nqp#L773
dalek ecs: 2d03d45 | larry++ | S17-concurrency.pod:
tweak .join to .finish (to complement .start)

Avoiding unfortunate name collision with Str.join in the usersphere. Since we're trying to preserve OO notions, we tell the thread to finish
  (implying we'll wait for them) rather than use a method name like 'await',
which makes no sense as a message to a thread object, since waiting is not what the thread is supposed to do.
17:15
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
same for the list
17:16 FROGGS joined
jnthn Look like leftover from a previous optimization attempt 17:16
17:16 iSlug joined
timotimo er, i have different code in front of me anyway 17:16
jnthn Though, we may actually want to try that opt again...
timotimo no, i just swapped the branches m) 17:17
can do.
jnthn I think that for the list bit we mostly don't (in grammars) make positional capture 17:18
*captures
Now, putting a null in the object will end badly
But we may be able to declare a single array outside the method as the empty
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...
iirc, 'cus EXPR cheats somewhere... :)
timotimo ifnull returns the first argument, unless it's null in which case it returns the second argument, right? 17:21
17:22 iSlug left
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)␤»
..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…»
..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␤»
jnthn timotimo: yes, but more than that, it doesn't even evaluate the second argument if the first is not null 17:23
timotimo: So it's got short-circuit semantics too
17:23 [Sno] joined
timotimo great 17:23
17:25 beastd joined
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
timotimo the usual :) 17:26
FROGGS hmmm 17:27
jnthn FROGGS: Being really tired despite only having done a quick visit to the office and a short flight, apparently...
timotimo if you want to, you can try to figure out what part of stage jast is so darn slow
jnthn oh, I wonder if it's 'cus I didn't really have lunch...
:)
FROGGS jnthn: hehe, well, should have had lunch by now :o) 17:28
timotimo: I can try, somehow
jnthn I had a hotdog. :)
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...
FROGGS but I had a second breakfast at 10a.m. at work
timotimo yup, all of the optimisations i've done shaves off a bit of time from parsing 17:30
i'm now at 106.2s when i was at 110 a few days ago
jnthn r: say 106.2 / 110 17:31
camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0.965455␤»
FROGGS just a few percent and we can stop working on moarvm \o/ 17:32
moritz timotimo++
FROGGS: just another 80% and we can stop working on moarvm? :-)
jnthn We'll still have the startup time :P 17:33
FROGGS jnthn: not on parrot :o)
moritz: something about that, yes :o)
rindolf FROGGS: hi. 17:38
FROGGS hi rindolf
rindolf FROGGS: what's up?
17:39 kivutar left
FROGGS rindolf: just skimming through RT tickets to find something fixable 17:39
rindolf: you?
timotimo FROGGS: so no making stage jast faster?
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 - shlomif-tech.livejournal.com/67311.html
timotimo cool! :)
17:50 SamuraiJack_ joined 17:51 grondilu left
timotimo my desktop needs zram >_< 17:56
jnthn ramz! 17:57
moritz teh ramz!
17:57 pernatiy left
dalek p: c11b5e7 | (Timo Paulssen)++ | src/vm/parrot/QAST/Operations.nqp:
optimize only-0s list_i
17:58
p: 5034588 | (Timo Paulssen)++ | src/QRegex/Cursor.nqp:
twiddle NQPCursor.MATCH a bit:

most of the times we don't actually have positionals, so keep a shared empty list. almost all of the keys start with non-$, so quick-check for that. iscclass is probably faster than the eq checks were, so do it first
timotimo oh 18:01
wow, that was easy
18:03 dakkar left
timotimo huh 18:04
now my computer froze
moritz can't be so bad if you can still (or again) IRC :-) 18:05
timotimo i have a laptop next to my desktop :)
for when rakudo decides to be memory hungry like it kind of always is
i can't tell if it's still working or really froze completely 18:06
the sshd isn't responding, so the htop i'm running in it is useless
tadzik I used to turn off chromium when I was compiling rakudo
geekosaur (ctrl-q :p )
tadzik then I bought another 2 gigs of ram :)
timotimo i'm at 8 gigs ... :/ 18:07
jnthn dinner &
tadzik well, the machine I'm typing on has 256 megs, and it's said to be able to run rakudo at some point
erm, I heard it was able to 18:08
a while ago
18:08 Rotwang joined
timotimo well, my 8gigs are not sufficient to do 4 spectest runners at the same time 18:08
at least if i have my browser open at the same time as well 18:09
18:09 ssutch joined
moritz for r-p that should be enough 18:09
timotimo my laptop is going to have 12.
tadzik huh,weird. I have no problems with TEST_JOBS=4 on 8gig 18:10
...or so I think :&
timotimo i used to have no problems either
but ... browser :\
timotimo resets the computer
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
tadzik ah, yes
timotimo could i interest you in adopting my code for the table parser, so that you could perhaps integrate it into rakudo? 18:12
i don't seem to get back to it
tadzik pod table parser?
sure thing
I need to take care of my Pod child occasionally :)
moritz tadzik, our perl 6 podigy :-) 18:13
18:13 zakharyas joined
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
moritz you'd need imaginary numbers for that. 18:16
tadzik imaginary tabs
moritz shlomif-tech.livejournal.com/67311.html 18:17
oh sorry, wrong URL
www.mercurynie.com.au/mathguys/arti...0311g1.jpg # imaginary numbers
moritz keeps mixing up his two paste buffers
18:18 lowpro30_ joined
tadzik I like them merged 18:20
diakopter tadzik: dogenail
18:21 lowpro30 left
diakopter tadzik: dogenail is leaving soonz 18:21
.. and has left 18:26
free hundred firty free fousand fink it frough
lizmat I was wondering whether it would make sense to add this candidate for postfix:<++> 18:35
multi postfix:<++>(Mu:D \a is rw --> Nil) { a = a.succ } 18:36
and then have the optimizer use *that* candidate when doing a ++ in sink context ?
FROGGS would it pick that candidate at all? 18:39
lizmat good question
anyway, I just realized that using prefix ++ does exactly that
so if you want to increment fast *and* you're not interested in the value at that point
use prefix ++ 18:40
TimToady P5 does that optimization
one of the many reasons it's important to know when you're in sink context
timotimo hm, that sounds like something i could try to do ... 18:41
we generate a sink and a non-sink branch, right?
moritz and the optimizer already tracks sink context
timotimo oh, it does?
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␤»
timotimo oooh
i can totally do that optimisation :)
lizmat
.oO( I love work, I can watch it for hours ;-)
18:43
timotimo it won't be worth very much, though ... :|
can we do something similar in nqp?
lizmat why won't it be worth mouch?
much ?
timotimo i've seen a few ++'s there
TimToady should save some GC pressure to not make a copy
timotimo because i don't think we have postfix++ very often in the slowest paths?
dalek kudo-star-daily: 7c93f59 | coke++ | log/ (5 files):
today (automated commit)
18:44
timotimo cool, it lost a bunch of SORRYs due to URI 18:45
18:45 rindolf left
timotimo but what's with LWP/Simple? 18:45
18:45 rindolf joined
moritz at least it found the submodule this time :-) 18:47
timotimo [Coke]: your services are invaluable :) 18:51
dalek ar: 96845f6 | moritz++ | modules/ (2 files):
update some somdule revisions
18:53
18:55 SamuraiJack_ left 18:56 ggoebel16 left, ggoebel16 joined 18:58 ggoebel left 18:59 rurban1 left, rindolf left, rindolf joined 19:02 zakharyas left, logie left 19:04 ggoebel joined 19:05 logie joined 19:06 bluescreen10 joined 19:10 jeff_s1 left
lue hello world o/ 19:10
timotimo hellue
tadzik ...I was just about to say that 19:11
FROGGS hehe
hi lue
lue o/
19:14 logie left 19:21 jac50 joined 19:22 jac50 is now known as lemOn91
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:23
i guess i could just update the stage0 for nqp-p and only use eqat inside vm/parrot 19:25
java.lang.ClassFormatError: Unknown constant tag 105 in class file 1EF69CB6D2DAB8EB258E8A6E2CD79D4FB985CB6A 19:29
what the hell did i do? o_O
19:32 Rotwang left
timotimo r: (:foo<bar>, :baz<quux>).hash.fmt("%s:%s").say 19:35
camelia rakudo-parrot 9f0609: OUTPUT«foo:bar␤baz:quux␤»
..rakudo-jvm 9f0609: OUTPUT«baz:quux␤foo:bar␤»
19:36 rindolf left
dalek ar: 517cc37 | moritz++ | modules/Perl6-MIME-Base64:
update MIME::Base64 to a version that hopefully precompiles
19:37
moritz timotimo: that should fix the LWP::Simple compilation errors
timotimo cool :) 19:38
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␤»
moritz (the problem was that MIME::Base64 only require'd the ::PIR and ::Perl modules, and our dependency detecton doesn't recognize that)
timotimo ah, that's not so good 19:40
moritz so I cheated the dependeny detection
with a multi-line comment that contained fake use statements
moritz feels vaguely dirty
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␤»
timotimo that's not how i remember flipflop working
19:42 preflex left
timotimo well, i guess it kinda is 19:43
returns a falsey value until it flips, then truey values until it flops again
moritz so why doesn't * flop it again? 19:44
timotimo ff * is supposed to be a flipflop that never flops
so, a latch 19:45
No such method 'jast' for invocant of type 'NQPMu' - bleeeeeeh 19:48
i don't want to hunt this bug >_<
19:48 Rotwang joined
TimToady x() ff * interprets "whatever" as "run forever" by analogy to 1..* 19:51
equivalent to /foo/,$ in a language like sed 19:53
remember that the operator always gets first crack at the meaning of *, and the autopriming is only a fallback 19:54
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'␤»
timotimo oh, parrot has it as well! :o 19:59
locally i get 'no such method jast' instead for the jvm
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:03
timotimo so there's nothing that sticks out as particularly optimizable? 20:05
FROGGS timotimo: no
20:05 logie joined
timotimo i feared as much :( 20:06
20:07 ggoebel17 joined 20:08 ggoebel16 left, ggoebel left 20:13 dmol left, dmol joined 20:14 ggoebel joined 20:16 lemOn91 left
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:␤------> True, True, True, False).pick() { my $_ ⏏= "hi"; when 'hi' { say "bug!" } }␤␤»
TimToady and offhand I'd say it's not a bug for it to say 'bug!' 20:18
n: for True, False { my $_ = "hi"; when 'hi' { say "bug!" } } 20:19
20:19 kurahaupo left
camelia niecza v24-98-g473bd20: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $_ (see line 0) at /tmp/4bs5MeD9kz line 1:␤------> for True, False { my $_ ⏏= "hi"; when 'hi' { say "bug!" } }␤␤Unhandled exception: Writing to readonly scalar␤…» 20:19
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…»
..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…»
TimToady r: for True, False <-> $_ { $_ = "hi"; when 'hi' { say "bug!" } }
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…»
..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…»
TimToady that's a bug though
timotimo TimToady: yeah, it should say bug. but it should also compile
TimToady oh wait, nevermind 20:21
timotimo bad use of "say bug" i guess
TimToady r: for True, False -> $_ is copy { $_ = "hi"; when 'hi' { say "bug!" } }
camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«bug!␤bug!␤»
TimToady that's not a bug :)
timotimo yeah, but that's not what my code looks like :P
TimToady anyway, 'my $_' doesn't generally declare a different $_ 20:22
timotimo i didn't have my $_ in my original code, gimme a sec 20:23
r: while (True, True, True, True, False).pick() { $_ = "hi"; when 'hi' { say "bug!" } }
camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
timotimo that's the bug i was hitting
FROGGS r: while (True, True, True, True, False).pick() { $_ = "hi" } 20:24
camelia ( no output )
TimToady that should presumably fail
oh, wait, more branedeath 20:25
that doesn't bind $_ unless you do it explicitly
r: while (True, True, True, True, False).pick() -> $_ { $_ = "hi"; when 'hi' { say "bug!" } }
camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
FROGGS r: my $i = 0; while $i++ < 2 { when 'hi' { } } # so it does not like a when in a loop ?
camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
jnthn back 20:26
TimToady well, it's supposed to like when inside something functions as a topicalizer by *binding* to $_
FROGGS front
TimToady r: while (True, True, True, True, False).pick() -> $_ is copy { $_ = "hi"; when 'hi' { say "bug!" } }
camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
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 ?
jnthn Looks like something is putting a QAST tree together "wrong"
camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
FROGGS r: for ^2 { when 'hi' { } } # so it does not like a when in a loop ? 20:28
camelia ( no output )
TimToady it's supposed to be fine with a when anywhere inside a construct that *binds* to $_ as a paramter
which that 'for' does
so does the while if you add -> $_, but it's not seeming to pick that up 20:29
otherwise it should fail with 'succeed without surrounding topicalizer' or some such
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"
moritz ISTR that the optimizer does funny stuff with $_ occasionally
timotimo r: say (0.1234).round(1)
FROGGS perl6-p --optimize=0 -e 'r: my $i = 0; while $i++ < 2 { when "hi" { } }'
===SORRY!===
Error while compiling op handle: StopIteration
camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0␤»
timotimo r: say (0.1234).round(0.1)
camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0.1␤»
timotimo r: say (0.1234).round(0.2)
camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0.2␤» 20:31
timotimo r: say (0.1234).round(0.9999)
camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«0␤»
timotimo how does that work?
FROGGS timotimo: the algorithm is in the spe
spec*
timotimo oke
TimToady n: if True -> $_ { when *.so { say "okay!" } }
timotimo ah, cool
camelia niecza v24-98-g473bd20: OUTPUT«okay!␤»
TimToady r: if True -> $_ { when *.so { say "okay!" } }
camelia rakudo-parrot 9f0609, rakudo-jvm 9f0609: OUTPUT«okay!␤»
TimToady r: while True -> $_ { when *.so { say "okay!" }; last } 20:32
camelia rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
TimToady so rakudo can handle the 'if ->' but not the 'while ->'
n: while True -> $_ { when *.so { say "okay!" }; last }
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…»
TimToady er, right 20:33
moritz ... except the "last;" part :-)
TimToady gives that snippet last rights
FROGGS r: my $i = 0; while $i++ < 2 { 1 when 'hi' } 20:34
camelia ( no output )
FROGGS O.o 20:35
TimToady try *.so
nr: while True -> $_ { once when *.so { say "okay!" }; last }
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Unexpected block in infix position (method call needs colon or parens to take arguments) at /tmp/RS6EjNHKlK line 1:␤------> while True -> $_ { once when *.so ⏏{ say "okay!" }; last }␤␤Undec…»
..rakudo-parrot 9f0609: OUTPUT«===SORRY!===␤Error while compiling op handle: StopIteration␤»
..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
TimToady there, a bug for everyone :) 20:36
n: while True -> $_ { START when *.so { say "okay!" }; last }
camelia niecza v24-98-g473bd20: OUTPUT«okay!␤»
20:37 rurban1 joined
TimToady s/START/okay/ is LHF for someone 20:37
s/okay/once/
20:37 rurban1 left 20:38 iSlug joined
TimToady should quit while he's behind... 20:39
FROGGS behind? 20:40
behind what?
FROGGS .oO( the curtain? )
nwc10 behind on his coffee, I think
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:40 baest left 20:41 iSlug left
timotimo jnthn: getting rid of almost all of the textual deltas is going to make a difference 20:42
you can compress it or you can not even represent it in the first place :)
don't you agree that nqp takes way too long to clone? 20:43
108 megabytes in the .git folder
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
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:45
jnthn timotimo: Yes, I just think that the JVM rebootstraps are likely where much of it comes from 20:46
timotimo hmm
jnthn (I'm guessing, it's just that we didn't tend to consider the repo big back then... :))
lue timotimo: the problem is is that the backtrace, as has come to be the pattern, is entirely useless :(
timotimo yeah :( 20:47
jnthn lue: --target=ast
lue: Look for where the tree is busted
FROGGS maybe there's a Nil/nil somewhere
lue so, esp. considering I've dummied out everything since the last time it worked, I'm really hopelessly stumped.
jnthn: I'll try that. Do that on NQP or on the exercise?
jnthn On your compiler 20:48
20:48 bluescreen10 left
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
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
timotimo okay, 70M after compression 20:51
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
20:54 dmol left
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␤»
..rakudo-jvm 9f0609: OUTPUT«===SORRY!===␤No such method 'jast' for invocant of type 'NQPMu'␤»
20:55 dmol joined
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:56
timotimo oops 20:57
20:58 lowpro30 joined
timotimo jnthn: i'm a bit annoyed that i can't easily while $channel.receive -> $data { ... } 20:58
because it raises an exception if it's finished
hm, isn't there something like .?receive that i could do?
lue (now to find out why a third <ident> breaks things...)
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…»
..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…»
timotimo r: class A { method receive { die "bad luck!" } }; say A.new.*receive;
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…»
..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…»
timotimo r: class A { method receive { die "bad luck!" } }; say A.new.+receive;
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…»
..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…»
jnthn timotimo: Yes, the spec actually suggests a possible way to deal with that :)
FROGGS r: class A { method receive { die "bad luck!" } }; say A.new.?receive.WHAT;
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
..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…»
jnthn timotimo: For now, write it with select, or whatever we call that nowadays :)
.oO( Can somebody write me a dictionary? :) )
timotimo ah, with winner. 21:01
i'm using while $channel.peek at the moment :\
jnthn Yes, that'll get you a race condition...
21:02 lowpro30_ left
timotimo it ... will? 21:02
jnthn Most immediately because it assumes that if there's nothing to peek then the channel is finished...
timotimo oh!
that's silly :)
i'll do the winner thing then 21:03
jnthn But also if you peek, then receive, and you have many receivers...
I'm pondering a $channel.receive_loop(-> $x { ... }) or so. With a TimToady++ized name... :) 21:04
timotimo yeah, i'd like that
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?
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
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.
I'll see about putting in some pull requests. 21:07
(after $dayjob)
->
timotimo actually, my $line = do winner { when $c { $c.receive }; when $c.closed { last } }; seems good enough 21:09
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
timotimo sounds about right
lue still doesn't know how a third <ident> call in a rule causes that though :(
timotimo aaw, winner isn't up to spec at the moment 21:11
does winner return the value of the block that won, ooc?
lue I'll just go .WHATing the nodes that are maked in every method to find the problem :)
jnthn timotimo: argh, yeah, the when syntax is new...
timotimo spec says it should, good
jnthn timotimo: And I can imagine since that's more than "just a rename" we ain't doing it yet... 21:12
21:13 kaare_ left
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:17
21:19 lowpro30_ joined
itz has there been any historic discussion or drafts about the possible contents of the standard library? 21:21
21:22 lowpro30 left
FROGGS what is the "standard library" anyway? 21:24
PerlJam FROGGS++ (I was thinking the same thing)
timotimo so, how do i substitute programmatically now? 21:26
itz FROGGS: what's defined by the non-existant S30? 21:27
"
21:27 stevan_ left
itz "TBD" 21:27
PerlJam itz: well then ... it's whatever you write and commit to that document :)
FROGGS itz: well, I know that much already :o) 21:28
I thought it might be about the C API of a libper6.so
libperl6*
itz do we just still the "included batteries" from somewhere else?
steal even
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
(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
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
lue itz: core as in "what you get when you don't 'use' anything."
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?
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:33 lowpro30_ left
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
(even then some would argue that color output is a common enough feature that P6 should be able to Just Do It™ without modules.)
FROGGS then DBIish should be there too :o)
and maybe many of the star modules
lue FROGGS: that's a good starting point. 21:35
PerlJam and now we've started down the slippery slope methinks
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.
FROGGS I'd just rip it out 21:36
there are things that don't need to be written in stone
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")
Essentially, "a module that provides these functions for color output" is OK, "the module Term::ANSIColor by tadzik" is not. 21:37
21:38 bluescreen100 left
itz surely a module name could be given as an example and that list of examples added to as other modules are written 21:38
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:39
(then I'd argue a spec that requires maintenance even after freezing is suspicious somewhat.) 21:40
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."
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 :) .
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?
itz you are using core in a different way to perl 5 21:43
lue PerlJam: See S01..S29, S31, S32
and S33
r: say "Everything available to this interpreter right now is \"core\""
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 :)
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:46
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.
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:48
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:49
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.
itz I thought the test suite defined perl6
lue s/Perl 6 compliant/considered Perl 6/;
itz: and an S30 spec means S30 tests. 21:53
itz "must" isn't very perl :)
are you arguing S30 shouldn't exist?
lue itz: except when needing to qualify as Perl 6 :)
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
B) It's still useful enough to require, so we'll have it be as modules
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:55
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.
timotimo jnthn: i just got "cannot receive a message on a closed channel" even though i used the winner construct 21:57
itz how do you write S27 tests if you believe each sections needs tests? :) 21:58
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
i have my $line = winner( $line_channel => { $line_channel.receive }, $line_channel.closed => { last }) 22:00
oh, hold on
jnthn What? You don't religiously read and memorize all my talks?!
timotimo could it be that doesn't make it a closure?
jnthn Oh, it's because $line_channel => { $_ } is what you want :)
FROGGS timotimo: see rt.perl.org/Ticket/Display.html?id=120498
it is the same as when {} in while/until
jnthn timotimo: It does the receiving for you.
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)
jnthn And just passes the value
timotimo oh?
jnthn You can write $line_channel -> $msg { $msg } if it's clearer 22:01
timotimo you mean => ->, right?
jnthn uh
yes :)
lue S99 is the only spec I'm aware of which doesn't need tests, and that's obvious.
jnthn lue: We hve to test the drinking game? :)
wfm! 22:02
FROGGS *g*
+1
lue jnthn: it's not spec yet!
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
jnthn timotimo: No, it wants a pair 22:03
timotimo hm 22:04
jnthn timotimo: but as I mentioned, if you are just returning it then $line_channel => { $_ } will do
timotimo writes {$^a} instead
22:04 c1sung left
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
you're talking about "what's core"; moritz wrote a good blogpost on hat
that *
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?
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 rdstar.wordpress.com/2010/12/31/co...s-concept/
my non-knowing of S30 prompted the "crazy new syntax" part of the idea :P 22:06
lue should update the blog's banner... 22:07
itz tadzik: do you have the link handy?
perlgeek.de/blog-en/perl-6/how-core-is-core.html 22:08
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
Cat. C is a distribution-specific decision, imo
22:14 BenGoldberg joined
FROGGS v5 perhaps 22:15
or rakudo-debugger
22:16 pernatiy joined 22:19 lowpro30 left
lue FROGGS: is Perl 5 support now module-ized, or is v5.pm just temporary (like Set.pm was) 22:21
FROGGS lue: it is a module, that requires a few micro-tweaks of rakudo 22:22
lue would assign v5 to Cat.A and rakudo-debugger to Cat.C, which would be distribution-specific :) 22:23
22:26 kurahaupo joined
lue (S32::v5 sounds like a cool idea, now that I think about it...) 22:26
22:27 lowpro30 joined, preflex joined, ChanServ sets mode: +v preflex
timotimo is compiling an nqp with minified bootstrap files 22:31
22:32 lowpro30_ joined
timotimo meh, it didn't write the entirety of the file out 22:33
22:33 lowpro30__ joined 22:35 lowpro30 left
timotimo it misses exactly the last line it seems 22:36
22:36 lowpro30_ left
jnthn 'night, #perl6 22:38
22:42 beastd left 22:49 kurahaupo left 22:51 jaffa4 left 22:52 lowpro30__ left 22:54 pernatiy left
tadzik huh, what happenend to 'make realclean'in nqp? 22:55
timotimo is there a reason for re-using object registers? 22:59
22:59 FROGGS left
timotimo on parrot, i mean 23:00
23:00 Rotwang left
timotimo i don't understand where the last line gets lost :( 23:01
is there still a race condition?
lue timotimo: I might be silly for suggesting this, but... off-by-one? 23:03
timotimo github.com/perl6/nqp/blob/master/s....pir#L4830 - like here for example? 23:04
does it need to be a fresh $P500N each time?
would parrot benefit performance-wise if it did re-use the same each time?
lue: well, not on my end. i get the line and immediately print it 23:05
interestingly, it re-uses these registers a bit further down
github.com/perl6/nqp/blob/master/s...0.pir#L506 - and here, there's registers being set that could already have been the first argument to nqp_get_sc_object instead 23:07
ah, one of the as_post's does that 23:08
(the one for WVal of course)
23:09 daniel-s left 23:10 daniel-s joined 23:11 frettled joined 23:12 denis_boyun left 23:16 nnunley left 23:18 hummeleBop1 joined, dmol left
lue is finally done with Exercise 8 o/ 23:19
23:19 hummeleB1 left
timotimo i'm hoping i can get a tiny shred of performance out of the removal of unnecessary corecions 23:21
er, not even coercions 23:25
but redundant set operations
probably not worth much :|
apparently for some reason that was necessary 23:45
23:48 logie left 23:54 BenGoldberg left
lizmat timotimo++ 23:57
meanwhile, I'm calling it a day, good night, #perl6!
timotimo the code i removed was necessary, so it broke when i tried to make it better :( 23:58
so timotimo--