»ö« 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:01
jnap joined
00:03
berekuk joined
00:06
jnap left
00:07
stevan_ joined
00:13
grondilu left
00:21
BenGoldberg joined
|
|||
raydiak | r: my @foo = 1,2; say (|@foo).perl; | 00:22 | |
camelia | rakudo-parrot 051aa6, rakudo-jvm 051aa6, rakudo-moar 051aa6: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&prefix:<|>' called (line 1)» | ||
raydiak | why is that wrong? | ||
jnthn | What were you expecting it to do? | 00:23 | |
afaik, | only makes sense in the context of a call | |||
raydiak | ah, that explains it then, n/m | ||
thanks jnthn++ | 00:24 | ||
BenGoldberg | If I wanted to do this: | 00:25 | |
r: my @foo = 1,2; say [+|] @foo | |||
camelia | rakudo-parrot 051aa6, rakudo-jvm 051aa6, rakudo-moar 051aa6: OUTPUT«3» | ||
jnthn | ...cute... | ||
BenGoldberg | Using a method instead of a prefix, how would I do it? | ||
r: my @foo = 1,2; say @foo.[+|]; # doesn't work | 00:26 | ||
camelia | rakudo-parrot 051aa6: OUTPUT«===SORRY!=== Error while compiling /tmp/gGaQRYLm3NPreceding context expects a term, but found infix +| insteadat /tmp/gGaQRYLm3N:1------> my @foo = 1,2; say @foo.[+|⏏]; # doesn't work» | ||
jnthn | .reduce, I think. | ||
camelia | ..rakudo-jvm 051aa6: OUTPUT«===SORRY!=== Error while compiling /tmp/tc9rjCt4AoPreceding context expects a term, but found infix +| insteadat /tmp/tc9rjCt4Ao:1------> my @foo = 1,2; say @foo.[+|⏏]; # doesn't work» | ||
..rakudo-moar 051aa6: OUTPUT«===SORRY!=== Error while compiling /tmp/uUt65LY7x7Preceding context expects a term, but found infix +| insteadat /tmp/uUt65LY7x7:1------> my @foo = 1,2; say @foo.[+|⏏]; # doesn't work» | |||
BenGoldberg | r: my @foo = 1,2; say @foo.reduce([+|]); | ||
camelia | rakudo-moar 051aa6: OUTPUT«Nominal type check failed for parameter '&with'; expected Callable but got Int in method reduce at src/gen/m-CORE.setting:8045 in block at /tmp/OqOx8pZsuT:1» | ||
..rakudo-parrot 051aa6: OUTPUT«Nominal type check failed for parameter '&with'; expected Callable but got Int instead in method reduce at gen/parrot/CORE.setting:8063 in block at /tmp/StkK1WkOCs:1» | |||
..rakudo-jvm 051aa6: OUTPUT«Nominal type check failed for parameter '&with' in method reduce at gen/jvm/CORE.setting:8050 in block at /tmp/0LKB4kDqAx:1» | |||
BenGoldberg | r: my @foo = 1,2; say @foo.reduce(with:&infix::<+|>); | 00:27 | |
camelia | rakudo-jvm 051aa6: OUTPUT«===SORRY!=== Error while compiling /tmp/4Qpsimb6NGPreceding context expects a term, but found infix +| insteadat /tmp/4Qpsimb6NG:1------> = 1,2; say @foo.reduce(with:&infix::<+|⏏>);» | ||
..rakudo-parrot 051aa6: OUTPUT«===SORRY!=== Error while compiling /tmp/gKfE12hhd2Preceding context expects a term, but found infix +| insteadat /tmp/gKfE12hhd2:1------> = 1,2; say @foo.reduce(with:&infix::<+|⏏>);» | |||
..rakudo-moar 051aa6: OUTPUT«===SORRY!=== Error while compiling /tmp/vVmA7DR2dEPreceding context expects a term, but found infix +| insteadat /tmp/vVmA7DR2dE:1------> = 1,2; say @foo.reduce(with:&infix::<+|⏏>);» | |||
clsn | r: my @foo=1,2; say @foo.reduce(&infix:<+>) | ||
camelia | rakudo-parrot 051aa6, rakudo-jvm 051aa6, rakudo-moar 051aa6: OUTPUT«3» | 00:28 | |
BenGoldberg | Ahh | ||
jnthn | r: my @foo=1,2; say @foo.reduce([+]) | ||
camelia | rakudo-parrot 051aa6: OUTPUT«Nominal type check failed for parameter '&with'; expected Callable but got Int instead in method reduce at gen/parrot/CORE.setting:8063 in block at /tmp/ZrhiVSPgCE:1» | ||
..rakudo-moar 051aa6: OUTPUT«Nominal type check failed for parameter '&with'; expected Callable but got Int in method reduce at src/gen/m-CORE.setting:8045 in block at /tmp/EJ0hhw818D:1» | |||
..rakudo-jvm 051aa6: OUTPUT«Nominal type check failed for parameter '&with' in method reduce at gen/jvm/CORE.setting:8050 in block at /tmp/ZrTKKN8gJ9:1» | |||
jnthn | oops | ||
r: my @foo=1,2; say @foo.reduce(&[+]) | |||
camelia | rakudo-parrot 051aa6, rakudo-jvm 051aa6, rakudo-moar 051aa6: OUTPUT«3» | ||
jnthn | There's also that shortcut. | ||
BenGoldberg | r: my @foo = 1,2; say @foo.reduce([+|]); | 00:29 | |
camelia | rakudo-jvm 051aa6: OUTPUT«Nominal type check failed for parameter '&with' in method reduce at gen/jvm/CORE.setting:8050 in block at /tmp/Hu7_XYbivq:1» | ||
..rakudo-moar 051aa6: OUTPUT«Nominal type check failed for parameter '&with'; expected Callable but got Int in method reduce at src/gen/m-CORE.setting:8045 in block at /tmp/nO7ZskkYiM:1» | |||
..rakudo-parrot 051aa6: OUTPUT«Nominal type check failed for parameter '&with'; expected Callable but got Int instead in method reduce at gen/parrot/CORE.setting:8063 in block at /tmp/rkTi5N7Gvm:1» | |||
BenGoldberg | r: my @foo = 1,2; say @foo.reduce(&[+|]); | ||
camelia | rakudo-parrot 051aa6, rakudo-jvm 051aa6, rakudo-moar 051aa6: OUTPUT«3» | ||
BenGoldberg | :) | ||
jnthn | ah, yes, I lost the | :) | ||
00:32
rylinaux left
|
|||
raydiak | always happy to incite an outburst of nonsense :) just copied it out of a call and expected it to work without really considering it | 00:32 | |
00:32
rylinaux joined
00:40
mtk left
00:42
colomon joined
|
|||
psch | ttps://github.com/rakudo/rakudo/pull/237 and github.com/perl6/roast/pull/36 feedback and improvements very welcome | 00:42 | |
github.com/rakudo/rakudo/pull/237 # missed the h for some reason | |||
00:43
mtk joined
|
|||
jnthn | Time for some rest...'night | 00:44 | |
psch | gnight jnthn | ||
00:46
logie left,
xfix left
01:02
stevan_ left,
jnap joined
01:04
[Sno] joined
01:06
jnap left
01:09
Mouq left
01:13
jnap joined
01:28
xfix joined
01:29
jeffreykegler left
01:39
mtj_ left
01:40
mtj_ joined
|
|||
rjbs | hoo boy. | 01:47 | |
colomon | o/ | 01:51 | |
psch | gnight #perl6 o/ | 01:52 | |
colomon | \o | 01:53 | |
01:53
psch left
02:17
odoacre left,
odoacre joined
|
|||
raiph | anyone interested in LINQ and P6: wiki.perl6.org/@linq | 02:31 | |
02:45
kst` joined
02:47
kst left
02:48
btyler left
02:49
beastd left
03:17
jnap left
03:40
atroxaper joined
03:48
jeffreykegler joined
03:53
thou joined
|
|||
clsn | n: :(::T, T) ~~ :(Str, Str) | 04:03 | |
camelia | niecza v24-109-g48a8de3: OUTPUT«===SORRY!===GLOBAL::T does not name any package at /tmp/HxJdORiNWV line 1:------> :(::T⏏, T) ~~ :(Str, Str)A type must be provided at /tmp/HxJdORiNWV line 1:------> :(::T⏏, T) ~…» | ||
04:04
Mouq joined
04:08
preflex left
04:09
preflex joined,
ChanServ sets mode: +v preflex
04:13
jnap joined
04:16
jeffreykegler left
04:17
jnap left
04:28
bjz left
04:29
bjz joined
04:40
araujo joined,
araujo left
05:14
jnap joined
05:18
jnap left
06:03
raiph left,
BenGoldberg left
06:14
Mouq left,
jnap joined
06:19
SamuraiJack joined,
jnap left
06:56
darutoko joined
06:58
wooden left
07:03
berekuk left,
wooden joined,
wooden left,
wooden joined
07:04
berekuk joined
07:07
berekuk_ joined
07:08
berekuk left
07:13
bjz_ joined,
bjz left
07:15
jnap joined
07:20
jnap left
07:23
[particle]1 joined
07:24
Shozan joined
07:25
[particle] left,
bjz_ left,
SHODAN left
07:26
lue left,
lizmat left,
prammer left,
rjbs left,
rjbs joined,
prammer joined,
lizmat joined,
lue joined,
bjz joined
07:46
rindolf joined
07:51
atroxaper left
08:16
jnap joined
08:17
SamuraiJack left
08:21
jnap left
08:27
rindolf left
08:34
hummeleBop joined
09:02
stevan_ joined
09:03
rindolf joined
09:14
stevan_ left
09:17
jnap joined
|
|||
moritz | does anybody know of a website which compares the numbers of modules available for different languages? | 09:19 | |
I know I've seen such a thing, but can't find it right now | |||
my google-foo is weak | |||
raydiak | moritz: maybe this one? modulecounts.com/ | 09:20 | |
09:21
jnap left
|
|||
moritz | raydiak: thanks, exactly what I was looking for | 09:22 | |
09:25
dmol joined
|
|||
raydiak | moritz: glad it helped; expected it to be a spam site with a domain that obvious | 09:26 | |
masak | good modulecount, #perl6 | 09:43 | |
diakopter | good welcomecount, masak | ||
moritz | good masakcount, 1 | ||
masak | hahacount, 42 | 09:44 | |
dalek | ast: 0791cdf | (Tobias Leich)++ | S05-mass/properties-general.t: align tests about Khmer characters with latest unicode spec |
10:05 | |
FROGGS | a lot of work :o( | 10:06 | |
and many other tests to check too | 10:07 | ||
ohh no, many is more like "two" | |||
moritz | two tests, or two test files? | 10:08 | |
FROGGS | two test groups, aka three related tests, twice | 10:12 | |
10:12
hummeleBop left
|
|||
moritz | better than two test files, which could be up to 2k tests :-) | 10:13 | |
FROGGS | true :o) | 10:16 | |
10:18
jnap joined
10:23
jnap left
10:32
araujo joined
10:34
spider-mario joined
11:00
berekuk_ left
11:01
berekuk joined
11:18
jnap joined
11:23
thou left,
jnap left
11:25
Rotwang joined
|
|||
dalek | ast: 17aa506 | (Tobias Leich)++ | S05-mass/properties-general.t: align with unicode >6.1 about <:Other> |
11:27 | |
11:28
grondilu joined
|
|||
grondilu | parrot is still the fastest for summing large amount of numbers | 11:31 | |
r: say [+] rand xx 10000 | |||
camelia | rakudo-jvm 912342, rakudo-moar 912342: OUTPUT«(timeout)» | 11:32 | |
..rakudo-parrot 912342: OUTPUT«4955.63684252641» | |||
grondilu wonders why | |||
jnthn | grondilu: Looking. | 11:39 | |
FROGGS | r: say [+] 1 xx 10000 | 11:40 | |
camelia | rakudo-jvm 912342, rakudo-moar 912342: OUTPUT«(timeout)» | ||
..rakudo-parrot 912342: OUTPUT«10000» | |||
FROGGS | k, it is not rand :o) | 11:41 | |
jnthn | No, and it's not that it's hitting the sig bind slow path either. | 11:42 | |
In fact, the only common things that do so are subst and match | |||
colomon | r: say [+] 1..10000 | 11:46 | |
camelia | rakudo-parrot 912342, rakudo-jvm 912342, rakudo-moar 912342: OUTPUT«50005000» | ||
colomon | r: say [+] (1..10000).reverse | ||
camelia | rakudo-parrot 912342, rakudo-jvm 912342, rakudo-moar 912342: OUTPUT«50005000» | ||
colomon | xx issue? | 11:47 | |
jnthn | Yeah | ||
Sampling profile is revealing. | |||
Moar's gather/take has the same issue as the JVM one, it's just that Moar doesn't stack overflow. | 11:48 | ||
colomon | r: say [+] (1..10000).map({ rand }) | 11:49 | |
camelia | rakudo-moar 912342: OUTPUT«5041.570714» | ||
..rakudo-jvm 912342: OUTPUT«5010.793634118431» | |||
..rakudo-parrot 912342: OUTPUT«4986.20241091392» | |||
grondilu | xx it is then | 11:50 | |
11:51
denis_boyun joined
|
|||
jnthn | gather/take in general, I think | 11:52 | |
But there's something else going on too. | |||
colomon | explain more, please? | 11:58 | |
colomon is looking suspiciously at ListIter | 12:01 | ||
colomon just realized there is a GatherIter | |||
jnthn | colomon: Well, gather/take accidentally introduces an extra stack frame each time we invoke it. | ||
colomon was thinking it was intentional | 12:02 | ||
grondilu | Pfew, just tested the same thing in P5: "for (1..10000) { $s += rand }; say $s;". It ran on 0.016s. I know that P5 is fast, but I'm still a bit worried by the size of the gap with P6 | ||
12:04
huf left
|
|||
jnthn | grondilu: No, that's *not* the same thing. | 12:04 | |
grondilu | indeed, just realized it | 12:05 | |
my $s; for 1..10000 { $s += rand }; say $s; runs much faster | |||
jnthn | C:\consulting\rakudo>timecmd perl6-m -e "my $s; for 1..10000 { $s += rand }" | ||
command took 0:0:0.57 (0.57s tota | |||
Which is a tenth of the time. | 12:06 | ||
[+] is hitting a couple of slow things, though. | |||
Spending lots of time in places it shouldn't be. | |||
grondilu | it seems that "reduce *+*, ..." is faster | 12:08 | |
grondilu checked again | 12:09 | ||
yeah, reduce *+*, @numbers is about five times faster than [+] @numbers | 12:10 | ||
12:20
LLamaRider joined
12:25
Jimes joined
|
|||
Jimes | hi guys | 12:25 | |
perl6: say "Hello" | |||
camelia | rakudo-parrot 912342, rakudo-jvm 912342, rakudo-moar 912342, niecza v24-109-g48a8de3: OUTPUT«Hello» | 12:26 | |
Jimes | can anyone please tell what is the origin of the docs published at docs.perl6.org? | ||
is it up-to-date or not? is it based on synopses/apocal..s? | |||
moritz | Jimes: it's on github, perl6/doc | 12:27 | |
Jimes | this URL doc.perl6.org | ||
moritz | Jimes: and it's neither totally up-to-date or hopelessly outdated | ||
Jimes: and it's based on the implemented subset of the synopses | |||
Jimes | i see lots of "1 or 2 years ago" on that github :) | 12:28 | |
moritz | sadly the script that generates the .html files has bitrotted a bit | ||
Jimes | should i better consult other documents while reading this? it looks like a nice documentation (much easier to read than Apo/Syn) | ||
moritz | Jimes: if something is unclear, just ask here | 12:31 | |
Jimes | ok thank you :) | ||
dalek | c: f1820bd | moritz++ | / (5 files): eval is now EVAL |
12:34 | |
12:37
Jimes left
|
|||
dalek | ast: 587aec0 | jnthn++ | S02-types/ (2 files): Make tests more robust to Windows line endings. |
12:38 | |
c: a94bbe0 | moritz++ | htmlify.pl: Update htmlify.pl to match current Rakudo (WIP) |
12:41 | ||
12:42
huf joined
|
|||
moritz | does anybody have any experience wrt memory consumption on rakudo-p vs. rakudo-m? | 12:43 | |
12:43
daniel-s_ joined
|
|||
colomon wishes again there was something like "time" which allowed you to easily and quickly check the memory usage of a program under linux | 12:50 | ||
12:50
berekuk left
|
|||
moritz | camelia: where do you want it? | 12:50 | |
erm, I meant colomon :-) | 12:51 | ||
colomon | well, preferably on all my machines? | 12:52 | |
12:54
berekuk joined
|
|||
grondilu | well, you can use top, can't you? | 12:58 | |
t's not exactly like time, though. | 12:59 | ||
or maybe ps | |||
13:00
LLamaRider left
13:08
yogan left
|
|||
grondilu | maybe try this: coproc do-my-stuff ; while ps h -o rssize $COPROC_PID; do : ; done | 13:09 | |
13:09
LLamaRider joined
|
|||
colomon | grondilu: you can use top if you sit there watching it. which is kind of like time, if by time you mean using a stopwatch. ;) | 13:11 | |
grondilu | thus my suggestion with ps | ||
you can store the rssize evolution in time in a file: | 13:12 | ||
coproc do-my-stuff ; while ps h -o rssize $COPROC_PID; do : ; done > do-my-stuff.memory-usage | |||
hang on, I can do better | 13:13 | ||
coproc perl6-m -e 'say [+] rand xx 1000' ; while rssize="$(ps h -o rssize $COPROC_PID)"; do echo "$(date +%N);$rssize" ; done | 13:15 | ||
13:19
mtk left
13:20
jnap joined
13:22
daniel-s_ left
|
|||
grondilu | with a graph: | 13:22 | |
coproc perl6-m -e 'say [+] rand xx 1000' ; while rssize="$(ps h -o rssize $COPROC_PID)"; do echo "$(date +%s%N) $rssize" ; done |gnuplot -p -e "plot '-'" | |||
13:25
jnap left
|
|||
masak .oO( is a "coproc" the dual of a proc? ) | 13:25 | ||
13:25
woolfy left
|
|||
grondilu | masak: $ help coproc | 13:26 | |
masak | wow, it really is a co-process :) | 13:27 | |
13:27
woolfy joined
13:31
LLamaRider left
13:35
mtk joined
|
|||
dalek | kudo/nom: 37c956f | jnthn++ | src/Perl6/ (2 files): Fix various closure-related issues. In these places we wrongly fell back on auto-close, which is slow and wrong. |
13:37 | |
moritz | do we have anything in core for generating temporary files? | 13:41 | |
p: say IO::Path.tmpdir | |||
camelia | rakudo-parrot 912342: OUTPUT«No such method 'tmpdir' for invocant of type 'IO::Path' in block at /tmp/55zxOH8rI6:1» | ||
moritz | p: say IO::Spec.tmpdir | ||
camelia | rakudo-parrot 912342: OUTPUT«/tmp» | ||
13:43
SamuraiJack joined
|
|||
moritz | fwiw it seems that open :p (pipe) has regressed in rakudo | 13:44 | |
jnthn | p: say $*TMPDIR | ||
preflex | jnthn: you have 3 new messages. '/msg preflex messages' to read them. | ||
camelia | rakudo-parrot 912342: OUTPUT«IO::Path</tmp>» | ||
moritz | htmlify in p6/doc does this: my $pipe = open "dot -T$format -o$file", :w, :p; | 13:45 | |
and it tries to execute ./dot | |||
masak | that... sounds wrong. | 13:47 | |
jnthn | That sounds broken... | 13:53 | |
13:56
berekuk left
13:57
berekuk joined
|
|||
grondilu | std: sub f(\x where x > 1) { say x }; f(7); | 13:57 | |
camelia | std 09dda5b: OUTPUT«ok 00:01 128m» | ||
grondilu | r: sub f(\x where x > 1) { say x }; f(7); | ||
camelia | rakudo-moar 912342: OUTPUT«===SORRY!=== Error while compiling /tmp/0K6A4BjAb3Preceding context expects a term, but found infix > insteadat /tmp/0K6A4BjAb3:1------> sub f(\x where x >⏏ 1) { say x }; f(7);» | ||
..rakudo-jvm 912342: OUTPUT«===SORRY!=== Error while compiling /tmp/Lp8a55TyZJPreceding context expects a term, but found infix > insteadat /tmp/Lp8a55TyZJ:1------> sub f(\x where x >⏏ 1) { say x }; f(7);» | |||
..rakudo-parrot 912342: OUTPUT«===SORRY!=== Error while compiling /tmp/kTdGyPbToBPreceding context expects a term, but found infix > insteadat /tmp/kTdGyPbToB:1------> sub f(\x where x >⏏ 1) { say x }; f(7);» | |||
grondilu | n: sub f(\x where x > 1) { say x }; f(7); | 13:58 | |
camelia | niecza v24-109-g48a8de3: OUTPUT«7» | ||
moritz | p: sub f($x where $x > 1) { say $x }; f 7 | ||
camelia | rakudo-parrot 912342: OUTPUT«7» | ||
moritz | it seems it parses the x as a sub call | ||
which is why it expects a term afterwards | 13:59 | ||
it seems htmlify hasn't bitrotted as much as I feared | 14:04 | ||
and so far it's below 1GB of memory usage, which is also better than what I feared | 14:05 | ||
dalek | c: 59eff62 | moritz++ | lib/Perl6/Documentable/Registry.pm: avoid deprecated .exists method |
14:06 | |
c: f4856f2 | moritz++ | lib/Perl6/TypeGraph/Viz.pm: work around broken open :p (pipe) feature in rakudo |
|||
14:09
kaare_ left,
wooden left
|
|||
colomon | grondilu++ | 14:09 | |
14:12
spider-mario left
|
|||
moritz | p: my @a = 1, 2, 3; say ($@a, ).elems | 14:13 | |
camelia | rakudo-parrot 912342: OUTPUT«1» | ||
moritz | p: my @a = 1, 2, 3; my @b = $@a, 4, 5; say @b.perl | 14:15 | |
camelia | rakudo-parrot 912342: OUTPUT«Array.new([1, 2, 3], 4, 5)» | ||
14:20
jnap joined
14:25
jnap left
14:37
atroxaper joined
|
|||
eiro | hello | 14:39 | |
FROGGS | hi eiro | 14:40 | |
eiro | jnthn, back to school? srly ? | ||
colomon | woah, say [+] rand xx 10000; actually crashes with a stack overflow on JVM. :( | 14:41 | |
tadzik | hey hey eiro! | ||
eiro | tadzik, \o/ wasup ? | ||
grondilu | we now have three implementation of the gamma function: rosettacode.org/wiki/Gamma_function Pick the one you want to put in the core if you want to :) | ||
jnthn | eiro: ? | ||
14:44
jnap joined
|
|||
eiro | jnthn, filey school since 40mn | 14:44 | |
tadzik | eiro: fun times :) Still struggling to finish my studies. How are things? | 14:45 | |
jnthn | eiro: wtf :) | ||
eiro: bah, talk about clickign the wrong thing | 14:46 | ||
moritz | p: my @a = 1, 2; my @b = 4, 5; say (@a, @b).tree | 14:48 | |
camelia | rakudo-parrot 37c956: OUTPUT«1 2 4 5» | ||
moritz | p: my @a = 1, 2; my @b = 4, 5; say (@a, @b).tree.perl | ||
camelia | rakudo-parrot 37c956: OUTPUT«LoL.new([1, 2], [4, 5])» | ||
moritz | p: my @a = 1, 2; my @b = 4, 5; my @c = (@a, @b).tree; say @c.perl | 14:50 | |
camelia | rakudo-parrot 37c956: OUTPUT«Array.new([1, 2], [4, 5])» | ||
moritz | so .tree only itemiizes the inner containers, but not the parcel it was called on? | ||
p: my @a = 1, 2; my @b = 4, 5; my @c = (@a, @b).tree; say @c.elems | |||
camelia | rakudo-parrot 37c956: OUTPUT«2» | ||
eiro | tadzik, wow .. still student? courage! everything's fine there: familly, friends and collegues make me really happy. my only sadness is about work: i feel i'm not a computer engineer now ... just an overpayed hotliner | ||
jnthn, ok :) i was wondering if you want to finish your phd | 14:51 | ||
14:54
pecastro joined
14:55
johnmilton joined
|
|||
moritz | r: say (<a b c> Z <D E F>).tree.perl | 15:00 | |
camelia | rakudo-parrot 37c956, rakudo-jvm 37c956, rakudo-moar 37c956: OUTPUT«(["a", "D"], ["b", "E"], ["c", "F"]).list» | ||
moritz | p: my $x = (<a b c> Z <D E F>); say $x.list.elems; say $x.flat.elems; say $x.tree.elems | 15:02 | |
camelia | rakudo-parrot 37c956: OUTPUT«363» | ||
tadzik | eiro: is it called something like "deliveries"? We have that team at work too, and they sometimes complain that their work is something between hardcore bugfixing and customer support, something writing 1 line of code a week | ||
15:02
yogan joined
|
|||
tadzik | some find it challenging, some frustrating, I guess it can be both :/ | 15:05 | |
dalek | c: ca83c5c | moritz++ | lib/containers.pod: elaborate on item vs. list vs. flattening |
15:09 | |
moritz | hoelzro: iirc you asked about flattening the other day. The commit above should explain it | 15:10 | |
any feedback (not just from hoelzro) on those docs is very welcome. | |||
15:10
kivutar joined
|
|||
timotimo | "as if the was no" <- should read there | 15:11 | |
dalek | c: 44f2b0b | moritz++ | lib/containers.pod: fix typo, timotimo++ |
15:12 | |
timotimo | i think it would be nice to mention much earlier what [...] causes to happen and how Array.new relates to that | 15:13 | |
dalek | c: b2e7ebf | moritz++ | lib/containers.pod: explicit mention what [] and Array.new do |
15:14 | |
moritz | timotimo++ | 15:15 | |
timotimo | that looks good :) | ||
moritz | it's not really early; I don't know how to do that without restructuring the whole article | ||
masak | oh heiro! :) | ||
eiro | tadzik, no deliveries at all: "primary mission" is to provide support and documentation and support for users. engineering is case of spare times. we have more than 40k users and i manage 4 applications: there is no spare time | ||
it was a trap! | |||
masak, \o/ | |||
masak | eiro: is it eating your soul? maybe look for something else? | 15:16 | |
eiro | at least, my collegues are awesome | ||
masak | that's something. | ||
I've had that kind of job. | |||
timotimo | moritz: i feel like for the example (@left Z @right).tree there's brackets missing around it, or perhaps not? | ||
15:17
denis_boyun left
|
|||
moritz | timotimo: no, I don't want to create an itemized array | 15:18 | |
timotimo | ah, of course | ||
moritz | IMHO it should be documented for all Positional methods whether they flatten or not | 15:19 | |
eiro | masak, i looked for something else: but IT in elsass sucks in many ways and the very rare interesting jobs are always reserved. my best chance to have something good is to stay at university and try to get a position as research assistant engineer | 15:20 | |
moritz | which kinda makes me wish we had a way to put that information in the signature | ||
eiro | (for astrophysics or biology for example) | ||
moritz | eiro: moving is not an option? | ||
p: my $x = 0; say (<a b c> Z (1, 2, 3)).map({ $x++; $_ }); say $x | |||
camelia | rakudo-parrot 37c956: OUTPUT«a 1 b 2 c 36» | ||
moritz | .map flattens. | 15:21 | |
p: say (<a b c> Z (1, 2, 3))[0].perl | |||
camelia | rakudo-parrot 37c956: OUTPUT«("a", 1)» | ||
eiro | moritz, i had teleworked and it lead me to depression (even if the job itself and the firm was all i ever dreamed) | ||
tadzik | eiro: yeah, good colleagues and good environment are awesome to have, even if work is not always very interesting | ||
eiro | and my familly is not ready to move (my wife is teacher and very bond to its college) | 15:22 | |
colomon just hit that ugly moment when he actually has to implement the ugly core to make his beautiful abstraction work | |||
moritz | p: say (<a b c> Z (1, 2, 3)).elems | ||
camelia | rakudo-parrot 37c956: OUTPUT«3» | ||
eiro | tadzik, that's why i keep beeing happy: everything but my work is really nice in my live | 15:23 | |
moritz | how do lists work in p6 pod? | ||
moritz forgot | |||
eiro | i have to stop complaining and code more on my free time :) | 15:24 | |
tadzik | moritz: just elems | ||
=item foo, =item bar | |||
nothing around them | |||
...or so I remember :-) | |||
15:25
zakharyas joined
|
|||
masak | <eiro> i have to stop complaining and code more on my free time :) | 15:29 | |
eiro: you and me both... | |||
eiro | masak, sure but you are still coding. i'm just complaining :) | 15:32 | |
dalek | c: 9c28c71 | moritz++ | lib/containers.pod: Add some more examples about what flattens and what does not |
15:33 | |
moritz | tadzik: takk | 15:34 | |
masak | eiro: coding... but not enough Perl 6. :/ | ||
timotimo | moritz: either "the whole point of tree is not to flatten" or "to not flatten" (something about split infinitives or something) | 15:35 | |
dalek | c: c6c9e23 | moritz++ | lib/containers.pod: grammaro, timotimo++ |
||
masak | the whole discussion about split infinitives is so silly. | 15:36 | |
moritz | timotimo: thanks; I've chosen the latter, it seems to put more emphasis on the negation | ||
eiro | so i am. i write perl5 code. sometims python one | ||
masak | aye. | ||
moritz++ | |||
moritz has fun with some p5 projects in his free time | 15:37 | ||
masak | I should use more p5 in my spare time, too. it's a great language. | 15:40 | |
I also want to look into Rust. | |||
eiro | so do i: github.com/eiro/app-atombomb/blob/...n/atombomb | ||
(which will be an excellent exercice to write perl6 code: rewrite it in perl6 | 15:41 | ||
clojure and rust are clearly something i would like to try | |||
bjz does most of his programming work in Rust, but thinks perl6 looks neat | 15:42 | ||
eiro | i was reading the code of moarvm last month, wondering why write it in C (rust or go must be easier ?) | 15:43 | |
bjz likes linguistic abstraction ^_^ | |||
eiro | bjz, is rust stable enought for production ? | ||
bjz | eiro: some crazies are using it for production I think - you'd have to ask on irc.mozilla.org #rust | 15:44 | |
moritz | "some crazies are using it for production" -- that sounds about the same as Perl 6 :-) | ||
eiro | yep :) i have some perl6 scripts there | 15:45 | |
jnthn | eiro: C is still something of a sweet spot for doing things like MoarVM. | ||
bjz | eiro: it's pretty good, we don't have many show-stopping bugs (we have a build bot), but the syntax/semantics are still shifting - much less than they used to though. things are very much crystalizing | ||
jnthn | eiro: Compiles pretty much everywhere and has good tooling are two notables, but also the ability to screw with memory however you like is rather useful when implementing stuff like GCs. | 15:46 | |
bjz | moritz: how is perl6 going? | ||
jnthn: good thing about Rust is it should fill those niches well - but the tooling is still lacking | 15:47 | ||
eiro | jnthn, sure but i imagine that write moarvm in C is more much work than in go or rust | ||
to finally deal with same problems (concurrency, garbage collection, ...) | 15:48 | ||
bjz | jnthn: does the VM use address-of gotos? | ||
jnthn: I heard the Erlang VM does | |||
eiro | there was a post on hackernews about someone who uses the opensource parts of chrome as C runtime. | 15:49 | |
moritz | bjz: well, we are having fun with MoarVM, and a slowly growing module ecosystem | ||
jnthn | bjz: Can use computed goto where it's available, yes. | ||
moritz | we just need more speed, docs and a killer app. | 15:50 | |
who doesn't? :-) | |||
bjz | jnthn: apparently address-of gotos are really good for implementing vms for dynamic langs - but it's something Rust doesn't have. dunno if there are alternatives though. | ||
moritz: awesome | |||
eiro | you all guys are my stars! when i see the work accomplished last years, it still amaze me! | ||
timotimo | MoarVM seems to be providing "more speed" already, which makes me very happy | ||
jnthn | bjz: Yeah, they can be useful. | 15:51 | |
bjz | moritz: where does MoarVM fit in with Rakudo? | ||
ohh: github.com/moarvm/moarvm | 15:52 | ||
eiro | is parrot still needed to build nqp/moarvm ? | ||
timotimo | no :) | ||
i need to revise that readme again | |||
eiro | wow: awesome! i have to update my installation script! | ||
tadzik | eiro: try rakudobrew :) | 15:53 | |
it even supports moarvm since yesterday or so | |||
15:53
berekuk left
15:54
rindolf left
|
|||
tadzik | ok, since Now, if you look at the commits | 15:54 | |
15:54
berekuk joined
15:55
thou joined
|
|||
bjz | moritz: one thing that has been super useful for the Rust community is the 'This Week in Rust' posts. Is there anything like that for Perl6 out there? | 15:55 | |
bjz is curious to look at the latest work | |||
timotimo | GlitchMr used to build weekly perl6 changes posts on his blog | ||
jnthn | eiro: Much more work? That's hard to say. I *know* C, its tooling, its semantics, and how to design stuff so it can be implemented in C. I'd have been starting from zero on all those with anything else. Not to mention there's more C hackers around to contribute... | 15:56 | |
15:56
ajr joined
15:57
ajr is now known as Guest95727
|
|||
jnthn | eiro: I'm not saying it couldn't have been done well in Go or Rust, but I'm not at all sure we'd be this far along if I'd taken that path... | 15:57 | |
15:57
Guest95727 is now known as ajr_
15:58
Psyche^ joined
|
|||
bjz | jnthn: yes. MoarVM looks like a considerable undertaking to say the least | 16:00 | |
clsn finds a bug in his Signature matching code. Oops. | 16:02 | ||
timotimo | clsn: you brought shame upon your whole family! time for sepukku! | ||
we don't allow people to commit code with any bugs in them! | |||
bjz | timotimo: do you have a link to those post btw? | 16:03 | |
bjz is curious | |||
jnthn | timotimo: Oh noes, I guess I should leave too? :P | ||
bjz | jnthn: A couple of years ago Rust was a very different beast - much uglier and unpolished. would never have contemplated writing a project in it. And Go? I would be very skeptical about writing a VM in Go. Sounds like C was the best choice. | ||
arnsholt | If we don't allow bugs, what about build-breaking commits? O=) | ||
16:03
Psyche^_ left,
odoacre left
16:04
odoacre joined
|
|||
bjz | Is Perl6 pretty stable now? Is it just the speed issue you guys are working on? | 16:04 | |
timotimo | mildly stable | 16:05 | |
the stableness is very unevenly distributed | |||
bjz | ahh yes | ||
sounds familiar | |||
:P | |||
timotimo | we refer to parts of the specification that are "solid", "slushy" or "liquid" ;) | ||
bjz | heh | ||
awesome | |||
grondilu | but usually when you don't do fancy or not-yet-implemented stuff, it works fine. | ||
16:06
rindolf joined
|
|||
grondilu | I actually haven't encountered a bug for a while. | 16:06 | |
bjz | timotimo: github.com/mozilla/rust/wiki/Meeti...eze-for-10 | 16:07 | |
timotimo: :P | |||
timotimo | bjz: GlitchMr took down his blog :( | ||
bjz | oh :( | ||
timotimo | i often hit bugs, but i'm specifically looking for them :P | ||
bjz | ICEs? :D | 16:08 | |
(internal compiler errors) | |||
oh wait | |||
prel isn't compiled | |||
heh | |||
s/prel/perl6/ | |||
timotimo | perl6 is compiled, though | ||
bjz | jitted? | ||
timotimo | on the JVM, yes | ||
on MoarVM, some time later this or early next year | 16:09 | ||
perhaps | |||
no promises | |||
but on all backends of rakudo, it's also AOT'ed | |||
timotimo afk for a bit | |||
jnthn | Does somebody have an example of some gather/take code they know explodes the stack on JVM? | 16:12 | |
16:12
BenGoldberg joined
|
|||
jnthn can likely create one, though... | 16:13 | ||
eiro | tadzik, i'll check rakudobrew. i was using: github.com/eiro/labo/blob/master/rakudo_install | 16:14 | |
jnthn | j: say [+] 1..10000 | ||
camelia | rakudo-jvm 37c956: OUTPUT«50005000» | ||
eiro | oh crap ... redundant work: | ||
jnthn | j: say [+] rand xx 10000 | ||
eiro | i switch to your script | ||
camelia | ( no output ) | ||
eiro | jnthn, thanks for explainations about "why C" | 16:15 | |
16:15
molaf_ joined
16:19
molaf left
|
|||
grondilu | j: say [+] gather take rand for ^10000 | 16:19 | |
camelia | ( no output ) | ||
grondilu | j: say .[.end] given gather take rand for ^10000 | 16:20 | |
camelia | ( no output ) | ||
16:21
denis_boyun joined
|
|||
jnthn | grondilu: Turns out the "say [+] rand xx 10000" does it | 16:21 | |
grondilu | yeah but I thought you might want something more explicit | ||
16:21
kivutar left
|
|||
jnthn | nah, that will do | 16:22 | |
But thanks :) | |||
jnthn compiles attempt 1 of N at fixing this... | |||
jnthn wonders how big N will be... :S | |||
wtf, I think it worked first time | 16:24 | ||
And gather.t still passes | 16:25 | ||
16:26
kivutar joined
|
|||
timotimo | wtf | 16:27 | |
colomon | jnthn++ | 16:28 | |
16:29
lue left
|
|||
dalek | p: 8055d65 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ (2 files): Enable invoking reset with a continuation. If given a continuation instead of a coderef, then it tags the stack and resumes the continuation as the very next thing. This will enable fixing Rakudo on JVM's gather/take stack overflow issues. |
16:30 | |
jnthn | So, how hard will the corresponding Moar patch be... | ||
timotimo assumes "not very hard" | |||
to increase the suspense for me, i'll be AFK for a bit now :P | 16:31 | ||
16:32
wooden joined
|
|||
jnthn | I'm not sure anything to do with implementing continuations can be described as "not very hard" :P | 16:33 | |
arnsholt | I find continuations a bit mind-bending as a concept, so implementing them is probably even harder =) | 16:35 | |
masak | depends how bent your mind already is... :P | 16:36 | |
arnsholt | =D | ||
masak | I find for most of these things, bending the mind is a once-only cost. or at least it gets easier over time. | ||
arnsholt | Oh, definitely | ||
jnthn | True. I couldn't have got the JVM fix right first try if I hadn't done the continuations on Moar within the last few weeks. | 16:37 | |
arnsholt | My mind is mostly bent there to get continuations (I think), but not quite there | 16:38 | |
16:39
rindolf left,
araujo left
16:42
lue joined
16:43
araujo joined,
araujo left
|
|||
jnthn | spectest on Rakudo JVM with the fix looking good | 16:45 | |
colomon | \o/ | ||
jnthn | Next to build a Rakudo with my first pass at the fix on Moar | ||
colomon | \o/ \o/ | ||
jnthn | btw, even for things that didn't stack overflow, gather/take was kinda horrible on JVM before this | 16:46 | |
So hopefully this helps performance on a few things. | 16:47 | ||
jnthn guesses this was probably the most annoying of the Rakudo JVM bugs. | |||
16:49
lue left,
thou left
|
|||
colomon | even with the relatively small amount of p6 playing around I've done in the last month, I hit the stack overflow thing more than once. | 16:50 | |
timotimo | yeah, you run into lazy lists quite frequently | 16:53 | |
jnthn | Promising news: with my attempted fix on Moar, Rakudo builds, sanity tests, does "say [+] rand xx 10000" faster than on Parrot and passes gather.t. | ||
timotimo: Well, map is lazy, but doesn't hit the bug | |||
timotimo: It's specifically gather/take | |||
spectest on MoarVM underway. | |||
clsn fixes his bug and pushes, so it's added to the pull request. | |||
colomon | in fact, it was leading me to rewriting things using map instead of gather/take. :) | ||
hoelzro | moritz++ # docs | 16:55 | |
evening perl 6ers! | |||
colomon | hoelzro: not quite noon here. ;) | 16:56 | |
hoelzro | good * 6ers, then =) | ||
colomon | \o | ||
16:57
jnap left,
Shozan is now known as SHODAN
|
|||
timotimo | hey hoe | 17:00 | |
17:03
lue joined
|
|||
moritz | hoelzro: do they make sense to you? | 17:03 | |
hoelzro | timotimo: hey tim =P | ||
moritz: yes, that cleared a few things up | |||
moritz | \o/ | 17:04 | |
dalek | p: eef5867 | jnthn++ | tools/build/MOAR_REVISION: Bump to a MoarVM with continuation improvements. |
17:05 | |
kudo/nom: 7b540cc | jnthn++ | tools/build/NQP_REVISION: Get NQP with JVM/Moar continuation improvements. |
17:06 | ||
kudo/nom: 8c054a4 | jnthn++ | src/core/GatherIter.pm: Fix GatherIter not to add a frame every take. Fixes the typical case of StackOverflowException on the JVM, and leads to far better gather/take performance on both MoarVM and JVM. |
|||
timotimo | this makes me happy ^ | 17:08 | |
nwc10 | does parrot do gather/take? | 17:09 | |
eiro | tadzik, github.com/tadzik/rakudobrew/blob/...udobrew#L8 | 17:10 | |
jnthn | nwc10: Yes, implemented using coroutines | ||
nwc10: Its implementation is at least partly a PIR hack. :) | |||
eiro | i want it to be an env variable. will you accept a patch? | ||
nwc10 | whereas JVM and MoarVM implementations are using continuations? And a less hacky design? | 17:11 | |
jnthn | Well, nqp:: ops instead :) | 17:12 | |
It's a bit cleaner, to me at least. | |||
tadzik | eiro: sure | 17:13 | |
eiro | tadzik, thanks :) | 17:16 | |
tadzik, no lib used, just 5.10. this is about being easy to install, right ? | 17:23 | ||
tadzik | eiro: what do you mean? | 17:24 | |
eiro | tadzik, the only use you do are pragmas (strict, warnings, 5.010) is this just because you haven't felt the need of loading something else? | 17:27 | |
tadzik | eiro: I didn't feel a strong need for anything else, and I think the more dependency-free it is, the better :) | 17:28 | |
eiro | (rewriting slurp instead of using File::Slurp for exemple) | ||
tadzik | oh, I did that? :) | ||
eiro | yep | ||
colomon | jnthn: for what it's worth, say [+] 1 xx 10000; runs in .971s on parrot, 1.200s on Moar, and 6.2s on jvm. (The last crashed before your patch.) | 17:29 | |
tadzik | oh, indeed | ||
yeah, I probably wanted it dependency free | |||
eiro | and write_file <=> spurt | ||
tadzik, app::fatpacker aware, right ? | |||
tadzik | eiro: yeah | ||
moritz | p: 4.sqr | 17:30 | |
17:30
berekuk left
|
|||
camelia | rakudo-parrot 37c956: OUTPUT«No such method 'sqr' for invocant of type 'Int' in block at /tmp/2uZuNY5h7f:1» | 17:30 | |
moritz | p: sqr 4 | ||
camelia | rakudo-parrot 37c956: OUTPUT«===SORRY!=== Error while compiling /tmp/GZb86Q2MOAUndeclared routine: sqr used at line 1. Did you mean '&sqrt'?» | ||
BenGoldberg | p: sqrt 4 | ||
camelia | ( no output ) | ||
BenGoldberg | p: say sqrt 4 | ||
camelia | rakudo-parrot 37c956: OUTPUT«2» | ||
BenGoldberg | p: say sqrt 2 | ||
camelia | rakudo-parrot 37c956: OUTPUT«1.4142135623731» | ||
17:30
berekuk joined
|
|||
jnthn | colomon: Curious, I got Moar a bit faster. Was that on latest, though? | 17:30 | |
BenGoldberg | p6: say sqrt 2 | ||
camelia | rakudo-moar 37c956: OUTPUT«1.414214» | ||
..rakudo-parrot 37c956: OUTPUT«1.4142135623731» | |||
..rakudo-jvm 37c956, niecza v24-109-g48a8de3: OUTPUT«1.4142135623730951» | |||
eiro | ok then :) | ||
colomon | jnthn: This is perl6 version 2013.12-313-g8c054a4 built on MoarVM version 2013.10-393-gc417239 | ||
BenGoldberg | Why does moar output lots fewer digits? | ||
colomon | jnthn++ # shaved 5 seconds off both moar and jvm (pre-crash) timings. | 17:31 | |
(pre-crash -- time it ran until it crashed) | |||
17:32
atroxaper left
|
|||
BenGoldberg | p6: say 2.sqrt.fmt "%10f" | 17:32 | |
camelia | rakudo-parrot 37c956: OUTPUT«===SORRY!=== Error while compiling /tmp/Kj8CNCkgLaTwo terms in a rowat /tmp/Kj8CNCkgLa:1------> say 2.sqrt.fmt ⏏"%10f" expecting any of: method arguments postfix infix st…» | ||
..rakudo-jvm 37c956: OUTPUT«===SORRY!=== Error while compiling /tmp/PCg6WDnxtKTwo terms in a rowat /tmp/PCg6WDnxtK:1------> say 2.sqrt.fmt ⏏"%10f" expecting any of: method arguments postfix infix stopp…» | |||
..rakudo-moar 37c956: OUTPUT«===SORRY!=== Error while compiling /tmp/Q10wGKOqTOTwo terms in a rowat /tmp/Q10wGKOqTO:1------> say 2.sqrt.fmt ⏏"%10f" expecting any of: method arguments postfix infix stop…» | |||
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===Two terms in a row (method call requires colon or parens to take arguments) at /tmp/jm4DOZNbZl line 1:------> say 2.sqrt.fmt ⏏"%10f"Parse failed» | |||
moritz | BenGoldberg: needs colon after the method name | ||
diakopter | need a colon | ||
p6: say 2.sqrt.fmt: "%10f" | 17:33 | ||
camelia | rakudo-parrot 37c956, rakudo-jvm 37c956, rakudo-moar 37c956, niecza v24-109-g48a8de3: OUTPUT« 1.414214» | ||
17:33
benabik left
|
|||
BenGoldberg | p6: say 2.sqrt.fmt("%.10f") | 17:33 | |
camelia | rakudo-parrot 37c956, rakudo-jvm 37c956, rakudo-moar 37c956, niecza v24-109-g48a8de3: OUTPUT«1.4142135624» | ||
BenGoldberg | p6: say 2.sqrt.fmt("%.20f") | ||
camelia | rakudo-jvm 37c956: OUTPUT«1.4.142135623730951E19» | ||
..rakudo-moar 37c956: OUTPUT«1.09223372036854775808» | |||
..rakudo-parrot 37c956: OUTPUT«1.004.142135623731e+19» | |||
..niecza v24-109-g48a8de3: OUTPUT«1.41421356237310000000» | |||
diakopter | wat | ||
BenGoldberg | Huh? | ||
1.4.14???? | 17:34 | ||
diakopter | 1.09?? | ||
moritz | looks like a fmt/sprintf bug | ||
diakopter | 1.004.14? | ||
wow | |||
geekosaur | I like that E19/e+19 at the end of those too | 17:35 | |
(which might be a hint as to what's going on...) | |||
BenGoldberg | It's nice, I suppose that jvm and parrot are both wrong in basically the same way | ||
colomon | yeah, those are badly broken. (except niecza) | 17:36 | |
diakopter | m: say 2.sqrt.fmt("%.40f") | ||
camelia | rakudo-moar 37c956: OUTPUT«1.0000000000000000303786028427003666890752» | ||
colomon is probably at fault | |||
diakopter | m: say 2.sqrt.fmt("%.1f") | ||
camelia | rakudo-moar 37c956: OUTPUT«1.4» | ||
diakopter | m: say 2.sqrt.fmt("%.5f") | ||
camelia | rakudo-moar 37c956: OUTPUT«1.41421» | ||
diakopter | m: say 2.sqrt.fmt("%.9f") | ||
camelia | rakudo-moar 37c956: OUTPUT«1.414213562» | ||
diakopter | m: say 2.sqrt.fmt("%.10f") | 17:37 | |
camelia | rakudo-moar 37c956: OUTPUT«1.4142135624» | ||
BenGoldberg | p6: 2.sqrt.fmt("%.15f").say | ||
camelia | rakudo-parrot 37c956, niecza v24-109-g48a8de3: OUTPUT«1.414213562373100» | ||
..rakudo-jvm 37c956, rakudo-moar 37c956: OUTPUT«1.414213562373095» | |||
BenGoldberg | p6: 2.sqrt.fmt("%.13f").say | ||
camelia | rakudo-parrot 37c956, rakudo-jvm 37c956, rakudo-moar 37c956, niecza v24-109-g48a8de3: OUTPUT«1.4142135623731» | ||
BenGoldberg | p6: 2.sqrt.fmt("%.14f").say | ||
camelia | rakudo-parrot 37c956, rakudo-jvm 37c956, rakudo-moar 37c956, niecza v24-109-g48a8de3: OUTPUT«1.41421356237310» | 17:38 | |
diakopter | 19 breaks moar | ||
18 is fine | |||
BenGoldberg | At 15, are digits being gotten wrong, or are parrot and niecza merely rounding differently from jvm and moar? | 17:39 | |
17:42
raiph joined
17:43
jnap joined
|
|||
colomon | BenGoldberg: almost certainly it's in issue in sprintf's rounding in moar and jvm. | 17:43 | |
moritz | does it try to multiply the float by a big number and then extract digits from that? | 17:44 | |
if yes, it might explain the bogus E19 at the end | |||
raiph | bjz, timotimo: glitchmr changed his github id: xfix.github.io/ | ||
17:47
jnap left
|
|||
raiph | bjz: is irclog.perlgeek.de/perl6/2014-01-19/summary (and other days) at all helpful? | 17:48 | |
17:48
ajr_ left
|
|||
bjz | raiph: cheers | 17:49 | |
raiph: the advent calendar is also nice reading | |||
it seems :) | |||
xfix | Yeah, I don't have have time work on my blog anymore :-(. Sorry for not informing. | ||
17:49
ajr joined
|
|||
xfix | The xfix.github.io is an archive. | 17:50 | |
I've lots of things to do in school. | |||
17:50
ajr is now known as Guest22229
|
|||
diakopter | daaaaang rakudo-moar builds so fast | 17:50 | |
colomon | is someone adding these floating point mistakes to roast? | 17:53 | |
17:59
Guest22229 left
18:00
ajr_ joined
|
|||
tadzik | eh, bailador tests still fail when it's precompiled | 18:04 | |
timotimo | d'oh :( | 18:05 | |
18:06
benabik joined
|
|||
japhb | colomon: ISTR you adding the ones that I'd found a few weeks ago. | 18:11 | |
18:11
ajr_ left
|
|||
colomon | japhb: but these are fresh, so far as I know. | 18:12 | |
18:12
stevan_ joined
18:13
ajr joined,
ajr is now known as Guest27784
18:14
Guest27784 is now known as ajr_
|
|||
raiph | xfix++ # having -Ofun with p6; helping others to; prioritizing school | 18:14 | |
18:16
btyler joined
18:19
jeffreykegler joined,
berekuk left
|
|||
japhb | colomon: Yep, I just figured "right next to where you put the ones I found" would be a good place for these. :-) | 18:20 | |
tadzik | wow, github is superfast at forking these days | ||
colomon | japhb: ah, yeah, it's probably reasonable | ||
18:22
berekuk joined
|
|||
FROGGS | can somebody tell how hard it might be to create mod_perl6 for apache? | 18:25 | |
BenGoldberg | Harder than implementing FastCGI, probably ;) | 18:27 | |
raiph | .oO ( easier than last time? ) | ||
FROGGS | I mean, I'd need such a Perl6Handler to run Perl 6 besides Perl (besides PHP), right? | 18:28 | |
raiph | www.smashing.org/jeff/node/21 | ||
( mod_perl6 ) | |||
FROGGS | ohh | ||
timotimo | i'd prefer fastcgi or psgi if i were you | 18:29 | |
or if i were anybody really | |||
tadzik | . o O ( Good to have more QA than ":qa" ) | ||
18:33
kivutar left
|
|||
raiph | FROGGS: mod_perl6 built atop mod_parrot; i imagine it's hopelessly bitrotted and may well be wrong approach for 2014 | 18:33 | |
18:33
kivutar joined
|
|||
BenGoldberg | I don't think that psgi will work without perl5... of course you can have both perl5 and perl6 loaded in once process | 18:34 | |
dalek | p: 795b83b | jnthn++ | src/vm/moar/QAST/QAST (2 files): Better void context conveyance. |
||
kudo/nom: 17400f0 | jnthn++ | src/core/GatherIter.pm: Micro-optimize GatherIter. |
|||
FROGGS | raiph: possibly | ||
BenGoldberg: why not? | |||
BenGoldberg | How would plack deal with a perl6 program? | 18:35 | |
tadzik | well, plack is perl 5, but there are working PSGI tools for Perl 6 | ||
I fixed just half an hour ago :P | |||
BenGoldberg | Oh, nevermind then ;) | ||
tadzik | whoa, mokudo builds in about 2/3 of yesterday's time :) | 18:37 | |
timotimo | building mokudo hardly even stresses the binder, for example | 18:38 | |
that's very cool | |||
dalek | ast: de89abd | jnthn++ | / (3 files): Unfudge passing TODOs for JVM. Which we get thanks to fixing things in Rakudo that similarly affected Moar. |
18:39 | |
raiph | moritz: "To place a non-Array into an array variable" what about calling @vars "Positional variables" (and %vars "Associative variables") | 18:42 | |
dalek | kudo/nom: 706bc15 | jnthn++ | docs/ChangeLog: Some more ChangeLog entries. |
18:43 | |
timotimo | parrot's stage parse is at 99 seconds for me now, btw :) | ||
18:44
jnap joined
|
|||
jnthn | timotimo: What's the Moar and JVM times, ooc? | 18:44 | |
timotimo | gimme a minute (at least) | 18:45 | |
jnthn | :) | ||
bbi10 | |||
colomon | jnthn: for me, jvm is 63s, moar is 75s, parrot is 84s | 18:46 | |
18:48
peteretep joined
|
|||
peteretep | Any public estimate on when Rakudo for the JVM will be available? | 18:48 | |
18:48
jnap left
|
|||
timotimo | rakudo for the jvm is already available, just not Rakudo Star | 18:48 | |
FROGGS | rakudo itself is available since april 2013 or so I think | 18:49 | |
rakudo@jvm I mean | |||
timotimo | 76 seconds for stage parse on moarvm | ||
FROGGS | May 2013 actually | 18:50 | |
18:51
rindolf joined
|
|||
colomon | it didn't merge with nom until June, did it? | 18:51 | |
seems like it was a big deal at YAPC::NA, and sorear++ did some furious hacking to make some corners of it work there | |||
FROGGS | jnthn++'s blog post said that the may release "will" contain the jvm backend | 18:52 | |
I'd say that speaks for being in nom | |||
hmmm | |||
tadzik | FROGGS: there's something wrong with moar's dir() | ||
FROGGS | well, w/e, it is in there by now :o) | ||
tadzik: do tell | |||
tadzik | see gist.github.com/tadzik/8509235 | ||
it gives back paths that are too relative :P | 18:53 | ||
I tried to fix it, but settings compilation blows up | |||
BinGOs | being too relative is incest | ||
FROGGS | I am unable to read your shell's output | ||
ahh, I see it | |||
tadzik | see lines 6, 7, then 13 and 14 | ||
I should have a separate prompt for gisting stuff :) | 18:54 | ||
FROGGS | :o) | ||
18:54
darutoko left
18:55
ajr_ left,
SamuraiJack left
|
|||
raiph | peteretep: do you mean having the JVM backend in Rakudo Star rather than just the compiler? (in which case, I'd say eta is next 2-3 months) | 18:56 | |
18:56
kivutar left
|
|||
FROGGS | tadzik: I am currently testing a patch | 19:02 | |
tadzik | \o/ | ||
FROGGS | wow, 65s for moar's stage parse | 19:03 | |
compared to 55s jvm and 118 parrot | |||
colomon | FROGGS: interesting, you got faster than me for moar and jvm and slower for parrot. | ||
FROGGS | colomon: I am curious... what are your timings? | 19:04 | |
19:04
stevan_ left
|
|||
colomon | FROGGS: for me, jvm is 63s, moar is 75s, parrot is 84s | 19:04 | |
FROGGS | it has been jvm < moar < parrot for me for quite a while | ||
colomon | same here | 19:05 | |
FROGGS | k | ||
colomon | but weirdly different magnitudes | ||
FROGGS | but yeah, that is weird | ||
moritz has 59s jvm < 71s moarvm < 131s parrot | |||
btyler | might be worth specifying if you're using oracle or openjdk java | ||
FROGGS | openjdk | ||
moritz | same here | ||
FROGGS | my moar is -O1 -g3 | ||
colomon | why is my parrot so much faster than everyone else's? | ||
moritz | my moar is 'Configure.pl' without extra args | 19:06 | |
colomon: you have a fast-track parrot. Why don't you share it? :-) | |||
jnthn | Well, the orderings are consistent even if the magnitudes are curious :) | ||
timotimo | i give --optimize=1 to moarvm | ||
FROGGS | -O1 is the default | ||
-g3 is what I have extra | |||
timotimo | what exactly would i have to do to help make it able to -O2 and -O3? something about aliasing and stuff? | ||
raiph | moritz++ # containers doc | 19:07 | |
moritz: "What flattens, what doesn't?" is a bullet point not heading; mistake? | |||
BenGoldberg | p6: use v7; say 'What?!' | ||
camelia | rakudo-parrot 8c054a, rakudo-jvm 8c054a, rakudo-moar 8c054a, niecza v24-109-g48a8de3: OUTPUT«What?!» | ||
FROGGS | timotimo: BOOTSTRAP.pm explodes for me under -O3 | ||
timotimo | yeah | ||
FROGGS | dunno why though, the error might have changed | 19:08 | |
dalek | c: 57b9dd3 | moritz++ | lib/containers.pod: Fix heading, raiph++ |
||
jnthn | One way is to see what -02 adds, then add them one by one to see if you can work out which is to blame. | ||
timotimo | will have a timing for jvm stage parse soon | ||
19:10
kivutar joined
|
|||
timotimo | 66s for stage parse on jvm | 19:12 | |
19:18
berekuk left
|
|||
dalek | p: b171719 | (Timo Paulssen)++ | src/vm/parrot/QAST/Operations.nqp: remove a duplicated bindattr_s |
19:19 | |
kudo-star-daily: 5476d46 | coke++ | log/ (5 files): today (automated commit) |
19:20 | ||
rl6-roast-data: e2ece0c | coke++ | / (6 files): today (automated commit) |
|||
[Coke] | (that was yesterday's today) | ||
dalek | kudo/nom: 5c0d9db | (Tobias Leich)++ | src/core/IO.pm: prepend path in dir() when needed |
19:26 | |
FROGGS | tadzik: ^^ | 19:27 | |
tadzik | \' | 19:28 | |
\o/ | |||
raydiak | what specifically is an "aggregate operation", as in "Cannot do aggregate operation on a type object"? | 19:30 | |
19:34
berekuk joined
|
|||
dalek | rl6-roast-data: d9e7b16 | coke++ | bin/rakudo.moar.sh: Don't need master, rakudo is tracking vers. |
19:35 | |
grondilu | r: say (1 - 1e-16).Num.fmt("%.12f") | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.000000000000» | ||
grondilu | n: say (1 - 1e-16).fmt("%.12f") | 19:36 | |
camelia | niecza v24-109-g48a8de3: OUTPUT«1.000000000000» | ||
grondilu | r: say (1 - 1e-8).fmt("%.12f") | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.999999990000» | ||
grondilu | r: say (1 - 1e-12).fmt("%.12f") | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.999999999999» | ||
grondilu | r: say (1 - 1e-15).fmt("%.12f") | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.000000000000» | ||
grondilu | r: say (1 - 1e-14).fmt("%.12f") | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.000000000000» | ||
grondilu | r: say (1 - 1e-13).fmt("%.12f") | 19:37 | |
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.000000000000» | ||
grondilu | r: say (1 - 1e-12).fmt("%.12f") | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.999999999999» | ||
grondilu | r: say (1 - 1e-7).fmt("%.6f") | 19:38 | |
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.000000» | ||
grondilu | r: say (1 - .01).fmt("%.1f") | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.0» | ||
grondilu | r: say (1 - .1).fmt("%.0f") | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.» | ||
grondilu | I bet this bug has not been detected | 19:39 | |
r: say 0.9.fmt("%.0f") | 19:40 | ||
camelia | rakudo-parrot 706bc1, rakudo-jvm 706bc1, rakudo-moar 706bc1: OUTPUT«0.» | ||
grondilu | eval: printf "%.0f", .9 | ||
[Coke] | Suggest we change r: to output r-p: r-j: r-m, to avoid multiline output on short stuff. | ||
19:41
spider-mario joined
|
|||
btyler | 13:42:57 [~/prog/6perl/rakudo] btyler$ ./perl6-m -e "say 'hi OSX 10.9 :)'" | 19:43 | |
hi OSX 10.9 :) | |||
benabik | btyler: You fix the link problems? | 19:44 | |
btyler | unfortunately I'm not at all sure how the makefile gets created. the only change needed is to remove the "install_name" flag from line 291 | ||
^ yep | |||
well, 'fix'. more like 'random walk until something worked' | |||
19:44
jnap joined
|
|||
btyler | so there might be something broken as a result, but r-m compiled and it seems to run ok. I'll run the tests now | 19:45 | |
'make test' is all good | 19:46 | ||
FROGGS | btyler++ # \o/ | 19:47 | |
colomon | btyler++ | ||
benabik | I think Moar's build system needs to be altered to keep install_name from ending up in the config, sadly. | ||
19:48
jeffreykegler left
|
|||
benabik | I suppose Rakudo could s/// it out of the LDFLAGS, but that seems... less optimal. | 19:48 | |
19:50
jnap left
|
|||
benabik | `nqp-m --show-config | grep install_name`: moar::ldshared=-dynamiclib -install_name $(PREFIX)/lib/libmoar.dylib | 19:50 | |
FROGGS | let's just remove that option from ldshared, and make another variable moarshared, and use that in the makefile too | 19:53 | |
benabik | FROGGS: +1, in the middle of doing that. | 19:55 | |
19:55
Mouq joined
|
|||
FROGGS | assum day that is :o) | 19:55 | |
jnthn | ooh, yay...OSX fix too \o/ | 20:02 | |
benabik | Hm. Well that both worked and didn't. | 20:04 | |
tadzik | FROGGS: ok, that's better, but one thing is off: it returns .. as one of the files, but only when checking in something else than "." | 20:05 | |
FROGGS | tadzik: can you make a ticket? I will look at later but it is likely I forget | ||
tadzik | FROGGS: sure | ||
benabik | I no longer have -install_name /usr/local/lib/libmoar.dylib, but it still doesn't compiler. | 20:06 | |
Probably because there's not -lmoar | |||
tadzik | FROGGS: on RT? | 20:07 | |
benabik | Yeah, if I add -lmoar, then it succeeds. | ||
btyler: I assume you removed -install_name, but left the $(PREFIX)/lib/libmoar.dylib ? | |||
btyler | benabik: I left the path there for -dynamiclib | ||
yes | |||
but as I said, this was the result of random walk, I don't profess to much understanding here | 20:08 | ||
FROGGS | tadzik: yeah | ||
tadzik | or I'll just try to fix it :P | 20:09 | |
benabik | Heh. Rakudo's configure already has a "remove a flag from ldshared" for windows. | 20:10 | |
FROGGS | tadzik: sure, go ahead :o) | 20:11 | |
benabik | Can someone tell me what M_LDFLAGS ends up being in Linux? | ||
I don't see how libmoar gets added to the link calls on any platform. | |||
20:12
zakharyas left
20:13
raiph left
|
|||
FROGGS | rakudo/Makefile:992:M_LDFLAGS = -O1 -g3 -Wl,-rpath,$(PREFIX)/lib -O1 -lm -lpthread -lrt -ldl | 20:15 | |
benabik: ^^ | |||
benabik | Okay, so no reference to libmoar there... | ||
japhb | jnthn: How do you change the number of items passing through a Supply.map({})? It looks from the implementation that the result of the map block is just captured and passed on as a single unit. But I want to send 0..N separate items from the map for each incoming item from the parent Supply. | 20:17 | |
jnthn | japhb: It's 1 to 1 at the moment, I'm afraid. | 20:18 | |
japhb | Gah. Any workaround? | ||
jnthn | japhb: I can't immediately think of one, sorry. | 20:19 | |
tadzik | grr, why cannqp::nextfiledir | ||
japhb | Does the map block have any way to see the sub-supply it is being used to create? | ||
Dang. | |||
tadzik | * why can't nqp::nextfiledir return the same thing on every backend | ||
japhb | Well crap, that's going to require a redesign. :-/ | ||
jnthn | japhb: ohh | 20:21 | |
japhb: You can implement it on terms of "on" | |||
benabik | FROGGS: Can you gist your whole Rakudo Makefile from Linux? I'm having problems seeing why it even compiles there... | ||
FROGGS | tadzik: we could prefix the path in moar already just to strip it again in rakudo... but this is not very heap this way | 20:22 | |
jnthn | on -> $res { $input_supply => sub ($val) { $res.more($_) for 1..10; } }; | ||
FROGGS | benabik: gist.github.com/FROGGS/8a8efadd9b0d1c69f2f3 | ||
tadzik | FROGGS: or strip it in JVm in the first place | ||
benabik | FROGGS++ | ||
tadzik | FROGGS: gist.github.com/tadzik/8510514 this is stupid, but makes File::Find tests pass :) | 20:23 | |
japhb | jnthn: Oooh, thanks! | ||
FROGGS | tadzik: I always having a bad feeling about that... what if one of the paths contain "../" or otehr weird stuff? our substr-"magic" just will make it worse | ||
jnthn | japhb: The on meta-combinator can actually be used to define map and grep too :) | ||
japhb: It's a bit overkill for them, though. | |||
japhb | Excellent to know I have that escape hatch, though. | ||
That was going to get ugly. | 20:24 | ||
jnthn | Yes, it is a quite powerful construct. | ||
20:24
araujo joined
|
|||
jnthn | I pondered things in that area for O(weeks) before I came up with it... | 20:24 | |
benabik | FROGGS: And that compiles a rakudo-moar successfully? I don't see a single -lmoar or libmoar.so reference in there. | 20:25 | |
tadzik | ok, File::Find and Shell::Command both work on Moar now, but JSON::Tiny dies with: Object conflict detected during deserialization. (Probable attempt to load two modules that cannot be loaded together). | ||
jnthn | tadzik: bah, that NYI... | 20:26 | |
tadzik | bah | ||
FROGGS | benabik: yes, it does | ||
benabik | >.< | ||
FROGGS | benabik: the perl6-m runner does invoke moar directly | ||
the moar binary* | 20:27 | ||
benabik | I think Linux's linker doesn't check that unreferenced symbols exist when you're compiling a shared library. | ||
Or somethin.g | |||
FROGGS | tadzik: that is the same error that breaks v5 :o) | ||
jnthn | benabik: It must be that, yeah... | ||
dalek | ast: f344578 | coke++ | integration/weird-errors.t: add test for RT #116268 |
20:28 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=116268 | ||
FROGGS | benabik: yeah, it does not care it seems: gcc -shared -fPIC -O1 -g3 -Wl,-rpath,/home/froggs/dev/rakudo/../nqp/install/lib -O1 -lm -lpthread -lrt -ldl -o dynext/libperl6_ops_moar.so dynext/perl6_ops.o dynext/container.o | 20:29 | |
benabik | So the question is... Do I just hack in a -lmoar in Rakudo's Configure when $^O eq 'darwin'? | 20:30 | |
Or should it be generated by moar somehow and then propagated through the config? | 20:31 | ||
jnthn | benabik: hack that works > broken build | ||
benabik: Feel free to hack it for now if you don't see an obvious better thing to do, and open a ticket. | 20:32 | ||
benabik: Passing some flag through for "what to link against" is probably a good thing, though. | |||
benabik | jnthn: It looks like @moarimplib@ is a similar hack for Win32 | ||
jnthn | benabik: Yeah, I think it is | 20:33 | |
benabik adds a -lmoar there for OS X and appears to get a build. | |||
20:34
grondilu left
|
|||
jnthn | \o/ | 20:34 | |
btyler | woo | 20:36 | |
dalek | kudo/nom: 29a51f0 | coke++ | t/spectest.data: Fix braino. |
20:41 | |
20:42
raiph joined
20:45
jnap joined
20:50
jnap left
|
|||
timotimo | tee hee, fix braino | 20:50 | |
that amuses me | |||
benabik | PR#238 + MoarVM master should fix OS X build. | 20:54 | |
eiro | is --backend=moar in rakudo-star, yet ? | 20:57 | |
benabik | Oh hey, I can probably bump MOAR_REVISION myself. | 20:58 | |
jnthn | eiro: No | ||
eiro: That'll take a bit more time. | |||
dalek | p: f0baba2 | benabik++ | tools/build/MOAR_REVISION: Bump MOAR_REVISION for OS X build fix |
20:59 | |
btyler | nice, benabik++ | 21:01 | |
benabik | Pull request updated with NQP_REVISION bump. Also removed a (hopefully) unneeded Windows tweak, which somebody should actually test. | ||
eiro | ohhh ... that's why my script doesn't work this the parameters from rakudobrew | 21:02 | |
thanks for reply | |||
'night all | |||
21:08
colomon left
|
|||
masak | 'night, eiro. | 21:11 | |
arnsholt | Looks like binding attributes in CStructs on JVM works, FSVO of works | 21:13 | |
Need to implement reading them as well to check that the right values get bound =) | |||
timotimo | heh :) | 21:14 | |
FROGGS | arnsholt++ | 21:16 | |
masak | arnsholt++ | 21:17 | |
jnthn | arnsholt__ | ||
uh :) | |||
arnsholt++ | |||
timotimo | __arnsholt__ does python now? :) | ||
masak guesses jnthn was just typing in the dark :P | 21:18 | ||
dalek | p/moar_hint_precalc: 9594cf8 | (Timo Paulssen)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: introduce nqp::hintfor on moarvm |
21:20 | |
timotimo | jnthn: this is lacking the bootstrap files update, but you can check out the code after updating from origin/master | ||
huh, wait, that's no tthe right commit | 21:23 | ||
dalek | p/moar_hint_precalc: 8a654d1 | (Timo Paulssen)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: use nqp::hintfor getattr/bindattr at compile time |
21:27 | |
timotimo | that's the one i meant | ||
21:29
colomon joined
21:37
molaf_ left,
beastd joined
21:38
diakopter left,
mtk left
21:40
thou joined
21:46
jnap joined
21:51
jnap left
22:00
diakopter joined,
kaare_ joined
22:03
raiph left
22:05
xenoterracide left
22:11
stevan_ joined,
raiph joined
|
|||
benabik | So amusing to run parallel make. My perl6-m SETTING compile seems to go start, mast, classfile, jar while my perl6-p is start, parse, syntaxcheck, ast, optimize, mast, mbc. | 22:17 | |
Java parse 200, Parrot 527, Moar 163. Win. | |||
22:18
xenoterracide joined
|
|||
jnthn | Whoa...JVM usually wins... | 22:20 | |
benabik | Either the OS X JVM isn't as fast, or maybe it just had less to fight with. I'm running parallel on a 2 core laptop with a not terribly fast drive. | 22:21 | |
22:29
raiph left
|
|||
benabik | Hm. m-install was missing a lot of DESTDIR. | 22:41 | |
22:42
rindolf left
22:47
jnap joined,
raiph joined
|
|||
japhb | r: my $a := Supply.new; my $b := Supply.new; on -> $res { $a => sub ($val) { $res.more($val) } }; $b.tap({$_.perl.say}); $a.more($_) for 1..10; | 22:49 | |
camelia | rakudo-moar 29a51f: OUTPUT«===SORRY!=== Error while compiling /tmp/F28HVellbwUndeclared name: Supply used at line 1Undeclared routine: on used at line 1» | ||
( no output ) | |||
..rakudo-parrot 29a51f: OUTPUT«===SORRY!=== Error while compiling /tmp/DiuJm4KFdRUndeclared name: Supply used at line 1Undeclared routine: on used at line 1» | |||
japhb | j: my $a := Supply.new; my $b := Supply.new; on -> $res { $a => sub ($val) { $res.more($val) } }; $b.tap({$_.perl.say}); $a.more($_) for 1..10; | ||
camelia | ( no output ) | ||
japhb | jnthn: What am I doing wrong here ^^ | ||
22:50
atta left
22:51
jnap left
|
|||
jnthn | How does $b ever get values? | 22:52 | |
j: my $a := Supply.new; my $b := on -> $res { $a => sub ($val) { $res.more($val) } }; $b.tap({$_.perl.say}); $a.more($_) for 1..10; | |||
camelia | rakudo-jvm 29a51f: OUTPUT«12345678910» | ||
jnthn | j: my $a := Supply.new; my $b := on -> $res { $a => sub ($val) { $res.more($val) xx 5 } }; $b.tap({$_.perl.say}); $a.more($_) for 1..10; | ||
camelia | rakudo-jvm 29a51f: OUTPUT«1111122222333334444455555666667777788888999991010101010» | ||
japhb smacks his forehead | 22:54 | ||
22:54
beastd left
|
|||
japhb | That's why a second pair of eyes makes all the difference | 22:55 | |
jnthn | japhb: To clarify on: it's actually an actor pattern like construct. It lets you specify things to do for each of a set of supplies that may push values at you, but encapsulates some synchronization to make sure you're only ever in one of the closures at once. | 22:56 | |
23:02
jeffreykegler joined
23:05
spider-mario left
|
|||
japhb | jnthn: Yeah, I recognized that from the docs, but there were enough places where on was the last part of a function (thus returning the result of the on), that I forgot I needed to assign it to something. ;-) | 23:07 | |
jnthn | ah, yes :) | 23:08 | |
23:14
Rotwang left
23:16
raiph left
23:19
dmol left
|
|||
japhb | jnthn: Can you tell if a Supply has been closed, as with Channel.closed? | 23:21 | |
23:22
pippo joined
|
|||
pippo | o/ perl6 | 23:22 | |
japhb | o/ piip | ||
er | |||
o/ pippo | |||
pippo | :-)) | 23:23 | |
m: my @a = 1..10; say @a[*-1] | |||
camelia | rakudo-moar 29a51f: OUTPUT«10» | ||
pippo | r: my @a = 1..10; say @a[*-1] | ||
dalek | p: 4fcbf08 | (Timo Paulssen)++ | src/vm/moar/stage0/ (11 files): update stage0 to get nqp::hintfor |
||
camelia | rakudo-parrot 29a51f, rakudo-jvm 29a51f, rakudo-moar 29a51f: OUTPUT«10» | ||
23:23
stevan_ left
|
|||
jnthn | japhb: There's not a good "untap" callback just yet... | 23:23 | |
japhb: You can only really do it by introspection and I don't know if it cascades properly... | 23:24 | ||
japhb | OK, darn | ||
pippo | jnthn++ for having fixed the gather/take problem! | 23:25 | |
23:25
bjz left
23:26
raiph joined
|
|||
jnthn | japhb: Yes, 'fraid you're pushing the limits of something I really need to do some more work on... | 23:26 | |
japhb | Well good, that's part of the point. :-) | ||
jnthn | I'll have to have another stint on concurrency things soon :) | 23:27 | |
timotimo | .o( like concurrency support on moarvm for example? :3 ) | 23:29 | |
japhb | \o/ | ||
japhb will be very happy to stop taking a ribbing about the startup time of his concurrent scripts | |||
jnthn | timotimo: I really want to have that in place by the March release of Rakudo. It's *possible* I'll make it by the Feb one. | 23:31 | |
japhb | Oh that would be very cool. | 23:32 | |
timotimo | wowza | ||
didn't expect that | |||
jnthn | I do need to actually dig into some $dayjob things this next week, though...nice as it has been to pretend I don't have one for a bunch of this month :) | ||
benabik | Nice to finally run perl6-m. 'say 1' takes -j 13s, -p 2s, and -m 0.8s. | ||
Moar++ | 23:33 | ||
japhb | jnthn: As a data point, I'm already regularly doing 16 concurrent tasks. Will probably need to start increasing my thread pools soon to prevent blocking. | ||
But async I/O would greatly reduce that, since most of those tasks are blocked on input from external processes. | 23:34 | ||
timotimo | hm, there's some async io already in place, maybe i can try to make more? | ||
raydiak | japhb: do you have some working examples I might have a peek at? I've been wandering around lost in p6 concurrency land for the past several days | ||
timotimo | what exactly are you missing? | ||
japhb | raydiak: Erm. I think I could help you with some stuff, but I dunno how much is safe to post right now. | 23:35 | |
When I get this Net::IRC::Bot code working well, that should be a decent example. | |||
23:36
kivutar left
|
|||
japhb | timotimo: Mostly I need to be able to pull data from multiple handles/sockets, handing off to further processing each time one of them finishes reading all data and closes. | 23:37 | |
timotimo | ah, yeah | 23:38 | |
dalek | p: ec396db | (Tobias Leich)++ | tools/build/MOAR_REVISION: bump moar rev to get unicode fixes |
||
japhb | (For my slow-IO program, that is. For Net::IRC::Bot, it would be nice to just not be using so many tasks waiting on I/O, as I set it up to respond slowly to multiple requests at once by spawning a pile of tasks.) | 23:39 | |
timotimo | let me have a look at java's nio stuff | ||
dalek | kudo/nom: 0bdc766 | (Tobias Leich)++ | tools/build/NQP_REVISION: bump nqp/moar rev to get unicode fixes |
||
raydiak | japhb: no worries, was just looking for something to study other than S17 | ||
japhb | Read jnthn++'s latest concurrency slide deck, too. | 23:41 | |
raydiak | link? | ||
japhb | And the source is pretty key for understanding how things work. | ||
jnthn | At some point, I should also try to fill out the docs.perl6.org material on concurrency stuff. | ||
japhb | raydiak: jnthn.net/papers/2013-npw-conc.pdf is the most recent, I believe | 23:42 | |
jnthn | yes, that's the recentest. :) | ||
japhb | ++jnthn for that. But one of us might beat you to it if you're as overloaded as it seems. | ||
jnthn | My $dayjob work is going to involve teaching parallel/concurrent/async programming a bunch this year, it seems. | 23:43 | |
japhb | \o/ | ||
jnthn | japhb: Well, I'm always overlaoded and happy to be beaten to anything. | ||
japhb | I bet! | ||
jnthn | japhb: At some point it'll probably be easier to write docs than field quetions, though ;) | ||
23:43
btyler left
|
|||
jnthn | Though, if there are enough answerers then... :) | 23:43 | |
japhb | True ... | ||
japhb is working on that .... | |||
raydiak | thanks for the pointers...have bookmarked the slides | 23:44 | |
pippo | night #perl6! | ||
23:44
pippo left
|
|||
raydiak | and I will start reading the source more...not used it being something that I can reasonably easily decypher, so it hadn't even occured to me | 23:45 | |
jnthn | japhb: It's worth grabbing today's JVM updates if you didn't already, btw. Anything that does gather/take will be faster. | 23:46 | |
japhb | raydiak: It's actually pretty easy to read, Ithink | ||
raydiak | japhb: it has to be, compared to p5 | 23:47 | |
japhb | jnthn: Yeah, I will. I was waiting for you to go to sleep (and thus not be doing more optimizing for the day) before starting the big recompile run. ;-) | ||
jnthn | Oh, I'm done for the day, I think :) | ||
Got quite a lot done these last few days... :) | |||
timotimo | japhb: oh, you need to work with sockets, eh? | ||
hm, that's probably a bit tougher | |||
23:47
jnap joined
|
|||
japhb | timotimo: Sockets and pipes are the big ones. Yes, I have some network filesystems to deal with, so those could be slowish too, I suppose. | 23:49 | |
timotimo doesn't know where and how to hook the asyncness into the socket stuff | |||
for network filesystems, you can already IO::Async::File.slurp and .lines | |||
jnthn | Well, it needs an API design as well as an implementation, I guess. Though doing something basic to start off with may be a good start... | ||
timotimo is not sure how that interacts with thread pools, though | |||
japhb | timotimo: Yeah, I forgot that one was actually available (haven't happen to have needed to deal with the NFS stuff async yet, though.) | 23:50 | |
timotimo | right. | ||
jnthn: how much sense would an async spurt make? | |||
jnthn | timotimo: Quite a bit. | ||
timotimo | for the existing IO::Async::File | 23:51 | |
23:51
thou left
|
|||
timotimo | i could try to implement that to familiarize myself with the stuff | 23:51 | |
jnthn | timotimo: Returns a Promise that is kept or broken when the thing is done. | ||
timotimo | that was my thought as well | 23:52 | |
japhb | Gah, it's errors like this that make me go >.< : Type check failed in assignment to '$!buffer'; expected 'Buf[uint8]' but got 'Str' | ||
23:52
jnap left
|
|||
japhb | I'll have to trace all the code to figure out if I mixed up encoded and decoded data, or Rakudo did. | 23:52 | |
timotimo | inside the jvm-level code, all i have to do is implement a method "spurtasync" that takes 2 closures, one for success, one for failure | ||
and those would then keep or break the promise | |||
jnthn | timotimo: Sounds right | ||
japhb: Well, it's rather reluctant to auto-coerce... | 23:53 | ||
r: say "abc".encode('utf-8').Str | |||
camelia | rakudo-parrot 29a51f, rakudo-jvm 29a51f, rakudo-moar 29a51f: OUTPUT«abc» | ||
japhb | jnthn: Oh, I wasn't complaining the error message was *wrong*, just that it will take time to find the culprit. | 23:54 | |
jnthn | I wonder if we should allow that... | ||
Or require .decode | |||
Thing is that .encode('utf-8') returns something that knows its encoding. | |||
So it can safely .Str | |||
r: Buf.new(65, 66, 67).Str | |||
camelia | rakudo-moar 29a51f: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it in method Str at src/gen/m-CORE.setting:5102 in method Str at src/gen/m-CORE.setting:1019 in block at /tmp/6VeG4xuBjH:1» | 23:55 | |
..rakudo-jvm 29a51f: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it in method Str at gen/jvm/CORE.setting:5102 in method Str at gen/jvm/CORE.setting:1019 in block at /tmp/R2G8HMaNtF:1» | |||
..rakudo-parrot 29a51f: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it in method Str at gen/parrot/CORE.setting:5106 in method Str at gen/parrot/CORE.setting:1022 in block at /tmp/X8GOGyy77p:1» | |||
jnthn | That's what happens typically | ||
japhb | nodnod | ||
jnthn | OK, time for some rest. | ||
'night, all | 23:56 | ||
FROGGS | gnight! | ||
timotimo | 'night jnthn | ||
japhb | o/ jnthn | ||
timotimo | was about to ask if i could just pass a String to the method or if i'd have to manually unbox | 23:57 | |
i probably do | |||
japhb | .oO( Good night, jnthn. Good work. Sleep well. I'll most likely kill you in the morning. ) |