»ö« 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/IYBpLzl0VyPreceding context expects a term, but found infix > insteadat /tmp/IYBpLzl0Vy:1------> 1234 ~>⏏ 1;» | ||
..rakudo-parrot 1371cc: OUTPUT«===SORRY!=== Error while compiling /tmp/LdJzCtzvSNPreceding context expects a term, but found infix > insteadat /tmp/LdJzCtzvSN:1------> 1234 ~>⏏ 1;» | |||
timotimo | r: 1234 ~< 1; | ||
camelia | rakudo-parrot 1371cc: OUTPUT«===SORRY!=== Error while compiling /tmp/tQxzXqPAH9Unable 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/qZZcOlwd2TUnable 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 ~~!~~⏏ 666Parse failedFAILED 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«().listsplice() 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«().listCannot 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/MANE8TYdIaVariable '$foo' is not declaredat /tmp/MANE8TYdIa:1------> $foo::⏏ = 42; say $foo::; # RT # 76400 expecting any of: postfix» | ||
..rakudo-parrot e54ad4: OUTPUT«===SORRY!=== Error while compiling /tmp/Ry4A8W96YeVariable '$foo' is not declaredat /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/S7erNqg5RRName component may not be nullat /tmp/S7erNqg5RR:1------> say my $foo:: = 1; ++$foo::⏏::» | ||
..rakudo-parrot e54ad4: OUTPUT«===SORRY!=== Error while compiling /tmp/2DSA5Ga5hBName component may not be nullat /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 typenameParse failedFAILED 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/iD3ajzkpRUVariable '@a' is not declaredat /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/EpJdrXud5vVariable '@a' is not declaredat /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 &eqatcurrent 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«ccoptiflagsuvruletomobjectsldsharedsharuleccinstflagsldlibsldimpshaobjectshasreadlinemtcleanccdefflagsobjldflagslddirnamenoreturnattributedllexportdefs[0]defs[1]dccleanmoarldrpathdcruleldusr…» | ||
..nqp-parrot: OUTPUT«git_describesha1aarar_extraar_outarchnamearflagsasbacktracebigendianbindirbison_versionblib_dirbuild_dirbyteordercatcccc_debugcc_exe_outcc_inccc_ldflagscc_o_outcc_sharedccflagsccwarnchmo…» | |||
..nqp-jvm: OUTPUT«runtime.jarsruntime.classpathruntime.bootclasspathruntime.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 directoryframe_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 directoryframe_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 3current 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:barbaz:quux» | ||
..rakudo-jvm 9f0609: OUTPUT«baz:quuxfoo: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«NilNil1NilNil» | ||
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«NilNil123» | ||
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-- |