Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-06-21

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:12 jnthn 'night, #perl6
00:12 timotimo night jnthn!
00:13 sorear night!
00:17 jaldhar joined #perl6
00:18 masak 'night, #perl6
00:19 sorear night masak
00:21 ssutch r: class Foob { has @.fields; }; my $x = Foob.new(fields=>['a','b']); my $x2 = $x.clone(:fields(['c','d']); say $x.fields; say $x2.fields;
00:21 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unable to parse expression in argument list; couldn't find final ')'â�¤at /tmp/8jB_Zfsrbx:1â�¤------> [32mc','d']); say $x.fields; say $x2.fields;[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤        method argumentsâ�¤        postfixâ�¤       …
00:21 ssutch r: class Foob { has @.fields; }; my $x = Foob.new(fields=>['a','b']); my $x2 = $x.clone(:fields('c','d')); say $x.fields; say $x2.fields;
00:21 camelia rakudo 49f111: OUTPUT«c d␤c d␤»
00:22 ssutch clone appears to be affecting the original object?
00:23 * masak submits rakudobug
00:24 timotimo wow, it gets stranger and stranger
00:24 timotimo also: try :fields<c d> on for size :)
00:25 cooper joined #perl6
00:25 cooper joined #perl6
00:25 ssutch clone is all confused, it also turns some arrays into arrays of arrays
00:26 ssutch .oO(wish i knew how to fix something like this)
00:27 timotimo look into src/core/Mu.pm, it's perl6 code that implements method clone
00:27 timotimo perhaps you can figure out what's causing the strangeness?
00:27 timotimo for a start: copypaste the method into a file and give it to a custom object to test changes, so you don't have to re-make the CORE.setting
00:29 MrMeek-afk joined #perl6
00:29 ssutch ok, thanks
00:30 ssutch trying that now
00:42 colomon make spectest (.... blah ...)
00:42 colomon Can't open perl script "./eval-client.pl": No such file or directory
00:46 timotimo i told you :)
00:46 timotimo 01:33 < timotimo> tools/build/create-jvm-runner.pl
00:47 ssutch how does one get the "address" of a variable/attr in perl 6?
00:48 timotimo for what purpose?
00:48 timotimo there is .WHERE
00:48 timotimo r: say "foo".WHERE; 1.WHERE; Str.WHERE;
00:48 camelia rakudo 49f111: OUTPUT«-2943263␤»
00:48 timotimo r: say "foo".WHERE; say 1.WHERE; say Str.WHERE;
00:48 camelia rakudo 49f111: OUTPUT«-88674970␤-93913280␤2051176574␤»
00:48 ssutch to determine if two objects have the same address
00:49 timotimo there's also WHICH, what does that do again?
00:49 timotimo r: say "foo".WHICH; say 1.WHICH; say Str.WHICH;
00:49 camelia rakudo 49f111: OUTPUT«Str|foo␤Int|1␤Str␤»
00:49 timotimo ah, that's something else
00:50 ssutch so for this clone bug, it seems that the 'fields' array is never copied, just reassigned, so when its contents get updated via nqp::getattr($cloned, $package, $name) = %twiddles{$acc_name}; then it updates both the original, and what should be the copy
00:51 colomon timotimo: I see!  sorry, I was trying to cook dinner when I wrote that, then it was bedtime.
00:51 ssutch it's possible that this line: https://github.com/rakudo/rakudo/blob/nom/src/core/Mu.pm#L434 is not being called when it should
00:52 colomon https://gist.github.com/colomon/5828085 # my failed attempt just now to use create-jvm-runner.pl
00:53 ssutch yes, if i comment out the if nqp::iscont($attr_val) it works as it should, the array is cloned, so both arrays are not updated
00:54 timotimo no problem, colomon :)
00:54 ssutch im guessing nqp::iscont is checking if it's a container that should be copied
00:54 timotimo (personally, i just cp'd the file from tools/something/something)
00:58 ssutch maybe a parrot bug? nqp::iscont maps to a pirop https://github.com/perl6/nqp/blob/05231f5465951b02b962681216442ed4518a3bcc/src/vm/parrot/QAST/Operations.nqp#L2090
00:59 ssutch rn: class Foob { has @.fields; }; my $x = Foob.new(fields=>['a','b']); my $x2 = $x.clone(:fields('c','d')); say $x.fields; say $x2.fields;
00:59 camelia niecza v24-79-gcb6f20b: OUTPUT«a b␤c d␤»
00:59 camelia ..rakudo 49f111: OUTPUT«c d␤c d␤»
01:03 xilo_ joined #perl6
01:04 xilo_ joined #perl6
01:05 ssutch well, here is where it's defined for rakudo: https://github.com/perl6/nqp/blob/609c1f707cf1ef0bb708eedc8f735d255a3ef06e/src/vm/parrot/ops/nqp.ops#L2243 / added by jnthn https://github.com/perl6/nqp/commit/5f291147df95b969fb1a847a4efbb7ef0dc961d6
01:05 timotimo i'm not sure if iscont is what you think it is
01:05 ssutch er, nqp, not rakudo
01:06 timotimo "any non-6model type", so Arrays would be containers, Str would be containers ... i guess?
01:06 ssutch r: nqp::iscont('')
01:06 camelia rakudo 49f111:  ( no output )
01:06 ssutch r: say nqp::iscont('')
01:06 camelia rakudo 49f111: OUTPUT«0␤»
01:07 ssutch r: say nqp::iscont((class X{}).new)
01:07 camelia rakudo 49f111: OUTPUT«0␤»
01:08 ssutch r: say nqp::iscont([])
01:08 camelia rakudo 49f111: OUTPUT«1␤»
01:08 ssutch r: say nqp::iscont({'x'=>'v'})
01:08 camelia rakudo 49f111: OUTPUT«1␤»
01:10 xilo_ joined #perl6
01:12 ssutch r: class Foob { has @.fields; } my $f = Foob.new(:fields<a b>); my $attr = $f.^attributes()[0]; say nqp::iscont(nqp::getattr($f, $attr.package, $attr.name));
01:12 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Two terms in a rowâ�¤at /tmp/C8cnZ1_zDq:1â�¤------> [32mclass Foob { has @.fields; } [33mâ��[31mmy $f = Foob.new(:fields<a b>); my $attr[0mâ�¤    expecting any of:â�¤        scoped declaratorâ�¤        constraintâ�¤        postfixâ�¤        state…
01:12 ssutch r: class Foob { has @.fields; }; my $f = Foob.new(:fields<a b>); my $attr = $f.^attributes()[0]; say nqp::iscont(nqp::getattr($f, $attr.package, $attr.name));
01:12 camelia rakudo 49f111: OUTPUT«Can not get attribute '@!fields' declared in class 'Foob' with this object␤  in block  at /tmp/qPZxI_AtN6:1␤␤»
01:15 timotimo i think i'm going to bed now
01:15 ssutch 'night
01:15 timotimo i wish you the best of luck with your clone improvements :)
01:23 raiph ssutch++ # filing bugs
01:24 raiph ssutch++ # looking into fixing bugs
01:24 * timotimo found this: http://www.youtube.com/user/polishperl/videos
01:24 raiph ssutch++ # in first week of exposure to p6
01:30 ssutch \m/
01:32 timotimo ... timotimo-- for shoving newcomers into the deep end :P
01:32 raiph ssutch: did you backlog the discussion of eqv?
01:32 ssutch raiph: i haven't
01:32 raiph timotimo++ # for knowing which newcomers that can swim
01:33 raiph ssutch: http://irclog.perlgeek.de/out.pl?channel=perl6;date=today;summary=1
01:34 raiph (then go back a day; click time at left of a line in summary to get to full log)
01:35 raiph ssutch: timtoady started discussion of your use of eqv
01:35 ssutch reading it now
01:37 raiph it kinda went over my head; methinks it'll make sense to you though :)
01:37 ssutch thanks for pointing that out
01:39 raiph did you see http://irclog.perlgeek.de/perl6/2013-06-20#i_7224568 ?
01:40 ssutch yes, but i don't think that accurately represents my issue; the contents of C.x would need to be classes with custom <eq>
01:40 ssutch or custom <eqv>
01:41 ssutch (writing a gist right now)
01:45 colomon sorear: btw, your new make spectest just ran for me in 621 wallclock secs.  :)
01:45 raiph ssutch: what langs do you use most and like most?
01:47 ssutch i relatively like, and have used for 10 yrs python
01:48 ssutch r: https://gist.github.com/samuraisam/5828293
01:48 camelia rakudo 49f111: OUTPUT«eq: True␤eq list: False␤»
01:49 ssutch it doesn't matter if i define eq or eqv for Thing, eqv w/ lists w/ custom objects still turn up false
01:50 raiph i think that'll be because they aren't eqv; each list literal is distinct
01:51 ssutch r: [1,2] eqv [1,2]
01:51 camelia rakudo 49f111:  ( no output )
01:51 ssutch r: say [1,2] eqv [1,2]
01:51 camelia rakudo 49f111: OUTPUT«True␤»
01:51 raiph ok, i'm wrong. happens rather too often ;)
01:55 raiph ssutch: have you read S03:3292 ?
01:56 ssutch yes, but it's not all entirely obvious to me
01:57 ssutch it would indicate that eqv is not what i want for this purpose
01:58 ssutch r: https://gist.github.com/samuraisam/5828335
01:58 camelia rakudo 49f111: OUTPUT«eq: True␤eq list: True␤»
01:59 ssutch ^ i am using something like that
02:00 raiph oh! i just remembered. timtoady mentioned >>eq<<
02:00 raiph did u see that?
02:01 ssutch hmm, i didn't
02:01 raiph start at http://irclog.perlgeek.de/perl6/2013-06-20#i_7224358 and read on
02:04 gdey joined #perl6
02:04 ssutch r: https://gist.github.com/samuraisam/5828335
02:04 camelia rakudo 49f111: OUTPUT«eq: True␤zeq list: True␤aeq list: True␤>>eq<< list: True␤»
02:04 ssutch interesting!
02:05 ssutch r: https://gist.github.com/samuraisam/5828335
02:05 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Two terms in a rowâ�¤at /tmp/xhaODOgqCy:14â�¤------> [32may "zeq list: ", [Thing.new(:attr<ab>)] [33mâ��[31mzeq [Thing.new(:attr<ab>)];[0mâ�¤    expecting any of:â�¤        postfixâ�¤        infix stopperâ�¤        infix or meta-infixâ�¤        s…
02:05 diakopter ssutch: is the (@aval == @bval) &&  necessary?
02:06 ssutch diakopter: it compares the length, becauze Zeq pukes on uneven arrays
02:06 raiph diakopter: i only just mentioned >>eq<< to ssutch
02:07 raiph (which deals with the uneven lengths)
02:07 raiph ooo, zeq is treated as a term
02:08 raiph needs to be Zeq
02:08 ssutch yeah, i mistyped, i meant eqv
02:08 ssutch it appears, on the surface, that >>eq<< is what i want
02:11 raiph ssutch: http://perlcabal.org/syn/S03.html#Hyper_operators
02:11 ssutch i've used @x>>.dostuff before, but >>eq<< never occurred to me
02:11 ssutch very interesting indeed!
02:12 BenGoldberg joined #perl6
02:13 raiph the thing pointed to by the big end is treated as a list, the pointed end an item
02:14 raiph so @x>>.dostuff means @x is treated as a list/array, .dostuff as a singular thing (a method)
02:15 colomon raiph: @x>>.dostuff applies dostuff to the elements of @x.  @x.dostuff applies it to @x itself
02:15 colomon which I think is what you were trying to say.  :)
02:16 colomon oh, wait, maybe it's not what you were trying to say.
02:16 raiph colomon: i've no idea what i was trying to say :)
02:16 raiph colomon: well, i've got an idea, but i'm just guessing :)
02:16 colomon I guess you can think of the >>. as going from big (array) to little (method)
02:16 raiph right
02:17 colomon I suppose that's a good way to remember it.
02:17 colomon there is also op<<@x for prefix operators
02:18 ssutch im going to dig into this clone issue more later
02:19 ssutch for now i just want to see some lines of 'ok'
02:19 benabik ok
02:19 benabik ok
02:19 colomon ok
02:19 colomon (benabik++)
02:19 ssutch hah
02:19 lue r: my @a = 1,2,3; say @a».:<++>; # if only .:<> forms worked right now
02:19 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0m�Unsupported use of . to concatenate strings; in Perl 6 please use ~�at /tmp/PRsM9MjsIk:1�------> [32mmy @a = 1,2,3; say @a».:[33m�[31m<++>; # if only .:<> forms worked right [0m�»
02:19 benabik colomon++ # GMTA
02:20 colomon benabik: nah, I just copied you.  :)
02:20 ssutch GMC
02:21 benabik colomon: "Only be sure to always call it 'research'."
02:24 colomon .U+2296
02:24 BenGoldberg r: (1.2.3)>>~:<++>
02:24 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Confusedâ�¤at /tmp/VB5oZlprpD:1â�¤------> [32m(1.2.[33mâ��[31m3)>>~:<++>[0mâ�¤    expecting any of:â�¤        postfixâ�¤        dotty method or postfixâ�¤Â»
02:24 colomon .u+2296
02:24 BenGoldberg r: "\u2296".say
02:24 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unrecognized backslash sequence: '\u'â�¤at /tmp/QkWGPgwhSX:1â�¤------> [32m"\[33mâ��[31mu2296".say[0mâ�¤    expecting any of:â�¤        statement listâ�¤        prefix or termâ�¤        prefix or meta-prefixâ�¤        double quotesâ�¤Â»â€¦
02:24 benabik .u 2296
02:24 yoleaux U+2296 CIRCLED MINUS [Sm] (⊖)
02:24 BenGoldberg r: "\U2296".say
02:24 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unrecognized backslash sequence: '\U'â�¤at /tmp/pDpwaZ_dWS:1â�¤------> [32m"\[33mâ��[31mU2296".say[0mâ�¤    expecting any of:â�¤        statement listâ�¤        prefix or termâ�¤        prefix or meta-prefixâ�¤        double quotesâ�¤Â»â€¦
02:24 colomon benabik++
02:25 benabik colomon: Process of elimination
02:25 BenGoldberg r: "\x2296".say
02:25 camelia rakudo 49f111: OUTPUT«⊖␤»
02:25 BenGoldberg r: "\x{2296}".say
02:25 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unrecognized backslash sequence: '\x'â�¤at /tmp/PVUdhNjQ3l:1â�¤------> [32m"\[33mâ��[31mx{2296}".say[0mâ�¤    expecting any of:â�¤        statement listâ�¤        prefix or termâ�¤        prefix or meta-prefixâ�¤        double quotesâ�¤Â»â€¦
02:25 BenGoldberg r: "\x2296".chars.say
02:25 camelia rakudo 49f111: OUTPUT«1␤»
02:27 colomon niecza> (set <a b c>) ⊖ (set <b c d>)
02:27 colomon set(a, d)
02:28 dalek niecza: c536121 | (Solomon Foster)++ | lib/CORE.setting:
02:28 dalek niecza: Add infix:<⊖> for set symmetric difference.
02:28 dalek niecza: review: https://github.com/sorear/niecza/commit/c53612142d
02:29 colomon sorear++ # make t/spec/S32-num/int.t works too!
02:33 ssutch in this test file: https://github.com/perl6/nqp/blob/master/t/nqp/67-container.t should it be checking if nqp::iscont returns True for an array?
02:36 grondilu joined #perl6
02:36 grondilu rn: subset word of Str where any <foo bar>; say "foo".WHAT;
02:36 camelia rakudo 49f111, niecza v24-79-gcb6f20b: OUTPUT«(Str)␤»
02:41 jeff_s1 joined #perl6
02:43 ssutch ok, to test with my own nqp i should: make my changes in nqp, configure --gen-parrot & make nqp; configure rakudo --with-nqp=/my/path/to/nqp; then run rakudo?
02:43 ssutch that sound right?
02:45 grondilu rn: say so [1, 2].all ~~ Int;
02:45 camelia rakudo 49f111, niecza v24-79-gcb6f20b: OUTPUT«False␤»
02:46 SamuraiJack joined #perl6
02:46 * grondilu was expecting True here :/
02:48 dalek roast: eb3daa3 | (Solomon Foster)++ | S32-num/int.t:
02:48 dalek roast: Refudge for JVM.
02:48 dalek roast: review: https://github.com/perl6/roast/commit/eb3daa30db
02:48 colomon grondilu: it's a junction, not an Int
02:49 colomon rn: say 1 | 2 ~~ Int
02:49 camelia rakudo 49f111, niecza v24-79-gcb6f20b: OUTPUT«False␤»
02:49 grondilu oh yeah.  I forgot about that
02:49 colomon actually, I'm not sure what the rule is.  the right-hand-side autothreads, doesn't it?
02:50 colomon rn: say 1 ~~ Int | Str
02:50 camelia rakudo 49f111, niecza v24-79-gcb6f20b: OUTPUT«True␤»
02:50 colomon .... no, that's not really autothreading, is it?
02:50 colomon because that would be True | False
02:51 grondilu no, it's not autothread, since the rhs is a junction now
02:51 grondilu rn:  say Int |Str ~~ 1
02:51 camelia niecza v24-79-gcb6f20b: OUTPUT«any(Bool::False, Bool::False)␤»
02:51 camelia ..rakudo 49f111: OUTPUT«any(False, False)␤»
02:51 * grondilu is confused now
02:53 atroxaper joined #perl6
03:06 ssutch hmm perl Configure.pl --with-nqp=/Users/samuelsutch/dev/p6fart/nqp/nqp --with-parrot=/Users/samuelsutch/dev/p6fart/nqp/parrot/parrot PARROT VM: Could not load bytecode Could not load oplib `nqp_ops'
03:07 diakopter p6fart - that's a new one
03:08 ssutch if i run ./nqp from the directory it was built in, nqp runs
03:08 ssutch however if i run the full path, it gives that could not load oplib error
03:09 diakopter usually I find it has to be run from where it's make installed to, and also that dir must be in the path
03:09 ssutch so add /Users/samuelsutch/dev/p6fart/nqp to the front of the path
03:09 diakopter is that where `make install` installed it to?
03:10 ssutch it isn't make install'd anywhere
03:10 diakopter oh. I find it needs to be, for me anyways.
03:10 ssutch ok, i'll try, thanks
03:10 diakopter rakudo's Configure.pl has it install to a dir under the rakudo checkout
03:10 diakopter when it does gen-nqp and gen-parrot
03:12 ssutch ah, so it installs to nqp/install, which works fine for me
03:14 ssutch that works! thanks diakopter
03:16 diakopter :D
03:18 * benabik wonders why nqp::continuationinvoke is needed: can't continuations be invokable?
03:19 diakopter :)
03:19 diakopter I had that discussion with sorear
03:19 diakopter it's just one way to do it, yes
03:20 benabik The reference to "sixmodel makes that tricky" is what confuses me.
03:20 diakopter well, admittedly it wouldn't be as easy on jvm as moarvm
03:20 diakopter bbiab&
03:21 benabik JVM would still support invocation spec, I'd think.
03:25 * benabik is more seeking understanding than criticizing design, to be clear.
03:32 * ssutch in awe of nqp
03:36 preflex_ joined #perl6
03:36 ssutch is there any way to use gdb with nqp.ops?
03:38 dayangkun joined #perl6
03:56 benabik nqp.ops should become nqp.c, IIRC
03:57 benabik gcc/gdb don't know about .ops files, they're parsed by ops2c to make .c and .str files.  (Maybe more, I dunno)
03:59 btyler joined #perl6
04:26 Psyche^ joined #perl6
04:37 ssutch yeah, it looks like what i want to stop on is Parrot_repr_clone_p_p
04:50 jlaire joined #perl6
04:52 atroxaper Hello #perl6 ! Is there analog of `system command` in rakudo?
04:54 ssutch r: run('which', 'perl6')
04:54 camelia rakudo 49f111: OUTPUT«run is disallowed in restricted setting␤  in sub restricted at src/RESTRICTED.setting:2␤  in sub run at src/RESTRICTED.setting:8␤  in block  at /tmp/U1EbJ7710V:1␤␤»
04:54 ssutch well, `run`
04:54 sorear benabik: there's no invocation spec for "run this function"
04:55 * sorear just got back from sandiego.pm.  record turnout! (14)
04:55 sorear which mayyyy have been higher than the nominal max capacity of the room
04:56 sorear when we pick a venue that seats 200, we get 5 people and when we go for a room that seats 10, we get 14 :/
04:56 atroxaper ssutch: thank you.
04:56 benabik sorear: I thought the invocation spec was how an object could be called as a function.  So the continuation could be called as a function with the other args to continuationinvoke as the parameters.
04:57 sorear benabik: the handler can't be a java function, it has to be a perl 6 coderef
04:57 sorear I didn't want to write a whole bloody fake coderef just to make invocation syntax a little nicer
04:57 benabik sorear: Understanding dawns.
04:57 benabik sorear++
05:01 birdwindupbird joined #perl6
05:07 kaleem joined #perl6
05:24 sorear joined #perl6
05:24 atroxaper I'm about run function again. I can't find sources of it... How can i get result out of executed command and how can i execute cd C:\somewhere ?
05:28 ssutch "C\:somewhere".path.chdir
05:31 moritz atroxaper: my $str = qx/some command/;
05:32 lue or qqx to do things like  my $str = qqx/command $arg-i-want-to-use/;
05:33 ssutch neato
05:33 sisar joined #perl6
05:34 sorear (but don't do that, reparsing = bad)
05:35 atroxaper moritz, lue: thanks! But .path.chdir doesn't work.
05:36 ssutch yeah, i suppose not :p
05:36 ssutch http://perlcabal.org/syn/S32/IO.html#IO%3A%3APath
05:36 benabik I think simply `chdir 'directory'` works.
05:36 ssutch yeah
05:40 drin_m joined #perl6
05:41 atroxaper qqx/chdir C:\tmp/; say qqx/pwd/; # pwd says that i'm in previous folder. :(
05:42 ssutch nah, don't put chdir in qqx, just use it like a normal function: "say(chdir('C:\tmp'))"
05:43 labster is this a subtle hint for me to add .path.chdir?
05:43 ssutch >.>
05:43 atroxaper Wow! It works!
05:43 atroxaper ssutch, benabik: many thanks!
05:44 benabik labster: I suppose it would make sense.  $*TMPDIR.chdir
05:46 labster it makes more sense for me today than before, because I restructured the internals of IO::Path last night.
05:49 sorear o/ labster
05:49 labster \o sorear
05:53 dmol joined #perl6
06:00 ssutch how do y'all work with nqp? if you make a change in vm/parrot/ops/nqp.ops for instance? do you recompile, install and run a test?
06:02 sorear hopefully it can be tested within nqp proper
06:03 ssutch i am trying to add an op so i can get some debug info from the ContainerSpec - however, getting a segfault during compiling for some reason
06:05 ssutch for some reason, the existence of my op in nqp.ops it die during compilation - is there something else that has to be done besides write an op, and insert it in the Operations.nqp core_pirop mapping?
06:06 moritz ssutch: you can also write ops that produce pir (or PIRT or whatever) without having to write a new op in C
06:07 ssutch im not sure how
06:09 moritz src/vm/parrot/QAST/Operations.nqp has many examples
06:10 moritz for example the 'defor' op is added, with no special underlying pirop
06:10 ssutch ah, i see. i have no idea how PIRT works
06:13 ssutch is there an easy way to print a parrot_string_t
06:13 moritz in which language?
06:13 moritz C?
06:13 ssutch yeah
06:15 moritz I think there's a static function that extracts a C string
06:16 ssutch Parrot_str_cstring
06:16 moritz aye
06:18 benabik Hm.  I think the "simplest" method is Parrot_io_puts(interp, Parrot_io_STDOUT(interp), string)
06:18 ssutch thanks for mentioning it, usually functionality that convert to and from char* refer to them as cstrings (eg obj c, rust, go runtime) - but then again a lot of times im pretty dense
06:18 raiph joined #perl6
06:18 benabik Oh, wait, no.  That uses a cstring.
06:19 benabik Parrot_io_putps
06:33 ssutch ok, i think i've found why nqp::clone (and therefore .clone) isn't working for classes with with arrays (and works for arrays)
06:33 ssutch r: say nqp::iscont([])
06:33 camelia rakudo 49f111: OUTPUT«1␤»
06:34 ssutch r: class F { has @.stuff; }; my $f = F.new(:stuff<a b>); say nqp::iscont($f.stuff);
06:34 camelia rakudo 49f111: OUTPUT«0␤»
06:35 ssutch when an array is in an attribute, nqp::iscont is unaware - therefore when it tries to copy it, it doesn't actually copy the contained containers, just the references, which makes for some mighty funky stuff
06:36 ssutch the reason for that is, contained containers (eg @.stuff) has no ContainerSpec to it, if it did, it would copy correctly
06:37 moritz I thought that routine returns decontainerize by default
06:37 moritz (unless you add an 'is rw' to the routine definition)
06:37 sorear o_O
06:37 moritz r: say nqp::iscont( (sub { [] })())
06:37 camelia rakudo 49f111: OUTPUT«1␤»
06:37 sorear nqp::iscont([]) returns 0 in nqp but 1 on rakudo
06:38 sorear should be 0 on both imo
06:38 benabik r: class C { has @!stuff; method m { say(nqp::iscont(@!stuff)) } }
06:38 camelia rakudo 49f111:  ( no output )
06:38 moritz it seems I'm mixing up container levels
06:38 benabik r: class C { has @!stuff; method m { say(nqp::iscont(@!stuff)) } }; C.m
06:38 camelia rakudo 49f111: OUTPUT«Cannot look up attributes in a type object␤  in method m at /tmp/cQWleEtxZE:1␤  in block  at /tmp/cQWleEtxZE:1␤␤»
06:38 benabik r: class C { has @!stuff; method m { say(nqp::iscont(@!stuff)) } }; C.new.m
06:38 camelia rakudo 49f111: OUTPUT«0␤»
06:38 sorear "cont" in the sense of nqp::iscont only refers to scalar containers
06:38 sorear arrays are containers in a different sense of the word
06:38 ssutch ah ok
06:38 benabik Yeah, it's defiantly the attribute and not method stuff.
06:38 ssutch so only if it were $.stuff
06:38 moritz sorear: but in Perl 6, [] really is a array in a scalar container, no?
06:38 sorear so it feels buggish that nqp::iscont([]) returns 1
06:39 moritz (which is how it is distinguished from a flattening array)
06:39 sorear moritz: ah, I remember that now
06:39 sorear logically, it's more of a "spare bit on the pointer" affair, but rakudo and niecza implement that using a dummy scalar container
06:39 Chillance joined #perl6
06:40 ssutch r: my @f = [1,2,3]; say nqp::iscont(@f)
06:40 camelia rakudo 49f111: OUTPUT«0␤»
06:40 ssutch well, crap, there goes my hypothesis
06:40 moritz note that you created is a array of an array
06:41 ssutch my @f = 1,2,3; say nqp::iscont(@f)
06:41 ssutch r: my @f = 1,2,3; say nqp::iscont(@f)
06:41 camelia rakudo 49f111: OUTPUT«0␤»
06:41 ssutch i found that in this file, on this line: https://github.com/rakudo/rakudo/blob/nom/src/core/Mu.pm#L434
06:41 labster r: my @f = [1,2,3]; say @f.perl; my @f = 1,2,3; say @f.perl;
06:41 camelia rakudo 49f111: OUTPUT«Potential difficulties:â�¤    Redeclaration of symbol @fâ�¤    at /tmp/iqDK0U105u:1â�¤    ------> [32mmy @f = [1,2,3]; say @f.perl; my @f [33mâ��[31m= 1,2,3; say @f.perl;[0mâ�¤Array.new([1, 2, 3])â�¤Array.new(1, 2, 3)â�¤Â»
06:42 labster r: my @f = [1,2,3]; say @f.perl; @f = 1,2,3; say @f.perl;
06:42 camelia rakudo 49f111: OUTPUT«Array.new([1, 2, 3])␤Array.new(1, 2, 3)␤»
06:42 ssutch if i comment out the if nqp::iscont($attr_val), then .clone works properly
06:42 ssutch https://github.com/rakudo/rakudo/blob/nom/src/core/Mu.pm#L434
06:45 ssutch r: https://gist.github.com/samuraisam/5829338
06:45 camelia rakudo 49f111: OUTPUT«a b␤c d␤»
06:45 ssutch ^ observe
06:46 benabik class MyTest is MyMu { has @.fields; }; my $t1 = MyTest.new(:fields<a b>); my $t2 = $t1.clone(:fields<c d>); say $t1.fields; say $t2.fields;
06:46 benabik r: class MyTest is MyMu { has @.fields; }; my $t1 = MyTest.new(:fields<a b>); my $t2 = $t1.clone(:fields<c d>); say $t1.fields; say $t2.fields;
06:46 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0m�'MyTest' cannot inherit from 'MyMu' because it is unknown.�at /tmp/ex7SLm4aqa:1�------> �»
06:46 benabik Oh, d'oh.  Okay, officially too tired to code.
06:47 ssutch one sec, ill change it
06:48 ssutch r: https://gist.github.com/samuraisam/5829338
06:48 camelia rakudo 49f111: OUTPUT«my mu␤a b␤c d␤regular mu␤a b␤c d␤»
06:49 ssutch [derp: that was incorrect]
06:49 ssutch r: https://gist.github.com/samuraisam/5829338
06:49 benabik ssutch: You fixed the bug!  Congrats!  ;-)
06:49 camelia rakudo 49f111: OUTPUT«my mu␤a b␤c d␤regular mu␤c d␤c d␤»
06:51 ssutch judging by moritz and sorear description of nqp::iscont - that line isn't necessary anyway?
06:55 domidumont joined #perl6
06:58 sorear I think it's necessary to avoid accidental deep copying
06:59 sorear ssutch: try class F { has $!x; method set($y) {$!x := $y}; method get() { $!x } }; my $f = F.new; $f.set([1,2,3]); say $f.get === $f.clone.get
06:59 sorear ought to return True, but I think your patch breaks that
07:01 ssutch r: https://gist.github.com/samuraisam/5829338
07:02 camelia rakudo 49f111: OUTPUT«True␤»
07:02 ssutch is that what you meant?
07:05 rindolf joined #perl6
07:15 fhelmberger joined #perl6
07:17 ssutch if i run `make test` - is that the right thing to do to test the change?
07:17 domidumont joined #perl6
07:21 hoelzro morning #perl6!
07:23 FROGGS joined #perl6
07:26 ssutch mornin'
07:26 athomason joined #perl6
07:27 labster ssutch: make spectest
07:28 ssutch im running 'stresstest' right now
07:28 labster "make test" just tests to make sure things like "ok 1+1, 2;" work.
07:34 FROGGS which can be much... that is one thing I have learned when starting to work on v5
07:52 erkan joined #perl6
07:52 erkan joined #perl6
08:00 kivutar joined #perl6
08:05 sorear morning FROGGS
08:06 FROGGS morning sorear
08:08 sorear it looks like I should be able to shrink CORE.setting.class by 5-10% just by getting rid of cuid strings
08:08 hoelzro how is there no entry for Perl6 on http://99-bottles-of-beer.net?
08:08 FROGGS wow, that's nice
08:09 FROGGS hoelzro: well volunteered! :P
08:09 hoelzro heh
08:10 sorear I think kst has one
08:10 FROGGS I believe the Perl 5 one is still unbeatable
08:11 sorear oh, I was thinking of https://github.com/Keith-S-Thompson/fizzbuzz-polyglot/blob/master/fizzbuzz.pl6
08:11 sorear got my toy problems mixed up :)
08:12 sorear FROGGS: sadly, cuids are used in a million places in the code :[
08:13 FROGGS sorear: I thought they are generated by the compiler... so I guessed you just have to fiddle with the code generator
08:14 sorear yeah.  all of it.
08:15 FROGGS ahh, now I see the problem
08:24 sqirrel joined #perl6
08:24 ssutch joined #perl6
08:26 ssutch is there a way to augment Mu?
08:26 nwc10 masak++ # permitting the code to escape
08:26 hoelzro so why has the effort for Rakudo started to move away from Parrot towards the JVM/MoarVM? Is Parrot considered unsuitable?
08:27 ssutch r: use MONKEY_TYPING; augment class Mu { method clone(*%twiddles) { callsame; } };
08:27 camelia rakudo 49f111: OUTPUT«[31m===[0mSORRY![31m===[0m�Package 'Mu' already has a method 'clone' (did you mean to declare a multi-method?)�at /tmp/UWbOJ0FzcU:1�------> �»
08:27 nwc10 masak: there's no announcement yet on http://planetsix.perl.org/
08:27 hoelzro also, why split up the dev work across the JVM/MoarVM implementations instead of focusing on a single target (at least for now)
08:27 hoelzro ?
08:28 nwc10 hoelzro: As I understand it there is no plan to move *away* from Parrot. There was always a plan to support more than just Parrot
08:28 hoelzro in that case, I guess I'm wondering why split up dev effort now instead of after the Parrot impl is more polished
08:29 nwc10 and it does seem that JVM is the single new target - NQP doesn't even bootstrap on MoarVM yet, and no effort seems to have gone into that for at least weeks, if not months. It's all on the jVM
08:29 moritz well, there are problems with parrot that can't be fixed with reasonable effort, and we don't want to block on them for too long
08:30 nwc10 and, as I understand it, Parrot's (new) threading model is very different from anything else. Rakudo needs to start getting its threading support in, and it will be easier to debug Rakudo's threading on a well understood and battle-hardened platform
08:35 ssutch also the jvm is rad
08:36 ssutch easy as heck to program for
08:36 hoelzro I don't disagree; I was just wondering what the reasoning was
08:39 daxim joined #perl6
08:39 hoelzro so where's the focus now?
08:40 moritz getting rakudo to run on the JVM seems to be the main focus (at least of jnthn and sorear)
08:40 moritz and diakopter and JimmmyZ work on moarvm, it seems
08:41 nwc10 and everyone else makes puns
08:41 sorear hoelzro: this isn't a zero-sum game.  if not for the JVM port, I wouldn't be hacking rakudo at all.
08:43 hoelzro sorear: oh, good point
08:43 hoelzro I'm not trying to be confrontational, I'm just curious =)
08:43 hoelzro I had an idea on the way to work this morning
08:44 hoelzro a lot of argument on both sides of the Perl 6 debate (if you can call it that) seems to be about the "readiness" of Perl 6 (in particular, Rakudo)
08:44 raiph hoelzro: i know of a uber hacker who will work on moarvm but not jvm or parrot.
08:44 hoelzro maybe instead of focusing on saying whether or not Rakudo is "ready" or talking about various interpretations of "ready", we should promote what kinds of things Rakudo can do now
08:45 hoelzro raiph: I myself have interest in working on it
08:45 hoelzro but I can't get it to compile
08:45 hoelzro (so that's step 1 for me ;) )
08:45 sorear raiph: tokuhirom?
08:45 tokuhirom ?
08:45 sorear hoelzro: that's the party line now, actually
08:45 hoelzro ok, cool
08:46 hoelzro I wanted to write a better HTTP client, but I wanted to write tests leveraging a forked off child process to act as a test server
08:46 hoelzro ...so I needed a POSIX module, which I started
08:46 hoelzro ...which has unfortunately been halted by a problem with NativeCall/parrot
08:46 raiph aiui tokuhirom is surely one, but no, i didn't mean tokuhirom
08:47 hoelzro I'd also like to see some focus on tooling/packaging
08:47 sorear hoelzro: don't assume you can fork
08:47 hoelzro but I should point some of those fingers back at myself, considering how many half-finished Perl 6 tool/package fixes I have =)
08:47 hoelzro sorear: why not?
08:48 sorear fork and threads interact badly.  a lot of the VMs rakudo wants to support are internally threaded
08:48 raiph hoelzro: "Mostly, we're just a bunch of ants all cooperating (sort of) to haul food toward the nest (on average). There are many groups of people working on various bits and pieces as they see fit, since this is primarily a volunteer effort."
08:48 sorear mono doesn't export a fork wrapper and will crash and burn if you invoke it yourself using p/invoke
08:48 sorear i think jvm is the same way
08:49 hoelzro well, shit.
08:49 moritz but why? shouldn't the processes be independent?
08:49 hoelzro there's no thread API yet, is there?
08:49 moritz (or do those VMs use shared memory?)
08:50 hoelzro I can't remember how threads/fork interact on Linux
08:50 hoelzro I never use them together =/
08:50 hoelzro I think there's a pthreads policy you can set or something?
08:50 kresike joined #perl6
08:50 kresike hello all you happy perl6 people
08:51 * moritz 's only experience with threads was on perl 5 (around 5.8.8 or so), and it was awful
08:51 moritz so bad that I haven't touched threads since then :-)
08:53 sorear hoelzro: it copies all the memory, but only copies one thread.  which means that in the child process, any number of locks may be currenty locked, and the threads which were going to unlock them no longer exist
08:53 hoelzro that sounds about right
08:54 sorear which is what you want if you're doing the fork/exec dance
08:54 sorear because the other threads shouldn't be surprised by a fork
08:54 hoelzro so the parent will be ok, but the child may be hopelessly screwed unless its exec'ing
08:54 sorear exactly
08:55 sorear especially if this is something like the JVM that spawns a dozen housekeeping threads at startup time
08:55 hoelzro right
08:55 hoelzro there's no standard threading API for Perl 6 yet, is there?
08:55 sorear I'd suggest using threads instead, but that has a small problem
08:55 sorear there's a standard, but it's insane and nobody implements it
08:56 sorear niecza has a Threads module, which is the closest thing to an implemented standard we have now
08:56 sorear but it's much lower-level, and actually exposes too many details of the .net thread system
09:25 jnthn morning o/
09:25 FROGGS morning jnthn
09:25 sorear morning jnthn
09:26 nwc10 morning jnthn
09:28 sorear jnthn: my current efforts: optimization of output size (to the extent it can be done without sacrificing other performance); --target=jar
09:29 jnthn sorear: OK
09:29 jnthn Sounds like nice things to work on.
09:38 FROGGS jnthn: is it known that it takes ages to compile to pir when you have like 20 infix declarations in a script?
09:38 jnthn FROGGS: Probably partly 'cus it derives a new language for each of them...
09:39 jnthn FROGGS: Though don't know why that'd be especially slow.
09:39 jnthn FROGGS: I presume you're meaning "infixes that introduce new operators"
09:39 sorear heh
09:39 sorear reminds me of a problem I had with niecza once
09:39 FROGGS jnthn: yes, like infix:<P5==>(\a, \b) ...
09:40 sorear the setting had lots of operator defs, and it was going quadratic because of operator nesting...
09:40 FROGGS hmmm
09:40 sorear I think I modified it to collapse stacks of simple operator defs using role summation
09:40 sorear might be worth trying that in rakudo
09:41 * jnthn figures he should do sort, given loads of spectests block on it
09:41 sorear FROGGS: btw, I told #sandiego.pm that I'm really excited about v5
09:41 FROGGS sorear++ \o/
09:41 FROGGS cool!
09:42 sorear that met about seven hours ago
09:42 sorear record turnout (at least for my time with the group) (14)
09:42 FROGGS that is pretty awesome... I should go to the next Berlin.pm meeting
09:43 FROGGS we are usually about 5 or six ppl
09:43 sorear how cool would a rakudo java applet be?
09:44 jnthn For something like try.perl6.org?
09:44 sorear yes
09:45 jnthn um, though that doesn't seem to exist now
09:45 jnthn So yes, it'd be cool to have
09:49 nwc10 sorear: my opinion for "how cool" is "awesome"
09:49 nwc10 although how easy is it to test that the client's JVM version is new enough not to have bugs?
09:50 nwc10 the ability of NQP-JVM to SEGV the JVM could sour people's experience
09:52 FROGGS jnthn / sorear: look at that: https://gist.github.com/FROGGS/beeb062bfb8c9593d3ff
09:52 FROGGS 49 seconds for ten lines of code is a bit much, right?
09:53 jnthn FROGGS: wait...what...it's the pir => pbc that takes that long?!
09:53 sorear nwc10: i believe all recent versions of the java plugin run outside the browser process, and I'm planning to avoid that feature anyway for unrelated reasons
09:53 FROGGS jnthn: yesh
09:54 sorear FROGGS: wc infix.pir?
09:54 FROGGS jnthn: I mean, my Terms.pm file (~500 loc), takes 25s to parse, but then about 10 minutes to pir
09:55 FROGGS sorear: 1825    5536 9598405 infix.pir
09:55 FROGGS so it is 9MB in size O.o
09:55 jnthn o.O
09:55 sorear wow, it's almost as big as CORE.setting.class
09:55 FROGGS -rw-r--r--  1 froggs froggs 9,2M Jun 21 11:50 infix.pbc
09:55 FROGGS -rw-r--r--  1 froggs froggs 9,2M Jun 21 11:49 infix.pir
09:55 FROGGS -rw-rw-r--  1 froggs froggs  361 Jun 21 11:44 infix.pl
09:56 jnthn Oh my...I hope this isn't something like "includes 10 copies of pre-computed NFAs for the whole Perl 6 grammar"
09:56 * sorear suspects most of that is the serblob
09:56 jnthn me too
09:56 jnthn .oO( A huge blob of cheese )
09:58 sorear jnthn: Why is the serialization format segmented?
09:59 sorear with explicit byte offsets/counts
09:59 FROGGS btw: there is one line that is almost 9MB, nqp_deserialize_sc "9MB hex string", ...
09:59 FROGGS (in the pir file)
09:59 nwc10 FROGGS: do you mean "hex" or base64?
10:00 FROGGS nwc10: looks more like base64 now you are saying it
10:00 nwc10 was just checking :-)
10:00 FROGGS nwc10++ # sanity checks
10:02 FROGGS jnthn / sorear: I added an interesting comment: https://gist.github.com/FROGGS/beeb062bfb8c9593d3ff
10:02 FROGGS I'd say there is some recursion going on
10:03 jnthn sorear: Segmented? It's just a bunch of different tables.
10:03 jnthn sorear: Well, aside from a couple which are more stream-y
10:03 sorear FROGGS: that recursion is expectedish
10:03 FROGGS k
10:03 sorear FROGGS: what's not expected is those objects being saved.  shouldn't need to keep the grammar around after it's done parsing your file
10:04 FROGGS can one of you point me to a piece of code where I might try debugging?
10:05 sorear jnthn: more uh... niecza's serialization format is a single serialized tree, with back reference nodes for expressing cycles... I guess this is not one of the cases where there is a single obvious way to do it
10:09 sorear another question: why $!do?  why not just make Sub have a CodeRef repr?
10:10 jnthn Sub has things besides the underlying VM-level code reference.
10:10 jnthn (signature, etc.)
10:10 jnthn Also need to be able to mix in to it
10:10 jnthn So it needs to be a P6opaque
10:10 sorear Sub could extend the VM code object.  I guess that native Parrot coderefs couldn't do that, but it should be possible with a 6model repr
10:10 jnthn The level of indirection is also used to make .wrap(...) work
10:11 sorear ah, P6opaque is required for change_type, forgot that
10:11 jnthn Well, we'd have to implement attribute storage in CodeRef too, which fields odd to me...
10:11 jnthn uh, feels
10:12 jnthn sorear: I notice in Rakudo Ops, the private static final CallSiteDescriptor things are still shared. I guess those are unproblematic...
10:12 sorear jnthn: Yeah, because they're immutable.
10:12 sorear I think
10:13 sorear here's a much shallower question: what's the sanest way to pass a single bit of information deep into the code generator?  (looking to experimentally a no-indy mode for $reasons)
10:14 jnthn Make sure it gets into the %adverbs that are passed along to each stage
10:14 FROGGS jnthn: am I in the right place at nqp/src/how/NQPClassHOW.nqp:746:    method mixin($obj, $role) {  ?
10:14 jnthn And then it will be in something available contextually
10:14 jnthn %?COMPILING iirc
10:15 jnthn All the command line options end up available through that
10:15 sorear so I have to add a full command line option?
10:16 jnthn Well, how do you want to have it specified?
10:16 jnthn Adding a command line option is only a one line addition...
10:16 * sorear would like something more visible than %*ENV but less visible than --foo, somthing along the lines of -fomit-frame-pointer
10:17 jnthn src/HLL/CommandLine.pm is the thing that does the handling of those, fwiw.
10:17 sorear jnthn: I'd like to have a place to throw dozens of "you probably don't need to use these" options
10:17 jnthn uh, sorry, ti's %*COMPILING
10:18 jnthn %*COMPILING<%?OPTIONS><foo>
10:18 sorear I'll do the %?OPTIONS way for testingt
10:18 jnthn sorear: Maybe we should do something like the JVM does, where they get a -X prefix
10:18 sorear but if this ever makes it into a deployed version, I'd like a polishier way
10:19 sorear jnthn: gcc does the same with a -f prefix
10:19 woolfy1 joined #perl6
10:21 masak good afternoon and top of the summer to you, #perl6
10:22 FROGGS hi masak
10:22 jnthn glad midsommar, masak
10:22 sorear greetings masak
10:24 atroxaper Hello masak!
10:25 atroxaper left #perl6
10:26 masak yes, glad midsommar :)
10:28 sorear # Responsible for handling issues around code references, building the
10:28 sorear # switch statement dispatcher, etc.
10:28 sorear jnthn: commentfossil?
10:29 timotimo hello folks
10:30 masak oh hai timotimo
10:31 * grondilu wonders why there is no linear algebra module yet
10:32 dayangkun joined #perl6
10:33 woolfy joined #perl6
10:36 jnthn sorear: yes
10:37 jnthn huh, I just tried to build latest Rakudo on Parrot, which needed a new Parrot, on which NQP doesn't seem to want to build for me... :s
10:37 FROGGS ohh
10:38 jnthn KnowHOWREPR.c(88) : error C2065: 'PARROT_ALIGNOF_void' : undeclared identifier
10:38 nwc10 < Awsome
10:40 jnthn spec.align = ALIGNOF1(void *); being the line in question
10:44 sorear jnthn: i'm starting a new convention.  /*BOOTSTRAP_DISCARD*/ means I know something should only be used by stage0.  (Perhaps a RetentionPolicy.SOURCE annotation would be better?)
10:45 jnthn sorear: Anything htat's easy to search for is fine
10:46 jnthn /*FOR_STAGE0*/ is shroter... :)
10:46 jnthn Though discard clearer in intent i guess
11:01 rindolf joined #perl6
11:02 * sorear goes with FOR_STAGE0, being clearer IMO
11:02 masak relevant for perl6/book -- these guys seem to have a success story: http://audrey.fmf.uni-lj.si/hott.html
11:05 sorear that came up in #haskell-blah earlier today
11:11 jnthn Oh for hell's sake. So I nuked my install, made sure parrot etc was clean, and now it fails...even earlier in the build.
11:11 jnthn LINK : fatal error LNK1181: cannot open input file 'C:\consulting\rakudo\install
11:11 jnthn \bin\libparrot.lib'
11:11 jnthn wtf.
11:11 moritz is there a newline in that path?
11:11 jnthn no, just console wrapping
11:11 moritz ok
11:12 dalek nqp: 2d3a93c | sorear++ | src/vm/jvm/ (2 files):
11:12 dalek nqp: Use small integer identifiers for internal references to coderefs
11:12 dalek nqp: review: https://github.com/perl6/nqp/commit/2d3a93c733
11:13 FROGGS jnthn: does the file exist? and is there space on your hdd?
11:13 FROGGS (sorry if you are annoyed about 1st level questions :o)
11:13 jnthn FROGGS: No, and it's not a space issue
11:14 * jnthn tries backing off to the Parrot version he had before
11:15 jnthn ouch, even going back to the 5.2.0 fails :S
11:15 FROGGS O.o
11:15 timotimo sorear: is there a way to port that to parrot, too? have you seen the core setting pbc? it's mostly null bytes padding small numbers >_<
11:15 FROGGS jnthn: is it possible that there are still processes hanging around that lock files?
11:15 jnthn FROGGS: Already looked for that one...
11:16 jnthn I sure don't see any
11:16 jnthn And that install directory was created anew anyway
11:16 FROGGS but there must be an error msg when it fails to build libparrot.lib
11:17 jnthn It seems that there is one in install/lib
11:17 lizmat good postnoon #perl6!, quite a lot of backlog to go through
11:17 FROGGS hi lizmat
11:18 jnthn And fixing the path in the makefile just leads to a load of other linker errors
11:19 colomon lizmat!
11:19 FROGGS jnthn: does that look suspicious? https://github.com/parrot/parrot/commit/28129d6f393b3bdfcfe99cea85e8de993a31faa3
11:19 masak r: for 'oh', 'liz' Z 'hai', 'mat' { say "$^a $^b" }
11:19 camelia rakudo 49f111: OUTPUT«oh hai␤liz mat␤»
11:20 masak :)
11:20 tadzik wait, why the newline
11:20 tadzik oh
11:20 masak zip === transpose
11:20 sorear timotimo: this is an unrelated issue
11:20 sorear timotimo: i'm replacing strings with numbers
11:20 jnthn FROGGS: Not really
11:20 FROGGS k
11:20 timotimo oh, the cuid thing, righto
11:22 xinming joined #perl6
11:22 jnthn All I wanted to do was check that the sort that I got working on JVM didn't break it for Parrot.
11:23 timotimo obviously your sort made the build process go belly-up. great!
11:23 timotimo :P
11:23 timotimo put it up on a branch and i'll try to build it?
11:23 timotimo i've got a few cycles to burn
11:24 colomon your sort can't be trusted around parrots!
11:25 * colomon apologies, but his head just started filling up with horrible plays on words
11:25 dalek nqp: f18cb70 | sorear++ | src/vm/jvm/ (4 files):
11:25 dalek nqp: And so we no longer need list_b.
11:25 dalek nqp: review: https://github.com/perl6/nqp/commit/f18cb70c94
11:29 jnthn sorear++
11:29 jnthn That should save some time.
11:32 lizmat https://github.com/perl6/specs/issues/56 .exists and .delete are internal methods and should be renamed
11:33 jnthn :(
11:33 lizmat jnthn: is that about .exists ?
11:34 jnthn yeah
11:34 jnthn I know it won't scale so well to multi-dim stuff, but "make the simple things simple and the hard things possible" and all that...
11:34 atroxaper joined #perl6
11:35 lizmat are you worried about performance effects of using :exists rather than .exists ?
11:35 jnthn No
11:35 lizmat or are you worried about having to type .exists_at_key
11:35 jnthn I just find .exists(...) more natural somehow
11:36 jnthn I don't think renaming it will do much besides cause disruption.
11:37 jnthn Same with delete
11:37 lizmat r: my %h=a=>1,b=>2; say %h.exists(<a b>)
11:37 camelia rakudo 49f111: OUTPUT«False␤»
11:37 masak <jnthn> I don't think renaming it will do much besides cause disruption.
11:37 masak +1
11:37 masak I can see this being a "heart in the right place" action.
11:37 masak but it will cause ecosystem havoc.
11:38 lizmat aka, it is too late to change this?
11:38 sorear https://github.com/sorear/niecza/blob/master/lib/CORE.setting#L2009
11:38 sorear >.>
11:38 masak at the very least there should be a veeeery long deprecation cycle.
11:38 lizmat in P6 currently, that would be 6 months ?
11:38 masak I'm hard-pressed to think of anything non-trivial I've written that didn't use .exists or .delete
11:38 jnthn Well, in some senses it's not too late to change anything until 6.0.0 is declared, but some things cost more early adopter goodwill than others to change.
11:39 masak it would all have to be revisited and rewritten.
11:39 lizmat "it" being core, or ecosystem ?
11:40 jnthn ecosystem, I presume
11:40 tadzik entire ecosystem rewritten! /o\
11:40 FROGGS core is no problem, nor is roast
11:41 jnthn Anyway, if we must rename it, exists_key is better than exists_at_key
11:41 jnthn Seems that at some point, libparrot.lib that goes with the libparrot.dll stopped getting installed.
11:42 jnthn However, I didn't notice this because I had one copied there by some Parrot version that did so.
11:42 jnthn Copying that manually into place seems to fix the build.
11:42 FROGGS so it is just an importlib?
11:42 jnthn Yeah
11:42 jnthn But it kinda matters.
11:43 FROGGS of course
11:43 jnthn I wonder how long ago it vanished from the install. I went back to 5.1.0 and it seems it was not installed all the way back then.
11:43 jnthn My previous was a 4.10.0...
11:43 lizmat r: my %h=a=>1,b=>2; say %h.exists(<a b>)  # nobody worried about this silently failing ?
11:43 camelia rakudo 49f111: OUTPUT«False␤»
11:44 FROGGS jnthn: this? https://github.com/parrot/parrot/commit/fa08f0444fedbe7b32dc2c539ea334b99e1394c2
11:45 FROGGS jnthn: no, nvm
11:47 FROGGS but I guess one of the commits of rurban six months ago is it
11:55 dalek rakudo/nom: d058373 | jnthn++ | src/ (4 files):
11:55 dalek rakudo/nom: First pass at making sort work on Rakudo JVM.
11:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d058373372
11:57 lizmat fwiw, I've added the above comments to https://github.com/perl6/specs/issues/56
11:57 potatogim joined #perl6
11:59 masak potatogim: 오, 당신은 한국이다!
11:59 * lizmat trying to move on to something else
12:01 jnthn It's interesting seeing what passes/fails. By now, all S03-metaops and S03-sequence have no regressions compared to Rakudo on Parrot, for example...
12:02 jnthn While loop.t fails :)
12:02 masak jnthn: I find it difficult to judge where we are on the S-curve.
12:02 jnthn And while.t. What's with these...
12:03 masak which probably means that I should download rakudo-jvm and see for myself.
12:03 masak or even join in the fun and make more spectests pass :)
12:04 jnthn masak: Well, we a pass a handful more spectest files than we regress. So somewhere in the middle of it, I guess :)
12:05 masak in the *middle*!?
12:05 masak that's far better than I assumed.
12:06 mikemol joined #perl6
12:06 masak mikemol! \o/
12:07 nwc10 masak: fear the combination of jnthn and sorear
12:07 sorear Has anyone actually used #?rakudo.jvm yet? :)
12:08 jnthn sorear: I was planning not to do that too soon as for now I'd rather see the failures as compared to on Parrot and triage them :)
12:08 masak nwc10: I already did, but not enough, it seems.
12:08 * sorear hugs nwc10
12:08 sorear oops, I broke the nqp build
12:09 jnthn oh noes!
12:09 sorear seems having extra coderefs in the coderef heap was not as harmless as thought
12:09 jnthn sorear: Extras? Oops.
12:09 jnthn sorear: Yeah, it takes that list and then shoves all the closure clones after them.
12:10 jnthn sorear: Then uses the indexes.
12:11 nwc10 oh yes!
12:11 nwc10 java.lang.IndexOutOfBoundsException: Index: 146, Size: 142
12:13 sorear nwc10: yep, that's the error
12:14 sorear testing a fix
12:14 sorear I had previously arranged for the "proper" coderef heap to be a prefix of the coderef list, then lied to deserialize and told it that the coderef list (with some extras) was the heap
12:15 sorear now I'm passing in the prefix length so we can do it a little properer
12:20 masak nwc10: Rakudo compiler releases don't announce on planetsix; only on p6c. see docs/release_guide.pod
12:20 masak nwc10: Rakudo Star releases announce pretty much everywhere.
12:21 nwc10 masak: aha, I (obviously) didn't realise.
12:21 lizmat maybe an exception would be in place because of the JVM announcement?
12:21 lizmat it should whet people's appatities
12:21 nwc10 I think it better to wait for the "all the spectests pass" blog post
12:21 lizmat *appetites
12:22 dalek nqp: c51de3f | sorear++ | src/vm/jvm/ (3 files):
12:22 dalek nqp: Debreak build; need to pass coderef heap size to deserialize so a proper prefix can be taken
12:22 dalek nqp: review: https://github.com/perl6/nqp/commit/c51de3f7a0
12:22 dalek nqp: 8c2ec14 | sorear++ | src/vm/jvm/ (4 files):
12:22 dalek nqp: Use small-integers to find mainlineQbid, entryQbid, deserializeQbid, loadQbid
12:22 dalek nqp: review: https://github.com/perl6/nqp/commit/8c2ec1420c
12:22 sorear now the build succeeds but t/serialization/* is failing
12:22 masak +1 on wait for the "all the spectests pass" blog post
12:23 masak which, as far as I can see, won't be too long a wait.
12:24 sorear oh, because I changed the semantics of nqp::deserialize
12:24 sorear oops
12:24 jnthn sorear: You could have "null" mean "take the list from the currently executing compilation unit" or so?
12:24 jnthn sorear: And then if a coderef list is passed in, use that?
12:26 sorear jnthn: need to add a long too
12:26 sorear reasonable to change the tests to add the long?
12:26 sorear (would be ignored if passing your own list)
12:27 JimmyZ joined #perl6
12:28 jnthn sorear: Can we not store that on the compunit?
12:28 sorear jnthn: you mean as another method?
12:28 jnthn Yeah
12:28 jnthn remember nqp::deserailize is API
12:28 jnthn If you change the tests you break it on Parrot
12:34 * sorear tests that.
12:35 * jnthn afk for a bit
12:35 btyler joined #perl6
12:40 chinaXing joined #perl6
12:43 pr_ joined #perl6
12:43 pr_ Hello, I can't find any info on the "..^"  operator. Could someone please explain what it stands for?
12:43 dalek nqp: cda5cc2 | sorear++ | src/vm/jvm/ (3 files):
12:43 dalek nqp: Let's try that again, this time without breaking the API.
12:43 dalek nqp: review: https://github.com/perl6/nqp/commit/cda5cc23d4
12:43 sorear pr_: .. exclusive on the right
12:44 sorear 0..^10  is p6ese for [0,9)
12:44 sorear nap&
12:44 sorear (clean build succeeds and passes all tests)
12:45 pr_ sorear: what does it do in this particular example: for $ss ..^ $ss + $days-in-month { @slots[$_] = $dt.day.fmt("%2d");  $dt++ }
12:45 JimmyZ yeah! time to blog!!
12:45 yoleaux 20 Jun 2013 16:48Z <diakopter> JimmyZ: I keep missing you by less than an hour :/
12:45 [Coke] masak: It's far too late, but the parrot 5.3.0 contains a fix to building with spaces in the path.
12:48 * [Coke] catches up. yay.
12:50 JimmyZ pr_: just print $_, you will known it, I think
12:51 Timbus pr_, the ^ operator means 'up to'
12:51 Timbus r: say ^4
12:51 camelia rakudo d05837: OUTPUT«0..^4␤»
12:52 JimmyZ r: say eager ^4
12:52 camelia rakudo d05837: OUTPUT«0 1 2 3␤»
12:52 Timbus from zero up to 4
12:52 JimmyZ r: say eager 1..^4
12:52 camelia rakudo d05837: OUTPUT«1 2 3␤»
12:52 JimmyZ r: say eager 1..4
12:52 camelia rakudo d05837: OUTPUT«1 2 3 4␤»
12:53 JimmyZ r: say eager 1^..4
12:53 camelia rakudo d05837: OUTPUT«2 3 4␤»
12:53 masak [Coke]: :)
12:54 masak [Coke]: nqp and Parrot seemed to both advance on that particular fix, so in the end I had to bump Parrot.
12:54 masak took me a while to figger it out, is all.
12:54 masak sorear: surely you meant [0,10)
12:58 pr_ got it: for $ss ..^ $ss + $days-in-month means "for <value of $ss> up to <$ss + $days...>". Thanks to all.
12:59 [Coke] jnthn: did you eventually get a build working on win32 with latest nqp/parrot ?
13:00 masak pr_: yes, up to but excluding.
13:00 * [Coke] hopes he didn't break the win32 build. :(
13:00 masak [Coke]: I think he did.
13:01 [Coke] \o/
13:01 dmol1 joined #perl6
13:05 rindolf joined #perl6
13:08 konundra joined #perl6
13:08 [Coke] my test run for rakudo-java got through to S06... and there's enough commits since I started, I feel compelled to kill it and start over now.
13:08 pr_ left #perl6
13:08 [Coke] (the machine it was on slept while I did)
13:14 rindolf joined #perl6
13:17 colomon [Coke]: yeah, yesterday I was having trouble keeping up with the commits, they almost came faster than I could build rakudo!
13:18 ajr joined #perl6
13:19 * colomon needs to figure out how to write < and > in a <code> block for a blog post.
13:20 JimmyZ &lt; &gt;
13:21 colomon JimmyZ++
13:22 * masak wonders whether it would be worth starting a movement about it being 2013 already and no-one should be writing HTML by hand
13:23 [Coke] I write snippets of html all the time. :P
13:24 rindolf joined #perl6
13:26 colomon masak: some of us old-fashioned sorts still write out snippets of it in blog posts.  Easier than trying to figure out wordpress's visual editor...
13:26 masak yes, and I've done my fair share of that too. I also avoid visual editors, by the way.
13:27 * PerlJam notes that people still write lisp by hand ... why not HTML too? ;)
13:27 masak I just find HTML to be at least one level too low to be dealing with directly.
13:27 masak I think this happened to me in earnest after I embraced Markdown.
13:28 [Coke] I hate markdown. :)
13:28 [Coke] "oh, in html, I'd do this. how the hell do I do that in markdown?" I end up having to look stuff up all the time.
13:30 tadzik see also: ORMs :P
13:30 tadzik I'm starting to hate markdown since I'm tasked with "hey, could you turn that HTML into markdown?"
13:31 tadzik I turned from a markdown evangelist to "what the hell is wrong with html"
13:31 JimmyZ we need markup!
13:32 btyler joined #perl6
13:32 PerlJam ... and that's why all sixers should use pod6
13:32 PerlJam :)
13:32 [Coke] tadzik++
13:32 [Coke] PerlJam: like... in the specs?
13:32 nwc10 does pod6 do tables?
13:32 JimmyZ nwc10: yes, see S26
13:33 tadzik nwc10: yep, it's even implemented :)
13:33 nwc10 for which formats? HTML? Plain test? Man pages?
13:33 tadzik Pod is quite nice at tables
13:33 tadzik uh, I'm not sure what you mean
13:33 PerlJam Is there a feature matrix for pod6 to show what is and isn't implemented?
13:34 tadzik I don't know about formatters
13:34 rindolf joined #perl6
13:34 tadzik but they're parsed alright
13:34 tadzik PerlJam: none that I know of
13:34 nwc10 what formatters exist is more what I was wondering about
13:34 PerlJam nwc10:Pod::To::HTML exists
13:35 tadzik and ::To::Text, which is installed with rakudo
13:35 tadzik the latter runs when you do perl6 --doc <file>
13:35 PerlJam and I started on Pod::To::LaTeX, but didn't get very far.
13:35 tadzik you can run the former with --doc=HTML
13:39 skids joined #perl6
13:53 Ulti is there a results page somewhere for perl6-bench so that I don't have to do it myself?
13:55 rindolf joined #perl6
14:01 colomon loliblogged: http://justrakudoit.wordpress.com/2013/06/21/set-operations/
14:01 bluescreen10 joined #perl6
14:02 JimmyZ colomon++
14:04 rindolf joined #perl6
14:04 FROGGS colomon++
14:05 pmichaud colomon++
14:13 ztt_ joined #perl6
14:14 benabik joined #perl6
14:17 * [Coke] is now back up to S02!
14:17 rindolf joined #perl6
14:18 tgt joined #perl6
14:19 xinming joined #perl6
14:21 * [Coke] wonders how many of the todo/skipped rakpar tests will work on on rakjvm due to different backend. (e.g. "null pmc access")
14:25 rindolf joined #perl6
14:31 [Coke] jnthn: https://github.com/rakudo/rakudo/commit/0f41b5049c024bd91231bc6533c235aee7ac965f
14:31 [Coke] Is there any way someone just using nqp could tell that one of those wasn't going to work everywhere?
14:33 broquaint joined #perl6
14:38 kresike bye folks
14:42 rindolf joined #perl6
14:46 PacoAir joined #perl6
14:48 colomon_ joined #perl6
14:49 colomon_ joined #perl6
14:50 Vlavv joined #perl6
15:02 rindolf joined #perl6
15:04 benabik joined #perl6
15:24 rindolf joined #perl6
15:32 [Coke] S12...
15:33 potatogim joined #perl6
15:38 [Coke] Unhandled exception: Wrong number of arguments passed; expected 1..1, but got 0
15:40 rindolf joined #perl6
15:44 [Coke] r: say Pattern.WHAT]
15:44 camelia rakudo d05837: OUTPUT«[31m===[0mSORRY![31m===[0m�Unexpected closing bracket�at /tmp/aZx3mHQ5UM:1�------> [32msay Pattern.WHAT[33m�[31m][0m�»
15:44 [Coke] r: say Pattern.WHAT
15:44 camelia rakudo d05837: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Undeclared name:â�¤    Pattern used at line 1â�¤â�¤Â»
15:44 [Coke] from S32-Basics. Is that still a thing?
15:45 [Coke] r: class A does Pattern {} ; say A.new.perl;
15:45 camelia rakudo d05837: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unable to parse class definitionâ�¤at /tmp/QG46DIVYsP:1â�¤------> [32mclass A does [33mâ��[31mPattern {} ; say A.new.perl;[0mâ�¤    expecting any of:â�¤        statement listâ�¤        prefix or termâ�¤        prefix or meta-prefixâ�¤        gene…
15:45 snearch joined #perl6
15:47 chayin joined #perl6
15:48 masak the S32 synopsis are sometimes just making stuff up.
15:48 masak es*
15:49 benabik s/S32 //  ;-)
15:49 masak remind me, what was Pattern meant to do?
15:52 atroxaper joined #perl6
15:53 chayin_ joined #perl6
15:55 vk joined #perl6
16:00 rindolf joined #perl6
16:01 daniel-s_ joined #perl6
16:03 FROGGS joined #perl6
16:09 kaleem joined #perl6
16:12 panchiniak_ joined #perl6
16:16 dalek nqp: eba21ca | sorear++ | src/vm/jvm/ (5 files):
16:16 dalek nqp: Use qbindex instead of cuid for finding sub outers
16:16 dalek nqp:
16:16 dalek nqp: We're no longer looking up cuids for any reason outside stage0, and we're
16:16 dalek nqp: no longer using them at all outside of a single dynamic-compilation case
16:16 dalek nqp: in NQP::World and Perl6::World.  So don't even bother emitting them when
16:16 dalek nqp: precompiling.
16:16 dalek nqp: review: https://github.com/perl6/nqp/commit/eba21caa45
16:17 rindolf joined #perl6
16:23 FROGGS sorear++
16:23 census joined #perl6
16:23 FROGGS is there a (little) performance gain through this?
16:26 sorear Not that I can measure
16:27 FROGGS k
16:27 FROGGS I'm still trying to hunt down my slowdown :/
16:28 rindolf joined #perl6
16:31 sorear FROGGS: https://gist.github.com/sorear/5832444 btw
16:32 sorear jnthn: Are the JVM and Parrot serialization formats kept compatible?
16:35 diakopter sorear: I'm not certain but I think they're not identical
16:36 sorear already diverged?
16:37 * sorear wonders which one docs/serialization_format.markdown describes :)
16:42 domidumont joined #perl6
16:47 kaleem joined #perl6
16:56 raiph joined #perl6
17:01 FROGGS sorear: that is pretty cool
17:03 xinming joined #perl6
17:10 spider-mario joined #perl6
17:13 ajr joined #perl6
17:15 xilo_ joined #perl6
17:16 dmol joined #perl6
17:17 pmichaud http://lists.parrot.org/pipermail/parrot-dev/2013-June/007489.html   # uhhhhhh... yeah.
17:18 pmichaud I recommend we make thoughtful, deliberate responses here and not anything knee-jerked.
17:19 pmichaud or perhaps we just don't respond much at all.
17:19 xilo_ joined #perl6
17:19 colomon joined #perl6
17:19 moritz my response would boil down to "so far we haven't planned to abandon parrot. Does parrot abandon us?"
17:19 PerlJam moritz++
17:19 FROGGS pmichaud: I'd just like to know what exactly is the future and the goals of parrot
17:20 moritz run all dynamic languages, except Perl 6?
17:20 pmichaud FROGGS: well, dukeleto seems to suggest that Rakudo features have been interfering with Parrot development.
17:22 FROGGS my question is just: what is parrot's job when it is not to support langs/projects like rakudo... are there other active projects that they wanna enforce?
17:24 moritz I'm going to work for another ~15min, and then I'll draft a reply
17:24 pmichaud I suspect we can wait on a reply.
17:24 pmichaud Let's let other Parrot folks have a chance to respond and hash it out first.
17:25 sorear pmichaud! \o/
17:25 pmichaud FROGGS: For the past year or so, Parrot has said its goal was to support Rakudo.  dukeleto's message seems to repudiate that goal... so I don't know what Parrot's direction.  I don't even know who gets to decide that.
17:25 diakopter pmichaud: I'm not sure that's the best way to interpret that message. He says Rakudo and Parrot are on divergent paths, which seems to me to simply mean that since Rakudo is moving to providing the same language on multiple backends (with different featuresets from parrot's) regardless of parrot's featureset, rakudo is diverging from parrot's path.
17:25 PerlJam FROGGS: I asked a similar question to duekleto a couple of weeks ago: http://irclog.perlgeek.de/parrot/2013-06-07#i_7169536
17:26 diakopter pmichaud: he says he wants parrot to succeed independently of rakudo
17:26 PerlJam note his cryptic non-response
17:27 diakopter I think it's a reply
17:27 sorear jnthn: I'm going, eventually, to need a way for ModuleLoader to find out if a module is available bundled in the jar we're running from.  The obvious(ly wrong?) way is to hook nqp::stat
17:28 FROGGS PerlJam: I really wish them to succeed, whatever that means
17:28 FROGGS bbl
17:28 diakopter pmichaud: he directly says that things rakudo depends on will be removed
17:28 diakopter from parrot, if the core developers think they're unnecessary
17:28 diakopter note, he is the only core developer the past 12 months
17:29 colomon I know the Parrot folks think they have a lot of nifty tools that Rakudo has not been using...
17:29 diakopter but he says that MoarVM is the spiritual successor of the m0 branch, which implies that he doesn't want to continue the m0 branch as the future of parrot
17:30 pmichaud ah, I missed the dicussion on #parrot from a couple of weeks ago.  backlogging.
17:30 diakopter pmichaud: so, I conclude that he's saying he wants to reboot parrot as something that doesn't support rakudo
17:30 moritz pmichaud: got a link?
17:30 pmichaud 17:25 <PerlJam> FROGGS: I asked a similar question to duekleto a couple of weeks ago: http://irclog.perlgeek.de/parrot/2013-06-07#i_7169536
17:30 diakopter moritz: the one PerlJam gave above?
17:30 nwc10 it's not clear to my mind that at this point it *needs* a reply
17:30 moritz (which worked oh-so-great when allison was leading parrot, right)
17:30 PerlJam you can start reading from the top of the page, there wasn't much discussion
17:30 nwc10 or that any reply is better than "discretion is the better part of valour" (adjust spelling as desired)
17:31 pmichaud nwc10: yes, that's what I'm thinking.  Let's not reply hastily, and perhaps not at all.
17:32 [Coke] +1
17:32 pmichaud I guess, more to the point, this is an area where I'd like to reserve the right to "speak for Rakudo"
17:32 masak +1 to not replying
17:33 masak "Parrot is a VM for all dynamic languages except Perl 6" -- so tell me again, what other languages do run on Parrot?
17:33 masak :)
17:33 pmichaud I don't think we need to nit that point.
17:34 moritz masak: quoting dukeleto, you have to find out yourself
17:34 PerlJam masak: winxed  :)
17:34 moritz s/quoting/paraphrasing/
17:35 FROGGS sorear / jnthn: you remember that my 10-line script produced a 9MB pir? it is now down to 60kb!
17:35 diakopter I still can't see another way to pronounce that other than the unfortunate "winced"
17:35 PerlJam diakopter: heh!
17:35 benabik diakopter: I tend to pronounce it win-zed.
17:36 kaare_ joined #perl6
17:36 FROGGS sorear / jnthn: this is it: https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Grammar.nqp#L3595 I just commented it out
17:36 * moritz pronounse it "winksed"
17:36 pmichaud win-exed
17:37 pmichaud okay, here's my general thought / response.
17:37 sorear diakopter: I think NotFound told me once that the x was actually a hard g like winged
17:37 pmichaud I won't make it anything official, it's just a general musing.
17:37 nwc10 I always thought that it was win-X-ed
17:37 nwc10 not sure why
17:37 PerlJam winxed.net will tell you all you need to know.
17:37 nwc10 maybe I'd heard the breifing
17:37 masak it's "winged" every time I've heard it pronounced by people in the know.
17:38 diakopter pmichaud: dukeleto's email is definitely consistent with that #parrot conversation
17:38 diakopter he wants to break rakudo on parrot and explore new directions with parrot
17:38 dalek perl6-roast-data: 961697b | coke++ | / (3 files):
17:38 dalek perl6-roast-data: today (automated commit)
17:38 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/961697bb5f
17:38 dalek perl6-roast-data: 523b184 | coke++ | / (3 files):
17:38 dalek perl6-roast-data: First run of rakudo.jvm
17:38 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/523b184125
17:38 sorear FROGGS: ahhhhh....
17:38 diakopter he's the only one who's said he wants to do that, and he's the only core developer of parrot the past 12 months
17:38 sorear FROGGS: that makes perfect sense
17:39 * moritz decides not to reply after all
17:39 [Coke] sorear, jnthn: ^^
17:39 pmichaud diakopter: he wants to eliminate the deprecation policy.  I'm in favor of that, have been against the deprecation policy since it was first suggested in 2008.
17:39 sorear [Coke]: danke :D :D
17:40 [Coke] not quite ready to be run on a daily basis, but i'll try to include it by hand until I can run all four tests on the same box.
17:40 diakopter pmichaud: yeah, but he doesn't want to support rakudo anymore
17:40 pmichaud diakopter: fair enough, I think I have no problem with that.
17:41 PerlJam If we're pegged at an earlier version of parrot, maybe someone could tell dukeleto that he can start removing things now.
17:41 colomon right, we can always fork the Parrot NQP uses now if there is some need for changes.
17:41 pmichaud we knew when we declared that Rakudo would go multi-backend that there was a possibility that Parrot would decide to diverge away from Rakudo.
17:41 diakopter yeah
17:41 pmichaud we've been prepared for a fork if needed for some time.
17:41 [Coke] PerlJam: I don't think that's necessary.
17:41 masak PerlJam: I like that suggestion.
17:42 nwc10 diakopter: um, only 95 of the 913 commits in the past year are authored by leto.net
17:42 diakopter it's conceivable that other parrot folks could wrest control/inertia of the project back from him, but doesn't seem likely to me
17:42 pmichaud nwc10: yes, I disagree with the contention that "dukeleto is the only core contributor for the last 12 months"... but I didn't want to get into a numbers battle on that
17:42 pmichaud so, here's my musings/reaction
17:42 pmichaud (more)
17:42 PerlJam [Coke]: btw, does this mean that the sixparrot branch can be considered a "failed experiment"?
17:42 nwc10 pmichaud: sorry, I didn't mean to start one. I was just reasonably sure that it wasn't even anywhere close to half
17:43 diakopter nwc10: I stand by my claim. when I looked through all the commits, I excluded all the cage-cleaning ones
17:43 nwc10 but he seems to have a better idea of what he wants than anyone else
17:43 pmichaud in many ways it feels like Parrot has been directionless for quite some time... not really sure where it's going or what it's doing.  It's current contributor base hasn't been able to do much in terms of making Parrot better for Rakudo.
17:43 [Coke] PerlJam: I declared it a failed experiment as soon as I found out about moarvm.
17:44 PerlJam [Coke]: gotcha.
17:44 masak pmichaud: +1
17:44 diakopter nwc10: the bulk of the non-cage-cleaning are rurban's, but he's no longer with the projrect
17:44 nwc10 diakopter: I wasn't aware of that. I'm happy to be wrong on that basis
17:44 pmichaud So, if someone wants to plant a flag and declare "I'm taking Parrot in this direction", that's probably a good thing overall.
17:44 nwc10 yes, agree
17:44 masak aye.
17:44 pmichaud io_branch also merged in the last year -- that wasn't dukeleto, iirc
17:44 diakopter see what I wrote just above
17:45 sorear Have we updated parrot at all since they broke IO?
17:45 masak sorear: yes, we're on latest.
17:45 [Coke] Yes. we just pulled in the latest version for this release.
17:45 [Coke] (to get the build fixes.)
17:45 pmichaud I don't think that io_branch qualifies as "cage cleaning"... but again, it's not relevant to my thoughts on the topic.
17:45 diakopter pmichaud: I didn't say that was cage cleaning
17:45 diakopter I said it was non-cage-cleaning
17:45 dalek rakudo-star-daily: 7616099 | coke++ | log/ (5 files):
17:45 dalek rakudo-star-daily: today (automated commit)
17:45 dalek rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/76160990d1
17:46 pmichaud diakopter: I'll concede your point to the extent that dukeleto is the only person I'm aware of actively talking about developing / commits for Parrot.  Good enough?
17:47 PerlJam (and dalek does most of the talking on #parrot :)
17:47 masak and it's mostly about Rakudo JVM...
17:47 pmichaud dukeleto has kindly said that Parrot will continue to support Rakudo until it's running on MoarVM.  I think that's gracious of him, and we appreciate it.
17:47 diakopter pmichaud: no; I was making a much stronger statement about that being the case for a year, excluding rurban
17:48 pmichaud diakopter: okay.
17:53 timotimo does it sound sensible to try to prototype a packed, native-typed n-dim-array implementation as a module? does parrot offer some ops for that that i could just use?
17:53 timotimo i have no idea what kind of thing nqp offers for memory management like that
17:53 colomon timotimo: seems like that might be most easily doable with NativeCall?
17:54 diakopter colomon: no, b/c you can't pass managed pointers to NativeCall
17:54 timotimo i thought about that at first, too, but i don't have much of an overview yet
17:54 sorear lapack?
17:54 diakopter oh, native-typed.
17:54 timotimo lapack gives me lots of linalg stuff, too, right?
17:55 sorear yes
17:55 colomon diakopter: you'd do it the other way, and have the C (or whatever) code create the array.
17:55 jnthn sorear: I have been treating the serialization format as something to keep consistent as it makes cross-compilation far easier.
17:55 diakopter colomon: no, you're right; I missed the native-typed part.
17:56 timotimo that wouldn't give me the possibility to merge it into rakudo proper to implement my @array{10;10} or whatever that syntax is
17:56 jnthn sorear: NQP's ModuleLoader is written per VM, so you can do as you like with it on JVM
17:56 jnthn sorear: Rakudo's mixes in a backend role or something that is per VM, so we can extend it by that mechanism.
17:57 atroxaper left #perl6
17:57 diakopter timotimo: by packed, did you mean sparse but stored non-sparsely? or non-sparse but stored compactly without boxing/pointers
17:57 sorear jnthn: I'd just prefer to avoid adding new ops for this because then I'd have to bootstrap to use them in ModuleLoader and the nqp repo is big enough already
17:57 timotimo i was thinking non-sparse at first; but tell me more about the differences please?
17:58 diakopter timotimo: by sparse I mean gaps are compressed, or indexes mapped by some hash or some other mapping instead of direct offsets linear
17:58 timotimo a my int @arr[10;10] #`(mumble mumble) would behave like int arr[10][10] would in C and things like arr >>+<< other_arr would be super-performant if the compiler is not indifferent
17:59 timotimo okay, i was indeed thinking of non-sparse
17:59 sorear diakopter: pretty sure "packed" means native data, no containers or boxes
17:59 timotimo yeah, that's my understanding as well
18:00 diakopter okay; the synopses use "compact" for that
18:03 timotimo ah, good to know, thanks
18:07 jnthn sorear: That feels like a lesser evil than intercepting stat ;)
18:08 athomason joined #perl6
18:08 sorear cool, just successfully generated a jar
18:09 colomon \o/
18:09 jnthn ooh, what's in it? :)
18:10 masak cookies!
18:10 jnthn .oO( masak stole the cookie from the cookie jar... )
18:10 masak http://bash.org/?8102 # :)
18:12 ugexe joined #perl6
18:14 timotimo i feel kind of uneasy about wrapping lapack :|
18:15 diakopter timotimo: I think it's a good idea; what makes you uneasy?
18:15 timotimo it seems a bit much just to get packed arrays; and if i want it to not be too much, i'd have to wrap all of lapack :P
18:17 timotimo that's more or less what they do for NumPy, but there they have a whole bunch of fortran code that they bind ...
18:17 pmurias joined #perl6
18:18 pmurias sorear: continuations.pod refers to nqp::continuationshift
18:18 sorear I thought I fixed that.
18:18 * sorear looks for a better javap
18:19 sorear 2  06-21-13 11:03   META-INF/MANIFEST.MF
18:19 sorear 13089  06-21-13 11:03   69E5EDE7B963E90F12E49E00B28C426E64F213C5.class
18:19 sorear 2570  06-21-13 11:03   69E5EDE7B963E90F12E49E00B28C426E64F213C5.serialized
18:19 diakopter heh.
18:20 benabik One class per CompUnit?
18:21 jnthn yes
18:22 ssutch joined #perl6
18:23 dalek nqp: cfe397c | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
18:23 dalek nqp: Fix join/empty first string semantics.
18:23 dalek nqp:
18:23 dalek nqp: Unbusts at least autoref.t on Rakudo JVM.
18:23 dalek nqp: review: https://github.com/perl6/nqp/commit/cfe397c58a
18:26 sorear lrwxr-xr-x  1 sorear  staff  10 Jun 21 11:25 stdin.class -> /dev/stdin
18:26 sorear this is evil
18:27 jnthn O.O
18:27 timotimo m)
18:27 timotimo #include </dev/stdin> <- best way to configure C/C++ code
18:28 sorear jnthn: I use it like: unzip -p hello.jar 69E5EDE7B963E90F12E49E00B28C426E64F213C5.class | javap stdin.class
18:28 sorear javap won't touch a file unless it has a .class extension
18:30 huf sorear++
18:30 huf timotimo++
18:30 huf coworkers are enjoying these :)
18:31 jnthn :D
18:34 dalek nqp: f394bee | sorear++ | src/vm/jvm/ (3 files):
18:34 dalek nqp: NQP-level support for --target=jar
18:34 dalek nqp: review: https://github.com/perl6/nqp/commit/f394bee780
18:34 dalek nqp: 76b8dc0 | sorear++ | src/vm/jvm/ (3 files):
18:34 dalek nqp: jast2bc changes to actually emit jars
18:34 dalek nqp: review: https://github.com/perl6/nqp/commit/76b8dc03ee
18:44 ssutch https://github.com/perl6/roast/pull/29 - reasonable?
18:44 timotimo hey ssutch :)
18:45 ssutch hello there
18:46 moritz ssutch: looks fine to me
18:46 timotimo ssutch: it looks good except you forgot to up the plan (i forgot to do that all the time, too)
18:47 moritz ssutch: I gave you a commit bit, so you can merge the pull request yourself (once you've fixed the test plan)
18:47 diakopter moritz: bah, you beat me by mere seconds ;)
18:47 timotimo ssutch: i was amused to hear you were coming to perl6 from python; i have done almost exclusively python in the past years, too :)
18:48 timotimo if i were to try to build compact arrays more or less atop parrot, would i have to build a new repr or something?
18:48 colomon moritz++ diakopter++
18:48 sorear timotimo: I would write a class which wraps a 1-d compact array
18:49 timotimo is there already a way to build a 1-d compact array?
18:50 ssutch lookin' good? https://github.com/perl6/roast/pull/29/files
18:51 moritz aye
18:51 moritz ssutch: one more thing
18:51 moritz ssutch: it's not a good pratice to compare arrays with is(), because is() does string-based comparison
18:52 sorear timotimo: nqp::list_n() or nqp::list_i()
18:52 moritz ssutch: it works for a one-pair hash, because that has only one possible ordering
18:52 moritz ssutch: but it's better to use is_deeply for such data structures
18:52 timotimo sorear: sounds good, i'll try that. _n for num, _i for int, yes?
18:52 timotimo and then i can just [$idx] that, right?
18:53 ssutch moritz: alright, thanks, making that change
18:53 colomon FROGGS: zavolaj ping?
18:53 sorear timotimo: yes
18:53 timotimo thank you!
18:54 ssutch strange, is_deeply yields this output for two similar arrays:
18:54 ssutch #      got: ["c", "d"]
18:54 ssutch # expected: $("c", "d")
18:55 moritz you Got an Array, and expected a Parcel
18:55 ssutch yeah, changed to is_deeply $a2.array, ['c', 'd']
18:55 moritz try   is $thing, [<c d>]
18:55 moritz or that, yes
18:56 ssutch alright! going to merge it
18:57 ssutch *closes eyes*
18:57 FROGGS FROGGS: zavolaj pong
18:57 dalek roast: f17765d | (Samuel Sutch)++ | S12-attributes/clone.t:
18:57 dalek roast: add tests for cloning objects with array and hash attributes
18:57 dalek roast: review: https://github.com/perl6/roast/commit/f17765d88b
18:57 dalek roast: 64385ad | (Samuel Sutch)++ | S12-attributes/clone.t:
18:57 dalek roast: plan++
18:57 dalek roast: review: https://github.com/perl6/roast/commit/64385ad7d9
18:57 dalek roast: 55f280d | (Samuel Sutch)++ | S12-attributes/clone.t:
18:57 dalek roast: use is_deeply for appropriate data structures; compare to arrays and not Parcels
18:57 dalek roast: review: https://github.com/perl6/roast/commit/55f280de8b
18:57 dalek roast: 79129a1 | (Samuel Sutch)++ | S12-attributes/clone.t:
18:57 dalek roast: Merge pull request #29 from samuraisam/sam/addional-clone-tests
18:57 FROGGS err, I am FROGGS
18:57 dalek roast:
18:57 dalek roast: Add tests for cloning objects with array and hash attributes
18:57 dalek roast: review: https://github.com/perl6/roast/commit/79129a1cbc
18:57 timotimo sorear: so, i'll have to write my "module" in nqp; last time i tried to build something in nqp to be used from perl6 i ran into all sorts of trouble; is there a dead-simple way to make that work?
18:57 FROGGS colomon: zavolaj pong
18:58 colomon FROGGS: on my smoking system, zavolaj is failing the last test in 01-argless.t
18:58 colomon FROGGS: every other test passes, but that fails and brings a bunch of other modules down with it.
18:59 colomon is the "is symbol" one.
18:59 colomon (the only "is symbol" test, I think.)
18:59 FROGGS colomon: well, that is bad, but I am not a zavolaj author
18:59 colomon FROGGS: I thought you had been playing with it most recently?
18:59 FROGGS not really
19:00 timotimo sorear: or is there a way to handle stuff like this:
19:00 FROGGS I played with it like half a year ago
19:00 colomon I should be bugging Arne, shouldn't I?
19:00 timotimo r: my $foo = nqp::list_i();
19:00 camelia rakudo d05837: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤  in block  at /tmp/w9Fr3WKqYQ:1␤␤»
19:00 FROGGS colomon: yes
19:00 jnthn timotimo: use binding
19:00 sorear timotimo: my Mu $foo
19:00 timotimo oh?
19:00 colomon FROGGS: sorry to bother you!
19:00 sorear and bindin
19:00 timotimo r: my Mu $foo := nqp::list_i();
19:00 camelia rakudo d05837:  ( no output )
19:00 timotimo indeed! thanks
19:00 FROGGS colomon: np :o)
19:00 pmurias sorear: re shift it's still in the docs
19:01 sorear Do you need something to prevent hllization?
19:01 jnthn not there
19:01 jnthn it only happens automagically on what's return from a method call
19:02 sorear jnthn: Are there plans to eventually support compact arrays of types other than long and double in nqp?
19:02 sorear jnthn: did you see my question about [nqp::null()] ?
19:02 timotimo r: say (1, 2, 3, 4) >>~~>> Int;
19:02 camelia rakudo d05837: OUTPUT«True True True True␤»
19:02 timotimo m)
19:02 jnthn sorear: Not sure if we should put it into the NQP language, but the support for it wants to go into the VMArray REPR
19:02 jnthn sorear: um, no, I missed it...
19:03 * jnthn tries to find it...
19:03 jnthn no, I can't find it...when did you ask it?
19:03 sorear jnthn: While you were away
19:04 jnthn I searched the irclog for nqp::null() and didn't see anything...
19:05 sorear It came in #moarvm because that's where you talked first
19:05 sorear and phenny dumped a load on you
19:05 sorear er, yoleaux
19:06 jnthn Oh, *that* away
19:06 timotimo should i do Positional[int] with my class?
19:07 bluescreen10 joined #perl6
19:07 * moritz thinks so, yes
19:07 jnthn sorear: As designed
19:08 jnthn sorear: [...] indexing is set up to turn a null into an NQPMu
19:08 jnthn sorear: Use nqp::atpos(...) for the raw thing
19:09 dalek rakudo/nom: dddf4d1 | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
19:09 dalek rakudo/nom: Basic nominal type check handling in binder.
19:09 dalek rakudo/nom:
19:09 dalek rakudo/nom: Doesn't include types in error or handle (::T, T) just yet.
19:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dddf4d1783
19:09 sorear Oh.  I assumed that the nulls were being eaten by the binder in circumfix:<[ ]> and turned into mus there
19:09 sorear nqp: say nqp::isnull(nqp::atpos([nqp::null()],0))
19:09 camelia nqp: OUTPUT«Confused at line 2, near "say nqp::i"␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
19:09 sorear nqp: say(nqp::isnull(nqp::atpos([nqp::null()],0)))
19:09 camelia nqp: OUTPUT«1␤»
19:09 sorear jnthn++
19:10 * timotimo basically copypastes the implementation of at_pos from zavolaj
19:11 timotimo hm, multidimensionality makes it a bit more interesting
19:11 masak would someone like to hack with me on sprintf this weekend? jnthn says it could be useful for the JVM backend, too.
19:12 sorear masak: what kind of sprintf?
19:12 masak I would love to work on it, but I sense the work would go so much faster if I had a co-conspirator.
19:12 sorear pure nqp sprintf?
19:12 masak aye.
19:12 masak I've started on it already.
19:12 masak it's a humble start, but I have some functionality in place already.
19:12 masak just takes more tuits.
19:12 timotimo masak is proposing a sprintf sprint?
19:12 masak yes! \o/
19:12 masak that's now the official name :)
19:13 masak and I would have some tuits for it this weekend, but I would like someone to hack on it with me :)
19:15 ssutch tuits?
19:15 masak ssutch: unit of available time and effort.
19:16 sorear but do you have Proper Tuits from the Old Time Wooden Nickel Company?
19:16 masak ssutch: it's a bad pun. I could tell you, but I'd have to kill you.
19:16 masak sorear: yes :)
19:16 ssutch ah
19:16 [Coke] I'll do that when I get a round to it. round tuit. tuit.
19:16 jeff_s1 I have a round tuit :)
19:16 * [Coke] awaits execution.
19:16 masak ssutch: or [Coke] could tell you, avoiding all killing
19:16 sorear jeff_s1: so do I, woolfy brought thousands of them to the last conference
19:18 jnthn Quite literally, thousands.
19:18 raiph joined #perl6
19:18 timotimo hm, it would appear i have to implement either one class for each dimensionality or generate code for each
19:18 timotimo otherwise, how am i supposed to have multi candidates like int $foo, int $bar, int $baz with a code-defined number of values?
19:19 pmurias sorear: what feature do we require the $tag in continuationreset and continuationcontrol for?
19:20 * pmurias is implementing one shot continuations (using the jvm api) using node-fibers (basically coroutines)
19:20 sorear pmurias: lexotic gather
19:21 sorear pmurias: a take is supposed to take to the lexically enclosing gather (if there is one and it's still on the stack) in preference to any other gather
19:21 sorear this is NYI in rakudo
19:21 ssutch masak i might like to hang around just to learn things about nqp and similar ilk, might be able to lend a hand? i probably wouldn't be much use as your only other coconspirator however
19:21 masak ssutch: yes, that sounds awesome.
19:22 masak ssutch: I'd be perfectly happy to call you my minion, if that's what you're aiming for :P
19:22 pmichaud http://en.wiktionary.org/wiki/round_tuit   # meaning of "tuit"
19:22 masak ssutch: shall we timebox the thing a little? maybe set a try-it-an-see 2h hackathonlet sometime tomorrow?
19:23 sorear pmurias: If I were you I would create one fiber for each reset and then have control suspend all the fibers from the current frame up to the matched prompt
19:23 kaare__ joined #perl6
19:23 ssutch that sounds good, i am in PST
19:23 sorear each suspended fiber representing a section of the call stack between two prompts
19:23 sorear I'd have to spend more time working out the semantics.  there be dragons.
19:23 pmichaud given that a parrot leader has declared that Parrot will be evolving away from Rakudo, I wonder if that warrants a posting somewhere explaining how we plan to deal with that.
19:25 pmichaud (possibly after the dust settles)
19:25 [Coke] definitely after the dust settles.
19:25 pmichaud wfm.
19:25 pmichaud I'll keep it in mind as things progress.
19:26 timotimo ah, darnit, i won't even get multi-dimensional access with $my-arr-type[1;2], because it'll interpret the inner thing as a list of statements and ignore the first one and give only the value of the last one
19:27 timotimo and [1,2] will give me the second and third element as a list
19:27 pmichaud timotimo: in Perl 6?
19:27 timotimo yes, atop rakudo
19:27 sorear timotimo: that's a bug if so
19:27 pmichaud the thing inside brackes there is a semilist, not a statementlist
19:27 timotimo yeah, apparently not in rakudo
19:27 sorear jnthn: Why is -Xbootclasspath needed?
19:28 timotimo r: my @a; @a[1;2;3]
19:28 camelia rakudo d05837: OUTPUT«WARNINGS:␤Useless use of constant integer 1 in sink context (line 1)␤Useless use of constant integer 2 in sink context (line 1)␤»
19:28 pmichaud timotimo: that looks like a parser bug to me.
19:28 timotimo i'll try to investigae
19:28 jnthn sorear: To work around an indy issue
19:29 masak ssutch++ # hackathon plans made over privmsg
19:29 pmichaud actually, parser correctly has it as <semilist>, so it's probably an Actions bug
19:29 sorear jnthn: now I'm more curious
19:29 tadzik masak: I was building pure-perl6 sprintf a while ago. It didn't get any far, but I may be of some use tomorrow :)
19:29 tadzik if you'd like that
19:29 timotimo pmichaud: i'll try to investigate the actions then
19:30 ssutch tadzik i think i saw that, but can't remember where. modules.perl6.org?
19:30 timotimo er, the $past.push( call &infix:<,> ) looks wrong to me
19:31 masak tadzik: awesome!
19:31 jnthn sorear: http://mail.openjdk.java.net/pipermail/mlvm-dev/2010-February/001526.html
19:31 masak tadzik: the datetime is 2013-06-22T18:00Z.
19:31 timotimo unless +@($past) { $past.push( call &infix:<,> ) }  ... isn't unless wrong?
19:31 masak tadzik: and we'll be going for 2 hours, and then summarizing our progress.
19:31 timotimo "only put the , call there if there are no things in the semilist"?
19:32 tadzik ssutch: I don't think I ever published it
19:33 dalek rakudo/nom: e742323 | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/ (2 files):
19:33 dalek rakudo/nom: Implement nqp::p6bindcaptosig.
19:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e742323939
19:33 tadzik masak: 18 feather time?
19:33 pmichaud timotimo: the fact that semilist seems to want to make a QAST::Stmts object looks wrong to me.
19:33 pmichaud It's supposed to create a list.
19:34 pmichaud timotimo: I suggest making sure that rakudo is following STD.pm6 for the parse, and then re-think the actions if needed.
19:34 timotimo will do
19:35 pmichaud note that you're getting into LoL territory there, though, so you're hitting things that are at best partially designed and implemented.
19:35 * sorear tries to patch LibraryLoader to accept jars
19:36 timotimo pmichaud: i suppose the <O(|%term)> isn't relevant in rakudo? at least i have no idea what it's supposed to do
19:36 masak tadzik: no, 20 feather time. feather is GMT+2.
19:36 tadzik masak: okay, cool
19:36 pmichaud timotimo: which <O(|%term)>  ?
19:37 timotimo { :dba('array composer') '[' ~ ']' <semilist> <O(|%term)> { @*MEMOS[$¢.pos]<arraycomp> = 1; } } is the whole line in STD.pm6
19:37 pmichaud ( <O(|%term)> says to give the token "term" precedence )
19:37 timotimo ah, ok
19:37 timotimo it's pretty much the same parsing. i'll look at the actions further
19:37 pmichaud okay, timotimo++
19:38 ssutch r: { class A { } }; { class A { } }; say 'okay';
19:38 camelia rakudo d05837: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Redeclaration of symbol Aâ�¤at /tmp/QsYSXXliPJ:1â�¤------> [32m{ class A { } }; { class A [33mâ��[31m{ } }; say 'okay';[0mâ�¤    expecting any of:â�¤        statement listâ�¤        prefix or termâ�¤        prefix or meta-prefixâ�¤        generic…
19:38 timotimo circumfix:sym<[ ]> is the right one, not something with postcircumfix?
19:39 timotimo postcircumfix looks correcter actually
19:39 pmichaud $array[ ]   is postcircumfix
19:39 pmichaud circumfix:sym<[ ]>  is the array composer.
19:39 timotimo good
19:39 timotimo (the parsing is right still)
19:39 timotimo er, that's because i was looking at STD.pm6
19:40 Rotwang joined #perl6
19:40 pmichaud I'm afk for a while again -- bbl
19:41 ssutch what scoping do classes have?
19:41 jnthn our, by default
19:42 ssutch ah ok, that makes sense then
19:43 dalek roast: 5ef80e3 | (Samuel Sutch)++ | S12-attributes/clone.t:
19:43 dalek roast: rename classes for posterity (and to avoid name collisions)
19:43 dalek roast: review: https://github.com/perl6/roast/commit/5ef80e311e
19:43 dalek roast: 2611f3d | (Samuel Sutch)++ | S12-attributes/clone.t:
19:43 dalek roast: Merge pull request #30 from samuraisam/sam/addional-clone-tests
19:43 dalek roast:
19:43 dalek roast: Rename test classes for posterity (and to avoid name collisions)
19:43 dalek roast: review: https://github.com/perl6/roast/commit/2611f3d8ac
19:44 btyler joined #perl6
19:45 dalek nqp: 66d1166 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/C (2 files):
19:45 dalek nqp: Make state variables be stateful.
19:45 dalek nqp: review: https://github.com/perl6/nqp/commit/66d11669ba
19:46 tadzik "are they stateful now?" "what is stateful now?"
19:47 eternaleye joined #perl6
19:47 masak tadzik: "What do we want?" -- "Braaaaaains" -- "When do we want it?" -- "Braaaaaains"
19:48 tadzik that makes me listen to Re: Your Brains
19:48 kaare__ joined #perl6
19:49 ssutch is there any way to futz about with the classes in rakudo in src/core without rebuilding rakudo?
19:49 sorear MONKEY_TYPING
19:49 masak ssutch: easiest is to just copy them out into its own file and fiddle with them there, IMO.
19:50 ssutch use MONKEY_TYPING; alter class Mu { method clone (*%_) { callsame; } }; say 'okay';
19:50 ssutch r: use MONKEY_TYPING; alter class Mu { method clone (*%_) { callsame; } }; say 'okay';
19:50 camelia rakudo d05837: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Undeclared routine:â�¤    alter used at line 1â�¤â�¤Â»
19:50 masak ssutch: s/alter/augment/
19:50 ssutch r: use MONKEY_TYPING; augment class Mu { method clone (*%_) { callsame; } }; say 'okay';
19:50 camelia rakudo d05837: OUTPUT«[31m===[0mSORRY![31m===[0m�Package 'Mu' already has a method 'clone' (did you mean to declare a multi-method?)�at /tmp/ZxEpUCFlZw:1�------> �»
19:50 [Coke] masak: "where are we going?" "planet 10" "when are we leaving?" "REAL SOON"
19:51 ssutch it doesn't seem to like me messing with Mu w/ monkey typing
19:51 masak [Coke]: sorry, I don't know that reference... :)
19:51 [Coke] Buckaroo Bonzai: Across the 8th Dimension
19:51 [Coke] I highly recommend you stop what you're doing and go watchit now. :)
19:52 masak tadzik: use too! :)
19:52 masak us*
19:53 dalek nqp: 3b70d02 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/CallFrame.java:
19:53 dalek nqp: Record if a frame is the first state init.
19:53 dalek nqp: review: https://github.com/perl6/nqp/commit/3b70d02b3a
19:53 dalek rakudo/nom: 36f36de | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/Ops.java:
19:53 dalek rakudo/nom: Implement nqp::p6stateinit.
19:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/36f36de165
19:54 ssutch is it possible to totally redefine Mu such that Match objects will be based off it?
19:54 masak [Coke]: looks awesome :)
19:55 masak ssutch: not with a current method cache updating bug, no. :/
19:55 masak ssutch: but it seemsme you're going very much against the grain of the language.
19:55 moritz ssutch: you could define your own lexical Match class
19:55 masak MONKEY_PATCHING is already a warning sign.
19:55 masak expecting it to do something useful is another one :P
19:56 moritz but is it LOUD ENOUGH?
19:56 moritz (oh, and you can always patch Any and Cool, which come between Match and Mu
19:56 moritz r: say Match.^mro
19:56 camelia rakudo d05837: OUTPUT«(Match) (Capture) (Cool) (Any) (Mu)␤»
19:57 ssutch moritz: ok ill try something like that
19:57 moritz http://doc.perl6.org/images/type-graph-Match.svg
19:57 moritz ssutch: what do you want to achieve in the end?
19:57 masak sorear: ping
19:58 ssutch moritz: i want to patch .clone, as well as futz about with the attributes of Match
19:58 ssutch for debugging, i am trying to fix some test failures and bugginess in clone
19:59 pmichaud sometimes it's easier to augment with a differently-named method.... e.g.  "my_clone" instead of "clone"
19:59 pmichaud then when it's working, switch back to the normal name.
19:59 ssutch pmichaud: that's brilliant
20:02 sorear masak: hi
20:02 ssutch i can modify clone on match, which is all i need, thanks pmichaud !
20:02 pmurias sorear: that's what I'm doing, the currently tricky part is that I can only suspend the current fiber which means I'll have to do a dance of yield,run untill I get a matching tag
20:03 sorear well, most of the fibers are already suspended
20:03 sorear search the dynamic call stack for a matching tag, then yield to that fiber
20:03 sorear and be careful you don't accidentally implement shift semantics
20:04 dalek rakudo/nom: 51d0246 | jonathan++ | src/Perl6/World.nqp:
20:04 dalek rakudo/nom: Make is_pseudo_package work on JVM.
20:04 dalek rakudo/nom:
20:04 dalek rakudo/nom: Fixes S02-names/indirect.t, possibly more.
20:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/51d0246bed
20:05 pmurias sorear: do we have a test against that?
20:06 kshannon joined #perl6
20:06 * sorear isn't sure
20:07 masak sorear: I just build rakudo-jvm for the first time ever. 'make spectest' is acting diappointingly. ends by saying 'Can't open perl script "./eval-client.pl": No such file or directory'.
20:07 masak sorear: and indeed, there is no such file in my directory.
20:08 benabik ...  perhaps building the test-runner should be added to the Makefile?
20:08 masak sorear: I've heard you talking about this file but haven't really been paying attention. what need I do?
20:08 [Coke] masak: I ran the spec tests by editing t/spec/test_summary to call "./perl6 -Ilib" and then ran that script.
20:08 sorear masak: find out why tools/buid/make-jvm-runner.pl isn't working.  fix it
20:08 [Coke] buid? <mythbusters> There's yer problem</mythbusters>
20:08 jnthn [Coke]: ooh, did you get any interesting output? :)
20:09 sorear masak: eval-client.pl is supposed to be copied into . (it lives in the nqp tools/jvm dir...) at the same time as ./perl6 is generated, but apparently this Did Not Happen for you
20:09 sorear masak: https://gist.github.com/sorear/5827219 is one I made
20:09 dalek nqp: cf7c721 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/ContextRefInstance.java:
20:09 dalek nqp: Implement keyed binding in ContextRef REPR.
20:09 dalek nqp: review: https://github.com/perl6/nqp/commit/cf7c72148a
20:10 sorear I understand some of the failures have been fixed.
20:10 [Coke] jnthn: yes: https://github.com/coke/perl6-roast-data/blob/master/rakudo.jvm_summary.out
20:10 jnthn sorear: I have that open in a browser tab and am working through it :)
20:10 jnthn [Coke]: omg, didn't realize you'd get rakudo JVM into perl6-roast-data!
20:11 [Coke] at the time I ran it, rakudo.jvm is at 63.88% of rakudo.parrot
20:11 tadzik what
20:11 jnthn [Coke]++ !
20:11 [Coke] jnthn: it's a hack right now. lizmat++ might help me make it a non-hack in about 2 weeks.
20:11 masak 63%!
20:11 [Coke] jnthn: I'm pretty sure I had the easy part here. ;)
20:12 [Coke] r: say 21228 - 16596 # gap to niecza.
20:12 camelia rakudo d05837: OUTPUT«4632␤»
20:12 panchiniak_ left #perl6
20:13 shinobicl joined #perl6
20:14 jnthn [Coke]: Does that mean it's a one-off?
20:14 nwc10 is it possible to overdose on awesome?
20:14 jnthn [Coke]: Or we'll still get numbers regularly?
20:14 masak I don't have a tools/buid/make-jvm-runner.pl either. are we on different branches or something?
20:14 masak sorear: ^
20:14 [Coke] I can't run it on the same box as I do the other three yet. so I run it on the box I can, copy the file over, then run the script that colelctions the stats. I'll run it every day going forward by hand, though.
20:15 [Coke] until I can get access to something slightly beeifer than feather
20:15 [Coke] [6~*beefier
20:15 masak oh, I see it.
20:15 masak it's tools/build/create-jvm-runner.pl
20:15 masak sorry about that :)
20:15 jnthn [Coke]: Thanks. I'll be happy to have the progress numbers.
20:17 * sorear kind of wants to add a magic number to the serialization format
20:18 colomon version number?
20:18 [Coke] oh, sure, some MAGIC number. </homer>
20:18 timotimo what should be generated for a ';;' inside a semilist?
20:18 jnthn There already is a version number. :)
20:18 jnthn So I guess sorear++ means something to identify it
20:19 sorear yeah.
20:19 masak sorear: running 'perl tools/build/create-jvm-runner.pl . install-jvm/ install-jvm/nqp-runtime.jar:install-jvm/asm-4.1.jar:install-jvm/jline-1.0.jar' manually produces no output and no ./eval-client.pl
20:19 pmurias how do I build nqp-jvm?
20:19 masak sorear: investigating.
20:19 sorear 06 00 00 00 is not unique enough for file(1).
20:19 * pmurias plans to steal some delimited continuation tests from racket
20:19 sorear Stefans-MacBook-Air:nqp-jvm sorear$ file A43CE63113D1C05C11ACD00AC9DBE7348DCF0B37.serialized
20:19 colomon pmurias: https://github.com/rakudo/rakudo # search JVM
20:19 sorear A43CE63113D1C05C11ACD00AC9DBE7348DCF0B37.serialized: DBase 3 index file
20:20 sorear ++pmurias testing good
20:20 jnthn pmurias: perl ConfigureJVM.pl && make
20:20 colomon pmurias: specifically Building Rakudo on JVM
20:20 kshannon joined #perl6
20:21 masak sorear: added an 'or die $!' to the last line: 'No such file or directory at tools/build/create-jvm-runner.pl line 36'
20:21 benabik Sounds like the script needs more klingon.
20:21 * timotimo guesses Nil
20:22 masak sorear: and indeed, there's no eval-client.pl in install-jvm either.
20:22 domidumont joined #perl6
20:22 sorear nqp is supposed to install that
20:22 masak so the problem is further back, then.
20:22 [Coke] masak: did you do 'make install' in nqp subdir?
20:22 masak [Coke]: yes.
20:23 masak sorear: mind if I add a few 'die' statements to that script?
20:26 p5eval joined #perl6
20:29 lue hello world o/
20:29 sorear masak: not at all
20:31 shinobicl left #perl6
20:33 dalek rakudo/nom: ea42160 | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
20:33 dalek rakudo/nom: Fix $_ handling in binder.
20:33 dalek rakudo/nom:
20:33 dalek rakudo/nom: Gets S02-names/pseudo.t working, and probably more.
20:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ea421602a3
20:40 * sorear is running into a surprising amount of platform stupid while extending nqp::loadbytecode to support jars
20:41 dalek rakudo/nom: b5c9c7b | jonathan++ | src/Perl6/Optimizer.nqp:
20:41 dalek rakudo/nom: Fix optimizer warning/error reporting.
20:41 dalek rakudo/nom:
20:41 dalek rakudo/nom: Various tests that the optimizer spots things to warn about bombed
20:41 dalek rakudo/nom: because of this.
20:41 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b5c9c7bf17
20:41 jnthn sorear: Ugh
20:41 nwc10 by "platform stupid" you mean things in the JVM which are "gah, why did Sun do it this way?" or do you mean something else?
20:43 sorear nwc10: the former
20:43 sorear though I think I'm actually looking at Javasoft mistakes
20:44 dalek rakudo/nom: 85f7372 | masak++ | tools/build/create-jvm-runner.pl:
20:44 dalek rakudo/nom: [create-jvm-runner.pl] die more
20:44 dalek rakudo/nom:
20:44 dalek rakudo/nom: Fail early, fail often. The two sites where I added 'die' statements were
20:44 dalek rakudo/nom: the ones where I would have liked for it to die with informative error
20:44 dalek rakudo/nom: messages instead of just continuing.
20:44 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/85f737212c
20:45 masak now on to investigating why nqp didn't install that file for me.
20:45 nwc10 sorear: oh, :-( Not sure that I can say anyhing more constructive
20:47 timotimo > say (my @a)[1;2;3]
20:47 timotimo (Any) (Any) (Any)
20:47 timotimo is that ... better?
20:47 timotimo r: say (my @a)[1;2;3];
20:47 camelia rakudo 51d024: OUTPUT«WARNINGS:␤Useless use of constant integer 1 in sink context (line 1)␤Useless use of constant integer 2 in sink context (line 1)␤(Any)␤»
20:48 timotimo at least a semilist now turns into a list of thingies
20:48 FROGGS timotimo: can you paste the patch?
20:49 timotimo https://gist.github.com/timo/5834220
20:49 lue timotimo++ # working on the long-neglected S09
20:50 timotimo my internet connection is riduculously instable here
20:50 timotimo is the semilist supposed to be a list of lists or something?
20:50 ssutch https://github.com/rakudo/rakudo/blob/nom/src/core/Capture.pm#L2  - upon building the class, the hash and list attributes of Capture are bound directly to the storage of a hash and a parcel provided in the arguments. - am i interpreting this correctly?
20:51 timotimo it seems so, yes; the $!storage attributes are like nqp::list and nqp::hash iirc
20:52 masak conclusion: nqp's 'make install' doesn't install an eval-client.pl :)
20:53 masak that... explains it :)
20:54 sorear jnthn: Is bind_key_native supposed to ... write ... tc.native_type
20:54 sorear jnthn: ?
20:55 dalek nqp: 2aef1f6 | masak++ | tools/build/install-jvm-runner.pl:
20:55 dalek nqp: [tools/build/install-jvm-runner.pl] die more
20:55 dalek nqp:
20:55 dalek nqp: Installed a few die statements where things may fail.
20:55 dalek nqp: review: https://github.com/perl6/nqp/commit/2aef1f69ea
20:56 timotimo is there really only a single mention of semilist, which just says Provides list context inside. (Technically, it really provides a "semilist" context, which is a semicolon-separated list of statements, each of which is interpreted in list context and then concatenated into the final list.)
20:56 jnthn sorear: Yeah
20:56 * TimToady --> back to Toulouse, London tomorrow
20:56 jnthn sorear: Then the op checks the operation did the right thing
20:56 jnthn sorear: Avoids duplicating checks all over the place
20:57 jnthn sorear: Really should not happen, though
20:59 sorear Stefans-MacBook-Air:nqp-jvm sorear$ ./nqp --target=jar --output=hello.jar -e 'say("hello world")'
20:59 sorear Stefans-MacBook-Air:nqp-jvm sorear$ java -Xbootclasspath/a:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar -jar hello.jar
20:59 sorear hello world
20:59 sorear this is good
20:59 timotimo oooooooh snap! :)))
20:59 jnthn \o/
21:00 sorear 13085  06-21-13 13:58   9037A076933B24FEE476021EB6BF5EC4486BE529.class
21:00 sorear 2570  06-21-13 13:58   9037A076933B24FEE476021EB6BF5EC4486BE529.serialized
21:00 sorear contents ^
21:00 jnthn whee
21:00 dalek rakudo/nom: aed9508 | jonathan++ | src/core/Mu.pm:
21:00 dalek rakudo/nom: Correct/simplify =:= implementation.
21:00 dalek rakudo/nom:
21:00 dalek rakudo/nom: Can only guess that it dates back to before we had an nqp::eqaddr.
21:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/aed9508c99
21:00 timotimo that's size in bytes?
21:01 sorear timotimo: yes.  uncompressed size from the zip local file header
21:01 sorear total file size is 6166
21:03 FROGGS that is better then my 9MB :P
21:04 bluescreen10 joined #perl6
21:05 ssutch sweet, so you could use maven shade or something to create a fat jar that includes all dependencies and just runs your perl6 program wherever there is a jvm
21:06 ssutch have jar, will travel (to wherever there is a java -jar)
21:07 dalek nqp: 522ae10 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ (2 files):
21:07 dalek nqp: Support for running jar-packaged programs
21:07 dalek nqp: review: https://github.com/perl6/nqp/commit/522ae10ddf
21:09 BenGoldberg joined #perl6
21:12 ssutch r: https://gist.github.com/samuraisam/5834349
21:12 camelia rakudo 51d024: OUTPUT«ok 1 - original object has its original array␤ok 2 - cloned object has the newly-provided array␤»
21:12 ssutch ok, this HAS to be wrong… but it fixes the bug and doesn't break any tests
21:12 ssutch suggestions?
21:13 timotimo add more test until you find one that breaks :D
21:15 snearch joined #perl6
21:16 dalek nqp: 4875091 | masak++ | tools/build/Makefile-JVM.in:
21:16 dalek nqp: [Makefile-JVM.in] also install eval-client.pl
21:16 dalek nqp: review: https://github.com/perl6/nqp/commit/4875091956
21:16 ssutch there must be an nqp way to test if an attribute is an array or a hash and not a scalar
21:17 timotimo r: https://gist.github.com/timo/5834397
21:17 camelia rakudo 51d024: OUTPUT«ok 1 - original object has its original array␤ok 2 - cloned object has the newly-provided array␤»
21:17 timotimo good.
21:18 ssutch yeah i tested that late last night
21:18 ssutch (suggested by sorear)
21:18 timotimo :D
21:20 sorear NegativeArraySizeException, that's one I don't see often
21:20 ssutch r: https://gist.github.com/samuraisam/5834349
21:20 camelia rakudo 51d024: OUTPUT«ok 1 - Match object can be cloned␤ok 2 - cloned Match object retained named capture value␤ok 3 - original object has its original array␤ok 4 - cloned object has the newly-provided array␤»
21:21 ssutch also works with match objects
21:21 sorear ssutch: do you have to use a regex in there? :/
21:22 ssutch sorear: no
21:22 ssutch it's just a bandage
21:23 ssutch r: https://gist.github.com/samuraisam/5834349
21:23 camelia rakudo 51d024: OUTPUT«ok 1 - Match object can be cloned␤ok 2 - cloned Match object retained named capture value␤ok 3 - original object has its original array␤ok 4 - cloned object has the newly-provided array␤»
21:24 sorear r: say nqp::index('@%',nqp::substr('%foo',0,1))
21:24 camelia rakudo 51d024: OUTPUT«1␤»
21:24 ssutch there, amended to use nqp::isconcrete
21:25 PerlJam .oO( nqp::iswood? )
21:25 timotimo ssutch: it seems to me you're cloning things even if you twiddle them afterwards
21:25 timotimo am i seeing that right?
21:26 ssutch timotimo: uhh
21:29 timotimo wow, the rakudo runtime jar is only 47KB big?
21:29 timotimo that's pretty darn decent
21:29 jnthn timotimo: Well, it's only the binder and some support code
21:29 timotimo but only the jar itself, rakudo-runtime and asm.jar are needed to run such a generated jar file, no?
21:30 timotimo er, i meant to speak about nqp-runtime actually
21:30 jnthn oh...I thought that was bigger :)
21:30 timotimo *that*'s 500 K, yeah
21:30 timotimo still not quite bad
21:30 jnthn was gonna say... :)
21:30 sorear timotimo: sounds about right
21:30 timotimo and asm.jar is also just 50K
21:31 sorear timotimo: the big offender is CORE.settting.class
21:31 sorear have fun running anything without that
21:31 timotimo :)
21:32 tadzik how big is that one, 6 megs?
21:32 timotimo 11MB
21:32 timotimo the corresponding file on parrot is 17MB
21:34 Rix joined #perl6
21:34 timotimo so, how exactly does a semilist behave differently from a comma list?
21:34 timotimo how do i, in the multi methods for circumfix:sym<[ ]>, differentiate if there was a comma list or a semilist?
21:34 benabik Builds a LoL?
21:35 timotimo ah, that makes some sense, i could do that
21:36 lue timotimo: S03/Term Precedence/Array Composer : "it really provides a "semilist" context, which is a semicolon-separated list of statements, each of which is interpreted in list context and then concatenated into the final list."
21:36 timotimo yeah, it doesn't say anything about lols or other kinds of things
21:37 timotimo i saw that exact thing, it's the only mention of "semilist" in the whole spec
21:37 lue They're also discussed in S09/Multidimensional Arrays
21:39 lue "A multidimensional array is indexed by a semicolon list, which is really a list of lists in disguise." and in particular,
21:39 lue @array[0..10; 42; @x]
21:39 lue is really short for something like:
21:39 lue @array.postcircumfix:<[ ]>( (0..10), (42), (@x) );
21:39 timotimo ah!
21:39 timotimo i should have searched for "semicolon list"
21:39 timotimo thanks, google search >_>
21:39 dwimwit joined #perl6
21:39 timotimo lue++
21:40 lue (Although I do think semilist should occur at least *once* in S09 (the one place it's discussed at length), or nowhere at all.)
21:41 btyler joined #perl6
21:46 dalek specs: 912d12c | lue++ | S09-data.pod:
21:46 dalek specs: [S09] Add the term "semilist" to S09
21:46 dalek specs:
21:46 dalek specs: This way someone seeing the mention of semilist in S03 can search
21:46 dalek specs: through the spec and find the place where it's discussed in detail, S09,
21:46 dalek specs: just by searching for the term itself, rather than thinking to search
21:46 dalek specs: for "semicolon list" or "semicolon-separated list" instead.
21:46 dalek specs: review: https://github.com/perl6/specs/commit/912d12cdad
21:47 timotimo do i need to wrap Stmts around QAST::Op(call &infix:<,>)?
21:47 dalek nqp: 5b134ce | sorear++ | / (6 files):
21:47 dalek nqp: Modify makefiles to do a jar build of NQP
21:47 dalek nqp: review: https://github.com/perl6/nqp/commit/5b134ceaa9
21:47 dalek nqp: f9e0a2b | sorear++ | tools/build/Makefile-JVM.in:
21:47 dalek nqp: Merge branch 'master' of github.com:perl6/nqp
21:47 dalek nqp:
21:47 dalek nqp: Conflicts:
21:47 dalek nqp: tools/build/Makefile-JVM.in
21:47 dalek nqp: review: https://github.com/perl6/nqp/commit/f9e0a2b451
21:48 dalek nqp: eab1b7c | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/JASTToJVMBytecode.java:
21:48 dalek nqp: Handle Inf/-Inf/NaN in bytecode assembler.
21:48 dalek nqp: review: https://github.com/perl6/nqp/commit/eab1b7c83c
21:48 smash joined #perl6
21:52 jnthn timotimo: Don't see why, right away
21:52 shinobicl joined #perl6
21:52 timotimo oke
21:53 timotimo new version is compiling, it should create a lol from semilists
21:55 btyler joined #perl6
21:55 timotimo okay, now a LoL is getting passed to postcircumfix:<[ ]>, but it handles it just like a list it seems
21:58 TimToady timotimo: you basically need to [X] all the slice lists to get each individual key location
21:59 TimToady so .[0..1; 0..1] is talking about .[0;0], .[0;1], .[1,0], and .[1,1]
21:59 timotimo oh, yes
22:00 timotimo the first thing to do is install multi candidates that even recognize that there was a semilist rather than a normal list
22:00 TimToady thanks for working on this
22:00 timotimo r: my @a = <a b c d e f>; @a[(1, 2, 3).lol]; # basically the same thing my code does at the moment
22:00 camelia rakudo 51d024:  ( no output )
22:00 timotimo r: my @a = <a b c d e f>; say @a[(1, 2, 3).lol]; # basically the same thing my code does at the moment
22:00 camelia rakudo 51d024: OUTPUT«b c d␤»
22:02 * TimToady has to get up again in 5ish hours to catch a plane, so --> bed &
22:03 jnthn TimToady: Good sleep, safe travels o/
22:05 timotimo r: (1, 2, 3).lol ~~ Lol
22:05 camelia rakudo 51d024: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Undeclared name:â�¤    Lol used at line 1. Did you mean 'LoL'?â�¤â�¤Â»
22:05 timotimo r: say (1, 2, 3).lol ~~ LoL
22:05 camelia rakudo 51d024: OUTPUT«True␤»
22:05 dmol joined #perl6
22:07 timotimo i think i should run spectests first ...
22:10 konundra joined #perl6
22:16 dalek rakudo/nom: 6f0b29c | jonathan++ | src/vm/jvm/Perl6/Ops.nqp:
22:16 dalek rakudo/nom: Get nqp::p6return to work.
22:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6f0b29c7c7
22:17 masak ok, now 'make spectest' finds eval-client.pl, but instead it says 'Can't locate File/Slurp.pm in @INC'.
22:17 masak jnthn, sorear: ^
22:17 diakopter sorear: does CORE.setting.class compress at all?
22:18 diakopter (wondering if it could go in a jar)
22:18 jnthn masak: ah, non-core dep?
22:18 masak looks like.
22:19 masak yay, after cpanm-ing File::Slurp 9999.19, it works! \o/
22:19 jnthn o.O
22:19 * masak is spectestin' rakudo-jvm o/
22:21 dalek rakudo/nom: cf6dd7f | sorear++ | / (3 files):
22:21 dalek rakudo/nom: Use jar build for rakudo too
22:21 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cf6dd7f785
22:23 sorear diakopter: https://gist.github.com/sorear/594858118d022cec1d6b
22:24 sorear ahahaha:
22:24 sorear Stefans-MacBook-Air:rakudo-jvm sorear$ wc -c CORE.setting.jar <(gzip < CORE.setting.jar)
22:24 sorear 1467080 CORE.setting.jar
22:24 sorear 1418509 /dev/fd/63
22:25 jnthn Whoa!
22:26 jnthn sorear++
22:26 jnthn sorear: Though, does the compression hurt startup time?
22:26 sorear jnthn: I can't measure a difference
22:26 jnthn OK :)
22:26 sorear It might be that the compression is hurting us exactly as much as the not-having-to-join()-and-unbase64()-the-blob is helping us
22:27 jnthn oh, you meant you couldn't measure a difference compared to that...
22:27 jnthn (I thought you meant couldn't measure compressed vs. non-compressed)
22:28 ssutch so this https://github.com/samuraisam/rakudo/compare/sam;rt-118559-clone passes all spec tests (+ some additional ones) and fixes https://rt.perl.org/rt3/Ticket/Display.html?id=118559
22:28 ssutch should i submit a PR?
22:29 sorear yeah, I'll try that if I can come up with a sane test...
22:29 * diakopter guesses that the decompression/io is less than 10ms
22:32 masak sorear++
22:36 john5 joined #perl6
22:38 ssutch alright, here it is https://github.com/rakudo/rakudo/pull/170
22:39 john5 i dont get it, why are there like almost 10 compilers, is Perl6 just a protocol?
22:39 masak john5: yeah.
22:39 masak john5: and closer to 2 than 10.
22:40 diakopter well, closer to 1 than 2
22:40 perigrin to be fair one of those has three backends.
22:40 masak :)
22:40 masak perigrin: well, closer to one than three :)
22:40 masak dang, this truth business is tricky!
22:41 masak why does the truth have to be so detailed?
22:41 ssutch use truthiness
22:41 perigrin masak: really they're just quantum superpositions of backends.
22:41 perigrin you should be familiar with this.
22:41 perigrin (fuzzy implementations?)
22:42 masak that's why we've taken to calling them Quackends.
22:43 perigrin because down that end there is a quack?
22:43 perigrin is that really a kind way to refer to Damian?
22:43 masak it's quacks all the way down.
22:45 FROGGS hehe
22:45 timotimo https://gist.github.com/timo/b14928228f295e825d42 - big sigh
22:46 perigrin
22:46 perigrin :
22:46 perigrin sorry about that
22:47 FROGGS ohhh nooo /o\
22:47 perigrin I'd claim a cat on the keyboard but Erwin would be upset I let his cat out.
22:48 diakopter timotimo: 20 minutes!?
22:48 skids joined #perl6
22:48 sorear jnthn: no measurable difference with noncompressed jars
22:48 diakopter (yay)
22:48 timotimo 408 wallclock secs
22:49 ggoebel joined #perl6
22:50 jnthn sorear: OK, good to know
22:50 dalek nqp: d4a13c5 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/ (2 files):
22:50 dalek nqp: Enable iteratoin of native arrays.
22:50 dalek nqp: review: https://github.com/perl6/nqp/commit/d4a13c5959
22:50 timotimo oh, whoops.
22:51 timotimo is "foo $( my $x = 3 + 4; "bar" ) baz", 'foo bar baz', 'declaration in interpolation'; - here the $( ... ) is interpolated as a semilist, so there's a 7 in there, too
22:51 sorear interesting though: since removing megabytes of data from the constant pools doesn't speed things up, the observed slowness of defineClass must be mostly related to metadata and/or bytecode validation
22:51 timotimo is that because there's a <semilist> in a wrong place in the grammar?
22:54 jnthn sorear: I've for a bit thought that all the annotations that get read to make up a CodeRef could be read at the point of first invocation. If annotation reading is slow, that may well help.
22:55 jnthn sorear: It's on my todo list, but feel free to task steal it if you think it's worthwile.
22:55 jnthn For now I'm content chugging through the spectest LHFish.
22:56 sorear especially now that we no longer need the cuid annotations to *find* the codref?
22:56 jnthn sorear: hm, yes
22:56 jnthn that may make it even better
22:58 FROGGS timotimo: if you run a failing test file with -ll-exception you should see what is going on
22:59 sorear jnthn: I think that I can probably get a substantial size improvement by tweaking the serialization format, even after compression
23:00 * [Coke] tries to automate the rakudo.jvm spec build.
23:00 diakopter sorear: is the startup time affected if you do Djava.compiler=NONE
23:00 jnthn sorear: I'm reluctant to diverge that between platforms just yet.
23:01 jnthn sorear: I agree it could almost certainly be improved and should be, though...
23:02 jnthn [Coke]: yay :)
23:02 * jnthn hopes that he's managed to nudge the % somewhere better today
23:02 [Coke] does rakudo-jvm respect PERL6LIB yet?
23:03 jnthn I *think* sorear++ may have fixed that?
23:03 [Coke] hokay. if not, I have a wrapper script I acn be evil in.
23:04 [Coke] LHF: rewrite tools/build/gen-cat.pl in nqp.
23:07 sorear [Coke]: Yes
23:07 timotimo FROGGS: the failure is not an exception that flies
23:07 timotimo it's code doing something different from what it should :)
23:08 diakopter sorear: also try XX:+PrintCompilation and -XX:-CITime
23:08 sorear diakopter: yeah, it more than doubles if you turn off the compiler
23:09 sorear Is there any difference between -D... and -Xint ?  I tried both, same apparent effect
23:10 FROGGS timotimo: ohh, :/
23:10 diakopter sorear: dunno
23:10 diakopter sorear: how about those last two flags
23:10 diakopter sorear: (actually I was thinking of startup time just to get to rakudo's entry point)
23:11 diakopter main(...) { System.Exit(); ...
23:11 diakopter main(...) { System.Exit(1); ...
23:11 diakopter main(...) { System.exit(1); ...
23:11 diakopter (augh)
23:11 diakopter augh.. still C#
23:11 * diakopter gives up
23:12 sorear diakopter: https://gist.github.com/sorear/5834999
23:13 diakopter O_O
23:13 sorear diakopter: well that depends on what exactly you want to time.  perl6 -e '' takes 6.0s, perl6 --help takes 3.3s
23:14 diakopter lolz; "made zombie"
23:14 sorear which is why I've been focusing on core.setting
23:15 diakopter okay, so the first column is total elapsed milliseconds?
23:15 jnthn heh, I was seeing the "made zombie" :)
23:15 sorear diakopter: I have nfi
23:15 sorear it looks like befunge to me
23:16 * diakopter doesn't know what nfi is at the moment
23:16 diakopter oh..
23:16 dalek rakudo/nom: c673b0f | coke++ | .gitignore:
23:16 dalek rakudo/nom: ignore more generated files
23:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c673b0f318
23:17 diakopter ROTFL
23:17 sorear no effin idea
23:18 jnthn :D
23:20 raiph joined #perl6
23:21 jnthn r: say \(1) ~~ :(int $x as Str)
23:21 camelia rakudo 51d024: OUTPUT«(signal SEGV)»
23:21 masak O.O
23:21 timotimo m)
23:22 * masak submits rakudobug
23:22 jnthn Found while porting the code for the JVM :)
23:22 masak jnthn++!
23:22 * diakopter tries to golf
23:22 timotimo so, if there's a semilist in the grammar, is that expected to generate a LoL in any case?
23:23 jnthn diakopter: I think it's minimal
23:23 timotimo because "foo $( my $x = 3 + 4; "bar" ) baz" will treat the inner part of $(...) as a <semilist> and thus interpolate "foo 7 bar baz" (wrongly obviously)
23:24 timotimo STD.pm6 claims so.
23:25 dalek rakudo/nom: e7596b6 | jonathan++ | src/vm/parrot/guts/bind.c:
23:25 dalek rakudo/nom: Avoid a NULL deref.
23:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e7596b694d
23:26 dalek perl6-roast-data: 4ad35b0 | coke++ | / (2 files):
23:26 dalek perl6-roast-data: Add a runner for rakudo.jvm
23:26 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/4ad35b0d21
23:27 [Coke] that should do it. trying a run now.
23:27 sorear timotimo: niecza does this by returning a list of subasts, and it's up to the caller to decide whether to a) make a lol b) make a qast::stmts
23:27 jnthn \o/
23:27 timotimo ah
23:27 timotimo that seems pretty sensible i guess
23:28 [Coke] sorear++  - all I had to do was put the perl6 runner into a ulimit'd wrapper.
23:28 jnthn If you return a QAST::Op.new( :op('stmts'), ... ) then it's easy to ransform into a LoL maker, I suspect
23:28 timotimo that's true. that may be the reason it was the way it was before. (but before it had a weird infix:<,> thrown in at the end for no reason that i could understand
23:29 diakopter r: \1~~:(int as pi)
23:29 camelia rakudo 51d024: OUTPUT«(signal SEGV)»
23:29 masak :)
23:29 masak it's a syntactic golf but not really a semantic one.
23:29 jnthn e7596b6 was to fix it, btw
23:29 masak jnthn++
23:30 diakopter what does "as pi" mean anyway
23:30 tomyan joined #perl6
23:30 jnthn diakopter: It's gonna attempt to call .pi :P
23:30 jnthn I guess
23:31 jnthn r: sub foo($x as pi) { }; foo(42)
23:31 camelia rakudo 51d024:  ( no output )
23:31 jnthn r: sub foo($x as pi) { say $x }; foo(42)
23:31 camelia rakudo 51d024: OUTPUT«42␤»
23:31 jnthn r: sub foo($x as pi) { say $x.WHAT }; foo(42)
23:31 camelia rakudo 51d024: OUTPUT«(Num)␤»
23:31 jnthn ah :)
23:31 jnthn Well, that makes a weird kinda sense I guess :P
23:32 masak that's... sick :)
23:32 timotimo jnthn: wait, a Op.new( :op('stmts') ... )?
23:32 timotimo not a Stmts.new?
23:32 jnthn timotimo: It's equivalent to stmts, but it's an Op so it's easy to fiddle with it to make it a call, or callmethod, or whatever.
23:33 jnthn QAST::Op.new( :op('stmts'), $a, $b ) is equivalent to QAST::Stmts.new( $a, $b )
23:33 timotimo oh, that's pretty neat
23:33 jnthn Occasionally worth knowing.
23:33 jnthn I used it the other day in the MapIter rewrite
23:33 jnthn 'cus you can nqp::stmts(...) too :)
23:35 timotimo i hope that's documented somewhere! :)
23:35 timotimo is nqp::stmts a shortcut/replacement for QAST::Stmts.new?
23:37 jnthn timotimo: Well, in general QAST:Op.new( :op('foo'), a, b ) when building QAST can be expressed as nqp::foo(a, b) in code
23:37 jnthn The idea is that you learn the instruction set once and can re-use that knowledge for building QAST trees and nqp::op stuff
23:38 timotimo good point, yeah
23:38 timotimo so why is there QAST::Op.new everywhere in Actions.pm?
23:38 jnthn Oh, they work at different levels
23:38 timotimo that's probably what i meant and failed to express
23:38 jnthn nqp::foo(a, b) means "do that in the *current code*"
23:39 jnthn r: say nqp::add_i(1, 2)
23:39 camelia rakudo 51d024: OUTPUT«3␤»
23:39 timotimo right, that makes more sense now that i spent a second actually thinking
23:39 jnthn that doesn't evaluate to a QAST::Op. It actually does the thing.
23:39 labster Welp, I'm finally backlogged for today.  Y'all need to talk less :P
23:40 masak labster: CHALLENGE ACCEPTED
23:40 timotimo so i make a stmts with all the .ast's; what do i do for empty ast's? i suppose i can just put a Nil there and ask the recipient of the Stmts to grep out Nils?
23:41 labster haven't you already lost by accepting my challenge?
23:42 masak labster: you said *less* not *not at all*. :)
23:42 jnthn timotimo: Nil sounds sane
23:42 tomyan joined #perl6
23:42 masak labster: ...and I'm going to bed soon...
23:42 jnthn timotimo: Though maybe produce it rather than grep it out.
23:42 dalek rakudo/nom: 224e81b | sorear++ | src/ (2 files):
23:42 dalek rakudo/nom: p6handletake is no longer needed either jnthn++
23:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/224e81b321
23:42 dalek rakudo/nom: 1dd39f2 | sorear++ | tools/build/create-jvm-runner.pl:
23:42 dalek rakudo/nom: fix test harness for jar mode
23:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1dd39f203b
23:42 jnthn timotimo: That may already be handled further up anyway
23:43 timotimo produce as in have a Var node for actual-Nil?
23:43 sorear nqp::foo means BEGIN QAST::Op.new.  sort of.
23:44 jnthn timotimo: Well, I mean it's probably better design to have things higher up fix the tree to include that rather than to put it in initially and expect other things to spot it and remove it
23:44 timotimo er ... i'm either not parsing or not understanding you correctly
23:45 timotimo you mean someone who actually wants a LoL and wants to have the Nils in there has to introspect beyond the Ast?
23:46 jnthn timotimo: I'm just saying that "grep out" sounded fragile, but I'm not completely clear what you're doing.
23:46 timotimo hm, maybe first i should ask a different question
23:46 timotimo does it ever make sense to have ;; inside a semilist?
23:47 timotimo if so, how is it represented? i thought adding a Nil to the LoL
23:47 timotimo a Nil or a ()
23:53 jnthn Pass all the range.t \o/
23:54 timotimo woop woop \o/
23:54 sorear jnthn: \o/
23:54 sorear jnthn: all of it, or just all the range.rakudo?
23:54 dalek rakudo/nom: 9a89c8e | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
23:54 dalek rakudo/nom: Implement "as Foo" coercion of params.
23:54 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9a89c8ede6
23:55 jnthn sorear: um, same as Rakudo on Parrot
23:55 jnthn Yeah, it's a .rakudo
23:55 sorear ok
23:56 jnthn Anyway, many of the fixes I've done going through the S02 tests were fairly generic, so I'm hopeful I've made a bite into our failing spectests
23:58 [Coke] i'll tell you in a few hours. :)
23:58 timotimo jnthn: so i will generate a Stmts of the results of the semilist's sub-asts. for now i will ignore empty parts in the semilist.

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

Perl 6 | Reference Documentation | Rakudo