»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by moritz on 3 May 2013.
jnthn 'night, #perl6 00:12
timotimo night jnthn!
sorear night! 00:13
00:16 jaldhar left 00:17 jaldhar joined
masak 'night, #perl6 00:18
sorear night masak 00:19
00:20 cooper left
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«===SORRY!===␤Unable to parse expression in argument list; couldn't find final ')'␤at /tmp/8jB_Zfsrbx:1␤------> c','d']); say $x.fields; say $x2.fields;⏏<EOL>␤ expecting any of:␤ method arguments␤ postfix␤ …
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;
camelia rakudo 49f111: OUTPUT«c d␤c d␤»
ssutch clone appears to be affecting the original object? 00:22
masak submits rakudobug 00:23
timotimo wow, it gets stranger and stranger 00:24
also: try :fields<c d> on for size :)
00:25 cooper joined, cooper left, cooper joined
ssutch clone is all confused, it also turns some arrays into arrays of arrays 00:25
.oO(wish i knew how to fix something like this)
00:26
timotimo look into src/core/Mu.pm, it's perl6 code that implements method clone 00:27
perhaps you can figure out what's causing the strangeness?
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
ssutch ok, thanks 00:30
trying that now
00:30 MrMeek left
colomon make spectest (.... blah ...) 00:42
Can't open perl script "./eval-client.pl": No such file or directory
timotimo i told you :) 00:46
01:33 < timotimo> tools/build/create-jvm-runner.pl
ssutch how does one get the "address" of a variable/attr in perl 6? 00:47
timotimo for what purpose? 00:48
there is .WHERE
r: say "foo".WHERE; 1.WHERE; Str.WHERE;
camelia rakudo 49f111: OUTPUT«-2943263␤»
timotimo r: say "foo".WHERE; say 1.WHERE; say Str.WHERE;
camelia rakudo 49f111: OUTPUT«-88674970␤-93913280␤2051176574␤»
ssutch to determine if two objects have the same address
timotimo there's also WHICH, what does that do again? 00:49
r: say "foo".WHICH; say 1.WHICH; say Str.WHICH;
camelia rakudo 49f111: OUTPUT«Str|foo␤Int|1␤Str␤»
timotimo ah, that's something else
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:50
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: github.com/rakudo/rakudo/blob/nom/...Mu.pm#L434 is not being called when it should
00:52 grondilu left
colomon gist.github.com/colomon/5828085 # my failed attempt just now to use create-jvm-runner.pl 00:52
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:53
timotimo no problem, colomon :) 00:54
ssutch im guessing nqp::iscont is checking if it's a container that should be copied
timotimo (personally, i just cp'd the file from tools/something/something)
ssutch maybe a parrot bug? nqp::iscont maps to a pirop github.com/perl6/nqp/blob/05231f54....nqp#L2090 00:58
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␤»
..rakudo 49f111: OUTPUT«c d␤c d␤»
01:03 xilo_ left, xilo_ joined 01:04 xilo_ left, xilo_ joined
ssutch well, here is where it's defined for rakudo: github.com/perl6/nqp/blob/609c1f70....ops#L2243 / added by jnthn github.com/perl6/nqp/commit/5f2911...ef0dc961d6 01:05
timotimo i'm not sure if iscont is what you think it is
ssutch er, nqp, not rakudo
timotimo "any non-6model type", so Arrays would be containers, Str would be containers ... i guess? 01:06
ssutch r: nqp::iscont('')
camelia rakudo 49f111: ( no output )
ssutch r: say nqp::iscont('')
camelia rakudo 49f111: OUTPUT«0␤»
ssutch r: say nqp::iscont((class X{}).new) 01:07
camelia rakudo 49f111: OUTPUT«0␤»
ssutch r: say nqp::iscont([]) 01:08
camelia rakudo 49f111: OUTPUT«1␤»
ssutch r: say nqp::iscont({'x'=>'v'})
camelia rakudo 49f111: OUTPUT«1␤»
01:09 xilo_ left 01:10 xilo_ joined
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«===SORRY!===␤Two terms in a row␤at /tmp/C8cnZ1_zDq:1␤------> class Foob { has @.fields; } ⏏my $f = Foob.new(:fields<a b>); my $attr␤ expecting any of:␤ scoped declarator␤ constraint␤ postfix␤ state…
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));
camelia rakudo 49f111: OUTPUT«Can not get attribute '@!fields' declared in class 'Foob' with this object␤ in block at /tmp/qPZxI_AtN6:1␤␤»
timotimo i think i'm going to bed now 01:15
ssutch 'night
timotimo i wish you the best of luck with your clone improvements :)
raiph ssutch++ # filing bugs 01:23
ssutch++ # looking into fixing bugs 01:24
timotimo found this: www.youtube.com/user/polishperl/videos
raiph ssutch++ # in first week of exposure to p6
ssutch \m/ 01:30
timotimo ... timotimo-- for shoving newcomers into the deep end :P 01:32
raiph ssutch: did you backlog the discussion of eqv?
ssutch raiph: i haven't
raiph timotimo++ # for knowing which newcomers that can swim
ssutchirclog.perlgeek.de/out.pl?channel=p...;summary=1 01:33
(then go back a day; click time at left of a line in summary to get to full log) 01:34
ssutch: timtoady started discussion of your use of eqv 01:35
ssutch reading it now
raiph it kinda went over my head; methinks it'll make sense to you though :) 01:37
ssutch thanks for pointing that out
raiph did you see irclog.perlgeek.de/perl6/2013-06-20#i_7224568 ? 01:39
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
or custom <eqv>
(writing a gist right now) 01:41
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?
ssutch i relatively like, and have used for 10 yrs python 01:47
r: gist.github.com/samuraisam/5828293 01:48
camelia rakudo 49f111: OUTPUT«eq: True␤eq list: False␤»
ssutch it doesn't matter if i define eq or eqv for Thing, eqv w/ lists w/ custom objects still turn up false 01:49
raiph i think that'll be because they aren't eqv; each list literal is distinct 01:50
ssutch r: [1,2] eqv [1,2] 01:51
camelia rakudo 49f111: ( no output )
ssutch r: say [1,2] eqv [1,2]
camelia rakudo 49f111: OUTPUT«True␤»
raiph ok, i'm wrong. happens rather too often ;)
ssutch: have you read S03:3292 ? 01:55
ssutch yes, but it's not all entirely obvious to me 01:56
it would indicate that eqv is not what i want for this purpose 01:57
r: gist.github.com/samuraisam/5828335 01:58
camelia rakudo 49f111: OUTPUT«eq: True␤eq list: True␤»
ssutch ^ i am using something like that 01:59
raiph oh! i just remembered. timtoady mentioned >>eq<< 02:00
did u see that?
ssutch hmm, i didn't 02:01
raiph start at irclog.perlgeek.de/perl6/2013-06-20#i_7224358 and read on
02:04 gdey joined
ssutch r: gist.github.com/samuraisam/5828335 02:04
camelia rakudo 49f111: OUTPUT«eq: True␤zeq list: True␤aeq list: True␤>>eq<< list: True␤»
ssutch interesting!
02:05 gdey left
ssutch r: gist.github.com/samuraisam/5828335 02:05
camelia rakudo 49f111: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/xhaODOgqCy:14␤------> ay "zeq list: ", [Thing.new(:attr<ab>)] ⏏zeq [Thing.new(:attr<ab>)];␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ s…
diakopter ssutch: is the (@aval == @bval) && necessary?
ssutch diakopter: it compares the length, becauze Zeq pukes on uneven arrays 02:06
raiph diakopter: i only just mentioned >>eq<< to ssutch
(which deals with the uneven lengths) 02:07
ooo, zeq is treated as a term
needs to be Zeq 02:08
ssutch yeah, i mistyped, i meant eqv
it appears, on the surface, that >>eq<< is what i want
raiph ssutchperlcabal.org/syn/S03.html#Hyper_operators 02:11
ssutch i've used @x>>.dostuff before, but >>eq<< never occurred to me
very interesting indeed!
02:12 BenGoldberg joined
raiph the thing pointed to by the big end is treated as a list, the pointed end an item 02:13
so @x>>.dostuff means @x is treated as a list/array, .dostuff as a singular thing (a method) 02:14
colomon raiph: @x>>.dostuff applies dostuff to the elements of @x. @x.dostuff applies it to @x itself 02:15
which I think is what you were trying to say. :)
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 :)
colomon: well, i've got an idea, but i'm just guessing :)
colomon I guess you can think of the >>. as going from big (array) to little (method)
02:16 tgt left
raiph right 02:16
colomon I suppose that's a good way to remember it. 02:17
there is also op<<@x for prefix operators
ssutch im going to dig into this clone issue more later 02:18
for now i just want to see some lines of 'ok' 02:19
benabik ok
colomon ok
(benabik++)
ssutch hah
lue r: my @a = 1,2,3; say @a».:<++>; # if only .:<> forms worked right now
camelia rakudo 49f111: OUTPUT«===SORRY!===␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at /tmp/PRsM9MjsIk:1␤------> my @a = 1,2,3; say @a».:⏏<++>; # if only .:<> forms worked right ␤»
benabik colomon++ # GMTA
colomon benabik: nah, I just copied you. :) 02:20
ssutch GMC
benabik colomon: "Only be sure to always call it 'research'." 02:21
colomon .U+2296 02:24
BenGoldberg r: (1.2.3)>>~:<++>
camelia rakudo 49f111: OUTPUT«===SORRY!===␤Confused␤at /tmp/VB5oZlprpD:1␤------> (1.2.⏏3)>>~:<++>␤ expecting any of:␤ postfix␤ dotty method or postfix␤»
colomon .u+2296
BenGoldberg r: "\u2296".say
camelia rakudo 49f111: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\u'␤at /tmp/QkWGPgwhSX:1␤------> "\⏏u2296".say␤ expecting any of:␤ statement list␤ prefix or term␤ prefix or meta-prefix␤ double quotes␤»…
benabik .u 2296
yoleaux U+2296 CIRCLED MINUS [Sm] (⊖)
BenGoldberg r: "\U2296".say
camelia rakudo 49f111: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\U'␤at /tmp/pDpwaZ_dWS:1␤------> "\⏏U2296".say␤ expecting any of:␤ statement list␤ prefix or term␤ prefix or meta-prefix␤ double quotes␤»…
colomon benabik++
benabik colomon: Process of elimination 02:25
BenGoldberg r: "\x2296".say
camelia rakudo 49f111: OUTPUT«⊖␤»
BenGoldberg r: "\x{2296}".say
camelia rakudo 49f111: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\x'␤at /tmp/PVUdhNjQ3l:1␤------> "\⏏x{2296}".say␤ expecting any of:␤ statement list␤ prefix or term␤ prefix or meta-prefix␤ double quotes␤»…
02:25 dayangkun left
BenGoldberg r: "\x2296".chars.say 02:25
camelia rakudo 49f111: OUTPUT«1␤»
colomon niecza> (set <a b c>) ⊖ (set <b c d>) 02:27
set(a, d)
dalek ecza: c536121 | (Solomon Foster)++ | lib/CORE.setting:
Add infix:<⊖> for set symmetric difference.
02:28
colomon sorear++ # make t/spec/S32-num/int.t works too! 02:29
ssutch in this test file: github.com/perl6/nqp/blob/master/t...ontainer.t should it be checking if nqp::iscont returns True for an array? 02:33
02:36 grondilu joined
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:40 jeff_s1 left 02:41 jeff_s1 joined
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
that sound right?
grondilu rn: say so [1, 2].all ~~ Int; 02:45
camelia rakudo 49f111, niecza v24-79-gcb6f20b: OUTPUT«False␤»
02:46 SamuraiJack joined
grondilu was expecting True here :/ 02:46
dalek ast: eb3daa3 | (Solomon Foster)++ | S32-num/int.t:
Refudge for JVM.
02:48
colomon grondilu: it's a junction, not an Int
rn: say 1 | 2 ~~ Int 02:49
camelia rakudo 49f111, niecza v24-79-gcb6f20b: OUTPUT«False␤»
grondilu oh yeah. I forgot about that
colomon actually, I'm not sure what the rule is. the right-hand-side autothreads, doesn't it?
rn: say 1 ~~ Int | Str 02:50
camelia rakudo 49f111, niecza v24-79-gcb6f20b: OUTPUT«True␤»
colomon .... no, that's not really autothreading, is it?
because that would be True | False
grondilu no, it's not autothread, since the rhs is a junction now 02:51
rn: say Int |Str ~~ 1
camelia niecza v24-79-gcb6f20b: OUTPUT«any(Bool::False, Bool::False)␤»
..rakudo 49f111: OUTPUT«any(False, False)␤»
grondilu is confused now
02:53 atroxaper joined
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:06
diakopter p6fart - that's a new one 03:07
ssutch if i run ./nqp from the directory it was built in, nqp runs 03:08
however if i run the full path, it gives that could not load oplib error
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
diakopter is that where `make install` installed it to?
ssutch it isn't make install'd anywhere 03:10
diakopter oh. I find it needs to be, for me anyways.
ssutch ok, i'll try, thanks
diakopter rakudo's Configure.pl has it install to a dir under the rakudo checkout
when it does gen-nqp and gen-parrot
ssutch ah, so it installs to nqp/install, which works fine for me 03:12
that works! thanks diakopter 03:14
diakopter :D 03:16
benabik wonders why nqp::continuationinvoke is needed: can't continuations be invokable? 03:18
diakopter :) 03:19
I had that discussion with sorear
it's just one way to do it, yes
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
bbiab& 03:21
benabik JVM would still support invocation spec, I'd think.
benabik is more seeking understanding than criticizing design, to be clear. 03:25
ssutch in awe of nqp 03:32
03:33 Chillance left 03:36 preflex_ joined, ChanServ sets mode: +v preflex_
ssutch is there any way to use gdb with nqp.ops? 03:36
03:37 preflex left, preflex_ is now known as preflex 03:38 dayangkun joined
benabik nqp.ops should become nqp.c, IIRC 03:56
gcc/gdb don't know about .ops files, they're parsed by ops2c to make .c and .str files. (Maybe more, I dunno) 03:57
03:59 btyler joined 04:05 btyler left 04:26 Psyche^ joined 04:31 Patterner left, Psyche^ is now known as Patterner 04:33 skids left
ssutch yeah, it looks like what i want to stop on is Parrot_repr_clone_p_p 04:37
04:50 jlaire joined
atroxaper Hello #perl6 ! Is there analog of `system command` in rakudo? 04:52
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␤␤»
ssutch well, `run`
sorear benabik: there's no invocation spec for "run this function"
sorear just got back from sandiego.pm. record turnout! (14) 04:55
which mayyyy have been higher than the nominal max capacity of the room
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.
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.
sorear benabik: the handler can't be a java function, it has to be a perl 6 coderef 04:57
I didn't want to write a whole bloody fake coderef just to make invocation syntax a little nicer
benabik sorear: Understanding dawns.
sorear++
05:01 birdwindupbird joined 05:07 kaleem joined 05:11 xilo_ left 05:24 sorear joined
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:24
05:26 BenGoldberg left
ssutch "C\:somewhere".path.chdir 05:28
moritz atroxaper: my $str = qx/some command/; 05:31
lue or qqx to do things like my $str = qqx/command $arg-i-want-to-use/; 05:32
ssutch neato 05:33
05:33 sisar joined
sorear (but don't do that, reparsing = bad) 05:34
atroxaper moritz, lue: thanks! But .path.chdir doesn't work. 05:35
ssutch yeah, i suppose not :p 05:36
perlcabal.org/syn/S32/IO.html#IO%3A%3APath
benabik I think simply `chdir 'directory'` works.
ssutch yeah
05:40 drin_m joined
atroxaper qqx/chdir C:\tmp/; say qqx/pwd/; # pwd says that i'm in previous folder. :( 05:41
ssutch nah, don't put chdir in qqx, just use it like a normal function: "say(chdir('C:\tmp'))" 05:42
labster is this a subtle hint for me to add .path.chdir? 05:43
ssutch >.>
atroxaper Wow! It works!
ssutch, benabik: many thanks!
benabik labster: I suppose it would make sense. $*TMPDIR.chdir 05:44
05:44 raiph left
labster it makes more sense for me today than before, because I restructured the internals of IO::Path last night. 05:46
sorear o/ labster 05:49
labster \o sorear
05:53 dmol joined
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:00
sorear hopefully it can be tested within nqp proper 06:02
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:03
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:05
moritz ssutch: you can also write ops that produce pir (or PIRT or whatever) without having to write a new op in C 06:06
ssutch im not sure how 06:07
moritz src/vm/parrot/QAST/Operations.nqp has many examples 06:09
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
is there an easy way to print a parrot_string_t 06:13
moritz in which language?
C?
ssutch yeah
moritz I think there's a static function that extracts a C string 06:15
ssutch Parrot_str_cstring 06:16
moritz aye
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
benabik Oh, wait, no. That uses a cstring. 06:18
Parrot_io_putps 06:19
06:21 dmol left
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
r: say nqp::iscont([])
camelia rakudo 49f111: OUTPUT«1␤»
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␤»
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:35
the reason for that is, contained containers (eg @.stuff) has no ContainerSpec to it, if it did, it would copy correctly 06:36
moritz I thought that routine returns decontainerize by default 06:37
(unless you add an 'is rw' to the routine definition)
sorear o_O
moritz r: say nqp::iscont( (sub { [] })())
camelia rakudo 49f111: OUTPUT«1␤»
sorear nqp::iscont([]) returns 0 in nqp but 1 on rakudo
should be 0 on both imo 06:38
benabik r: class C { has @!stuff; method m { say(nqp::iscont(@!stuff)) } }
camelia rakudo 49f111: ( no output )
moritz it seems I'm mixing up container levels
benabik r: class C { has @!stuff; method m { say(nqp::iscont(@!stuff)) } }; C.m
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␤␤»
benabik r: class C { has @!stuff; method m { say(nqp::iscont(@!stuff)) } }; C.new.m
camelia rakudo 49f111: OUTPUT«0␤»
sorear "cont" in the sense of nqp::iscont only refers to scalar containers
arrays are containers in a different sense of the word
ssutch ah ok
benabik Yeah, it's defiantly the attribute and not method stuff.
ssutch so only if it were $.stuff
moritz sorear: but in Perl 6, [] really is a array in a scalar container, no?
sorear so it feels buggish that nqp::iscont([]) returns 1
moritz (which is how it is distinguished from a flattening array) 06:39
sorear moritz: ah, I remember that now
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
ssutch r: my @f = [1,2,3]; say nqp::iscont(@f) 06:40
camelia rakudo 49f111: OUTPUT«0␤»
ssutch well, crap, there goes my hypothesis
moritz note that you created is a array of an array
ssutch my @f = 1,2,3; say nqp::iscont(@f) 06:41
r: my @f = 1,2,3; say nqp::iscont(@f)
camelia rakudo 49f111: OUTPUT«0␤»
ssutch i found that in this file, on this line: github.com/rakudo/rakudo/blob/nom/...Mu.pm#L434
labster r: my @f = [1,2,3]; say @f.perl; my @f = 1,2,3; say @f.perl;
camelia rakudo 49f111: OUTPUT«Potential difficulties:␤ Redeclaration of symbol @f␤ at /tmp/iqDK0U105u:1␤ ------> my @f = [1,2,3]; say @f.perl; my @f ⏏= 1,2,3; say @f.perl;␤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;
camelia rakudo 49f111: OUTPUT«Array.new([1, 2, 3])␤Array.new(1, 2, 3)␤»
ssutch if i comment out the if nqp::iscont($attr_val), then .clone works properly
github.com/rakudo/rakudo/blob/nom/...Mu.pm#L434
r: gist.github.com/samuraisam/5829338 06:45
camelia rakudo 49f111: OUTPUT«a b␤c d␤»
ssutch ^ observe
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
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;
camelia rakudo 49f111: OUTPUT«===SORRY!===␤'MyTest' cannot inherit from 'MyMu' because it is unknown.␤at /tmp/ex7SLm4aqa:1␤------> ␤»
benabik Oh, d'oh. Okay, officially too tired to code.
ssutch one sec, ill change it 06:47
r: gist.github.com/samuraisam/5829338 06:48
camelia rakudo 49f111: OUTPUT«my mu␤a b␤c d␤regular mu␤a b␤c d␤»
ssutch [derp: that was incorrect] 06:49
r: gist.github.com/samuraisam/5829338
benabik ssutch: You fixed the bug! Congrats! ;-)
camelia rakudo 49f111: OUTPUT«my mu␤a b␤c d␤regular mu␤c d␤c d␤»
ssutch judging by moritz and sorear description of nqp::iscont - that line isn't necessary anyway? 06:51
06:55 domidumont joined
sorear I think it's necessary to avoid accidental deep copying 06:58
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
ought to return True, but I think your patch breaks that
ssutch r: gist.github.com/samuraisam/5829338 07:01
camelia rakudo 49f111: OUTPUT«True␤» 07:02
ssutch is that what you meant?
07:05 rindolf joined 07:10 snoopy left 07:15 fhelmberger joined 07:16 domidumont left
ssutch if i run `make test` - is that the right thing to do to test the change? 07:17
07:17 domidumont joined
hoelzro morning #perl6! 07:21
07:23 FROGGS joined 07:25 athomason left
ssutch mornin' 07:26
07:26 athomason joined
labster ssutch: make spectest 07:27
ssutch im running 'stresstest' right now 07:28
labster "make test" just tests to make sure things like "ok 1+1, 2;" work.
FROGGS which can be much... that is one thing I have learned when starting to work on v5 07:34
07:52 erkan joined, erkan left, erkan joined 07:54 ssutch left 07:55 erkan left 08:00 kivutar joined
sorear morning FROGGS 08:05
FROGGS morning sorear 08:06
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 99-bottles-of-beer.net?
FROGGS wow, that's nice
hoelzro: well volunteered! :P 08:09
hoelzro heh
sorear I think kst has one 08:10
FROGGS I believe the Perl 5 one is still unbeatable
sorear oh, I was thinking of github.com/Keith-S-Thompson/fizzbu...zzbuzz.pl6 08:11
got my toy problems mixed up :)
FROGGS: sadly, cuids are used in a million places in the code :[ 08:12
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.
FROGGS ahh, now I see the problem 08:15
08:24 sqirrel joined, ssutch joined
ssutch is there a way to augment Mu? 08:26
08:26 drin_m left
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?
ssutch r: use MONKEY_TYPING; augment class Mu { method clone(*%twiddles) { callsame; } }; 08:27
camelia rakudo 49f111: OUTPUT«===SORRY!===␤Package 'Mu' already has a method 'clone' (did you mean to declare a multi-method?)␤at /tmp/UWbOJ0FzcU:1␤------> ␤»
nwc10 masak: there's no announcement yet on planetsix.perl.org/
hoelzro also, why split up the dev work across the JVM/MoarVM implementations instead of focusing on a single target (at least for now)
?
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
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
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:30
ssutch also the jvm is rad 08:35
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
hoelzro so where's the focus now? 08:39
moritz getting rakudo to run on the JVM seems to be the main focus (at least of jnthn and sorear) 08:40
and diakopter and JimmmyZ work on moarvm, it seems
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.
hoelzro sorear: oh, good point 08:43
I'm not trying to be confrontational, I'm just curious =)
I had an idea on the way to work this morning
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.
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
raiph: I myself have interest in working on it 08:45
but I can't get it to compile
(so that's step 1 for me ;) )
sorear raiph: tokuhirom?
tokuhirom ?
sorear hoelzro: that's the party line now, actually
hoelzro ok, cool
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
...so I needed a POSIX module, which I started
...which has unfortunately been halted by a problem with NativeCall/parrot
raiph aiui tokuhirom is surely one, but no, i didn't mean tokuhirom
hoelzro I'd also like to see some focus on tooling/packaging 08:47
sorear hoelzro: don't assume you can fork
hoelzro but I should point some of those fingers back at myself, considering how many half-finished Perl 6 tool/package fixes I have =)
sorear: why not?
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."
sorear mono doesn't export a fork wrapper and will crash and burn if you invoke it yourself using p/invoke
i think jvm is the same way
hoelzro well, shit. 08:49
moritz but why? shouldn't the processes be independent?
hoelzro there's no thread API yet, is there?
moritz (or do those VMs use shared memory?)
hoelzro I can't remember how threads/fork interact on Linux 08:50
I never use them together =/
I think there's a pthreads policy you can set or something?
08:50 kresike joined
kresike hello all you happy perl6 people 08:50
moritz 's only experience with threads was on perl 5 (around 5.8.8 or so), and it was awful 08:51
so bad that I haven't touched threads since then :-)
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
sorear which is what you want if you're doing the fork/exec dance 08:54
because the other threads shouldn't be surprised by a fork
hoelzro so the parent will be ok, but the child may be hopelessly screwed unless its exec'ing
sorear exactly
especially if this is something like the JVM that spawns a dozen housekeeping threads at startup time 08:55
hoelzro right
there's no standard threading API for Perl 6 yet, is there?
sorear I'd suggest using threads instead, but that has a small problem
there's a standard, but it's insane and nobody implements it
niecza has a Threads module, which is the closest thing to an implemented standard we have now 08:56
but it's much lower-level, and actually exposes too many details of the .net thread system
jnthn morning o/ 09:25
FROGGS morning jnthn
sorear morning jnthn
nwc10 morning jnthn 09:26
sorear jnthn: my current efforts: optimization of output size (to the extent it can be done without sacrificing other performance); --target=jar 09:28
jnthn sorear: OK 09:29
Sounds like nice things to work on.
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...
FROGGS: Though don't know why that'd be especially slow. 09:39
FROGGS: I presume you're meaning "infixes that introduce new operators"
sorear heh
reminds me of a problem I had with niecza once
FROGGS jnthn: yes, like infix:<P5==>(\a, \b) ...
sorear the setting had lots of operator defs, and it was going quadratic because of operator nesting... 09:40
FROGGS hmmm
sorear I think I modified it to collapse stacks of simple operator defs using role summation
might be worth trying that in rakudo
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
FROGGS sorear++ \o/
cool!
sorear that met about seven hours ago 09:42
record turnout (at least for my time with the group) (14)
FROGGS that is pretty awesome... I should go to the next Berlin.pm meeting
we are usually about 5 or six ppl 09:43
sorear how cool would a rakudo java applet be?
jnthn For something like try.perl6.org? 09:44
sorear yes
jnthn um, though that doesn't seem to exist now 09:45
So yes, it'd be cool to have
nwc10 sorear: my opinion for "how cool" is "awesome" 09:49
although how easy is it to test that the client's JVM version is new enough not to have bugs?
the ability of NQP-JVM to SEGV the JVM could sour people's experience 09:50
FROGGS jnthn / sorear: look at that: gist.github.com/FROGGS/beeb062bfb8c9593d3ff 09:52
49 seconds for ten lines of code is a bit much, right?
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
FROGGS jnthn: yesh
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
sorear: 1825 5536 9598405 infix.pir 09:55
so it is 9MB in size O.o
jnthn o.O
sorear wow, it's almost as big as CORE.setting.class
FROGGS -rw-r--r-- 1 froggs froggs 9,2M Jun 21 11:50 infix.pbc
-rw-r--r-- 1 froggs froggs 9,2M Jun 21 11:49 infix.pir
-rw-rw-r-- 1 froggs froggs 361 Jun 21 11:44 infix.pl
09:56 ssutch left
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
jnthn me too
.oO( A huge blob of cheese )
sorear jnthn: Why is the serialization format segmented? 09:58
with explicit byte offsets/counts 09:59
FROGGS btw: there is one line that is almost 9MB, nqp_deserialize_sc "9MB hex string", ...
(in the pir file)
nwc10 FROGGS: do you mean "hex" or base64?
FROGGS nwc10: looks more like base64 now you are saying it 10:00
nwc10 was just checking :-)
FROGGS nwc10++ # sanity checks
jnthn / sorear: I added an interesting comment: gist.github.com/FROGGS/beeb062bfb8c9593d3ff 10:02
I'd say there is some recursion going on
jnthn sorear: Segmented? It's just a bunch of different tables. 10:03
sorear: Well, aside from a couple which are more stream-y
sorear FROGGS: that recursion is expectedish
FROGGS k
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
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
another question: why $!do? why not just make Sub have a CodeRef repr? 10:09
jnthn Sub has things besides the underlying VM-level code reference. 10:10
(signature, etc.)
Also need to be able to mix in to it
So it needs to be a P6opaque
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
jnthn The level of indirection is also used to make .wrap(...) work
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...
uh, feels
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.
I think
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:13
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) { ?
jnthn And then it will be in something available contextually
%?COMPILING iirc
All the command line options end up available through that 10:15
10:15 rindolf left
sorear so I have to add a full command line option? 10:15
jnthn Well, how do you want to have it specified? 10:16
Adding a command line option is only a one line addition...
sorear would like something more visible than %*ENV but less visible than --foo, somthing along the lines of -fomit-frame-pointer
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
jnthn uh, sorry, ti's %*COMPILING
%*COMPILING<%?OPTIONS><foo> 10:18
sorear I'll do the %?OPTIONS way for testingt
jnthn sorear: Maybe we should do something like the JVM does, where they get a -X prefix
sorear but if this ever makes it into a deployed version, I'd like a polishier way
jnthn: gcc does the same with a -f prefix 10:19
10:19 woolfy1 joined, dayangkun left, woolfy left
masak good afternoon and top of the summer to you, #perl6 10:21
FROGGS hi masak 10:22
jnthn glad midsommar, masak
sorear greetings masak
atroxaper Hello masak! 10:24
10:25 atroxaper left
masak yes, glad midsommar :) 10:26
sorear # Responsible for handling issues around code references, building the 10:28
# switch statement dispatcher, etc.
jnthn: commentfossil?
timotimo hello folks 10:29
masak oh hai timotimo 10:30
grondilu wonders why there is no linear algebra module yet 10:31
10:32 dayangkun joined 10:33 woolfy1 left, woolfy joined
jnthn sorear: yes 10:36
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
jnthn KnowHOWREPR.c(88) : error C2065: 'PARROT_ALIGNOF_void' : undeclared identifier 10:38
nwc10 < Awsome
jnthn spec.align = ALIGNOF1(void *); being the line in question 10:40
10:42 dayangkun left
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:44
jnthn sorear: Anything htat's easy to search for is fine 10:45
/*FOR_STAGE0*/ is shroter... :) 10:46
Though discard clearer in intent i guess
11:01 rindolf joined
sorear goes with FOR_STAGE0, being clearer IMO 11:02
masak relevant for perl6/book -- these guys seem to have a success story: audrey.fmf.uni-lj.si/hott.html
sorear that came up in #haskell-blah earlier today 11:05
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
LINK : fatal error LNK1181: cannot open input file 'C:\consulting\rakudo\install
\bin\libparrot.lib'
wtf.
moritz is there a newline in that path?
jnthn no, just console wrapping
moritz ok
dalek p: 2d3a93c | sorear++ | src/vm/jvm/ (2 files):
Use small integer identifiers for internal references to coderefs
11:12
11:12 xinming left
FROGGS jnthn: does the file exist? and is there space on your hdd? 11:13
(sorry if you are annoyed about 1st level questions :o)
jnthn FROGGS: No, and it's not a space issue
jnthn tries backing off to the Parrot version he had before 11:14
ouch, even going back to the 5.2.0 fails :S 11:15
FROGGS O.o
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 >_<
FROGGS jnthn: is it possible that there are still processes hanging around that lock files?
jnthn FROGGS: Already looked for that one...
I sure don't see any 11:16
And that install directory was created anew anyway
FROGGS but there must be an error msg when it fails to build libparrot.lib
jnthn It seems that there is one in install/lib 11:17
lizmat good postnoon #perl6!, quite a lot of backlog to go through
FROGGS hi lizmat
jnthn And fixing the path in the makefile just leads to a load of other linker errors 11:18
colomon lizmat! 11:19
FROGGS jnthn: does that look suspicious? github.com/parrot/parrot/commit/28...993a31faa3
masak r: for 'oh', 'liz' Z 'hai', 'mat' { say "$^a $^b" }
camelia rakudo 49f111: OUTPUT«oh hai␤liz mat␤»
masak :) 11:20
tadzik wait, why the newline
oh
masak zip === transpose
sorear timotimo: this is an unrelated issue
timotimo: i'm replacing strings with numbers
jnthn FROGGS: Not really
FROGGS k
timotimo oh, the cuid thing, righto
11:22 xinming joined
jnthn All I wanted to do was check that the sort that I got working on JVM didn't break it for Parrot. 11:22
timotimo obviously your sort made the build process go belly-up. great! 11:23
:P
put it up on a branch and i'll try to build it?
i've got a few cycles to burn
colomon your sort can't be trusted around parrots! 11:24
colomon apologies, but his head just started filling up with horrible plays on words 11:25
dalek p: f18cb70 | sorear++ | src/vm/jvm/ (4 files):
And so we no longer need list_b.
jnthn sorear++ 11:29
That should save some time.
lizmat github.com/perl6/specs/issues/56 .exists and .delete are internal methods and should be renamed 11:32
jnthn :( 11:33
lizmat jnthn: is that about .exists ?
jnthn yeah 11:34
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:35 atroxaper joined
lizmat are you worried about performance effects of using :exists rather than .exists ? 11:35
jnthn No
lizmat or are you worried about having to type .exists_at_key
jnthn I just find .exists(...) more natural somehow 11:36
I don't think renaming it will do much besides cause disruption.
Same with delete 11:37
lizmat r: my %h=a=>1,b=>2; say %h.exists(<a b>)
camelia rakudo 49f111: OUTPUT«False␤»
masak <jnthn> I don't think renaming it will do much besides cause disruption.
+1
I can see this being a "heart in the right place" action.
but it will cause ecosystem havoc.
lizmat aka, it is too late to change this? 11:38
sorear github.com/sorear/niecza/blob/mast...ting#L2009
>.>
masak at the very least there should be a veeeery long deprecation cycle.
lizmat in P6 currently, that would be 6 months ?
masak I'm hard-pressed to think of anything non-trivial I've written that didn't use .exists or .delete
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.
masak it would all have to be revisited and rewritten. 11:39
lizmat "it" being core, or ecosystem ?
jnthn ecosystem, I presume 11:40
tadzik entire ecosystem rewritten! /o\
FROGGS core is no problem, nor is roast
jnthn Anyway, if we must rename it, exists_key is better than exists_at_key 11:41
Seems that at some point, libparrot.lib that goes with the libparrot.dll stopped getting installed.
However, I didn't notice this because I had one copied there by some Parrot version that did so. 11:42
Copying that manually into place seems to fix the build.
FROGGS so it is just an importlib?
jnthn Yeah
But it kinda matters.
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.
My previous was a 4.10.0...
lizmat r: my %h=a=>1,b=>2; say %h.exists(<a b>) # nobody worried about this silently failing ?
camelia rakudo 49f111: OUTPUT«False␤»
FROGGS jnthn: this? github.com/parrot/parrot/commit/fa...b99e1394c2 11:44
jnthn: no, nvm 11:45
but I guess one of the commits of rurban six months ago is it 11:47
11:53 kivutar left
dalek kudo/nom: d058373 | jnthn++ | src/ (4 files):
First pass at making sort work on Rakudo JVM.
11:55
11:57 potatogim left
lizmat fwiw, I've added the above comments to github.com/perl6/specs/issues/56 11:57
11:57 potatogim joined
masak potatogim: 오, 당신은 한국이다! 11:59
lizmat trying to move on to something else
12:00 potatogim is now known as potatogim_
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:01
12:02 potatogim_ left
jnthn While loop.t fails :) 12:02
masak jnthn: I find it difficult to judge where we are on the S-curve.
jnthn And while.t. What's with these...
masak which probably means that I should download rakudo-jvm and see for myself. 12:03
or even join in the fun and make more spectests pass :)
jnthn masak: Well, we a pass a handful more spectest files than we regress. So somewhere in the middle of it, I guess :) 12:04
masak in the *middle*!? 12:05
that's far better than I assumed.
12:06 mikemol joined
masak mikemol! \o/ 12:06
nwc10 masak: fear the combination of jnthn and sorear 12:07
sorear Has anyone actually used #?rakudo.jvm yet? :)
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.
sorear hugs nwc10
oops, I broke the nqp build
jnthn oh noes! 12:09
sorear seems having extra coderefs in the coderef heap was not as harmless as thought
jnthn sorear: Extras? Oops.
sorear: Yeah, it takes that list and then shoves all the closure clones after them. 12:10
sorear: Then uses the indexes.
nwc10 oh yes! 12:11
java.lang.IndexOutOfBoundsException: Index: 146, Size: 142
sorear nwc10: yep, that's the error 12:13
testing a fix 12:14
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
now I'm passing in the prefix length so we can do it a little properer 12:15
masak nwc10: Rakudo compiler releases don't announce on planetsix; only on p6c. see docs/release_guide.pod 12:20
nwc10: Rakudo Star releases announce pretty much everywhere.
nwc10 masak: aha, I (obviously) didn't realise. 12:21
lizmat maybe an exception would be in place because of the JVM announcement?
it should whet people's appatities
nwc10 I think it better to wait for the "all the spectests pass" blog post
lizmat *appetites
dalek p: c51de3f | sorear++ | src/vm/jvm/ (3 files):
Debreak build; need to pass coderef heap size to deserialize so a proper prefix can be taken
12:22
p: 8c2ec14 | sorear++ | src/vm/jvm/ (4 files):
Use small-integers to find mainlineQbid, entryQbid, deserializeQbid, loadQbid
sorear now the build succeeds but t/serialization/* is failing
masak +1 on wait for the "all the spectests pass" blog post 12:23
which, as far as I can see, won't be too long a wait.
sorear oh, because I changed the semantics of nqp::deserialize 12:24
oops
jnthn sorear: You could have "null" mean "take the list from the currently executing compilation unit" or so?
sorear: And then if a coderef list is passed in, use that?
sorear jnthn: need to add a long too 12:26
reasonable to change the tests to add the long?
(would be ignored if passing your own list)
12:27 raiph left, JimmyZ joined
jnthn sorear: Can we not store that on the compunit? 12:28
sorear jnthn: you mean as another method?
jnthn Yeah
remember nqp::deserailize is API
If you change the tests you break it on Parrot
12:29 bruges left
sorear tests that. 12:34
jnthn afk for a bit 12:35
12:35 btyler joined 12:40 chinaXing joined 12:41 lizmat left 12:43 pr_ joined
pr_ Hello, I can't find any info on the "..^" operator. Could someone please explain what it stands for? 12:43
dalek p: cda5cc2 | sorear++ | src/vm/jvm/ (3 files):
Let's try that again, this time without breaking the API.
sorear pr_: .. exclusive on the right
0..^10 is p6ese for [0,9) 12:44
nap&
(clean build succeeds and passes all tests)
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!!
yoleaux 20 Jun 2013 16:48Z <diakopter> JimmyZ: I keep missing you by less than an hour :/
[Coke] masak: It's far too late, but the parrot 5.3.0 contains a fix to building with spaces in the path.
[Coke] catches up. yay. 12:48
12:48 btyler left
JimmyZ pr_: just print $_, you will known it, I think 12:50
Timbus pr_, the ^ operator means 'up to' 12:51
r: say ^4
camelia rakudo d05837: OUTPUT«0..^4␤»
JimmyZ r: say eager ^4 12:52
camelia rakudo d05837: OUTPUT«0 1 2 3␤»
Timbus from zero up to 4
JimmyZ r: say eager 1..^4
camelia rakudo d05837: OUTPUT«1 2 3␤»
JimmyZ r: say eager 1..4
camelia rakudo d05837: OUTPUT«1 2 3 4␤»
JimmyZ r: say eager 1^..4 12:53
camelia rakudo d05837: OUTPUT«2 3 4␤»
masak [Coke]: :)
[Coke]: nqp and Parrot seemed to both advance on that particular fix, so in the end I had to bump Parrot. 12:54
took me a while to figger it out, is all.
sorear: surely you meant [0,10)
pr_ got it: for $ss ..^ $ss + $days-in-month means "for <value of $ss> up to <$ss + $days...>". Thanks to all. 12:58
[Coke] jnthn: did you eventually get a build working on win32 with latest nqp/parrot ? 12:59
12:59 konundra left
masak pr_: yes, up to but excluding. 13:00
[Coke] hopes he didn't break the win32 build. :(
masak [Coke]: I think he did.
[Coke] \o/ 13:01
13:01 dmol1 joined 13:04 rindolf left 13:05 rindolf joined 13:08 konundra joined
[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
13:08 pr_ left
[Coke] (the machine it was on slept while I did) 13:08
13:14 rindolf left, rindolf joined
colomon [Coke]: yeah, yesterday I was having trouble keeping up with the commits, they almost came faster than I could build rakudo! 13:17
13:18 ajr joined 13:19 ajr is now known as Guest44918, Guest44918 is now known as ajr_
colomon needs to figure out how to write < and > in a <code> block for a blog post. 13:19
JimmyZ &lt; &gt; 13:20
colomon JimmyZ++ 13:21
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:22
[Coke] I write snippets of html all the time. :P 13:23
13:23 rindolf left, fhelmberger left 13:24 rindolf joined
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.
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.
I think this happened to me in earnest after I embraced Markdown.
[Coke] I hate markdown. :) 13:28
"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.
tadzik see also: ORMs :P 13:30
I'm starting to hate markdown since I'm tasked with "hey, could you turn that HTML into markdown?"
I turned from a markdown evangelist to "what the hell is wrong with html" 13:31
JimmyZ we need markup!
13:32 btyler joined
PerlJam ... and that's why all sixers should use pod6 13:32
:)
[Coke] tadzik++
PerlJam: like... in the specs?
nwc10 does pod6 do tables?
JimmyZ nwc10: yes, see S26
tadzik nwc10: yep, it's even implemented :) 13:33
nwc10 for which formats? HTML? Plain test? Man pages?
tadzik Pod is quite nice at tables
13:33 dmol1 left
tadzik uh, I'm not sure what you mean 13:33
13:33 rindolf left
PerlJam Is there a feature matrix for pod6 to show what is and isn't implemented? 13:33
tadzik I don't know about formatters 13:34
13:34 rindolf joined
tadzik but they're parsed alright 13:34
PerlJam: none that I know of
nwc10 what formatters exist is more what I was wondering about
PerlJam nwc10:Pod::To::HTML exists
tadzik and ::To::Text, which is installed with rakudo 13:35
the latter runs when you do perl6 --doc <file>
PerlJam and I started on Pod::To::LaTeX, but didn't get very far.
tadzik you can run the former with --doc=HTML
13:39 skids joined 13:46 chinaXing left 13:48 kaleem left
Ulti is there a results page somewhere for perl6-bench so that I don't have to do it myself? 13:53
13:55 rindolf left, rindolf joined 13:58 atroxaper left
colomon loliblogged: justrakudoit.wordpress.com/2013/06/...perations/ 14:01
14:01 bluescreen10 joined
JimmyZ colomon++ 14:02
14:04 rindolf left, rindolf joined
FROGGS colomon++ 14:04
pmichaud colomon++ 14:05
14:13 ztt_ joined 14:14 benabik left, benabik joined
[Coke] is now back up to S02! 14:17
14:17 rindolf left, rindolf joined 14:18 tgt joined, xinming left 14:19 xinming joined
[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:21
14:25 rindolf left, rindolf joined
[Coke] jnthn: github.com/rakudo/rakudo/commit/0f...aee7ac965f 14:31
Is there any way someone just using nqp could tell that one of those wasn't going to work everywhere? 14:32
14:33 broquaint joined
kresike bye folks 14:38
14:38 kresike left 14:42 rindolf left, rindolf joined 14:46 PacoAir joined 14:48 colomon_ joined, colomon left, colomon_ is now known as colomon 14:49 colomon_ joined, colomon left, colomon_ is now known as colomon 14:50 Vlavv joined 14:57 benabik left, domidumont left 15:00 colomon left 15:01 rindolf left 15:02 rindolf joined 15:04 benabik joined 15:23 rindolf left 15:24 rindolf joined 15:27 JimmyZ left 15:29 FROGGS left
[Coke] S12... 15:32
15:33 daxim left, potatogim joined 15:34 ajr_ left
[Coke] Unhandled exception: Wrong number of arguments passed; expected 1..1, but got 0 15:38
15:39 rindolf left 15:40 rindolf joined 15:41 potatogim left
[Coke] r: say Pattern.WHAT] 15:44
camelia rakudo d05837: OUTPUT«===SORRY!===␤Unexpected closing bracket␤at /tmp/aZx3mHQ5UM:1␤------> say Pattern.WHAT⏏]␤»
[Coke] r: say Pattern.WHAT
camelia rakudo d05837: OUTPUT«===SORRY!===␤Undeclared name:␤ Pattern used at line 1␤␤»
[Coke] from S32-Basics. Is that still a thing?
r: class A does Pattern {} ; say A.new.perl; 15:45
camelia rakudo d05837: OUTPUT«===SORRY!===␤Unable to parse class definition␤at /tmp/QG46DIVYsP:1␤------> class A does ⏏Pattern {} ; say A.new.perl;␤ expecting any of:␤ statement list␤ prefix or term␤ prefix or meta-prefix␤ gene…
15:45 snearch joined 15:47 chayin joined
masak the S32 synopsis are sometimes just making stuff up. 15:48
es*
benabik s/S32 // ;-) 15:49
15:49 jaldhar left
masak remind me, what was Pattern meant to do? 15:49
15:50 sisar left 15:52 atroxaper joined 15:53 chayin_ joined 15:54 chayin left 15:55 SamuraiJack left, vk joined 15:59 rindolf left 16:00 rindolf joined 16:01 daniel-s_ joined 16:03 FROGGS joined 16:09 kaleem joined 16:12 panchiniak_ joined 16:16 ztt_ left, rindolf left
dalek p: eba21ca | sorear++ | src/vm/jvm/ (5 files):
Use qbindex instead of cuid for finding sub outers

We're no longer looking up cuids for any reason outside stage0, and we're no longer using them at all outside of a single dynamic-compilation case in NQP::World and Perl6::World. So don't even bother emitting them when precompiling.
16:16
16:17 rindolf joined, vk left
FROGGS sorear++ 16:23
16:23 census joined
FROGGS is there a (little) performance gain through this? 16:23
sorear Not that I can measure 16:26
FROGGS k 16:27
I'm still trying to hunt down my slowdown :/
16:27 rindolf left 16:28 rindolf joined
sorear FROGGS: gist.github.com/sorear/5832444 btw 16:31
16:31 kaleem left
sorear jnthn: Are the JVM and Parrot serialization formats kept compatible? 16:32
diakopter sorear: I'm not certain but I think they're not identical 16:35
sorear already diverged? 16:36
sorear wonders which one docs/serialization_format.markdown describes :) 16:37
16:42 domidumont joined 16:47 kaleem joined 16:56 raiph joined
FROGGS sorear: that is pretty cool 17:01
17:02 birdwindupbird left, xinming left 17:03 xinming joined 17:10 spider-mario joined 17:13 ajr joined, ajr is now known as Guest51746, Guest51746 is now known as ajr_ 17:15 xilo_ joined 17:16 dmol joined
pmichaud lists.parrot.org/pipermail/parrot-d...07489.html # uhhhhhh... yeah. 17:17
I recommend we make thoughtful, deliberate responses here and not anything knee-jerked. 17:18
17:18 xilo_ left
pmichaud or perhaps we just don't respond much at all. 17:19
17:19 xilo_ joined, colomon joined
moritz my response would boil down to "so far we haven't planned to abandon parrot. Does parrot abandon us?" 17:19
PerlJam moritz++
FROGGS pmichaud: I'd just like to know what exactly is the future and the goals of parrot
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.
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:22
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.
Let's let other Parrot folks have a chance to respond and hash it out first.
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.
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.
PerlJam FROGGS: I asked a similar question to duekleto a couple of weeks ago: irclog.perlgeek.de/parrot/2013-06-07#i_7169536
diakopter pmichaud: he says he wants parrot to succeed independently of rakudo 17:26
PerlJam note his cryptic non-response
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
FROGGS PerlJam: I really wish them to succeed, whatever that means 17:28
bbl
diakopter pmichaud: he directly says that things rakudo depends on will be removed
from parrot, if the core developers think they're unnecessary
note, he is the only core developer the past 12 months
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
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
moritz pmichaud: got a link?
pmichaud 17:25 <PerlJam> FROGGS: I asked a similar question to duekleto a couple of weeks ago: irclog.perlgeek.de/parrot/2013-06-07#i_7169536
diakopter moritz: the one PerlJam gave above?
nwc10 it's not clear to my mind that at this point it *needs* a reply
moritz (which worked oh-so-great when allison was leading parrot, right)
PerlJam you can start reading from the top of the page, there wasn't much discussion
nwc10 or that any reply is better than "discretion is the better part of valour" (adjust spelling as desired)
pmichaud nwc10: yes, that's what I'm thinking. Let's not reply hastily, and perhaps not at all. 17:31
[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"
masak +1 to not replying
"Parrot is a VM for all dynamic languages except Perl 6" -- so tell me again, what other languages do run on Parrot? 17:33
:)
pmichaud I don't think we need to nit that point.
moritz masak: quoting dukeleto, you have to find out yourself 17:34
PerlJam masak: winxed :)
moritz s/quoting/paraphrasing/
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"
PerlJam diakopter: heh!
benabik diakopter: I tend to pronounce it win-zed. 17:36
17:36 kaare_ joined
FROGGS sorear / jnthn: this is it: github.com/rakudo/rakudo/blob/nom/....nqp#L3595 I just commented it out 17:36
moritz pronounse it "winksed"
pmichaud win-exed
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
pmichaud I won't make it anything official, it's just a general musing.
nwc10 I always thought that it was win-X-ed
not sure why
PerlJam winxed.net will tell you all you need to know.
nwc10 maybe I'd heard the breifing
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
he wants to break rakudo on parrot and explore new directions with parrot
dalek rl6-roast-data: 961697b | coke++ | / (3 files):
today (automated commit)
rl6-roast-data: 523b184 | coke++ | / (3 files):
First run of rakudo.jvm
sorear FROGGS: ahhhhh....
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
sorear FROGGS: that makes perfect sense
moritz decides not to reply after all 17:39
[Coke] sorear, jnthn: ^^
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.
sorear [Coke]: danke :D :D
[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
pmichaud diakopter: fair enough, I think I have no problem with that.
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.
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.
diakopter yeah
pmichaud we've been prepared for a fork if needed for some time.
[Coke] PerlJam: I don't think that's necessary.
masak PerlJam: I like that suggestion.
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
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
so, here's my musings/reaction
(more)
PerlJam [Coke]: btw, does this mean that the sixparrot branch can be considered a "failed experiment"?
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
nwc10 but he seems to have a better idea of what he wants than anyone else
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.
[Coke] PerlJam: I declared it a failed experiment as soon as I found out about moarvm.
PerlJam [Coke]: gotcha. 17:44
masak pmichaud: +1
diakopter nwc10: the bulk of the non-cage-cleaning are rurban's, but he's no longer with the projrect
nwc10 diakopter: I wasn't aware of that. I'm happy to be wrong on that basis
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.
nwc10 yes, agree
masak aye.
pmichaud io_branch also merged in the last year -- that wasn't dukeleto, iirc
diakopter see what I wrote just above
sorear Have we updated parrot at all since they broke IO? 17:45
masak sorear: yes, we're on latest.
[Coke] Yes. we just pulled in the latest version for this release.
(to get the build fixes.)
pmichaud I don't think that io_branch qualifies as "cage cleaning"... but again, it's not relevant to my thoughts on the topic.
diakopter pmichaud: I didn't say that was cage cleaning
I said it was non-cage-cleaning
dalek kudo-star-daily: 7616099 | coke++ | log/ (5 files):
today (automated commit)
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:46
PerlJam (and dalek does most of the talking on #parrot :) 17:47
masak and it's mostly about Rakudo JVM...
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.
diakopter pmichaud: no; I was making a much stronger statement about that being the case for a year, excluding rurban
pmichaud diakopter: okay. 17:48
17:52 kaleem left
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
i have no idea what kind of thing nqp offers for memory management like that
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
timotimo i thought about that at first, too, but i don't have much of an overview yet
sorear lapack?
diakopter oh, native-typed.
timotimo lapack gives me lots of linalg stuff, too, right? 17:55
sorear yes
colomon diakopter: you'd do it the other way, and have the C (or whatever) code create the array.
jnthn sorear: I have been treating the serialization format as something to keep consistent as it makes cross-compilation far easier.
diakopter colomon: no, you're right; I missed the native-typed part.
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
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
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
timotimo i was thinking non-sparse at first; but tell me more about the differences please?
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
okay, i was indeed thinking of non-sparse
sorear diakopter: pretty sure "packed" means native data, no containers or boxes
timotimo yeah, that's my understanding as well
diakopter okay; the synopses use "compact" for that 18:00
timotimo ah, good to know, thanks 18:03
jnthn sorear: That feels like a lesser evil than intercepting stat ;) 18:07
18:08 athomason left, athomason joined
sorear cool, just successfully generated a jar 18:08
colomon \o/ 18:09
jnthn ooh, what's in it? :)
masak cookies! 18:10
jnthn
.oO( masak stole the cookie from the cookie jar... )
masak bash.org/?8102 # :)
18:12 bluescreen10 left, ugexe joined
timotimo i feel kind of uneasy about wrapping lapack :| 18:14
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
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
18:17 pmurias joined
pmurias sorear: continuations.pod refers to nqp::continuationshift 18:18
sorear I thought I fixed that.
sorear looks for a better javap
2 06-21-13 11:03 META-INF/MANIFEST.MF 18:19
13089 06-21-13 11:03 69E5EDE7B963E90F12E49E00B28C426E64F213C5.class
2570 06-21-13 11:03 69E5EDE7B963E90F12E49E00B28C426E64F213C5.serialized
diakopter heh.
benabik One class per CompUnit? 18:21
jnthn yes
18:22 ssutch joined
dalek p: cfe397c | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Fix join/empty first string semantics.

Unbusts at least autoref.t on Rakudo JVM.
18:23
sorear lrwxr-xr-x 1 sorear staff 10 Jun 21 11:25 stdin.class -> /dev/stdin 18:26
this is evil
jnthn O.O 18:27
timotimo m)
#include </dev/stdin> <- best way to configure C/C++ code
sorear jnthn: I use it like: unzip -p hello.jar 69E5EDE7B963E90F12E49E00B28C426E64F213C5.class | javap stdin.class 18:28
javap won't touch a file unless it has a .class extension
huf sorear++ 18:30
timotimo++
coworkers are enjoying these :)
jnthn :D 18:31
dalek p: f394bee | sorear++ | src/vm/jvm/ (3 files):
NQP-level support for --target=jar
18:34
p: 76b8dc0 | sorear++ | src/vm/jvm/ (3 files):
jast2bc changes to actually emit jars
ssutch github.com/perl6/roast/pull/29 - reasonable? 18:44
timotimo hey ssutch :)
ssutch hello there 18:45
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)
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 ;)
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 :)
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 census left
sorear timotimo: I would write a class which wraps a 1-d compact array 18:48
timotimo is there already a way to build a 1-d compact array? 18:49
ssutch lookin' good? github.com/perl6/roast/pull/29/files 18:50
moritz aye 18:51
ssutch: one more thing
ssutch: it's not a good pratice to compare arrays with is(), because is() does string-based comparison
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
ssutch: but it's better to use is_deeply for such data structures
timotimo sorear: sounds good, i'll try that. _n for num, _i for int, yes?
and then i can just [$idx] that, right?
ssutch moritz: alright, thanks, making that change 18:53
colomon FROGGS: zavolaj ping?
sorear timotimo: yes
timotimo thank you! 18:54
ssutch strange, is_deeply yields this output for two similar arrays:
# got: ["c", "d"]
# expected: $("c", "d")
moritz you Got an Array, and expected a Parcel 18:55
ssutch yeah, changed to is_deeply $a2.array, ['c', 'd']
moritz try is $thing, [<c d>]
or that, yes
ssutch alright! going to merge it 18:57
*closes eyes*
FROGGS FROGGS: zavolaj pong
dalek ast: f17765d | (Samuel Sutch)++ | S12-attributes/clone.t:
add tests for cloning objects with array and hash attributes
ast: 64385ad | (Samuel Sutch)++ | S12-attributes/clone.t:
plan++
ast: 55f280d | (Samuel Sutch)++ | S12-attributes/clone.t:
use is_deeply for appropriate data structures; compare to arrays and not Parcels
ast: 79129a1 | (Samuel Sutch)++ | S12-attributes/clone.t:
Merge pull request #29 from samuraisam/sam/addional-clone-tests

Add tests for cloning objects with array and hash attributes
FROGGS err, I am FROGGS
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 domidumont left
FROGGS colomon: zavolaj pong 18:57
colomon FROGGS: on my smoking system, zavolaj is failing the last test in 01-argless.t 18:58
FROGGS: every other test passes, but that fails and brings a bunch of other modules down with it.
is the "is symbol" one. 18:59
(the only "is symbol" test, I think.)
FROGGS colomon: well, that is bad, but I am not a zavolaj author
colomon FROGGS: I thought you had been playing with it most recently?
FROGGS not really
timotimo sorear: or is there a way to handle stuff like this: 19:00
FROGGS I played with it like half a year ago
colomon I should be bugging Arne, shouldn't I?
timotimo r: my $foo = nqp::list_i();
camelia rakudo d05837: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in block at /tmp/w9Fr3WKqYQ:1␤␤»
FROGGS colomon: yes
jnthn timotimo: use binding
sorear timotimo: my Mu $foo
timotimo oh?
colomon FROGGS: sorry to bother you!
sorear and bindin
timotimo r: my Mu $foo := nqp::list_i();
camelia rakudo d05837: ( no output )
timotimo indeed! thanks
FROGGS colomon: np :o)
pmurias sorear: re shift it's still in the docs
sorear Do you need something to prevent hllization? 19:01
jnthn not there
it only happens automagically on what's return from a method call
sorear jnthn: Are there plans to eventually support compact arrays of types other than long and double in nqp? 19:02
jnthn: did you see my question about [nqp::null()] ?
timotimo r: say (1, 2, 3, 4) >>~~>> Int;
camelia rakudo d05837: OUTPUT«True True True True␤»
timotimo m)
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
sorear: um, no, I missed it...
jnthn tries to find it... 19:03
no, I can't find it...when did you ask it?
sorear jnthn: While you were away
jnthn I searched the irclog for nqp::null() and didn't see anything... 19:04
sorear It came in #moarvm because that's where you talked first 19:05
and phenny dumped a load on you
er, yoleaux
jnthn Oh, *that* away 19:06
timotimo should i do Positional[int] with my class?
19:07 bluescreen10 joined
moritz thinks so, yes 19:07
jnthn sorear: As designed
sorear: [...] indexing is set up to turn a null into an NQPMu 19:08
sorear: Use nqp::atpos(...) for the raw thing
dalek kudo/nom: dddf4d1 | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
Basic nominal type check handling in binder.

Doesn't include types in error or handle (::T, T) just yet.
19:09
sorear Oh. I assumed that the nulls were being eaten by the binder in circumfix:<[ ]> and turned into mus there
nqp: say nqp::isnull(nqp::atpos([nqp::null()],0))
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)␤»
sorear nqp: say(nqp::isnull(nqp::atpos([nqp::null()],0)))
camelia nqp: OUTPUT«1␤»
sorear jnthn++ 19:10
timotimo basically copypastes the implementation of at_pos from zavolaj
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.
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.
sorear pure nqp sprintf?
masak aye.
I've started on it already.
it's a humble start, but I have some functionality in place already.
just takes more tuits.
timotimo masak is proposing a sprintf sprint?
masak yes! \o/
that's now the official name :)
and I would have some tuits for it this weekend, but I would like someone to hack on it with me :) 19:13
19:13 xilo_ left
ssutch tuits? 19:15
masak ssutch: unit of available time and effort.
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.
sorear: yes :)
ssutch ah
[Coke] I'll do that when I get a round to it. round tuit. tuit.
jeff_s1 I have a round tuit :)
[Coke] awaits execution.
masak ssutch: or [Coke] could tell you, avoiding all killing
sorear jeff_s1: so do I, woolfy brought thousands of them to the last conference
19:17 raiph left
jnthn Quite literally, thousands. 19:18
19:18 raiph joined
timotimo hm, it would appear i have to implement either one class for each dimensionality or generate code for each 19:18
otherwise, how am i supposed to have multi candidates like int $foo, int $bar, int $baz with a code-defined number of values?
pmurias sorear: what feature do we require the $tag in continuationreset and continuationcontrol for? 19:19
pmurias is implementing one shot continuations (using the jvm api) using node-fibers (basically coroutines) 19:20
sorear pmurias: lexotic gather
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
this is NYI in rakudo
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
masak ssutch: yes, that sounds awesome.
ssutch: I'd be perfectly happy to call you my minion, if that's what you're aiming for :P 19:22
pmichaud en.wiktionary.org/wiki/round_tuit # meaning of "tuit"
masak ssutch: shall we timebox the thing a little? maybe set a try-it-an-see 2h hackathonlet sometime tomorrow?
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
19:23 kaare__ joined
ssutch that sounds good, i am in PST 19:23
sorear each suspended fiber representing a section of the call stack between two prompts
I'd have to spend more time working out the semantics. there be dragons.
19:23 kaare_ left
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:23
19:24 fgomez left
pmichaud (possibly after the dust settles) 19:25
[Coke] definitely after the dust settles.
pmichaud wfm.
I'll keep it in mind as things progress.
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:26
and [1,2] will give me the second and third element as a list 19:27
pmichaud timotimo: in Perl 6?
timotimo yes, atop rakudo
sorear timotimo: that's a bug if so
pmichaud the thing inside brackes there is a semilist, not a statementlist
timotimo yeah, apparently not in rakudo
sorear jnthn: Why is -Xbootclasspath needed? 19:28
timotimo r: my @a; @a[1;2;3]
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)␤»
pmichaud timotimo: that looks like a parser bug to me.
timotimo i'll try to investigae
jnthn sorear: To work around an indy issue
masak ssutch++ # hackathon plans made over privmsg 19:29
pmichaud actually, parser correctly has it as <semilist>, so it's probably an Actions bug
sorear jnthn: now I'm more curious
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 :)
if you'd like that
timotimo pmichaud: i'll try to investigate the actions then
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
masak tadzik: awesome! 19:31
19:31 kaare__ is now known as kaare_
jnthn sorear: mail.openjdk.java.net/pipermail/mlv...01526.html 19:31
masak tadzik: the datetime is 2013-06-22T18:00Z.
timotimo unless +@($past) { $past.push( call &infix:<,> ) } ... isn't unless wrong?
masak tadzik: and we'll be going for 2 hours, and then summarizing our progress.
timotimo "only put the , call there if there are no things in the semilist"?
tadzik ssutch: I don't think I ever published it 19:33
dalek kudo/nom: e742323 | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/ (2 files):
Implement nqp::p6bindcaptosig.
tadzik masak: 18 feather time?
pmichaud timotimo: the fact that semilist seems to want to make a QAST::Stmts object looks wrong to me.
It's supposed to create a list.
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.
sorear tries to patch LibraryLoader to accept jars
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.
tadzik masak: okay, cool
pmichaud timotimo: which <O(|%term)> ?
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 )
timotimo ah, ok
it's pretty much the same parsing. i'll look at the actions further
pmichaud okay, timotimo++
ssutch r: { class A { } }; { class A { } }; say 'okay'; 19:38
camelia rakudo d05837: OUTPUT«===SORRY!===␤Redeclaration of symbol A␤at /tmp/QsYSXXliPJ:1␤------> { class A { } }; { class A ⏏{ } }; say 'okay';␤ expecting any of:␤ statement list␤ prefix or term␤ prefix or meta-prefix␤ generic…
timotimo circumfix:sym<[ ]> is the right one, not something with postcircumfix?
postcircumfix looks correcter actually 19:39
pmichaud $array[ ] is postcircumfix
circumfix:sym<[ ]> is the array composer.
timotimo good
(the parsing is right still)
er, that's because i was looking at STD.pm6
19:40 Rotwang joined
pmichaud I'm afk for a while again -- bbl 19:40
19:41 kaare_ left
ssutch what scoping do classes have? 19:41
jnthn our, by default
ssutch ah ok, that makes sense then 19:42
19:42 btyler left
dalek ast: 5ef80e3 | (Samuel Sutch)++ | S12-attributes/clone.t:
rename classes for posterity (and to avoid name collisions)
19:43
ast: 2611f3d | (Samuel Sutch)++ | S12-attributes/clone.t:
Merge pull request #30 from samuraisam/sam/addional-clone-tests

Rename test classes for posterity (and to avoid name collisions)
19:44 btyler joined
dalek p: 66d1166 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/C (2 files):
Make state variables be stateful.
19:45
19:45 eternaleye left
tadzik "are they stateful now?" "what is stateful now?" 19:46
19:47 eternaleye joined
masak tadzik: "What do we want?" -- "Braaaaaains" -- "When do we want it?" -- "Braaaaaains" 19:47
tadzik that makes me listen to Re: Your Brains 19:48
19:48 kaare__ joined, kaare__ is now known as kaare_
ssutch is there any way to futz about with the classes in rakudo in src/core without rebuilding rakudo? 19:49
sorear MONKEY_TYPING
masak ssutch: easiest is to just copy them out into its own file and fiddle with them there, IMO.
ssutch use MONKEY_TYPING; alter class Mu { method clone (*%_) { callsame; } }; say 'okay'; 19:50
r: use MONKEY_TYPING; alter class Mu { method clone (*%_) { callsame; } }; say 'okay';
camelia rakudo d05837: OUTPUT«===SORRY!===␤Undeclared routine:␤ alter used at line 1␤␤»
masak ssutch: s/alter/augment/
ssutch r: use MONKEY_TYPING; augment class Mu { method clone (*%_) { callsame; } }; say 'okay';
camelia rakudo d05837: OUTPUT«===SORRY!===␤Package 'Mu' already has a method 'clone' (did you mean to declare a multi-method?)␤at /tmp/ZxEpUCFlZw:1␤------> ␤»
[Coke] masak: "where are we going?" "planet 10" "when are we leaving?" "REAL SOON"
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... :)
[Coke] Buckaroo Bonzai: Across the 8th Dimension
I highly recommend you stop what you're doing and go watchit now. :)
masak tadzik: use too! :) 19:52
us*
dalek p: 3b70d02 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/CallFrame.java:
Record if a frame is the first state init.
19:53
kudo/nom: 36f36de | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/Ops.java:
Implement nqp::p6stateinit.
ssutch is it possible to totally redefine Mu such that Match objects will be based off it? 19:54
masak [Coke]: looks awesome :)
ssutch: not with a current method cache updating bug, no. :/ 19:55
ssutch: but it seemsme you're going very much against the grain of the language.
moritz ssutch: you could define your own lexical Match class
masak MONKEY_PATCHING is already a warning sign.
expecting it to do something useful is another one :P
moritz but is it LOUD ENOUGH? 19:56
(oh, and you can always patch Any and Cool, which come between Match and Mu
r: say Match.^mro
camelia rakudo d05837: OUTPUT«(Match) (Capture) (Cool) (Any) (Mu)␤»
ssutch moritz: ok ill try something like that 19:57
moritz doc.perl6.org/images/type-graph-Match.svg
ssutch: what do you want to achieve in the end?
masak sorear: ping
ssutch moritz: i want to patch .clone, as well as futz about with the attributes of Match 19:58
for debugging, i am trying to fix some test failures and bugginess in clone
pmichaud sometimes it's easier to augment with a differently-named method.... e.g. "my_clone" instead of "clone" 19:59
then when it's working, switch back to the normal name.
ssutch pmichaud: that's brilliant
20:01 kaare_ left
sorear masak: hi 20:02
ssutch i can modify clone on match, which is all i need, thanks pmichaud !
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
sorear well, most of the fibers are already suspended 20:03
search the dynamic call stack for a matching tag, then yield to that fiber
and be careful you don't accidentally implement shift semantics
dalek kudo/nom: 51d0246 | jonathan++ | src/Perl6/World.nqp:
Make is_pseudo_package work on JVM.

Fixes S02-names/indirect.t, possibly more.
20:04
pmurias sorear: do we have a test against that? 20:05
20:06 kshannon joined
sorear isn't sure 20:06
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
sorear: and indeed, there is no such file in my directory.
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?
[Coke] masak: I ran the spec tests by editing t/spec/test_summary to call "./perl6 -Ilib" and then ran that script.
sorear masak: find out why tools/buid/make-jvm-runner.pl isn't working. fix it
[Coke] buid? <mythbusters> There's yer problem</mythbusters>
jnthn [Coke]: ooh, did you get any interesting output? :)
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
masak: gist.github.com/sorear/5827219 is one I made
dalek p: cf7c721 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/ContextRefInstance.java:
Implement keyed binding in ContextRef REPR.
sorear I understand some of the failures have been fixed. 20:10
[Coke] jnthn: yes: github.com/coke/perl6-roast-data/b...ummary.out
jnthn sorear: I have that open in a browser tab and am working through it :)
[Coke]: omg, didn't realize you'd get rakudo JVM into perl6-roast-data!
[Coke] at the time I ran it, rakudo.jvm is at 63.88% of rakudo.parrot 20:11
tadzik what
jnthn [Coke]++ !
[Coke] jnthn: it's a hack right now. lizmat++ might help me make it a non-hack in about 2 weeks.
masak 63%!
[Coke] jnthn: I'm pretty sure I had the easy part here. ;)
r: say 21228 - 16596 # gap to niecza. 20:12
camelia rakudo d05837: OUTPUT«4632␤»
20:12 panchiniak_ left 20:13 shinobicl joined
jnthn [Coke]: Does that mean it's a one-off? 20:14
nwc10 is it possible to overdose on awesome?
jnthn [Coke]: Or we'll still get numbers regularly?
masak I don't have a tools/buid/make-jvm-runner.pl either. are we on different branches or something?
sorear: ^
[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.
until I can get access to something slightly beeifer than feather 20:15
[6~*beefier
masak oh, I see it.
it's tools/build/create-jvm-runner.pl
sorry about that :)
jnthn [Coke]: Thanks. I'll be happy to have the progress numbers.
sorear kind of wants to add a magic number to the serialization format 20:17
colomon version number? 20:18
[Coke] oh, sure, some MAGIC number. </homer>
timotimo what should be generated for a ';;' inside a semilist?
jnthn There already is a version number. :)
So I guess sorear++ means something to identify it
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
pmurias how do I build nqp-jvm?
masak sorear: investigating.
sorear 06 00 00 00 is not unique enough for file(1).
pmurias plans to steal some delimited continuation tests from racket
sorear Stefans-MacBook-Air:nqp-jvm sorear$ file A43CE63113D1C05C11ACD00AC9DBE7348DCF0B37.serialized
colomon pmurias: github.com/rakudo/rakudo # search JVM
20:19 kshannon left
sorear A43CE63113D1C05C11ACD00AC9DBE7348DCF0B37.serialized: DBase 3 index file 20:19
++pmurias testing good 20:20
jnthn pmurias: perl ConfigureJVM.pl && make
colomon pmurias: specifically Building Rakudo on JVM
20:20 kshannon joined
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.
timotimo guesses Nil
masak sorear: and indeed, there's no eval-client.pl in install-jvm either. 20:22
20:22 domidumont joined
sorear nqp is supposed to install that 20:22
masak so the problem is further back, then.
[Coke] masak: did you do 'make install' in nqp subdir?
masak [Coke]: yes.
sorear: mind if I add a few 'die' statements to that script? 20:23
20:26 p5eval joined
lue hello world o/ 20:29
sorear masak: not at all
20:31 shinobicl left 20:33 pmurias left
dalek kudo/nom: ea42160 | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
Fix $_ handling in binder.

Gets S02-names/pseudo.t working, and probably more.
20:33
sorear is running into a surprising amount of platform stupid while extending nqp::loadbytecode to support jars 20:40
dalek kudo/nom: b5c9c7b | jonathan++ | src/Perl6/Optimizer.nqp:
Fix optimizer warning/error reporting.

Various tests that the optimizer spots things to warn about bombed because of this.
20:41
jnthn sorear: Ugh
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?
sorear nwc10: the former 20:43
though I think I'm actually looking at Javasoft mistakes
dalek kudo/nom: 85f7372 | masak++ | tools/build/create-jvm-runner.pl:
[create-jvm-runner.pl] die more

Fail early, fail often. The two sites where I added 'die' statements were the ones where I would have liked for it to die with informative error messages instead of just continuing.
20:44
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
timotimo > say (my @a)[1;2;3] 20:47
(Any) (Any) (Any)
is that ... better?
r: say (my @a)[1;2;3];
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)␤»
timotimo at least a semilist now turns into a list of thingies 20:48
FROGGS timotimo: can you paste the patch?
timotimo gist.github.com/timo/5834220 20:49
lue timotimo++ # working on the long-neglected S09
timotimo my internet connection is riduculously instable here 20:50
is the semilist supposed to be a list of lists or something?
ssutch github.com/rakudo/rakudo/blob/nom/...ture.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?
timotimo it seems so, yes; the $!storage attributes are like nqp::list and nqp::hash iirc 20:51
masak conclusion: nqp's 'make install' doesn't install an eval-client.pl :) 20:52
that... explains it :) 20:53
sorear jnthn: Is bind_key_native supposed to ... write ... tc.native_type 20:54
jnthn: ?
20:54 domidumont left
dalek p: 2aef1f6 | masak++ | tools/build/install-jvm-runner.pl:
[tools/build/install-jvm-runner.pl] die more

Installed a few die statements where things may fail.
20:55
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
TimToady --> back to Toulouse, London tomorrow
jnthn sorear: Then the op checks the operation did the right thing
sorear: Avoids duplicating checks all over the place
sorear: Really should not happen, though
sorear Stefans-MacBook-Air:nqp-jvm sorear$ ./nqp --target=jar --output=hello.jar -e 'say("hello world")' 20:59
Stefans-MacBook-Air:nqp-jvm sorear$ java -Xbootclasspath/a:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar -jar hello.jar
hello world
this is good
timotimo oooooooh snap! :)))
jnthn \o/
sorear 13085 06-21-13 13:58 9037A076933B24FEE476021EB6BF5EC4486BE529.class 21:00
2570 06-21-13 13:58 9037A076933B24FEE476021EB6BF5EC4486BE529.serialized
contents ^
jnthn whee
dalek kudo/nom: aed9508 | jonathan++ | src/core/Mu.pm:
Correct/simplify =:= implementation.

Can only guess that it dates back to before we had an nqp::eqaddr.
timotimo that's size in bytes?
sorear timotimo: yes. uncompressed size from the zip local file header 21:01
total file size is 6166
FROGGS that is better then my 9MB :P 21:03
21:04 bluescreen10 left, bluescreen10 joined
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:05
have jar, will travel (to wherever there is a java -jar) 21:06
dalek p: 522ae10 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ (2 files):
Support for running jar-packaged programs
21:07
21:08 skids left 21:09 BenGoldberg joined 21:10 spider-mario left
ssutch r: 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␤»
ssutch ok, this HAS to be wrong… but it fixes the bug and doesn't break any tests
suggestions?
timotimo add more test until you find one that breaks :D 21:13
21:14 snearch left 21:15 snearch joined
dalek p: 4875091 | masak++ | tools/build/Makefile-JVM.in:
[Makefile-JVM.in] also install eval-client.pl
21:16
ssutch there must be an nqp way to test if an attribute is an array or a hash and not a scalar
timotimo r: 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 konundra left
timotimo good. 21:17
ssutch yeah i tested that late last night 21:18
(suggested by sorear)
21:18 grondilu left
timotimo :D 21:18
sorear NegativeArraySizeException, that's one I don't see often 21:20
ssutch r: gist.github.com/samuraisam/5834349
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␤»
ssutch also works with match objects 21:21
sorear ssutch: do you have to use a regex in there? :/
ssutch sorear: no 21:22
it's just a bandage
r: 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␤»
sorear r: say nqp::index('@%',nqp::substr('%foo',0,1)) 21:24
camelia rakudo 51d024: OUTPUT«1␤»
ssutch there, amended to use nqp::isconcrete
PerlJam
.oO( nqp::iswood? )
21:25
timotimo ssutch: it seems to me you're cloning things even if you twiddle them afterwards
am i seeing that right?
ssutch timotimo: uhh 21:26
timotimo wow, the rakudo runtime jar is only 47KB big? 21:29
that's pretty darn decent
jnthn timotimo: Well, it's only the binder and some support code
timotimo but only the jar itself, rakudo-runtime and asm.jar are needed to run such a generated jar file, no?
er, i meant to speak about nqp-runtime actually 21:30
jnthn oh...I thought that was bigger :)
timotimo *that*'s 500 K, yeah
still not quite bad
jnthn was gonna say... :)
sorear timotimo: sounds about right
timotimo and asm.jar is also just 50K
sorear timotimo: the big offender is CORE.settting.class 21:31
have fun running anything without that
timotimo :)
tadzik how big is that one, 6 megs? 21:32
timotimo 11MB
the corresponding file on parrot is 17MB
21:34 Rix joined
timotimo so, how exactly does a semilist behave differently from a comma list? 21:34
how do i, in the multi methods for circumfix:sym<[ ]>, differentiate if there was a comma list or a semilist?
benabik Builds a LoL?
timotimo ah, that makes some sense, i could do that 21:35
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
21:36 btyler left
timotimo yeah, it doesn't say anything about lols or other kinds of things 21:36
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
"A multidimensional array is indexed by a semicolon list, which is really a list of lists in disguise." and in particular, 21:39
@array[0..10; 42; @x]
is really short for something like:
@array.postcircumfix:<[ ]>( (0..10), (42), (@x) );
timotimo ah!
i should have searched for "semicolon list"
thanks, google search >_>
21:39 dwimwit joined
timotimo lue++ 21:39
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:40
21:41 btyler joined 21:45 snearch left 21:46 smash left
dalek ecs: 912d12c | lue++ | S09-data.pod:
[S09] Add the term "semilist" to S09

This way someone seeing the mention of semilist in S03 can search through the spec and find the place where it's discussed in detail, S09, just by searching for the term itself, rather than thinking to search for "semicolon list" or "semicolon-separated list" instead.
21:46
timotimo do i need to wrap Stmts around QAST::Op(call &infix:<,>)? 21:47
dalek p: 5b134ce | sorear++ | / (6 files):
Modify makefiles to do a jar build of NQP
p: f9e0a2b | sorear++ | tools/build/Makefile-JVM.in:
Merge branch 'master' of github.com:perl6/nqp

Conflicts: tools/build/Makefile-JVM.in
p: eab1b7c | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/JASTToJVMBytecode.java:
Handle Inf/-Inf/NaN in bytecode assembler.
21:48
21:48 smash joined 21:52 btyler left
jnthn timotimo: Don't see why, right away 21:52
21:52 shinobicl joined
timotimo oke 21:52
new version is compiling, it should create a lol from semilists 21:53
21:55 btyler joined
timotimo okay, now a LoL is getting passed to postcircumfix:<[ ]>, but it handles it just like a list it seems 21:55
TimToady timotimo: you basically need to [X] all the slice lists to get each individual key location 21:58
so .[0..1; 0..1] is talking about .[0;0], .[0;1], .[1,0], and .[1,1] 21:59
timotimo oh, yes
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
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
camelia rakudo 51d024: ( no output )
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
camelia rakudo 51d024: OUTPUT«b c d␤»
TimToady has to get up again in 5ish hours to catch a plane, so --> bed & 22:02
jnthn TimToady: Good sleep, safe travels o/ 22:03
22:04 dmol left, Rotwang left 22:05 ajr_ left
timotimo r: (1, 2, 3).lol ~~ Lol 22:05
camelia rakudo 51d024: OUTPUT«===SORRY!===␤Undeclared name:␤ Lol used at line 1. Did you mean 'LoL'?␤␤»
timotimo r: say (1, 2, 3).lol ~~ LoL
camelia rakudo 51d024: OUTPUT«True␤»
22:05 dmol joined
timotimo i think i should run spectests first ... 22:07
22:10 konundra joined
dalek kudo/nom: 6f0b29c | jonathan++ | src/vm/jvm/Perl6/Ops.nqp:
Get nqp::p6return to work.
22:16
masak ok, now 'make spectest' finds eval-client.pl, but instead it says 'Can't locate File/Slurp.pm in @INC'. 22:17
jnthn, sorear: ^
diakopter sorear: does CORE.setting.class compress at all?
(wondering if it could go in a jar) 22:18
jnthn masak: ah, non-core dep?
masak looks like.
yay, after cpanm-ing File::Slurp 9999.19, it works! \o/ 22:19
jnthn o.O
masak is spectestin' rakudo-jvm o/
dalek kudo/nom: cf6dd7f | sorear++ | / (3 files):
Use jar build for rakudo too
22:21
sorear diakopter: gist.github.com/sorear/594858118d022cec1d6b 22:23
ahahaha: 22:24
Stefans-MacBook-Air:rakudo-jvm sorear$ wc -c CORE.setting.jar <(gzip < CORE.setting.jar)
1467080 CORE.setting.jar
1418509 /dev/fd/63
jnthn Whoa! 22:25
sorear++ 22:26
sorear: Though, does the compression hurt startup time?
sorear jnthn: I can't measure a difference
jnthn OK :)
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
jnthn oh, you meant you couldn't measure a difference compared to that... 22:27
(I thought you meant couldn't measure compressed vs. non-compressed)
ssutch so this github.com/samuraisam/rakudo/compa...8559-clone passes all spec tests (+ some additional ones) and fixes rt.perl.org/rt3/Ticket/Display.html?id=118559 22:28
should i submit a PR?
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
masak sorear++ 22:32
22:36 john5 joined
ssutch alright, here it is github.com/rakudo/rakudo/pull/170 22:38
22:38 bluescreen10 left
john5 i dont get it, why are there like almost 10 compilers, is Perl6 just a protocol? 22:39
masak john5: yeah.
john5: and closer to 2 than 10.
diakopter well, closer to 1 than 2 22:40
perigrin to be fair one of those has three backends.
masak :)
perigrin: well, closer to one than three :)
dang, this truth business is tricky!
why does the truth have to be so detailed? 22:41
ssutch use truthiness
perigrin masak: really they're just quantum superpositions of backends.
you should be familiar with this.
(fuzzy implementations?)
masak that's why we've taken to calling them Quackends. 22:42
perigrin because down that end there is a quack? 22:43
is that really a kind way to refer to Damian?
masak it's quacks all the way down.
FROGGS hehe 22:45
timotimo gist.github.com/timo/b14928228f295e825d42 - big sigh
perigrin 22:46
:
sorry about that
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.
diakopter timotimo: 20 minutes!? 22:48
22:48 skids joined
sorear jnthn: no measurable difference with noncompressed jars 22:48
diakopter (yay)
timotimo 408 wallclock secs
22:49 ggoebel joined
jnthn sorear: OK, good to know 22:50
dalek p: d4a13c5 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/ (2 files):
Enable iteratoin of native arrays.
timotimo oh, whoops.
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
timotimo is that because there's a <semilist> in a wrong place in the grammar?
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:54
sorear: It's on my todo list, but feel free to task steal it if you think it's worthwile. 22:55
For now I'm content chugging through the spectest LHFish.
sorear especially now that we no longer need the cuid annotations to *find* the codref? 22:56
jnthn sorear: hm, yes
that may make it even better
FROGGS timotimo: if you run a failing test file with -ll-exception you should see what is going on 22:58
sorear jnthn: I think that I can probably get a substantial size improvement by tweaking the serialization format, even after compression 22:59
[Coke] tries to automate the rakudo.jvm spec build. 23:00
diakopter sorear: is the startup time affected if you do Djava.compiler=NONE
jnthn sorear: I'm reluctant to diverge that between platforms just yet.
sorear: I agree it could almost certainly be improved and should be, though... 23:01
[Coke]: yay :) 23:02
23:02 btyler left
jnthn hopes that he's managed to nudge the % somewhere better today 23:02
[Coke] does rakudo-jvm respect PERL6LIB yet?
jnthn I *think* sorear++ may have fixed that? 23:03
[Coke] hokay. if not, I have a wrapper script I acn be evil in.
LHF: rewrite tools/build/gen-cat.pl in nqp. 23:04
sorear [Coke]: Yes 23:07
timotimo FROGGS: the failure is not an exception that flies
it's code doing something different from what it should :)
diakopter sorear: also try XX:+PrintCompilation and -XX:-CITime 23:08
sorear diakopter: yeah, it more than doubles if you turn off the compiler
Is there any difference between -D... and -Xint ? I tried both, same apparent effect 23:09
FROGGS timotimo: ohh, :/ 23:10
diakopter sorear: dunno
sorear: how about those last two flags
sorear: (actually I was thinking of startup time just to get to rakudo's entry point)
main(...) { System.Exit(); ... 23:11
main(...) { System.Exit(1); ...
main(...) { System.exit(1); ...
(augh)
augh.. still C#
diakopter gives up
sorear diakopter: gist.github.com/sorear/5834999 23:12
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
diakopter lolz; "made zombie" 23:14
sorear which is why I've been focusing on core.setting
diakopter okay, so the first column is total elapsed milliseconds? 23:15
jnthn heh, I was seeing the "made zombie" :)
sorear diakopter: I have nfi
it looks like befunge to me
diakopter doesn't know what nfi is at the moment 23:16
oh..
dalek kudo/nom: c673b0f | coke++ | .gitignore:
ignore more generated files
23:16 rindolf left
diakopter ROTFL 23:17
sorear no effin idea
jnthn :D 23:18
23:18 raiph left 23:20 raiph joined
jnthn r: say \(1) ~~ :(int $x as Str) 23:21
camelia rakudo 51d024: OUTPUT«(signal SEGV)»
masak O.O
timotimo m)
masak submits rakudobug 23:22
jnthn Found while porting the code for the JVM :)
masak jnthn++!
diakopter tries to golf
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
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)
STD.pm6 claims so. 23:24
dalek kudo/nom: e7596b6 | jonathan++ | src/vm/parrot/guts/bind.c:
Avoid a NULL deref.
23:25
rl6-roast-data: 4ad35b0 | coke++ | / (2 files):
Add a runner for rakudo.jvm
23:26
[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
jnthn \o/
timotimo ah
that seems pretty sensible i guess
[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 sqirrel left
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:28
diakopter r: \1~~:(int as pi) 23:29
camelia rakudo 51d024: OUTPUT«(signal SEGV)»
masak :)
it's a syntactic golf but not really a semantic one.
jnthn e7596b6 was to fix it, btw
masak jnthn++
diakopter what does "as pi" mean anyway 23:30
23:30 tomyan joined
jnthn diakopter: It's gonna attempt to call .pi :P 23:30
I guess
r: sub foo($x as pi) { }; foo(42) 23:31
camelia rakudo 51d024: ( no output )
jnthn r: sub foo($x as pi) { say $x }; foo(42)
camelia rakudo 51d024: OUTPUT«42␤»
jnthn r: sub foo($x as pi) { say $x.WHAT }; foo(42)
camelia rakudo 51d024: OUTPUT«(Num)␤»
jnthn ah :)
Well, that makes a weird kinda sense I guess :P
masak that's... sick :) 23:32
timotimo jnthn: wait, a Op.new( :op('stmts') ... )?
not a Stmts.new?
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.
QAST::Op.new( :op('stmts'), $a, $b ) is equivalent to QAST::Stmts.new( $a, $b ) 23:33
timotimo oh, that's pretty neat
jnthn Occasionally worth knowing.
I used it the other day in the MapIter rewrite
'cus you can nqp::stmts(...) too :)
timotimo i hope that's documented somewhere! :) 23:35
is nqp::stmts a shortcut/replacement for QAST::Stmts.new?
23:36 tomyan left
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
The idea is that you learn the instruction set once and can re-use that knowledge for building QAST trees and nqp::op stuff
timotimo good point, yeah 23:38
so why is there QAST::Op.new everywhere in Actions.pm?
jnthn Oh, they work at different levels
timotimo that's probably what i meant and failed to express
jnthn nqp::foo(a, b) means "do that in the *current code*"
r: say nqp::add_i(1, 2) 23:39
camelia rakudo 51d024: OUTPUT«3␤»
timotimo right, that makes more sense now that i spent a second actually thinking
jnthn that doesn't evaluate to a QAST::Op. It actually does the thing.
labster Welp, I'm finally backlogged for today. Y'all need to talk less :P
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?
labster haven't you already lost by accepting my challenge? 23:41
masak labster: you said *less* not *not at all*. :) 23:42
jnthn timotimo: Nil sounds sane
23:42 tomyan joined
masak labster: ...and I'm going to bed soon... 23:42
jnthn timotimo: Though maybe produce it rather than grep it out.
dalek kudo/nom: 224e81b | sorear++ | src/ (2 files):
p6handletake is no longer needed either jnthn++
kudo/nom: 1dd39f2 | sorear++ | tools/build/create-jvm-runner.pl:
fix test harness for jar mode
jnthn timotimo: That may already be handled further up anyway
timotimo produce as in have a Var node for actual-Nil? 23:43
sorear nqp::foo means BEGIN QAST::Op.new. sort of.
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
you mean someone who actually wants a LoL and wants to have the Nils in there has to introspect beyond the Ast? 23:45
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
does it ever make sense to have ;; inside a semilist?
if so, how is it represented? i thought adding a Nil to the LoL 23:47
a Nil or a ()
jnthn Pass all the range.t \o/ 23:53
timotimo woop woop \o/ 23:54
sorear jnthn: \o/
jnthn: all of it, or just all the range.rakudo?
dalek kudo/nom: 9a89c8e | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
Implement "as Foo" coercion of params.
jnthn sorear: um, same as Rakudo on Parrot 23:55
Yeah, it's a .rakudo
sorear ok
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:56
[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.