»ö« 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 dc 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-939132802051176574» | ||
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|fooInt|1Str» | ||
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 bc d» | ||
..rakudo 49f111: OUTPUT«c dc 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 rowat /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 | ||
ssutch: irclog.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: Trueeq 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: Trueeq 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: Truezeq list: Trueaeq 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 rowat /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 | ssutch: perlcabal.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!===Confusedat /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 bc 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 mua bc dregular mua bc 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 mua bc dregular muc dc 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 hailiz 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 | < > | 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 bracketat /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 definitionat /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 Aat /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 arrayok 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 arrayok 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 clonedok 2 - cloned Match object retained named capture valueok 3 - original object has its original arrayok 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 clonedok 2 - cloned Match object retained named capture valueok 3 - original object has its original arrayok 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. |