»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:04
FROGGS left
|
|||
[Coke] | tadzik: I lied. removing a submodule is a PITA, and the directions I've found don't work for my version of git. we'll get it eventually. | 00:05 | |
00:11
cognominal left
00:12
cognominal joined
00:22
FROGGS joined
|
|||
Tene | [Coke]: git submodules? | 00:30 | |
[Coke]: What's the question? | |||
00:42
donaldh joined
|
|||
[Coke] | Tene: github.com/rakudo/star/issues/27 | 00:42 | |
00:43
donaldh left
|
|||
BenGoldberg | preflex: karma yoleaux | 00:46 | |
preflex | yoleaux has no karma | ||
yoleaux | 16 Aug 2013 18:09Z <[Coke]> preflex: DIE DIE DIE | ||
diakopter | haha | ||
BenGoldberg | r: ((map { $_ }, ^Inf) but role {}).print | 00:48 | |
camelia | rakudo 10b9ac: OUTPUT«This type does not support elems in method REIFY at src/gen/CORE.setting:7493 in method reify at src/gen/CORE.setting:6719 in method reify at src/gen/CORE.setting:6706 in method gimme at src/gen/CORE.setting:7139 in method print at src/gen/CORE.setting:12… | ||
BenGoldberg | That's a bug, right? | ||
TimToady | it seems wrongish | 01:03 | |
otoh, I can see why it might want to precalculate how much it's going to output, if it's using join | 01:04 | ||
but if it's using join, that might be the bug :) | |||
but the traceback seems to indicate that it's gimme/reify that is calling elems, which is...problematic | 01:06 | ||
since the whole point of gimme/reify is to avoid precalculating things... | |||
or possibly it's calling .elems to see how much is in the reified bit | 01:08 | ||
one would, horrors, have to read the source code to find out :) | |||
TimToady promised the implementors 13 years ago that he would stay out of implementation, but maybe I should consider breaking that promise someday :) | 01:09 | ||
s/I/he/ | |||
01:10
Mouq joined
|
|||
BenGoldberg | r: ((map { $_ }, ^Inf)).print | 01:16 | |
camelia | rakudo 10b9ac: OUTPUT«(timeout)0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121… | ||
01:28
raiph joined
01:30
FROGGS left
|
|||
TimToady | so two bugs maybe; it should know that the mixin is also infinite, but when it is sure, it maybe shouldn't be assuming finite | 01:35 | |
ss/is sure/isn't sure/ | |||
my n't key is going all gimpy again... | 01:36 | ||
diakopter | Promise.break() | 01:48 | |
01:49
FROGGS joined
|
|||
Mouq | #`[Perl 6 rocks. Just getting the little things Right saves like half the brain load writing it, in what little time I've spent with the language. (all contributers ever)++] | 01:50 | |
raiph | Promises/A+ standardizes on the terms “fulfilled”, “rejected”, “reason”, and “pending” | ||
(quoted from promisesaplus.com/differences-from-promises-a) | 01:51 | ||
I don't know the standing of the Promises/A+ spec | |||
but I like fulfil(ed), reject(ed), reason and pending | 01:52 | ||
lue | .oO(Does this mean std will *run* my Perl 6 code too someday?) |
02:15 | |
02:29
araujo left
02:30
EvanTeitelman joined,
araujo joined
02:39
raiph left
02:55
colomon joined
|
|||
colomon is in Canada for the third time this summer... | 02:59 | ||
and jakudo still is giving org.perl6.nqp.runtime.UnwindException | 03:02 | ||
:( | |||
that's when building. | 03:08 | ||
03:11
raiph joined,
EvanTeit1lman joined
03:12
EvanTeit1lman is now known as bayr
03:17
raiph left
03:18
abnorman left
03:19
xilo joined
03:21
jaldhar joined
|
|||
colomon | getting the error on both OS X and Linux | 03:24 | |
03:26
FROGGS left
03:29
preflex_ joined,
ChanServ sets mode: +v preflex_
03:30
preflex_ is now known as preflex
|
|||
colomon | complete rebuild from scratch also fails | 03:35 | |
and with that, I'm going to bed. | |||
03:40
bayr left
03:44
EvanTeitelman left
03:50
colomon left
03:56
adu joined
04:03
skids left
04:11
BenGoldberg left
|
|||
Mouq | Following “Building Rakudo on JVM” with the latest everything AFAIK and OS X, I also fail, but with “No registered operation handler for 'jvmisnull' in …” | 04:20 | |
This might just be me doing something dumb though | |||
moritz | Mouq: that usually means your copy of nqp is too old | 04:22 | |
TimToady | that op was added on Aug 7, so yeah | 04:23 | |
Mouq | :p 'k, thx. Wanted to see if I could duplicate colomon's error | 04:24 | |
TimToady | FROGGS++ already bisected it earlier, and 144a3f87f58e576159c1dea7b6a8854f2bdc1e86 is apparently in error | 04:26 | |
5f460187c89ec42b98925dccebe1962b5efdbc60 is the last good commit | 04:27 | ||
04:29
grondilu joined
|
|||
adu | hi TimToady | 04:31 | |
TimToady | o/ | ||
Mouq | Wow. So all the error does is tell you that it's throwing an error | 04:40 | |
TimToady | "Something's wrong at line I dunno!" | 04:41 | |
04:42
benabik joined
|
|||
diakopter | "Either something's wrong or this error is wrong" | 04:43 | |
04:45
aindilis` joined
04:55
shinobicl_ joined
04:59
fridim__ joined
05:08
xilo left
05:12
FROGGS joined
|
|||
Mouq | Very aside, is something like Storable::dclone() needed in Perl 6? | 05:13 | |
moritz | yes | 05:16 | |
Mouq | Err, asking if/how to deep copy. I wasn't really plan on implementing Storable >_> | 05:19 | |
05:19
FROGGS left
|
|||
TimToady --> bed # jet slagged | 05:22 | ||
moritz | first implement it, then use it :-) | ||
Mouq | Goodnight TimToady! | 05:23 | |
The error in 144a3f8 comes from src/core/Array.pm, I've determined that much | |||
05:24
adu left
05:25
FROGGS joined
|
|||
Mouq | Ah. Okay, the answer appears to be "yes" indeed. I wasn't sure what question you were answering. But: | 05:29 | |
r: my $x = {"a"=>{"a"=>{"a"=>3}}};my $y = $x;$y<a><a><a>++;say $y.perl;say $x.perl; | |||
camelia | rakudo 10b9ac: OUTPUT«{"a" => {"a" => {"a" => 4}}}{"a" => {"a" => {"a" => 4}}}» | ||
Mouq | I want to deep clone so that $y !~~ $x at the end | 05:30 | |
But, so, there really isn't a method for this? | 05:31 | ||
moritz | no | 05:32 | |
Mouq | Err, wait my bad in the previous comment; I got mixed up because I was testing Array, it's src/core/Hash.pm that messes everything up | 05:33 | |
checkout 144a3f8 and then git checkout 5f46018 src/core/Hash.pm and it works | 05:34 | ||
05:47
FROGGS left
05:53
FROGGS joined
|
|||
cognominal | jnthn++ # slides for YAPC::EU | 06:03 | |
06:05
fridim__ left
06:11
iSlug joined
|
|||
dalek | : d21eaa1 | (Tobias Leich)++ | STATUS.md: status update after nqp changes |
06:17 | |
06:22
SamuraiJack joined
|
|||
dalek | kudo/nom: ade8bc1 | (Tobias Leich)++ | src/core/ (3 files): unbreak build by reverting 144a3f87f58e576159c1dea7b6a8854f2bdc1e86 |
06:28 | |
Mouq | FROGGS: The offending lines seem to be src/core/Hash.pm:29-31 | 06:31 | |
FROGGS | Mouq: before my last commit? | 06:33 | |
Mouq | In 144a3f8 | ||
FROGGS | hmmmm, I can just guess wildly what could be wrong with it | 06:34 | |
Mouq | There are two other sets of basically the same thing within the file; maybe it's just because they don't get called, but `make` works when 29-31 are commented out | 06:35 | |
FROGGS | .tell lizmat please read irclog.perlgeek.de/perl6/2013-08-17#i_7462070 | 06:42 | |
yoleaux | FROGGS: I'll pass your message to lizmat. | ||
PerlJam | r: my Buf $b .= new(); | 06:46 | |
camelia | rakudo 10b9ac: OUTPUT«Cannot modify an immutable value in method dispatch:<.=> at src/gen/CORE.setting:1154 in any at src/gen/Metamodel.nqp:1461 in block at /tmp/1pFS9XvIZu:1» | ||
PerlJam | r: my Buf $b = Buf.new(); | ||
camelia | rakudo 10b9ac: ( no output ) | ||
PerlJam | r: my Buf $b = $b.new(); | 06:49 | |
camelia | rakudo 10b9ac: ( no output ) | ||
Mouq | r: my Buf $b; $b .= new() #? | 06:50 | |
camelia | rakudo 10b9ac: OUTPUT«Cannot modify an immutable value in method dispatch:<.=> at src/gen/CORE.setting:1154 in any at src/gen/Metamodel.nqp:1461 in block at /tmp/blB71uYruw:1» | ||
06:53
kaare_ joined
06:59
abnorman joined
07:14
PacoAir joined
|
|||
grondilu | I think Buf is not mutable yet because at_pos is not yet redefined for it. | 07:14 | |
(see Buf.pm line 200) | |||
r: my Buf $b; $b = Buf.new: ^10; $b[3] = 13; | 07:15 | ||
camelia | rakudo ade8bc: OUTPUT«Cannot modify an immutable value in block at /tmp/LY_tto8SzH:1» | ||
07:31
crab2313 joined
07:47
spider-mario joined
|
|||
Mouq | rn: my $foo; 0..* ==>$foo | 07:48 | |
camelia | rakudo ade8bc: ( no output ) | ||
..niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Feed ops NYI at /home/p6eval/niecza/lib/CORE.setting line 1531 (die @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 3555 (infix:<==>> @ 4)  at /tmp/naIVkSJi6O line 1 (mainline @ 5)  at /home/p6eval/niecza/lib/CORE.setting li… | |||
07:58
abnorman left
07:59
PacoAir left
08:02
PacoAir joined
08:03
PacoAir left
08:39
Mouq left
08:42
cognominal left,
cognominal joined
|
|||
masak | oh hai #perl6 | 08:44 | |
masak is back home | |||
grondilu whishes he could write: loop do-something(); instead of loop { do-something() }; | 08:47 | ||
grondilu thought of this while writing rosettacode.org/wiki/Arithmetic-geo...ean#Perl_6 He though it would be nice if he could write loop given { ... } instead of loop { given {...} } | 08:49 | ||
08:55
thou left
09:02
SamuraiJack left
|
|||
masak | ah, so making 'loop' take a blast instead of just a block. | 09:05 | |
I *think* that'd fly. | |||
r: macro myloop($s) { quasi { loop { $s } } }; myloop say "!" | 09:06 | ||
09:06
SamuraiJack joined
|
|||
camelia | rakudo ade8bc: OUTPUT«(timeout)» | 09:06 | |
masak | er. | 09:07 | |
r: macro myloop($s) { quasi { loop { {{{$s}}} } } }; myloop say "!" | |||
camelia | rakudo ade8bc: OUTPUT«(timeout)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!xE2x90 | ||
masak | \o/ | ||
quotation levels are tricky ;) | |||
09:08
locsmif joined
|
|||
masak | locsmif: greetings. | 09:08 | |
09:11
rhr joined
|
|||
grondilu | masak: nice, but it doesn't work if I try: myloop given rand { .say } | 09:18 | |
masak | grondilu: try 'myloop do given rand { .say }' | 09:20 | |
grondilu: I haven't *actually* made it into a statement prefix, like 'try'. | 09:21 | ||
grondilu | indeed, do works | ||
masak | \o/ | ||
so 'myloop given <anything>' reads 'given' as a statement modifier. | |||
and so 'myloop given rand { .say }' is TTIAR. | 09:22 | ||
09:22
shinobicl_ left
|
|||
grondilu | got a weird error while trying: (do given rand { .say }) xx * | 09:24 | |
r: (do given rand { .say }) xx * | |||
camelia | rakudo ade8bc: ( no output ) | ||
grondilu | perl6 -e '(do given rand { .say }) xx *' | ||
===SORRY!=== | 09:25 | ||
Could not find sub cuid_1_1376731420.91863 | |||
masak submits rakuodbug | |||
diakopter | o_O | ||
sounds like an optimizer bug | |||
masak | hm, cannot reproduce locally. | ||
grondilu: are you on ade8bc? | |||
I seem to be on 0cd2c68 locally. | 09:26 | ||
grondilu | hang on | ||
locsmif | hi masak | ||
grondilu | the macro definition was actually still there (I did not bother deleting it) | ||
if I remove it, the error does not appear. | |||
masak | locsmif: I'd like to extend a sincere welcome. if there's anything I can help with, please ask. | ||
grondilu | r: macro myloop($s) { quasi { loop { {{{$s}}} } } }; (do given rand { .say }) xx * | 09:27 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376731623.80477» | ||
09:27
cognominal left
|
|||
grondilu | r: macro myloop($s) { quasi { loop { {{{$s}}} } } }; | 09:27 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376731638.76788» | ||
grondilu | weird, isn't it? | ||
masak | oh! it's 'cus of the macro. | ||
09:27
cognominal joined
|
|||
locsmif | masak: thanks, just your regular Perl affacianado hanging around. :) | 09:27 | |
afficianado* | |||
masak | locsmif: yes, I figured that out. :) | ||
locsmif: since you show up so soon after a YAPC ;) | 09:28 | ||
locsmif | Heh... never been to one unfortunately, but I believe there must be some where I am (NL) | ||
masak | grondilu: why the heck did you get it for the 'perl6 -e' execution above? is that a real copy-paste? | ||
locsmif: oh! then I was wrong. :) anyway, welcome! | 09:29 | ||
rn: say <greetings aloha welcome>.roll, " locsmif!" | |||
camelia | rakudo ade8bc, niecza v24-88-g1f87209: OUTPUT«welcome locsmif!» | ||
masak | :D | 09:30 | |
locsmif | :D | ||
09:31
colomon joined
|
|||
masak | r: say "When someone asks 'Where can I download Perl 6?', we ought to say 'Here is Rakudo Star'." | 09:33 | |
camelia | rakudo ade8bc: OUTPUT«When someone asks 'Where can I download Perl 6?', we ought to say 'Here is Rakudo Star'.» | ||
masak | star: say "When someone asks 'Where can I download Perl 6?', we ought to say 'Here is Rakudo Star'." | ||
camelia | star 2013.02: OUTPUT«When someone asks 'Where can I download Perl 6?', we ought to say 'Here is Rakudo Star'.» | ||
masak | 2013.02 is the newest Star release? :/ | ||
grondilu | masak: it was a "hand-made" copy paste, if you see what I mean. | ||
masak | grondilu: that explains it. | 09:34 | |
grondilu: please don't do that. :) it makes it harder to reason deductively about causes. | |||
grondilu | ok | ||
09:39
Mouq joined
09:41
crab2313 left
|
|||
masak | r: macro myloop($s) { quasi { loop { {{{$s}}} } } } | 09:42 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376732548.89373» | ||
masak | r: macro myloop($s) { quasi { loop { {{{$s}}} } } }; say "A" | ||
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376732554.79208» | ||
masak | r: macro myloop($s) { quasi { loop { } } }; say "A" | ||
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376732563.08685» | ||
masak | r: macro myloop($s) { quasi { } }; say "A" | ||
camelia | rakudo ade8bc: OUTPUT«A» | ||
masak | r: macro myloop($s) { quasi { loop { } } } | 09:43 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376732590.26211» | ||
09:46
rindolf joined
|
|||
Mouq | also | 09:51 | |
r: macro myloop($s) { quasi { while 1 { } } } | |||
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376733098.895» | ||
Mouq | but not | ||
r: macro myloop($s) { quasi { for 1 { } } } | |||
camelia | rakudo ade8bc: ( no output ) | ||
Mouq | r: macro myloop($s) { quasi { for 1..* { } } } | 09:52 | |
camelia | rakudo ade8bc: ( no output ) | ||
timotimo | r: macro myloop($s) { quasi { loop { } } }; say &myloop; | 09:54 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376733256.21519» | ||
timotimo | r: macro myloop($s) { quasi { loop { } } }; say "alive?"; | ||
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376733262.89451» | ||
timotimo | ah, so it's not even that. | ||
masak | right. | 09:55 | |
it's macros and loops (but not for loops), AFAICS. | 09:56 | ||
09:57
colomon left
|
|||
Mouq | r: macro myloop($s) { quasi { 1; loop { } } } | 10:01 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376733672.75965» | ||
Mouq | r: macro myloop($s) { quasi { for 1 {}; loop { } } } # :B | 10:02 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_2_1376733748.30408» | ||
timotimo | i still can't get rakudo to build | 10:03 | |
something must be foul | |||
10:04
Rotwang joined,
pdcawley joined
|
|||
moritz tries again | 10:06 | ||
timotimo | but i didn'r get the unwind exception, i get the very early class not found thingie | ||
anyway, i need to go now | |||
moritz | timotimo: are you on nqp/master? | ||
timotimo | yes | ||
configured and made clean a few times over | |||
Mouq | The latest commit make'd for me :/ | 10:09 | |
Oh, maybe I was doing stuff wrong though... | 10:10 | ||
dalek | kudo/nom: d9f8d6e | tadzik++ | tools/build/Makefile-JVM.in: Make 'make install' build stuff |
||
masak | r: quasi { loop {} } | 10:12 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376734365.60755» | ||
moritz | r: quasi { loop {} }; 1 | 10:13 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Could not find sub cuid_1_1376734386.4858» | ||
moritz | ok, it's not sink context that's to blame :-) | ||
masak | I bet from hunting that one down, I will learn something about the Rakudo internals. | ||
moritz: right -- that's easy to assume, but we established above that it wasn't. | 10:14 | ||
GlitchMr | std: "\x" | 10:18 | |
camelia | std c2215f0: OUTPUT«===SORRY!===Unrecognized backslash sequence: '\x' at /tmp/Vb18QyNjxB line 1:------> "\x⏏"Check failedFAILED 00:00 41m» | ||
GlitchMr | It's \x00 in Perl 5 (but I assume it's one of its bugs...) | ||
tadzik | moritz: I think you know; where is -I implemented? | ||
masak | GlitchMr: I assume so too. | 10:21 | |
pdcawley | 1 @ 2 | 10:23 | |
Gah! Completely the wrong window. | |||
masak | :) | ||
diakopter | pdcawley: oh noes! :D | 10:24 | |
pdcawley | Heh. | ||
Thinking smalltalk. | |||
masak | r: multi infix:<@>($l, $r) { $l +^ $r }; say 1 @ 2 | ||
camelia | rakudo ade8bc: OUTPUT«3» | ||
masak | \o/ | ||
pdcawley | r: multi infix:<@>($x,$y) { Point.new(...) } | 10:25 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!=== Error while compiling /tmp/bgYBfDHoYEUndeclared name: Point used at line 1» | ||
pdcawley | Just need to write the point class :) | ||
r: class Point { has $.x; has $.y; }; multi infix:<@>($x, $y) { Point.new(:x<$x>, :y<$y>) }; say 1 @ 2 | 10:27 | ||
camelia | rakudo ade8bc: OUTPUT«Point.new(x => "\$x", y => "\$y")» | ||
pdcawley | Awesome! | ||
r: class Point { has $.x; has $.y; }; multi infix:<@>($x, $y) { Point.new(:x<$x>, :y<$y>) }; say 1@2 | |||
camelia | rakudo ade8bc: OUTPUT«Point.new(x => "\$x", y => "\$y")» | ||
jnthn | pdcawley: Point.new(:$x, :$y) # shortcut :) | 10:28 | |
pdcawley | Presumably, if I added a 'method perl' to Point, that output could be rejiggered to ($x@$y) | 10:29 | |
jnthn: Of course! | |||
jnthn | um, and...I think you wanted :x($x), as :x<$x> is a literal :) | ||
pdcawley | Ah. Right. Yes. | ||
Been away from six a while. | |||
pdcawley keeps reading the docs... | 10:30 | ||
diakopter | we have docs? | 10:32 | |
pdcawley | There's something at doc.perl6.org | ||
Can't say they're brilliant, but they're a start. | |||
I'm also vaguely wondering if we (can) get Haskell style autocurrying... | 10:34 | ||
sub foo($a, $b) is Curried { ... } or some such? | |||
pdcawley blinks... circumfix () and circumfix {}? They're just operators like any other? | 10:36 | ||
That's awesome. | |||
masak | aye. | 10:37 | |
we have prefix, postfix, infix, but then also circumfix and postcircumfix. | |||
the only one that's obviously missing is precircumfix ;) | 10:38 | ||
pdcawley | Could one do multi circumfix:(Announcement *@ann) and have it yield an AnnouncementCollection or some such? | ||
Or just override comma? | |||
jnthn | r: sub circumfix:<LOL LOL>($str) { $str.subst('s', 'z', :g) }; say LOL 'cheeseburger' LOL | 10:39 | |
camelia | rakudo ade8bc: OUTPUT«cheezeburger» | ||
pdcawley has been playing with smalltalk - overriding comma for building specialized collections is one of those tricks you want to use everywhere. | |||
masak | pdcawley: the syntax is 'circumfix:<[ ]>(Announcement *@ann)' or some such. | 10:41 | |
pdcawley | masak: Gotcha - jnthn's example was helpful. | 10:42 | |
masak | that is, you specify the actual circumfixing symbols inside alligator quotes. | ||
jnthn | The...alligator?! | ||
masak | :) | ||
jnthn | Did we call them that before? :P | ||
masak | not that I know of. | ||
but that's obviously what they are :> | |||
pdcawley | `~< >~' are alligators, surely? | 10:43 | |
masak | r: sub circumfix:<< ~< >~ >>($str) { $str.uc }; say ~< 'come here... om nom nom' >~ | 10:44 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!=== Error while compiling /tmp/7WbjybgfGQTwo terms in a rowat /tmp/7WbjybgfGQ:1------> c }; say ~< 'come here... om nom nom' >~⏏<EOL> expecting any of: postfix infix stopper infix or meta-… | ||
masak | hrm... that looks legit to me. | ||
std: sub circumfix:<< ~< >~ >>($str) { $str.uc }; say ~< 'come here... om nom nom' >~ | |||
camelia | std c2215f0: OUTPUT«===SORRY!===Prefix requires an argument at /tmp/xl_7WWEqT3 line 1 (EOF):------> c }; say ~< 'come here... om nom nom' >~⏏<EOL>Other potential difficulties: >~ is not an infix operator (to suppress warning put space between in… | ||
jnthn | masak: Conflict with the prefix. | ||
masak | yesbut... LTM... | 10:45 | |
jnthn | masak: EXPR always parses a prefix, then a term. | ||
And a circumfix is a term. | |||
masak | ah. | ||
pdcawley | looking at these docs again... various operators doing 'returns Numeric:D' | ||
jnthn | LTM only helps if you're looking for the right categories :P | ||
pdcawley | what does the :D mean? | ||
masak | pdcawley: defined. | ||
pdcawley: often it means "don't accept the type object" | |||
r: sub foo(Int) { say "yess!" }; foo Int | |||
camelia | rakudo ade8bc: OUTPUT«yess!» | ||
masak | r: sub foo(Int:D) { say "yess!" }; foo Int | 10:46 | |
camelia | rakudo ade8bc: OUTPUT«Parameter '' requires an instance, but a type object was passed in sub foo at /tmp/oyXUsKZKJj:1 in block at /tmp/oyXUsKZKJj:1» | ||
pdcawley | So 'returns Numeric' means? | ||
masak | pdcawley: that they return anything Numeric, including the type object. | ||
pdcawley | r: sub foo(Int) { say "yess!" }; foo undef | ||
camelia | rakudo ade8bc: OUTPUT«===SORRY!=== Error while compiling /tmp/YllCqdlX_FUnsupported use of undef as a value; in Perl 6 please use something more specific: Any (the "whatever" type object), an undefined type object such as Int, :!defined as a matcher, Any:U as a | ||
..ty… | |||
masak | pdcawley: in Perl 6, a type object like Numeric is on "equal footing" with actual instance objects. | ||
pdcawley: undefined is abolished as being not type-y enough. | |||
pdcawley | So, undef : Perl 5 :: Nil : Perl 6 | 10:47 | |
r: sub foo(Int) { say "yess!" }; foo Nil | |||
camelia | rakudo ade8bc: OUTPUT«===SORRY!===CHECK FAILED:Calling 'foo' will never work with argument types (Nil) (lines 1, 1) Expected: :(Int )» | ||
pdcawley | Allowing an instance of the type or the type objects seems like an interesting choice. | ||
Not particularly Huffmanized it seems to me. | 10:48 | ||
jnthn back in a bit | 10:49 | ||
masak | pdcawley: no, I'd say in most cases Any stands in for 'undef'. | 10:50 | |
pdcawley: but if, as above, your &foo wants an Int, then Int stands in for 'undef'. | 10:51 | ||
think of it as a "typed 'undef'" | |||
pdcawley | Hmm... that might take a bit of getting used to. | 10:52 | |
What's the diff between a type object and a class? | |||
Mouq | I don't think there is one. (?) See for example Math::Quaternion github.com/Util/Perl6-Math-Quatern...ernion.pm6 | 10:54 | |
masak | pdcawley: the type object is an object that can be used to represent either the whole class, or an undefined object of that class. | ||
pdcawley: one very common use of type objects is to simply do Dog.new on them. | |||
pdcawley: that is, type objects have all the methods instances of that class have. but you're not supposed to call methods that use attributes, since type objects don't deal in attributes. | 10:55 | ||
pdcawley | No parameterised types? | ||
List(Int) ? | |||
masak | yes, but only in roles. | ||
classes in Perl 6 are too "messy" to do parameterization. roles are static enough to do it. | 10:56 | ||
GlitchMr | std: <<<<<<< | 10:57 | |
camelia | std c2215f0: OUTPUT«===SORRY!===Unable to parse shell-quote words at /tmp/yaV_PbXveb line 1:------> <BOL>⏏<<<<<<<Couldn't find final '>>'; gave up at /tmp/yaV_PbXveb line 1 (EOF):------> <<<<<<<⏏<EOL>Parse failedFAILED 00:00 … | ||
GlitchMr | std: #DEBUG -1 | 10:58 | |
camelia | std c2215f0: OUTPUT« ::::::::::::::: RE_any 3 [RE_ast.pm:553] :::::::::::::::: RE_sequence [RE_ast.pm:518] ::::::::::::::::: RE_meta $ [RE_ast.pm:401] ::::::::::::::::: RE_method ws [RE_ast.pm:411] ::::::::::::::::: RE_method_re before [RE_ast.pm:440] :::::::::::::::::: | ||
..RE_cclass [… | |||
GlitchMr | rn: gist.github.com/GlitchMr/6256391 | 11:00 | |
camelia | rakudo ade8bc: OUTPUT«===SORRY!===Found a version control conflict markerat /tmp/3Tr1PxZtcG:3------> <<<<<<<⏏ yours:sample.p6Preceding context expects a term, but found infix ==== insteadat /tmp/3Tr1PxZtcG:5------> ====⏏===… | ||
..niecza v24-88-g1f87209: OUTPUT«===SORRY!===Found a version control conflict marker at /tmp/ysNSBYrpYV line 3:------> <<<<<<<⏏ yours:sample.p6Bogus statement at /tmp/ysNSBYrpYV line 5:------> <BOL>⏏=======Parse failed»… | |||
pdcawley | From Perl6::Math::Quaternion »**» vs »*« ? | ||
(That class is rather splendid, btw) | 11:01 | ||
masak | pdcawley: the direction of the » markers indicate a kind of strictness. | 11:02 | |
r: my @x = 1, 2, 3; my @y = 10, 20, 30; say @x »+« @y | |||
camelia | rakudo ade8bc: OUTPUT«11 22 33» | 11:03 | |
pdcawley | Okay... | ||
masak | r: my @x = 1, 2, 3; my @y = 10; say @x »+« @y | ||
camelia | rakudo ade8bc: OUTPUT«Lists on both side of non-dwimmy hyperop of infix:<+> are not of the same lengthleft: 3 elements, right: 1 elements in sub hyper at src/gen/CORE.setting:15490 in sub hyper at src/gen/CORE.setting:15478 in block at src/gen/CORE.setting:15469 in block at /… | ||
masak | r: my @x = 1, 2, 3; my @y = 10; say @x »+» @y | ||
camelia | rakudo ade8bc: OUTPUT«11 12 13» | ||
masak | see, if you turn an arrow towards the operand, it doesn't have to be of the same shape as the other operand. | ||
(and values are sort of filled in, rotating back to the beginning as necessary) | 11:04 | ||
pdcawley | So if you're raising everything in a list to the same power, you do @list »**« $pow | ||
Sorry »**» $pow | |||
masak | aye. | ||
correct. | |||
by the way, every time you do something like »**» with both arrows turned the same way, you should consider whether it's actually hyper behavior you want/need, or whether it's laziness with X** | 11:05 | ||
they give the same result, but they behave differently. | |||
jnthn | Z** ? | 11:06 | |
masak | oh! | 11:07 | |
yes. | |||
of course. | |||
pdcawley | masak: I like laziness well enough, but Z**? | ||
masak | rightright, Z** | 11:08 | |
pdcawley | snippet? | ||
masak | r: my @x = 1, 2, 3; my @y = 10; say @x Z+ @y | ||
er. | |||
camelia | rakudo d9f8d6: OUTPUT«11» | ||
masak | r: my @x = 1, 2, 3; my @y = 10; say @x Z+ @y, * | ||
camelia | rakudo d9f8d6: OUTPUT«Cannot call 'Numeric'; none of these signatures match::(Mu:U \v: Mu *%_) in method Numeric at src/gen/CORE.setting:961 in sub infix:<+> at src/gen/CORE.setting:3561 in sub infix:<+> at src/gen/CORE.setting:3559 in block at src/gen/CORE.setting:15359 in … | ||
masak | r: my @x = 1, 2, 3; my @y = 10, 20, 30; say @x Z+ @y | 11:09 | |
camelia | rakudo d9f8d6: OUTPUT«11 22 33» | ||
pdcawley | take @x Z+ @y ? | ||
masak | sorry, what? | ||
Mouq | Whoa. My brain just exploded when I realized you could (I'm pretty sure) implement X and Z with something sub infix:<X> (@a, @b) is parsed({...}) {...} | ||
pdcawley | Z = zip? | ||
Mouq | r: my @x = 1, 2, 3; my @y = 10; say @x Z+ @y xx * | ||
masak | pdcawley: aye. | ||
camelia | rakudo d9f8d6: OUTPUT«11 12 13» | ||
pdcawley | Implicitly lazy? | ||
masak | pdcawley: and zip is lazy, whereas hyperops are not. | ||
pdcawley: yes. | |||
pdcawley: it took us years to realize that X and Z were not just operators (cross product and zip, respectively), but also metaoperators. | 11:10 | ||
pdcawley | Hmm... not take, because take belongs to gather... | ||
masak: Writing zipWith all the time? | |||
r: my @x = 1,2,3; say @x X, @x | 11:11 | ||
camelia | rakudo d9f8d6: OUTPUT«1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3» | ||
pdcawley | r: my @x = 1,2,3; say @x X @x | ||
camelia | rakudo d9f8d6: OUTPUT«1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3» | ||
masak | pdcawley: I don't remember what we did before that. I guess we looped over stuff with 'for @x Z @y' and did things in the loop. | ||
pdcawley | r: my @x = 1,2,3; say @x X=> @x | ||
camelia | rakudo d9f8d6: OUTPUT«1 => 1 1 => 2 1 => 3 2 => 1 2 => 2 2 => 3 3 => 1 3 => 2 3 => 3» | ||
pdcawley | masak: zipWith's a pretty common higher order combinator. | 11:12 | |
masak | aye. | ||
guess we were slow on that one :) | |||
pdcawley | Does Z($a,$b -> { ... }) work then? | ||
Or have we got Haskelly list comprehensions for more complex combinators? | 11:13 | ||
masak | metaoperators work *only* on operators. | 11:15 | |
well, kinda. | |||
pdcawley | While I'm about it, if I want to do (1,2,3) ??? (1,2) and get ([1,1], [2,2]) as output (ie, zipping to the shortest), what do I do? | ||
masak | pdcawley: but you can do '@a Z @b Z @c' and it'd do what you want. | ||
because chaining operators. | |||
pdcawley | masak: I don't think you get what I want. | ||
masak | no, maybe not. | 11:16 | |
pdcawley | Zipping two lists and combining with an arbitrary lambda rather than a given op. | ||
GlitchMr | std: use incorrect | ||
camelia | std c2215f0: OUTPUT«===SORRY!===Cannot locate module incorrect at /tmp/JtqfzMxVD2 line 1 (EOF):------> use incorrect⏏<EOL>Check failedFAILED 00:00 41m» | ||
GlitchMr | Why neither Niecza or Rakudo has Sorry message in that case. | ||
pdcawley | Haskelly style, zipWith \x,y -> x * y + 999 $ xs | ||
masak | pdcawley: easiest to wrap your arbritary lambda in a sub or an op, I thinkk. | ||
think* | |||
pdcawley | p'shaw! | 11:17 | |
masak | pdcawley: or use the actual zipwith function. | ||
pdcawley | Happy enought to use zipWith :) | ||
persumably zipWith is lazy. | |||
masak | aye, 'cus it drives the operator. | ||
pdcawley | is there an equivalent to haskell's handy `func` which magically turns a binary function into an infix operator? | 11:19 | |
masak | r: my @words = <so many words>; say @words.zipwith( -> $l, $r { $l ~ $r }) | ||
camelia | rakudo d9f8d6: OUTPUT«No such method 'zipwith' for invocant of type 'Array' in block at /tmp/rJmOquADfd:1» | ||
masak submits NYI rakudobug | |||
.zipwith is mentioned in S03:4774 | 11:20 | ||
synopsebot | Link: perlcabal.org/syn/S03.html#line_4774 | ||
masak | pdcawley: yes, kinda. | ||
pdcawley | masak: I'd expect a second list argument there... | ||
And generally expect zipWith to be a function, not a method. | |||
masak | pdcawley: oh, you're right. | ||
r: sub foo { say "It was $^a and $^b" }; say "ham" [&foo] "eggs" | 11:21 | ||
camelia | rakudo d9f8d6: OUTPUT«===SORRY!=== Error while compiling /tmp/cETJixHW8hUnable to parse expression in bracketed infix; couldn't find final ']'at /tmp/cETJixHW8h:1------> say "It was $^a and $^b" }; say "ham" [&⏏foo] "eggs"» | ||
masak | hrm. | ||
pdcawley | r: @a = (1,2,3); @b = (5,6,7); zipWith [+], @a, @b | ||
camelia | rakudo d9f8d6: OUTPUT«===SORRY!=== Error while compiling /tmp/pPahNJgfWoVariable '@a' is not declaredat /tmp/pPahNJgfWo:1------> @a⏏ = (1,2,3); @b = (5,6,7); zipWith [+], @ expecting any of: postfix» | ||
masak | r: (<a b>; 1,2).zipwith(&[~]) | ||
camelia | rakudo d9f8d6: OUTPUT«WARNINGS:Useless use of "a b" in expression "a b" in sink context (line 1)No such method 'zipwith' for invocant of type 'Parcel' in block at /tmp/57qxSq2VBV:1» | ||
masak | that's the actual example from S03. | ||
guess list-of-lists are not quite there yet. | 11:22 | ||
bah. | |||
pdcawley | r: my @a = (1,2,3); my @b = (5,6,7); zipWith [+], @a, @b | 11:23 | |
camelia | rakudo d9f8d6: OUTPUT«===SORRY!=== Error while compiling /tmp/Cnfn76gZfTUndeclared routine: zipWith used at line 1» | ||
jnthn | r: zip | 11:24 | |
camelia | rakudo d9f8d6: OUTPUT«(timeout)» | ||
masak | r: sub zipWith(&op, @l, @r) { map { &op($^l, $^r) }, (@l Z @r) }; say (zipWith &[+], <1 2 3>, <70 80 90>).perl | ||
camelia | rakudo d9f8d6: OUTPUT«(71, 82, 93).list» | ||
masak | \o/ | ||
masak submits rakudobug on jnthn's timeout | |||
jnthn wonders where zip is defined | |||
pdcawley | masak: Wants to take >=2 lists surely? | 11:25 | |
masak | pdcawley: just a simple example. but yes. | ||
jnthn | oh... | ||
my &zip := &infix:<Z>; | |||
:) | |||
pdcawley | ie, 'zipWith &[+], @a, @b, @c' should work. | ||
masak | jnthn: still shouldn't hang. | ||
jnthn | masak: aye, no idea why it does that. | 11:26 | |
masak | pdcawley: yes; this is where lists of lists come in. | ||
pdcawley | lists of lists, or parcels of lists? | ||
jnthn | Well, I think @a Z @b Z @c works... | ||
tadzik | jnthn: I have a feeling something's wrong with ModuleLoader's search_paths | ||
if INC is set, it completely skips vm_search_paths | |||
masak | jnthn: yes, it does. | ||
pdcawley | r: my @a = (1,2,3); (@a Z @a Z @a).perl | ||
camelia | rakudo d9f8d6: ( no output ) | ||
pdcawley | r: my @a = (1,2,3); say (@a Z @a Z @a).perl | ||
camelia | rakudo d9f8d6: OUTPUT«((1, 1, 1), (2, 2, 2), (3, 3, 3)).list» | 11:27 | |
tadzik | that can't be right, can it? | ||
masak | pdcawley: "lists of lists" is our slightly wrong term for "parcels of lists" | ||
pdcawley | masak: Fairy nuff. | ||
tadzik | pdcawley: could you upload the lyrics for "1-2-3 Perl Hackers" somewhere, while the video is not online yet? | ||
pdcawley | Nope. | ||
And I'd rather the video weren't online. | 11:28 | ||
tadzik | oh | ||
why so? | |||
pdcawley | That stuff is under the "What happens at YAPC stays at YAPC" | ||
licencse. | |||
tadzik | heh, ok | ||
masak | pdcawley++ | ||
pdcawley | It's lyrically ropey as hell. | ||
Which is fine when it's a song about what happened at a particular event, but not fine for it to have a life after that. | |||
jnthn | tadzik: Note that in terms.pm, the things that are normally identified by vm_search_paths should be being put into @INC. | 11:30 | |
tadzik: So it's redundant once @INC is there. | |||
pdcawley | If I implement 'multi sub perl(MyType $thing) { ... }', do I get $mything.perl for foree? | ||
tadzik | oh. Seems like they aren't for some reason | ||
pdcawley | s/foree/for free/? | ||
Expecting the answer to be 'yes', but just checking | |||
tadzik | symptom: if I use either PERL6LIB or -I, Test.pm is not being located anymore | ||
jnthn | tadzik: OK, maybe check for if there's any accidental differences :) | ||
tadzik | it must be something jvm-specific | 11:31 | |
jnthn | tadzik: Sure...I wonder if we're missing some notion of install directory? | ||
tadzik: In the paths, I mean. | |||
tadzik | possibly | ||
our install is a bit dodgy | |||
jnthn | Well, on an installed one, does @*INC contain the place wehre Test.pm is put? :) | 11:33 | |
If not, that's probably the problem ;) | |||
tadzik | it may be that it doesn't :) | ||
pdcawley | So... if I wanted to contribute something to perl6, where's zipWith documented and can I implement it in perl6, or should I use nqp? | 11:34 | |
11:35
colomon joined
|
|||
pdcawley | r: say perl (1,2,3) Z (1) | 11:35 | |
camelia | rakudo d9f8d6: OUTPUT«===SORRY!=== Error while compiling /tmp/dM7R1LlsU_Undeclared routine: perl used at line 1» | ||
pdcawley | r: say ((1,2,3) Z (1)).perl | 11:36 | |
camelia | rakudo d9f8d6: OUTPUT«((1, 1),).list» | ||
pdcawley | Hmm... docs say perl should work as a multisub as well as as a method. | ||
11:36
xinming left
11:38
xinming joined
|
|||
pdcawley | r: (<a b>; 1,2).zip.lol.map: { .reduce(&[~]) } | 11:40 | |
camelia | rakudo d9f8d6: OUTPUT«WARNINGS:Useless use of "a b" in expression "a b" in sink context (line 1)No such method 'zip' for invocant of type 'Parcel' in block at /tmp/JoeDRl60Pe:1» | ||
pdcawley | Hmm... no wonder the synopsis for .zipWith isn't there, the .zip isn't there either :) | ||
(<a b>; 1,2).lol | |||
r: say (<a b>; 1,2).lol | 11:41 | ||
camelia | rakudo d9f8d6: OUTPUT«WARNINGS:Useless use of "a b" in expression "a b" in sink context (line 1)1 2» | ||
pdcawley is making shit up and expecting the computer to understand him now... | |||
cosimo | aren't we all? | 11:46 | |
pdcawley | There is that :) | ||
r: (<a b>; 1,2).zip.tree.map: { .reduce(&[~]) } | 11:49 | ||
camelia | rakudo d9f8d6: OUTPUT«WARNINGS:Useless use of "a b" in expression "a b" in sink context (line 1)No such method 'zip' for invocant of type 'Parcel' in block at /tmp/CxAifWdgSq:1» | ||
GlitchMr | glitchmr.github.io/perl-changes-2013W10.html (error pages, why I bother...) | ||
pdcawley | r: say (<a b>; 1,2).tree | ||
camelia | rakudo d9f8d6: OUTPUT«WARNINGS:Useless use of "a b" in expression "a b" in sink context (line 1)1 2» | ||
jnthn | pdcawley: Try just , there | ||
instead of ; | |||
pdcawley | r: say (<a b>, (1,2)).tree | 11:50 | |
camelia | rakudo d9f8d6: OUTPUT«a b 1 2» | ||
pdcawley was following other examples. | |||
jnthn | r: say (<a b>, (1,2)).tree.perl | ||
camelia | rakudo d9f8d6: OUTPUT«LoL.new($("a", "b"), $(1, 2))» | ||
GlitchMr | Isn't ";" so called "comma" operator. | ||
pdcawley | r: say ;.perl | ||
camelia | rakudo d9f8d6: OUTPUT«» | ||
pdcawley | r: say (1,2;3,4).perl | 11:51 | |
camelia | rakudo d9f8d6: OUTPUT«WARNINGS:Useless use of "," in expression "1,2" in sink context (line 1)(3, 4)» | ||
jnthn | shopping & | ||
pdcawley | ast: (1,2;3,4) | ||
Right. Need to go buy Earl Grey Tea. | 11:52 | ||
I shall be back - mind blown by how far P6 has come since I last looked :) | |||
And a pointer on how to contribute a zip/zipWith implementation would be handy for when I get back - even just a pointer to a webpage. | |||
12:03
birdwindupbird joined
|
|||
Mouq | Am I right to think that I can have a role in it's own file (My/Role.pm) and then maybe use My::Role somehow? | 12:08 | |
s/it's/its/ | |||
colomon | pdcawley! \o/ | 12:12 | |
Mouq: yes | |||
Mouq | Awesomecoolness, thank you | 12:13 | |
colomon has role ABC::Duration in lib/ABC/Duration.pm, so it even works. ;) | |||
12:15
rindolf left
|
|||
masak | moritz: just found this: lesswrong.com/lw/hmx/prisoners_dile...urce_code/ lesswrong.com/lw/hxy/prisoners_dile...t_results/ (haven't read it yet) | 12:23 | |
12:28
xenoterracide joined
|
|||
timotimo | GlitchMr: that error page is super cute! | 12:29 | |
i was able to build jakudo by supplying an absolute path to --with-nqp | |||
thanks for the hint, whoever i have that from | |||
12:31
dmol1 joined
12:32
dmol left
12:42
cognominal left,
cognominal joined
12:44
mtk joined
12:50
cognominal left,
cognominal joined
|
|||
FROGGS | masak / jnthn: when nqp::sprintf passes the spectest suite and most of P5's sprintf tests, I am allowed then to use it for parrot backend too? | 12:57 | |
jnthn | FROGGS: It'll pass more spectests on Parrot too then, 'cus it handles bigint better, iiuc? | 12:59 | |
FROGGS | jnthn: that should be the case, yes | 13:00 | |
13:00
crab2313 joined
|
|||
FROGGS | right now I have a problem with the nqp test for it though, there is a testbigint repr, and it complains about get_integer() not being implemented... | 13:00 | |
jnthn | FROGGS: Maybe a missing nqp::unbox_i somewhere? | 13:01 | |
13:02
domidumont joined
|
|||
FROGGS | I'll have a look... thank you! | 13:05 | |
13:07
Mouq left
13:16
census left
13:18
coax75ohm joined
|
|||
colomon | FROGGS: Glad to see someone else hacking on sprintf. :) | 13:27 | |
masak | \o/ | 13:28 | |
13:38
fridim__ joined
|
|||
timotimo | hm, can i assign to $/<something>? perhaps clear it? | 13:40 | |
jnthn | no | ||
timotimo | i have a schlemiel-the-painter algorithm in my table parser right now | ||
although that pretty much could be helped by moving one part into its own rule, i should probably really try that. | 13:41 | ||
13:45
donaldh joined
|
|||
colomon has just received a complaint that his C++ code doesn't work with Visual C++ 6.0. That's because the code uses features from ISO C++'98. :( | 13:50 | ||
timotimo | :( | 13:51 | |
but vc++ 6 is pretty old now, too, isn't it? | |||
geekosaur | "and I can't view your web site in IE6" | 13:54 | |
TimToady | heh: t/00-parrot/09-pir.t ............... skipped: This is not Parrot and cannot run PIR blocks | 13:55 | |
but it passes all the rest of the "parrot" tests | |||
so maybe we need to pull some of those tests out of the "parrot" category into the "rakudo" category... | 13:56 | ||
jnthn | Yes, it's misnamed :) | 13:58 | |
Years of legacy there ;) | |||
moritz | shall we rename them to 00-pre-sanity ? :-) | 13:59 | |
tadzik | unsanity | ||
donaldh | hi perl6 o/ | ||
jnthn | Is there actually any real line between 00-* and 01-* tests? | 14:00 | |
masak | hi, donaldh | ||
jnthn | I'm not sure there's any contemporary, interesting dividing line | ||
TimToady | eventually all the tests are sanity tests :) | 14:01 | |
jnthn | Could just re-number and have 'em all in an 00-sanity or so | ||
ruoso | do junctions autothread in the jvm already? | 14:02 | |
masak .oO( o.O-sanity ) | |||
jnthn | ruoso: yeah | ||
ruoso | yay | ||
jnthn | ruoso: Well, thing we pass all the junction tests we do on Parrot at least :) | ||
masak | jnthn: autothread as in *actual threads*? | 14:05 | |
moritz | that would be an interesting experiment | ||
jnthn | masak: no, that's not what autothread means | 14:07 | |
(to me, at least.) | |||
ruoso | ahhh | ||
heh... | |||
14:07
PacoAir joined
|
|||
masak | jnthn: I just saw the misunderstanding between you and decided to point it out. :) | 14:07 | |
jnthn | I'm skeptical that most junction auto-threading would ever benefit from spreading the work over threads. | ||
I mean, the synchronization overhead would dominate | 14:08 | ||
diakopter | *thank you* | ||
finally someone who agrees with me | |||
ruoso | jnthn: my guess is that it will depend on how long you carry the junction | 14:09 | |
diakopter | .. unless the junction were many thousands of items.. and it's spread only over as many threads as there are cores | ||
jnthn | It's same with hyperops; @ten-things >>+<< @ten-things is *never* worth tossing off to threads. | ||
Unless your things are, like, huge matrices, and you overloaded + for matrix addition :P | 14:10 | ||
14:11
domidumont left
14:12
domidumont joined
|
|||
moritz | hyper != autothread | 14:12 | |
autothreading happens at call level, and you never know how expensive your calls are going to be | 14:13 | ||
jnthn | aye, but hyper does imply data parallelism. | ||
ruoso | it also depends on the cost of the operation | ||
gist.github.com/anonymous/6257055 | 14:14 | ||
14:15
crab2313 left
|
|||
ruoso | in this case, line 34, i create a junction with all the cells that may conflict with the current cell in the sudoku puzzle | 14:15 | |
the test itself is not trivial | |||
so it would probably benefit from using extra threads | 14:16 | ||
it already runs at more than 100% cpu (most likely because of the garbage collector that already runs in a different thread) | |||
masak | historically, it's one of those things where we have grown and learned over time as a community. so by the time hyperops were introduced it was all "ooh and we can just do everything in different threads", but these days we're like "it's a tradeoff, and it's often likely not to be worth the thread overhead". | 14:17 | |
ruoso | maybe we need a pragma | 14:18 | |
jnthn | The trick is finding good ways to decide if it is worth it. | ||
And then providing a pragma to allow finder-grained control. | |||
TimToady | or race it both ways and see who wins the first time :) | 14:19 | |
masak | to me it feels like a JIT thing, that would be based on statistics from actually running code. | 14:20 | |
TimToady | feeds are much likelier to benefit from threading | ||
ruoso | or estimate the cost of the function being called to see if would be worth | ||
TimToady | and some lazy lists that can be turned into feeds | 14:21 | |
ruoso | jnthn: how hard do you thikn it would be to make the change into using threads for an experiment? | 14:22 | |
TimToady --> much needed shower & | 14:25 | ||
jnthn | ruoso: Well, the auto-threader is written in Perl 6 code and the synchronization primitives you need already exist...may have to add a pre-decl or so on Promise... | 14:26 | |
ruoso: You can even experiment with it outside of CORE.setting I think. | 14:27 | ||
ruoso: Or do it as a module. | |||
See Junction.pm | |||
ruoso | Ok. I'll take a look | 14:28 | |
14:38
Psyche^ joined
14:42
Psyche^_ left
|
|||
ruoso | Interesting... for the sake of comparing performance, I used explicit async blocks, and now I got to a deadlock in the scheduler | 14:43 | |
because some jobs depend on other jobs which are not schedule because jobs in between did not get a chance to execute... | |||
jnthn | Yes, that's 'cus await and select aren't smart enough to yield back to the scheduler yet... | 14:45 | |
ruoso | if you point me to the code that handles that I could try and implement it | 14:46 | |
jnthn | It's all in Threading.pm | ||
ruoso | ok | ||
jnthn | It'll involve playing with the continuation stuff. :) | ||
My first attempt failed, but I only spent 15 mins on it... | 14:47 | ||
ruoso | Is creating resumable control exceptions possible? | 14:49 | |
jnthn | Hmm...if so, it's only to the degree that exception handlers run on the top of the stack, so a resumable exception is just something that doesn't unwind... | 14:50 | |
A control exception is needed somewhere in this, I suspect, but still need explicit use of the continuation ops too, like gather/take does | 14:51 | ||
(See GatherIter.pm for more on that) | |||
14:51
rindolf joined
|
|||
jnthn | We may wish to add another cont exception category, yield, or so. | 14:51 | |
14:52
domidumont left
|
|||
ruoso | I see something else that is missing, which is a way to tell the scheduler that the current thread is blocked and that it's waiting on something | 14:52 | |
jnthn | Well, that's really the mechanism await and select are interested in. | 14:53 | |
That is, making them do the right thing is really a case of implementing what we're discussing, perhaps with a sufficiently extensible API. | 14:54 | ||
14:55
benabik left
14:56
benabik joined
|
|||
ruoso | Ok... | 14:57 | |
14:57
pdcawley left
15:06
araujo left,
araujo joined
15:07
kbaker joined
15:14
ajr joined,
ajr is now known as Guest36177
15:15
Guest36177 is now known as ajr_
15:23
EvanTeitelman joined
|
|||
ruoso | jnthn: is a Channel going to be a Promise? or are they different types? | 15:23 | |
if not, is there a base type for all "things that one may await on?" | |||
tadzik | a role may be more suitable | 15:25 | |
but yeah, that sounds like a good idea | |||
and no, Channel is not going to be a Promise | |||
afaik :) | |||
ruoso | Yeah, I meant "base type" in a very loose sense... so yes, role makes more sense | 15:26 | |
JimmyZ | trait! | ||
is await | |||
ruoso | I think we may have to define that in order for me to implement the "blocked" state in the scheduler | ||
JimmyZ | is Promise | 15:27 | |
jnthn | No, Channel isn't Promise | 15:28 | |
I could imagine Awaitable/Selectable roles | |||
ruoso | Selectable makes sense | ||
since you are already reusing the "select" function | 15:29 | ||
jnthn | await operates on promises and channels also | 15:30 | |
tadzik | Late :) | 15:31 | |
15:32
locsmif_ joined
|
|||
moritz | late await? | 15:32 | |
15:38
thou joined
|
|||
dalek | Heuristic branch merge: pushed 75 commits to nqp/make-install by donaldh | 15:42 | |
15:42
berekuk left
|
|||
donaldh | hurrah, I've finally found tuits again | 15:43 | |
tadzik | \o/ | ||
15:44
colomon left
15:45
berekuk joined
15:47
berekuk left
15:49
SamuraiJack_ joined
15:50
SamuraiJack left
15:51
kaare__ joined
15:52
kbaker left,
census joined
15:53
pdcawley joined,
berekuk joined
15:54
kaare_ left
15:56
SamuraiJack__ joined
15:58
pdcawley left,
SamuraiJack_ left
16:00
berekuk left
16:12
dalek joined,
ChanServ sets mode: +v dalek
16:15
EvanTeitelman left
16:17
SamuraiJack__ left
16:46
|ChErOkY| joined
|
|||
|ChErOkY| | Hi | 16:46 | |
moritz | hello | 16:47 | |
|ChErOkY| | PacoAir, my friend :) | 16:48 | |
16:54
pdcawley joined
16:55
berekuk joined
16:59
pdcawley left
|
|||
donaldh | rakudo Configure.pm uses a particular regex /^([\w:]+)=(.*)/ to filter nqp --show-config output | 17:04 | |
does anyone know why?> | |||
geekosaur | given the captures, I assume it's parsing the output so $1 is a variable and $2 its value | 17:06 | |
masak | right. | ||
it expects lines of that shape. | 17:07 | ||
something like 'foo:bar:baz=42' | |||
moritz | grondilu: (re loop without curlies) the problem is that 'loop { }' is just a special case of 'loop (init; cond; increment) { ... }'. And in the general case, that would lead to two terms in a row if the curlies were omitted | 17:08 | |
masak | and indeed, 'nqp --show-config' seems to output something like that. | ||
geekosaur | right, I figured that so I focused on the captures | ||
masak | moritz: ah -- that's a good reason to not have that. I almost got there, but I didn't finish the thought. | ||
moritz++ | 17:09 | ||
moritz | well, actually even with curlies it's TTIAR, but the requirements that the second term is surrounded by curlies gives it back some sanity | ||
masak | donaldh: interestingly, this one will fail the regex: | ||
nqp::build-date=2013-07-06T21:41:05Z | |||
because of the dash. | |||
donaldh | indeed | ||
and jvm::runtime.jars | |||
masak | aye. | ||
feels a bit odd to be listing cases like that as characters turn out to be allowed on the left side. | 17:10 | ||
is there, like, a standard or something? | |||
moritz | maybe it should just be (\S+)=... | ||
masak | moritz: or ([^=]+)= | ||
donaldh | Looking at the output from parrot nqp, it looks like nqp::build-date is about the only victim | ||
Yeah, I wondered about ^= | 17:11 | ||
moritz | [^\s=]+ | 17:12 | |
masak | aye. | 17:13 | |
17:13
donaldh left
|
|||
moritz tests a patch for it | 17:14 | ||
17:17
araujo left
17:18
araujo joined
17:19
SamuraiJack__ joined
17:20
birdwindupbird left
|
|||
ruoso | Thinking about it... The "Promise" analogy works well for read operations, but gets slightly weird for write operations... | 17:30 | |
specifically, the term "result" is implicitly assuming read semantics | 17:33 | ||
timotimo | having just implemented the richards benchmark i don't really want to implement a proper scheduler for promises and friends | 17:36 | |
17:38
benabik left
|
|||
ruoso | of course we could consider the result of a write operation to be simply the status of the write... | 17:38 | |
17:38
benabik joined
17:41
p5eval joined
|
|||
jnthn | ruoso: I didn't really see it in terms of reads and writes. | 17:42 | |
It's about a piece of asynchronous work that will eventually produce a result or an exception. | |||
In a way, I guess promises and channels are mechanisms to avoid writes to shared memory. | 17:43 | ||
ruoso | well.. in that case, an exception is just a type of result, isn't it? | ||
jnthn | Yes. | ||
ruoso | Ok... in that case it makes sense | ||
jnthn | But we distinguish the cases. | 17:44 | |
ruoso | I am thinking to have simply "has_result" as a fundamental introspection | ||
jnthn | Well, that's really just .satus == any(Kept, Broken) | 17:45 | |
*status | |||
ruoso | (which would be true whenever it was a success or a failure) | ||
jnthn | If we don't already have such a method, I can see it being useful | ||
Though .completed would match the name channels have. | |||
ruoso | jnthn: the thing is that it needs to be a method to allow for lower-level implementations to decide | 17:46 | |
completed is also not the right one, because (specially in the case of channels) you may have more results later | 17:47 | ||
jnthn | completed on a channel means "no more results" | 17:49 | |
To send more results on a completed channel is an error. | |||
To keep/break a Promise multiple times also is | |||
So it fits nicely in that sense. | |||
ruoso | yes, but you may be unblocked with a few results before all results are available | ||
so you need to be able to block/unblock several times | |||
jnthn | ah, I guess it's a ready/completed distinction. | 17:50 | |
hm, ready is cute, 'cus it means what it says, but it's like, read-y, like, you can read it :P | |||
ruoso | or writey | 17:51 | |
;) | |||
jnthn | .oO( now somebody hits me on the head with an etymological dictionary and tells me that's where it came from... ) |
||
ruoso | are we useing "is_foo" or just "foo"? | 17:52 | |
(as a convention, I mean) | 17:53 | ||
arnsholt | jnthn: Unfortunately it doesn't look like it =) | 17:54 | |
'Cause that would have been kinda neat | 17:55 | ||
17:55
pdcawley joined
|
|||
jnthn | ruoso: Just foo | 17:55 | |
timotimo | i put a piece of my grammar into a separate regex and made it b0rk :( | 17:56 | |
jnthn | ruoso: has_blah is also kinda icky, which I why I was hunting for other things. I think for now I like .ready and .completed (which on a Promise mean the same). | ||
arnsholt: Yeah...I'm sure there's been at least once a bad pun turned out to be the etymology of a word... :P | |||
17:57
kaare__ is now known as kaare_
|
|||
arnsholt | Indeed =D | 17:57 | |
masak | jnthn: what arnsholt said. "ready" seems to come from a ME word meaning "prompt", while "read" comes from Sanskrit. | ||
ruoso | jnthn: I think I may need to add a type to qualify the items in the scheduler's queue | 17:58 | |
and probably move the status enum to that type | 17:59 | ||
jnthn | That last bit sounds wrong | ||
s/sounds/is/ :) | 18:00 | ||
18:00
pdcawley left
|
|||
ruoso | the secheduler need to be able to query the status for all the items in the queue | 18:00 | |
jnthn | The type bit may make sense. | ||
Hmmm | |||
But that sounds more to me like the thing holding the scheduled item actually has a dependencies list and you want to just call .ready on each of those. | 18:03 | ||
ruoso | Hmm... that may make sense, so the scheduler would have to keep of everything by itself | 18:05 | |
and the control exception could contain enough data to allow for that... | 18:06 | ||
I think you are right. This will encode less assumptions into the architecture, making it more future-proof | 18:07 | ||
I think I don't even need a new type for the items in the queue... | 18:08 | ||
18:10
donaldh joined
|
|||
[Coke] waves from the highway. | 18:14 | ||
timotimo | don't irc and drive! | 18:15 | |
masak | maybe [Coke] is hitch-hiking. | 18:17 | |
18:17
Mouq joined
|
|||
[Coke] | the wife is driving. I remembered I had a hot spot on my phone. | 18:19 | |
timotimo | you let the wifi drive? | 18:20 | |
benabik | Maybe a little bit of ice will cool it off. Remember to use a ziploc bag to keep the melt off the phone. | ||
Ooh, slides. jnthn++ | |||
timotimo | already seen them. they are recommended :) | 18:21 | |
masak | they are indeed. | ||
timotimo | i was a bit blown away by how easy the parallelism stuff can be combined, that really is great | ||
18:26
ajr_ left
18:28
rindolf left
|
|||
jnthn | Composability is often undervalued in software design... | 18:29 | |
timotimo | i've learnt to appreciate it through y'all | ||
masak winks and points to github.com/masak/workshop/blob/mas...compose.md | 18:32 | ||
timotimo | "Two simple examples" and then three bullet points :) | 18:33 | |
masak | oops -- fixing :) | 18:34 | |
jnthn | Maybe the third one is a complex example :P | ||
masak .oO( composition is nice, but once-and-only-once isn't so bad either ) :P | 18:35 | ||
fix'd. timotimo++ | |||
oh! CPAN is another really successful example of composition. | 18:36 | ||
hoo, found this. interesting. www.existentialprogramming.com/2010...every.html | 18:41 | ||
18:41
Mouq left
|
|||
masak | "There is no such thing as a Component" | 18:41 | |
ruoso | jnthn: I think I'll need a new thread to keep watching for blocked jobs to reinsert them to the queue as their blockers get ready... | ||
jnthn | Or just throw them into the queue main queue for now... :) | 18:47 | |
s:1st/queue// | |||
18:48
eviltwin_b joined
|
|||
ruoso | the blocked ones? | 18:48 | |
18:49
eviltwin_b is now known as geekosaur
|
|||
GlitchMr | rn: 09 | 18:50 | |
camelia | niecza v24-88-g1f87209: OUTPUT«Potential difficulties: Leading 0 does not indicate octal in Perl 6; please use 0o9 if you mean that at /tmp/bG0aidKfSR line 1 (EOF):------> 09⏏<EOL>» | ||
..rakudo d9f8d6: OUTPUT«Potential difficulties: Leading 0 does not indicate octal in Perl 6; please use 0o9 if you mean that at /tmp/gHv2_nIqpu:1 ------> 09⏏<EOL> Leading 0 does not indicate octal in Perl 6; please use 0o9 if you mean that at /tmp/gH… | |||
jnthn | ruoso: Yes; they'll come back around eventually and can be checked for not being blocked... | ||
GlitchMr | Uhm, why perl6 -e 'say 09;' says error two times? | 18:51 | |
masak | GlitchMr: that's a bug. please submit. | ||
GlitchMr | rt.perl.org/rt3/Public/Bug/Display...?id=119339 | 18:55 | |
masak | GlitchMr++ | ||
18:56
pdcawley joined
|
|||
masak | GlitchMr: the phrase "don't work" is generally taboo in bug reports. | 18:56 | |
GlitchMr | sorry | ||
18:56
kaare_ left
|
|||
masak | GlitchMr: you should be talking about what you did, what you observe, and what you expected. | 18:56 | |
GlitchMr | Null PMC access in get_string() | ||
Sorry, I will next time. | |||
masak | right. that should be in there. | ||
GlitchMr: the goal is to have enough information that the thing can be checked again later. | 18:57 | ||
masak adds this to the ticket | |||
timotimo | moritz: the link to "regular expressions" (masaks talk) has an url ending in "" | 18:58 | |
masak | don't all strings end in "" ? :P | 18:59 | |
timotimo | "didn't quite apply to much current work situation" probably should be "my" instead of "much"? | ||
the "touching and thoughtful moments" link has no href | 19:00 | ||
dalek | kudo/nom: 3aebcac | moritz++ | tools/lib/NQP/Configure.pm: [build] more permissive parsing of config keys donaldh++ and masak++ found out that the key "nqp::build-date" does not match the old regex, [\w:]+ |
||
19:00
pdcawley left
|
|||
GlitchMr | ~/c/panda (master) $ perl6 -e 'my $sock = IO::Socket::INET.new(host => "ipv6.google.com", port => 80); $sock.send("GET /lol HTTP/1.1\r\n\r\n"); say $sock.recv' | 19:00 | |
getaddrinfo failed: ipv6.google.com: Success | |||
Am I doing something incorrectly? | |||
Can I tell IO::Socket::INET to use IPv6? | 19:01 | ||
masak | moritz: nit: s/Moarvm/MoarVM/ | ||
moritz | ChimeraVM :-) | ||
jnthn | :D | 19:02 | |
masak | moritz: the link "touching and thoughtful moments" is empty. | ||
moritz | masak: yes, timotimo just said the same thing | 19:03 | |
fixing now... | |||
fixed. | |||
19:04
SamuraiJack__ left
|
|||
GlitchMr | rn: my %hash is default<perfect>; say %hash<elem> | 19:04 | |
camelia | niecza v24-88-g1f87209: OUTPUT«===SORRY!===Trait default not available on variables at /tmp/VZHLPUhAy8 line 1:------> my %hash is default<perfect>⏏; say %hash<elem>Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting… | ||
..rakudo d9f8d6: OUTPUT«perfect» | |||
GlitchMr | std: my %hash is default<perfect>; say %hash<elem> | ||
camelia | std c2215f0: OUTPUT«ok 00:00 43m» | ||
timotimo | i'm a bit annoyed that my table parsing regex doesn't work if i turn it from "regex" to "token"; i think that's because i rely on some backtracking somwehere :( | 19:06 | |
moritz | masak++ timotimo++ # helping me improve my blog post | 19:08 | |
timotimo | but i don't really know how to figure that out | ||
moritz++ # for the original post | |||
jnthn | timotimo: Keep it as a regex. Now go through the quantifiers, adding a : after them, until you find the one where adding a : fails | ||
timotimo | ah, good tip, thanks! | 19:09 | |
do i want one : in the whole thing or keep adding more and more until only one (or perhaps multiple) non-:'d pieces? | 19:10 | ||
jnthn | A : on a quant means "don't backtrack on this one" | 19:11 | |
You could add it to half of them and do it bisect-style, maybe | |||
Or maybe you have a sense for which it is :) | |||
timotimo | :) | ||
masak | moritz++ # blogging | ||
timotimo | i find it amusing how things like :my $foobar; have a : as starter and ; at the end | 19:12 | |
masak | woolfy joked that I might "defect to Python". I just got an IndexError because I tried to assign to an element outside of an array. | 19:13 | |
so I guess I'm sticking with you lot. :P | |||
geekosaur | : helloworld forth love if honk then ; | ||
masak | geekosaur: :) | ||
timotimo | oh, i think i know what's going on | 19:14 | |
19:14
EvanTeitelman joined
|
|||
moritz | domm.plix.at/perl/2013_08_things_i_..._2013.html # another blog post about the YAPC | 19:14 | |
timotimo | yes, yes; my columns are %'d with [\h+'|'?\h+] | 19:15 | |
that has some backtracking problems if | isn't in there, so i need to put in a little alteration and it should become backtrackless | |||
although i need to make it match no less than 2 \h all in all, but that's very doable | 19:17 | ||
masak | moritz: nice! | 19:19 | |
dalek | p/make-install: 28b58c0 | (Donald Hunter)++ | tools/build/ (2 files): Add install libdir into jvmconfig.properties |
19:23 | |
19:28
fridim__ left
|
|||
donaldh | Does anyone else get intermittent out of memory errors when compiling NQP on JVM ? | 19:30 | |
Maybe it's an OSX thing | |||
jnthn hasn't seen that | |||
masak .oO( out-of-memory errors. all the cool kids do it. ) | 19:31 | ||
jnthn | That explains why I don't get them :P | ||
masak | it's worth it for the rounded corners. | 19:34 | |
moritz | the day after YAPC::EU was the one with the most visitors on irclog.perlgeek.de so far | 19:36 | |
masak .oO( people backlogging? ) :P | 19:49 | ||
moritz | or people having unreliable connections, and thus prefering the logs over proper IRC? | 19:51 | |
19:56
pdcawley joined
19:57
jaffa4 joined
|
|||
jaffa4 | hi | 19:57 | |
Is there labels in JVM Rakudo version? | |||
GlitchMr | r: label: say "no" | ||
camelia | rakudo 3aebca: OUTPUT«===SORRY!=== Error while compiling /tmp/nOIyyhpULOTwo terms in a rowat /tmp/nOIyyhpULO:1------> label⏏: say "no" expecting any of: argument list postfix infix stopper infix or meta-infix … | ||
GlitchMr | This is Parrot version, but JVM runs mostly the same code, so no. | 19:58 | |
jaffa4 | std: labelL sat 'hello' | ||
camelia | std c2215f0: OUTPUT«===SORRY!===Undeclared routines: 'labelL' used at line 1 'sat' used at line 1Check failedFAILED 00:00 42m» | ||
jaffa4 | std: label: sat 'hello' | ||
camelia | std c2215f0: OUTPUT«===SORRY!===Undeclared routine: 'sat' used at line 1Check failedFAILED 00:00 42m» | ||
jaffa4 | std: label: say 'hello' | 19:59 | |
camelia | std c2215f0: OUTPUT«ok 00:00 42m» | ||
20:01
pdcawley left
20:02
stevan_ joined
20:04
colomon joined
20:06
stevan_ left
|
|||
dalek | p/make-install: cd48fff | (Donald Hunter)++ | tools/build/gen-jvm-properties.pl: Added runtime.prefix to jvmconfig.properties |
20:06 | |
moritz | jaffa4: no version of rakudo parses labels | 20:10 | |
20:11
locsmif_ left
|
|||
donaldh | github.com/rakudo/rakudo/pull/191 | 20:11 | |
masak | donaldh: looks good to me. | 20:14 | |
jaffa4 | why not? | ||
masak | jaffa4: not yet implemented. | ||
jaffa4 | Oh my God! | 20:15 | |
dalek | kudo/nom: 7d24377 | (Donald Hunter)++ | / (4 files): Use configuration from nqp --show-config |
20:16 | |
kudo/nom: 41a2961 | (Donald Hunter)++ | /: Merge branch 'nom' of github.com:rakudo/rakudo into nqp-make-install |
|||
kudo/nom: e063c1b | moritz++ | / (3 files): Merge pull request #191 from donaldh/nqp-make-install Make use of the JVM configuration properties provided by "nqp --show-config" |
|||
moritz | donaldh++ | ||
jaffa4: quick, implement it! :-) | |||
masak | :D | ||
just let the guy finish praying first. | |||
jnthn | moritz: um, I think the make-install branch in NQP had to be merged first ;) | ||
"This is dependent on the make-install branch in nqp being merged first." | 20:17 | ||
moritz should read more carefully | |||
masak | jaffa4: for all I know, labels shouldn't be a hassle to parse. it's probably goto that people are wary of adding. | ||
jnthn | The parsing ain't the problem. It's the rest. :P | ||
masak | jaffa4: I for one would love to see 'next LABEL' in Rakudo. | 20:18 | |
moritz | well, then we could at least parse, and give a nice NYI error message | ||
masak | right. | ||
jnthn | aye | ||
jaffa4 | involve me about the difficulties | ||
moritz | well, 'next' uses control exceptions | ||
so you need to set up the handlers to only catch the exceptions with the right label | 20:19 | ||
dalek | p: a620765 | (Donald Hunter)++ | tools/build/ (2 files): Restructured install layout to resemble parrot install layout. |
||
nqp: 1f99742 | (Donald Hunter)++ | / (18 files): | |||
nqp: Merge remote-tracking branch 'origin/master' into make-install | |||
20:19
dalek left
|
|||
jnthn | moritz: That was the merge? | 20:20 | |
jnthn tries it | |||
moritz | jnthn: yes | ||
jaffa4 | There is goto op in Qast ., right? | ||
20:20
dalek joined,
ChanServ sets mode: +v dalek
|
|||
jnthn | wrong | 20:20 | |
The tricky with goto is that it can cross block/routine boundaries... | 20:21 | ||
masak | ok, but there's a smaller bit of it that's easier to implement, yes? | ||
jnthn | I guess this stuff never bubbled up high enough on the todo list yet... | ||
masak | don't need to do it all at once... | ||
jnthn | Of all the things folks miss, goto is fairly far down the list :P | 20:22 | |
masak | aye :) | ||
but 'next LABEL' is fairly high... :) | |||
moritz | masak: I guess that 'next LABEL'/'last LABEL' and 'got LABEL' will be pretty much different beasts | ||
jnthn | ah | ||
masak | moritz: me too. | ||
jnthn | Yeah, those are rather different. | ||
jaffa4 | How can I print the qast tree? | 20:23 | |
moritz | ./perl6 --target=past -e 'say 1 + 1' # iirc | ||
or maybe it's --target=ast | |||
jaffa4 | Where does it put the target? | 20:25 | |
20:26
pdcawley joined
|
|||
jnthn | donaldh: hmm, seems I get: jvm::runtime.jars value not available from install-jvm\nqp --show-config. | 20:27 | |
donaldh | hmmm. | ||
jnthn | that's with a straight perl ConfigureJVM.pl in rakudo, after make install in NQP | 20:28 | |
moritz | masak: www.pvk.ca/Blog/2013/06/23/bitsets-...pressions/ | ||
moritz tests too | |||
donaldh | jnthn: with nqp in a subdir ? | ||
jnthn nukes his install-jvm directory | 20:29 | ||
donaldh is building master | |||
jaffa4 | jnthn: how to test perl6? | ||
How do you view you the internal structures? | |||
jnthn | donaldh: Yeah, I have nqp subdir, in that I dod perl ConfigureJVM.pl --prefix=..\install-jvm | 20:30 | |
donaldh | right | ||
moritz | does --prefix cope with relative paths? | ||
jaffa4 | I get no error message if I enter a bad target | ||
moritz | I know I have had trouble with that in the past | 20:31 | |
jaffa4 | perl6.bat --target=RRRRR -e "print 1" | ||
jnthn | oops | ||
@java -Xmx512m -Xbootclasspath/a:$jar_dir\nqp-runtime.jar;C:\consulting\rakudo\install-jvm\languages\nqp\runtime\asm-4.1.jar;C:\consulting\rakudo\install-jvm\languages\nqp\runtime\jline-1.0.jar;C:\consulting\rakudo\install-jvm\languages\nqp\lib\nqp.jar -cp C:\consulting\rakudo\install-jvm\languages\nqp\lib nqp %* | |||
20:31
pdcawley left
|
|||
jnthn | donaldh: Note the $jar_dir in there :) | 20:32 | |
moritz | so $jar_dir is not expanded | ||
jnthn | jaffa4: I can believe that... --target=ast is the most useful one | ||
donaldh | jnthn: yep. | ||
In the windows case | |||
jnthn | donaldh: Trying a fix. | 20:33 | |
donaldh | it's single quoted | ||
no interpolation | |||
missed that | |||
moritz | and rakudo's ConfigureJVM.pl: | 20:34 | |
my $with_nqp = $options{'with-nqp'} || | |||
($^O eq 'MSWin32' ? 'install-jvm\\nqp' : 'install-jvm/nqp'); | |||
should that be install-jvm/bin/nqp now? | |||
jnthn | yeah | ||
moritz fixes it | |||
donaldh | moritz++ good catch. | ||
jnthn | I was gonna come to that next. :) | ||
At least --with-nqp=... now works :) | 20:35 | ||
dalek | kudo/nom: 7a2d8aa | moritz++ | ConfigureJVM.pl: fix default path for NQP binary |
||
donaldh is about to look at --gen-nqp | |||
jnthn | \o/ | ||
dalek | p: 8d32819 | jnthn++ | tools/build/install-jvm-runner.pl: Fix thinko in Win32 runner generation. |
||
moritz | \o/ indeed | ||
jnthn | This will make stuff easier for everyone :) | 20:36 | |
Aww, make doesn't work, though | |||
(In Rakudo) | |||
hmm | 20:37 | ||
NQP_PREFIX = ..install-jvm | |||
That looks...odd | |||
Getting rid of the .. fixes things | |||
moritz | missing slash, missing rel2abs? | ||
jnthn | Well, ./install-jvm or so would be right | 20:38 | |
.. is not | |||
moritz | well, the problem seems to be that you passed a relative path to --prefix, and there's no logic to either make it absolute, or deal with relative paths | 20:39 | |
masak | moritz: looks very interesting. | 20:41 | |
dalek | p: 3246de8 | moritz++ | ConfigureJVM.pl: always turn --prefix into an absolute path |
20:42 | |
moritz | jnthn: ^^ that should help | ||
jnthn | Will try. Anyway, yeah, it's wrong in the --show-config output... | 20:43 | |
20:43
pdcawley joined
|
|||
jnthn | moritz: um...whoa | 20:48 | |
the \rakudo ended up with the \r getting interpolated somewhere?! | |||
masak | o.O | ||
moritz | wtf. | 20:49 | |
jnthn | yeah, it's wrong in the --show-config output. Rather upsets the terminal too! | ||
It is absoluting it | 20:50 | ||
I guess the error is elsewhere. | |||
moritz | but it built? | ||
jaffa4 | what is this op locallifetime? | 20:51 | |
moritz | (nqp, that is) | ||
jnthn | moritz: not Rakudo, no... | ||
oh, I might be able to guess where this is going... | |||
jaffa4 | Where is it going jnthn? | 20:52 | |
jnthn | um, no, I can't guess | ||
donaldh: How do the properties end up in the JAR? | 20:53 | ||
donaldh: Is the jvmconfig.properties file name treated specially? | |||
jnthn was expecting to find it being spat out in a double-quoted string... :) | |||
donaldh | nope. gen-jvm-properties.pl is run twice in Makefile. Once for build env and once into bin/ which gets JARed up with the classes. | 20:54 | |
jnthn | bin/jvmconfig.properties looks right so it must go wrong sometime after this... | ||
Could something be interpreting the backslash sequences at some point? | 20:55 | ||
moritz has a runnable, installed rakudo-jvm o/ | |||
donaldh | jnthn: possibly. I tried to use platform specific slashes everywhere, but may have missed one. | 20:56 | |
jnthn: what is the output of nqp --show-config? | |||
moritz | well, if it's emitted into a double-quoted string somewhere, you need to double the backslashes | ||
jnthn | donaldh: jvm.properties is correct, but when I --show-config then the \r in c:\rakudo has been turned into a carriage return | 20:57 | |
donaldh: Which then makes it in to the Makefile and corrupts it | 20:58 | ||
donaldh | ah | ||
jnthn | Could the Properties class be doing it? | ||
bah stackoverflow.com/questions/5784895...-backslash | 20:59 | ||
"The method does not treat a backslash character, '\', before a non-valid escape character as an error; the backslash is silently dropped." | 21:00 | ||
donaldh | is there some badness in thugh | 21:01 | |
ugh even | |||
jaffa4 | what is this :before<ast>? | 21:02 | |
donaldh | Where Java behaviour crashes into OS behaviour | ||
jnthn | donaldh: Trying a patch | 21:03 | |
donaldh | Good catch jnthn++ | ||
jnthn | jaffa4: Guess you're looking at an add_stage call or so? Just says where to insert something into the compiler pipeline. | ||
donaldh: Yes, took a little chasing to see where it was going wrong :) | |||
jaffa4 | jnthn : I mean the syntax | 21:04 | |
moritz | jnthn: it's a pair | ||
donaldh | jnthn: I've been bitten by this Properties behaviour before. I should have known. Oh well. | ||
jnthn | moritz: you meant jaffa4? :) | ||
jaffa4: Same as before => 'ast' | 21:05 | ||
moritz | yes | ||
21:05
dmol1 left
21:06
dmol joined
|
|||
jnthn | ok, now I get a Makefile that makes sense :) | 21:06 | |
21:06
colomon left
21:07
stevan_ joined
|
|||
dalek | rl6-roast-data: 2de4b71 | coke++ | / (5 files): today (automated commit) |
21:07 | |
donaldh | Another approach would be to always use forward slashes in the properties file and translate to Windows backslashes before printing. | ||
21:10
dmol left
|
|||
moritz | donaldh: that only works if all properties are paths. Are they? | 21:10 | |
moritz doesn't know anything about those properties | |||
donaldh | moritz: good point | 21:11 | |
maybe we should double backslash on the way into the properties file, so it is a valid file. | 21:12 | ||
dalek | p: 5f7b3da | jnthn++ | tools/build/gen-jvm-properties.pl: Ensure backslashes in props file aren't mangled. |
21:13 | |
jnthn | With that, I get a successful Rakudo build | ||
donaldh | indeed, that is jnthn++ fix | ||
moritz | \o/ | ||
jnthn: and does it install? :-) | |||
jnthn | yes, and I can run it from outside of the build directory | 21:14 | |
donaldh++, moritz++ | 21:15 | ||
masak | hm, who and what was blocking on an installable rakudo-jvm? | ||
evalbot, right? | |||
donaldh | panda | ||
jnthn | And Panda and... :) | ||
donaldh | I'm just cleaning up a patch for %*CUSTOM_LIB which panda also needs | ||
moritz | masak: evalbot doesn't really block on installable, it can chdir into a dir before evaling | 21:16 | |
masak | huh. someone said it blocked on it. | ||
donaldh | Panda also wants chdir which would need faked on JVM. Might be easier to remove chdir from panda | ||
21:17
abnorman joined,
fridim__ joined
|
|||
[Coke] | let me know when panda works, I'll make the daily star run do both pvm and jvm | 21:18 | |
21:19
xenoterracide left
|
|||
jnthn | [Coke]++ | 21:19 | |
21:20
araujo left
21:21
araujo joined
|
|||
timotimo | hm, is there .comb(regex, :match) in nqp? :| | 21:21 | |
jnthn | timotimo: no, but match with :g may get you all the things that match | 21:22 | |
timotimo | oof. i think i'll need to find a differen tway | 21:24 | |
i'm about to match columns with two regexes, one covering the "don't have two or more spaces" and one "are there openers and closers for Pod6 formatting codes?" | |||
and then i'd & them | |||
doesn't sound like i'll exit that piece of code with my brain intact | 21:25 | ||
21:29
stevan_ left
|
|||
donaldh reminds himself that cross-platform build and install scripts are always challenging | 21:29 | ||
jnthn++ for golfing and patching my broken Windows implementation of nqp jvm properties | 21:31 | ||
jaffa4 | Is nqp upward compatible with Perl 6 completely? | 21:32 | |
21:32
coax75ohm left
|
|||
jnthn | jaffa4: no | 21:32 | |
Mostly, but not completely. | |||
jaffa4 | Are you going to London Workshop? | 21:35 | |
timotimo | oh my, i still need to get reservations and accomodation for frankfurt! /o\ | 21:36 | |
jnthn | Not sure yet | ||
21:37
fridim__ left
|
|||
diakopter | ... what's in frankfurt | 21:38 | |
timotimo | a nqp&rakudo development workshop/learning session hosted by jnthn | ||
diakopter | oh yeah :) | ||
timotimo | oh my. the train journey from my home to salzburg is 5.5h long :o | 21:40 | |
Ulti | jnthn: is that a photo of Gruyère in one of your YAPC talks? | ||
diakopter | the flight back from frankfurt was 12.5 hours O_O | 21:41 | |
timotimo | diakopter: well, i'm not used to traveling | ||
21:41
xenoterracide joined
|
|||
jaffa4 | everything travels... into the future at least | 21:42 | |
we are all time-travellers | |||
timotimo | okay, travels anywhere far from parallel to the time axis - at least relative to the earths crust | ||
21:44
colomon joined
|
|||
diakopter | er, 11.5 hours | 21:44 | |
jaffa4 | Is it going to be recorded? | 21:50 | |
timotimo | hm. bedtime. today doesn't seem to be helping me progress | 21:54 | |
jaffa4 | Why is there my in the statement_control: in the grammar? | 21:56 | |
timotimo | are you wondering about the general syntax of the :<...>? | 21:57 | |
jaffa4 | no | 21:58 | |
timotimo | k | ||
21:58
yannickberthoud joined,
iSlug left
|
|||
jaffa4 | I am looking at the Perl6 grammar and to see how it is structured.... | 21:59 | |
22:06
grondilu left
|
|||
jnthn | Ulti: Yes. I went there and ate some tasty cheese :D | 22:06 | |
22:06
PacoAir left
22:11
jaffa4 left
22:14
fridim__ joined
|
|||
Ulti | jnthn: me too :D but not recently, I went to a place on the right in that photo for fondue | 22:15 | |
donaldh | github.com/rakudo/rakudo/pull/192 | ||
[Coke] | .seen lizmat | 22:17 | |
yoleaux | I saw lizmat 16 Aug 2013 08:07Z in #perl6: <lizmat> decommuting& | ||
preflex | yoleaux: you have 2 new messages. '/msg preflex messages' to read them. | ||
[Coke] | ZOMG. | ||
donaldh | is that the bots chatting ? | 22:18 | |
geekosaur | ...right, i was going to contact mauke about that. >.> | 22:19 | |
22:21
mauke joined
|
|||
diakopter | .seen mauke | 22:22 | |
yoleaux | I haven't seen mauke around. | ||
mauke | preflex: seen mauke | ||
preflex | mauke was last seen 1 minute and 5 seconds ago, saying: <private message> | ||
jnthn | Ulti: Ah, I did some vacation in Switzerland this summer :) | 22:25 | |
donaldh: Is that patch tested on Parrot also, ooc? | 22:26 | ||
donaldh | jnthn: good point, I did originally, but not after todays merge up. | 22:27 | |
Ulti | jnthn: did you do the nice walk from Zermatt to the Matterhorn too? | ||
jnthn | Ulti: Was staying a bit of a distance from Zermatt, so only had time for a bit of walking there. Discovered I probably want to stay in that part of Switzerland some time in the future to explore it properly. :) | 22:28 | |
donaldh: Do you have chance to test it, or should I? | 22:30 | ||
donaldh | jnthn: doing it now | ||
jnthn | donaldh++ | 22:31 | |
22:35
spider-mario left
|
|||
masak | 'night, #perl6 | 22:37 | |
donaldh | jnthn: there are no spec tests for CUSTOM_LIB. Is build + make test + sanity check sufficient ? | 22:43 | |
jnthn | donaldh: yeah, was worried about build fail | 22:44 | |
dalek | kudo/nom: 97dec7a | (Donald Hunter)++ | / (2 files): Resurrected %*CUSTOM_LIB on JVM. |
||
kudo/nom: aab3d78 | jonathan++ | / (2 files): Merge pull request #192 from donaldh/custom-lib Resurrected %*CUSTOM_LIB on JVM. |
|||
jnthn | 'night, #perl6 | 22:46 | |
colomon | \o | ||
donaldh | night jnthn o/ | ||
22:51
donaldh left
22:55
araujo left
22:56
araujo joined
22:58
cognominal left,
cognominal joined
23:01
colomon left
23:10
Rotwang left
23:17
colomon joined
|
|||
dalek | p: 4c00cda | (Donald Hunter)++ | ConfigureJVM.pl: Use Cwd::realpath instead of rel2abs because rel2abs doesn't work |
23:27 | |
23:27
BenGoldberg joined
23:29
yannickberthoud left
23:32
berekuk left
23:33
berekuk joined,
berekuk left
|
|||
sorear | o/ | 23:33 | |
23:33
berekuk joined
|
|||
[Coke] | ö/ | 23:35 | |
23:39
berekuk left
23:40
colomon left
23:41
berekuk joined
23:44
berekuk left
23:45
Ben_Goldberg joined
23:47
BenGoldberg left
23:51
berekuk joined
23:52
colomon joined
23:54
EvanTeitelman left
23:56
Urchin[emacs] joined
|
|||
Ben_Goldberg | .ud require Sayings::Wise; | 23:56 | |
yoleaux | ENOTFOUND |