»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:02
fgomez left
00:05
aloha left
00:06
aloha joined
00:07
cognominal joined
|
|||
dalek | rl6-roast-data: 3301233 | coke++ | / (2 files): today (automated commit) |
00:07 | |
rl6-roast-data: bbb17a8 | coke++ | / (2 files): today (automated commit) |
|||
00:41
pecastro left
00:42
sixpairsoffeet joined
00:44
pecastro joined
|
|||
lichtkind | good night | 00:44 | |
diakopter | o/ | ||
00:48
sixpairsoffeet left,
pecastro left
00:50
pecastro joined
|
|||
lichtkind | good night | 01:00 | |
:) | |||
01:00
lichtkind left
01:09
fgomez joined
01:10
anuby joined
01:17
cognominal_ joined
01:19
cognominal left
01:20
hypolin joined
01:22
japhb_ joined
|
|||
japhb_ | A performance weirdness in Rakudo: 'for ^100 X ^100 -> $i, $j { $i + $j }' takes >56x as long as 'for ^100 -> $i { for ^100 -> $j { $i + $j } }' (In niecza, the difference is around 1.45x.) | 01:25 | |
jnthn: ^^ | |||
diakopter | japhb_: what about for ^10000 in the outside and nothing on the inside | 01:26 | |
wait, what's X again | 01:27 | ||
dalek | rl6-bench: 99da16f | (Geoffrey Broadwell)++ | bench: Pull after fetching; for now, this DWIM, but will probably need to be readdressed later. Also, simply splitting into loops is not trouncing Rakudo bug #115390. :-( |
||
rl6-bench: 846839e | (Geoffrey Broadwell)++ | microbenchmarks.pl: Add more microbenchmarks, this time for multiple ways to visit all indices for a 2D array |
|||
01:28
pecastro left,
pecastro joined
|
|||
japhb | diakopter, it's not so much X again as not looping over multiple indices. | 01:28 | |
Though if you're curious about just hitting the loop body that many times ... | 01:29 | ||
diakopter | what's X again | ||
permute? | |||
japhb_ | Oh, sorry, I thought you said "that's X again" :-) | 01:30 | |
cartesian (AKA cross) product | |||
time perl6 -e 'for ^100 X ^100 -> $i, $j { }' ==> ~20s | 01:31 | ||
time perl6 -e 'for ^10000 -> $i { }' ==> ~1s | |||
diakopter | _._. | ||
r: my @a = ^100; for (@a X @a) -> $i, $j { }; say 'alive' | 01:36 | ||
01:36
dayangkun joined
|
|||
p6eval | rakudo 53daef: OUTPUT«alive» | 01:36 | |
diakopter | japhb_: what's that on your machine | ||
japhb_ | ~14s | 01:37 | |
diakopter | hm | 01:38 | |
01:41
pecastro left
|
|||
diakopter | the compiler could detect the constant-ness of the sequence and inline a loop | 01:41 | |
japhb | The thing is, it really doesn't seem like X should be *that* much slower than just a double loop. | 01:43 | |
japhb_ | (And in niecza, it's really not.) | 01:44 | |
01:50
dayangkun left
|
|||
japhb | diakopter, also, circling back on the concat v. push/join question: push/join is much faster in niecza, and much slower in Rakudo. | 01:52 | |
diakopter | :S | 01:53 | |
japhb | Yeah, don't I know it. | ||
02:18
hypolin left
02:19
FROGGS__ joined
02:22
hypolin joined,
colomon left,
FROGGS_ left,
colomon joined
02:24
colomon_ joined,
colomon left,
colomon_ is now known as colomon
|
|||
sorear | #116026 is kind of sad | 02:26 | |
diakopter | the say line? | 02:27 | |
or everything? :) | |||
sorear | no, the "I don't know about Str.flip" part and the "I'm patching one implementation when I really want to patch the spec" part | ||
diakopter sees subname(|) for the first time | 02:30 | ||
02:42
tokuhiro_ left
02:50
hash_table joined,
whiteknight left
|
|||
colomon | sorear: aye | 02:56 | |
03:04
noggle_ joined
03:06
noggle left
03:09
hash_table left
03:11
am0c joined,
wamba left
03:36
kurahaupo left
03:42
sftp left
04:03
noggle_ left
04:11
noggle joined
04:13
fgomez left
04:14
Chillance joined
04:40
Patterner left
|
|||
japhb | How do you set the maximum recursion depth in NQP (and Rakudo and Niecza, for that matter), and what are the default values? | 04:41 | |
04:42
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
japhb | NQP fails man-or-boy-test 10 (and passes 9) because of a low maximum recursion depth | 04:42 | |
sorear | niecza does not have a maximum recursion depth; I keep meaning to fix this | 04:44 | |
dalek | rl6-bench: 7cf00e5 | (Geoffrey Broadwell)++ | timeall: Minor whitespace tweak to ease visual comparison |
||
rl6-bench: ee77445 | (Geoffrey Broadwell)++ | / (4 files): Add rc-man-or-boy-test |
|||
japhb | sorear, Ah, interesting | ||
sorear | japhb: infinite recursion on niecza will allocate activation frames continuously until all ram and swap is used up | 04:45 | |
a "deep recursion" error would be much more user-friendly | 04:46 | ||
japhb | Sure, of course | ||
sorear | I think you can do pir::getinterp__p().some_method(100000) | 04:47 | |
but I forget the details | |||
japhb | FWIW, man-or-boy 9, ignoring startup: nqp: .112s/1.000x rakudo: .267s/2.380x niecza: 1.055s/9.411x | ||
(Using the version of the rc-man-or-boy-test files that I just committed) | |||
japhb wanders off for a while ... will backlog | 04:48 | ||
05:30
telex left
05:35
telex joined
05:44
xinming_ joined
05:47
xinming left
06:03
Chillance left
06:09
SamuraiJack joined
06:10
fgomez joined
06:20
kurahaupo joined
06:21
Kharec joined
06:22
glass joined
06:49
birdwindupbird joined
06:52
quester joined
06:56
wamba joined
07:16
ggoebel_ left
07:29
kaleem joined
07:33
glass left
07:36
glass joined
07:54
glass left,
glass joined,
glass left
|
|||
FROGGS__ | morning | 08:03 | |
08:03
FROGGS__ is now known as FROGGS
|
|||
dalek | ast: ac01495 | moritz++ | integration/99problems- (3 files): correct some tests in light of lazy "for" |
08:14 | |
08:14
rindolf joined
|
|||
rindolf | Hi all. | 08:16 | |
moritz | hi rindolf. | ||
FROGGS | hi rindolf | ||
rindolf | moritz, FROGGS : what's up? | ||
FROGGS | well, coffee and a bit $work, thats all | 08:17 | |
moritz | work, and sink context | 08:20 | |
jnthn | morning, #perl6 | 08:21 | |
FROGGS | morning jnthn | ||
jnthn | Snow. We haz it. :) | ||
FROGGS | we have it for days... already built a snowman with my kids | 08:22 | |
moritz | yesterday we went sledging with $daughter for the first time | ||
jnthn | :D | ||
FROGGS | 'twas a shame that we had no carrot :/ | 08:23 | |
jnthn | Sledging...that was a fun thing to do as a kid :) | ||
moritz | Ronja quite liked it :-) | 08:24 | |
jnthn | hm, that "make uniq faster" patch also makes it unlazy... | 08:25 | |
FROGGS | well, it's still fun | ||
moritz | jnthn: aye | 08:26 | |
jnthn | Though I suspect it can be made faster while still retainign laziness | ||
moritz | jnthn: though maybe using grep instead of gather/take would both speed it up and keep it lazy | ||
jnthn | also...it should be using an object hash | ||
tadzik | 0925 jnthn | hm, that "make uniq faster" patch also makes it unlazy... | ||
0925 FROGGS | well, it's still fun | |||
heh | |||
jnthn | :D | ||
tadzik | good morning, #perl6 :) | ||
moritz | \o tadzik | ||
jnthn | hi tadzik | ||
tadzik | Finally, Monday! | ||
-- said no one ever | |||
jnthn | Worse, at this time of year it's dark outside when you're meant to get up | 08:27 | |
tadzik | yeah, the worst part of the year, when you only see the sun through the office window | 08:28 | |
FROGGS | morning tadzik | ||
tadzik | waking up, dark. Getting back home, dark | ||
hi FROGGS | |||
FROGGS | ya, dark-- | 08:29 | |
08:29
pecastro joined
|
|||
sorear | morning folks | 08:29 | |
FROGGS | morning sorear | ||
wow, getting full here | |||
sorear | is somebody going to respond to #116026? it's too depressing for me | 08:30 | |
FROGGS: full in what sense? | |||
FROGGS gets some more chairs | |||
many ppl | |||
sorear | #perl6? | ||
jnthn | sorear: Hey, don't flip out... :P | ||
FROGGS | many talking ppl to be more specific | ||
jnthn | sorear: I will this evening if nobody beats me to it. | ||
moritz | sorear: I've already replied, and rejected the ticket d | 08:31 | |
jnthn | moritz++ | ||
moritz | nr: say try { die "foo" } | ||
p6eval | niecza v24-5-g599cbcb: OUTPUT«Any()» | ||
..rakudo 53daef: OUTPUT«foo in block at /tmp/YOjTt0XJQX:1» | |||
rindolf | jnthn: morning. | ||
moritz | jnthn: how do I change try to return Nil (or Any) instead of the exception on failure? | ||
sorear | moritz: your reply never reached p6c | 08:32 | |
moritz | sorear: that's unfortunate | ||
7 remaining failing test files in qast-sink-1 | 08:33 | ||
jnthn | moritz: Something in statement_thingy:sym<try> | 08:34 | |
I think in the CATCH part of the handle node in there | 08:35 | ||
08:37
cognominal_ left,
am0c left
|
|||
moritz | I'll try | 08:37 | |
hoelzro | hey Perl 6 folk | 08:38 | |
FROGGS | hi hoelzro | 08:39 | |
hoelzro | I was reading the compiler overview in the the rakudo tree, and I found a reference to use.perl.org/~JonathanWorthington/journal/39772 | ||
afaik, use.perl.org is no longer up, yes? | |||
because a) the URL should probably be moved to another copy of that article, and b) I'd really like to read that article =) | 08:41 | ||
moritz | iirc there's a way to mnagle the URL to still work, and recover the article that way | 08:42 | |
but I can't remember how :( | |||
hoelzro | curses | 08:43 | |
there really should be a no-brainer mirror to that content, though | |||
cedrvint | hoelzro: use.perl.org/use.perl.org/_Jonathan...39772.html | ||
hoelzro | cedrvint: thanks! | ||
arnsholt | Greetings from Mumbai! o/ | 08:44 | |
jnthn | o/ arnsholt | 08:46 | |
08:46
pecastro left
|
|||
jnthn | Bet you don't have snow there :P | 08:46 | |
arnsholt | Thankfully! | 08:47 | |
08:47
cognominal_ joined
08:52
sisar joined
|
|||
moritz | jnthn: it's not that easy, it seems (returning Nil from try) | 08:54 | |
08:57
noggle left
09:01
[particle]1 left
09:02
[particle] joined
09:12
noggle joined
|
|||
moritz | oh, I think it is, I was just too dumb :-) | 09:15 | |
appending a value to a Past::Stmts doesn't change the return value if :resultchild(0) is present :-) | 09:16 | ||
09:17
kaleem left
09:18
quester left
09:30
fhelmberger joined
|
|||
dalek | kudo/qast-origin-1: f5a8f2b | moritz++ | src/core/traits.pm: fix "handles" this actually points to a bug in sinking some statements which needs to be tracked down separately |
09:31 | |
kudo/qast-origin-1: 9831e45 | moritz++ | src/Perl6/Actions.pm: return Nil from a try when an error was thrown |
|||
jnthn | That must get us down to very few failures? | 09:33 | |
dalek | ast: 42d1a93 | moritz++ | S29-context/die.t: [die.t] do not return a lazy list that dies when we really want to die right away |
09:34 | |
09:34
wamba left
|
|||
moritz | jnthn: curiously enough the return value from try wasn't the problem | 09:34 | |
(sunk exceptions generally aren't, just sunk Failures) | |||
the code was more like | |||
is try { map { die }, 1, 2, 3}, .... | 09:35 | ||
jnthn | ah | ||
moritz | so the lazy list passed through the try | ||
and then died outside of it | |||
this will surprise people. | |||
jnthn | yeah | ||
moritz runs another spectest | |||
jnthn | A few things about sink context will. | ||
moritz | down to 6 failing test files | 09:41 | |
hoelzro | total? | 09:42 | |
moritz | what total? | ||
seems I haven't quite fixed delegation after all :( | |||
hoelzro | 6 failing tests in total? | ||
moritz | 6 failing test files in total | 09:43 | |
hoelzro | is that just in the Rakudo tree, or roast too? | ||
moritz | just roast | ||
I haven't checked the local tests yet | |||
I always forget about those :-) | |||
hoelzro | ;) | ||
moritz: is that with fudging off? | |||
moritz | hoelzro: no | 09:44 | |
hoelzro | ah =( | ||
I was about to freak out at how close you were =) | |||
felher | jnthn++ # I didn't know that you can put one heredoc after another, and even call different methods on them. :) | 09:45 | |
jnthn | :) | 09:47 | |
moritz | hoelzro: this is about a branch reaching the same readiness as our main branch | 09:48 | |
jnthn | moritz: It would be a near miracle to pass almost all of spectest with failing make test ;) | ||
hoelzro | moritz: \o/ which branch? | ||
macros? | |||
moritz | hoelzro: qast-sink-q | ||
erm | |||
qast-sink-1 | |||
hoelzro | ah ha | ||
09:51
noggle left
09:57
kurahaupo left,
noggle joined
10:02
dakkar joined
10:06
hypolin left
10:07
Kharec left
10:14
wamba joined
10:17
Kharec joined
10:21
SmokeMachine joined,
SmokeMachine left,
SmokeMachine joined
10:26
baest_ joined,
SmokeMachine left,
immortal joined,
immortal left,
immortal joined
|
|||
moritz | r: say do given 42 { when Int { 23 } } | 10:27 | |
p6eval | rakudo 53daef: OUTPUT«23» | ||
10:27
wooden_ joined,
wooden_ left,
wooden_ joined
10:29
mikemol_ joined,
breinbaa1 joined,
huf_ joined,
cxreg2 joined,
PerlPilot joined
|
|||
dalek | ast: 4677a6f | moritz++ | S04-phasers/next.t: make S04-phasers/next.t robuster wrt laziness |
10:32 | |
10:33
Some-body_ joined
10:34
wamba left,
countley left,
erkan left,
wooden left,
mikemol left,
cxreg left,
Some-body_ is now known as DarthGandalf
10:35
[particle] left
10:36
[particle] joined
10:40
BinGOs joined
10:42
wamba joined
10:48
sisar left
10:49
BinGOs left,
BinGOs joined
|
|||
dalek | kudo/qast-origin-1: c02d13a | moritz++ | src/core/ (2 files): fix more built-ins to deal with sink context |
10:50 | |
moritz | jnthn: a tricky one remains: the CATCH block isn't evaluated in sink context | ||
oh, just tricky because I'm loooking at the wrong piece of code | 10:51 | ||
10:51
baest_ is now known as baest
|
|||
moritz tries another approach | 10:51 | ||
10:52
xenoterracide left
10:57
SmokeMachine joined
|
|||
moritz | I guess set_block_handler needs a :sink option or so | 10:57 | |
jnthn | When do we not want it to sink? | 10:58 | |
10:58
SmokeMachine left
|
|||
moritz | good question | 10:59 | |
are there any handlers that modify the return value? | |||
moritz tries perl6_invoke_catchhandler__vPP, starts a spectest run and departs for lunch& | 11:01 | ||
11:01
BinGOs_ joined
11:04
BinGOs left,
BinGOs_ is now known as BinGOs,
SmokeMachine joined
11:05
BinGOs left,
BinGOs joined,
Su-Shee_ joined
|
|||
grondilu | rn: given "foo" { s/foo/bar; .say } # testing if 'given' affects $_ as rw | 11:08 | |
p6eval | rakudo 53daef: OUTPUT«===SORRY!===Malformed replacement part; couldn't find final $stopat /tmp/CttKUcAxSs:1------> } # testing if 'given' affects $_ as rw⏏<EOL>» | ||
..niecza v24-5-g599cbcb: OUTPUT«===SORRY!===Malformed replacement part; couldn't find final / at /tmp/0fOC3R2dOx line 1:------> given "foo" { s/foo/⏏bar; .say } # testing if 'given' affectParse failed» | |||
grondilu | rn: given "foo" { s/foo/bar/; .say } # testing if 'given' affects $_ as rw | ||
p6eval | rakudo 53daef: OUTPUT«Cannot assign to a non-container in sub infix:<=> at src/gen/CORE.setting:11971 in block at /tmp/TT1mgWqMgy:1» | ||
..niecza v24-5-g599cbcb: OUTPUT«Unhandled exception: Writing to readonly scalar at /home/p6eval/niecza/lib/CORE.setting line 593 (Cool.subst @ 88)  at /tmp/ar_B1uaR6W line 1 (ANON @ 4)  at /tmp/ar_B1uaR6W line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4208 (AN… | |||
11:09
Su-Shee left
|
|||
grondilu | do I have to write '$_ = "foo"; ..." if I want to modify $_ ? | 11:10 | |
Ulti | r: "foo"; say $_; | 11:13 | |
p6eval | rakudo 53daef: OUTPUT«Any()» | ||
Ulti | :/ | ||
11:16
anuby left,
amkrankruleuen joined
|
|||
moritz | grondilu: yes | 11:36 | |
or anything else that creates a variable | |||
r: givem my $ = 'abc' { s/a/A/; .say } | |||
p6eval | rakudo 53daef: OUTPUT«===SORRY!===Confusedat /tmp/bShMMK8KWC:1------> givem my $ = 'abc' ⏏{ s/a/A/; .say }» | ||
moritz | r: givem (my $ = 'abc') { s/a/A/; .say } | ||
p6eval | rakudo 53daef: OUTPUT«===SORRY!===Confusedat /tmp/Ll53FOy9pf:1------> givem (my $ = 'abc') ⏏{ s/a/A/; .say }» | ||
moritz | r: given my $ = 'abc' { s/a/A/; .say } | 11:37 | |
p6eval | rakudo 53daef: OUTPUT«Abc» | ||
moritz | helps if I spell 'given' correctly :-) | ||
11:41
tokuhiro_ joined
11:42
noggle left
11:45
tokuhiro_ left
11:49
FROGGS left,
GlitchMr joined
11:53
amkrankr1leuen joined
11:54
sftp joined
11:56
amkrankruleuen left
11:59
amkrankr1leuen is now known as amkrankruleuen,
amkrankruleuen left,
amkrankruleuen joined
12:08
amkrankruleuen left
|
|||
jnthn | r: given "foo" -> $_ is copy { s/o/O/; .say } | 12:08 | |
p6eval | rakudo 53daef: OUTPUT«fOo» | ||
grondilu | 'given my $ = Whatever {...}' will do, I guess | 12:09 | |
12:15
cognominal_ left
|
|||
dalek | kudo/qast-sink-1: f5a8f2b | moritz++ | src/core/traits.pm: fix "handles" this actually points to a bug in sinking some statements which needs to be tracked down separately |
12:15 | |
kudo/qast-sink-1: 9831e45 | moritz++ | src/Perl6/Actions.pm: return Nil from a try when an error was thrown |
|||
kudo/qast-sink-1: c02d13a | moritz++ | src/core/ (2 files): fix more built-ins to deal with sink context |
|||
moritz | I accidentally pushed to the wrong branch before; sorry for duplicate commits | 12:16 | |
12:22
cognominal_ joined
|
|||
timotimo forces emself to do more perl6 | 12:39 | ||
12:41
cognominal_ left
|
|||
timotimo | currently trying to make a histogram of characters in a string | 12:43 | |
classify seemed the way to go, but the result was kind of ugly | |||
moritz | how so? | 12:44 | |
12:45
cognominal joined
|
|||
moritz | r: say 'this is a longish string'.comb.classify({; $_ => 1 } ).pairs.map({; .key => .value.elems }).perl | 12:45 | |
p6eval | rakudo 53daef: OUTPUT«("t\t1" => 2, "h\t1" => 2, "i\t1" => 4, "s\t1" => 4, " \t1" => 4, "a\t1" => 1, "l\t1" => 1, "o\t1" => 1, "n\t1" => 2, "g\t1" => 2, "r\t1" => 1).list» | ||
timotimo | that's a bit prettier than mine: | ||
"8438947349873498574398".comb.classify({$_}).map: { $^a.key => +$^a.value } | |||
r: "8438947349873498574398".comb.classify({$_}).map: { $^a.key => +$^a.value } | |||
p6eval | rakudo 53daef: ( no output ) | ||
timotimo | r: "8438947349873498574398".comb.classify({$_}).map: { $^a.key => +$^a.value }.perl.say | ||
p6eval | rakudo 53daef: OUTPUT«Block.new()» | ||
timotimo | oh, whoops :) | 12:46 | |
r: "8438947349873498574398".comb.classify({$_}).map({ $^a.key => +$^a.value }).perl.say | |||
p6eval | rakudo 53daef: OUTPUT«("8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1).list» | ||
moritz | actually yours works :-) | ||
though of course you can just use a hash and ++ each element per character | |||
timotimo | what's the ; for in your map block? forces it to be a block rather than being evaluated on the spot? | ||
i tried that as a second option | 12:47 | ||
moritz | right | ||
timotimo | r: "8438947349873498574398".comb.map({$_ => ++(state %a){$_}}).perl | ||
p6eval | rakudo 53daef: ( no output ) | ||
timotimo | but didn't quite know how to get the %a out of there afterwards | ||
r: "8438947349873498574398".comb.map({$_ => ++(state %a){$_}}).perl.say | |||
p6eval | rakudo 53daef: OUTPUT«("8" => 1, "4" => 1, "3" => 1, "8" => 2, "9" => 1, "4" => 2, "7" => 1, "3" => 2, "4" => 3, "9" => 2, "8" => 3, "7" => 2, "3" => 3, "4" => 4, "9" => 3, "8" => 4, "5" => 1, "7" => 3, "4" => 5, "3" => 4, "9" => 4, "8" => 5).list» | ||
timotimo | currently it's like a triangle reduce | ||
except in a triangle reduce i could get out the last result and that would be the one i would want - in this case if i try that i get one pair rather than a complete hash | 12:48 | ||
moritz | r: my %count; ++%count{$_} for '8438947349873498574398'.comb; say %count.perl | 12:49 | |
p6eval | rakudo 53daef: OUTPUT«("8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1).hash» | ||
timotimo | that's not a true one-liner :D | ||
moritz | good old imperative, easy-to-get-right code | ||
timotimo | i've got a very silly idea that i'm going to try involving horrible abuse of hyperops | ||
moritz | r: say (do {my %count; ++%count{$_} for '8438947349873498574398'.comb; }).perl | ||
p6eval | rakudo 53daef: OUTPUT«(1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 4, 3, 4, 1, 3, 5, 4, 4, 5).list» | ||
moritz | r: say (do {my %count; ++%count{$_} for '8438947349873498574398'.comb; }; %count).perl | 12:50 | |
p6eval | rakudo 53daef: OUTPUT«===SORRY!===Variable %count is not declaredat /tmp/7BKW7Xa2AT:1------> '8438947349873498574398'.comb; }; %count⏏).perl» | ||
moritz | r: say (do {my %count; ++%count{$_} for '8438947349873498574398'.comb; %count}).perl | ||
p6eval | rakudo 53daef: OUTPUT«("8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1).hash» | ||
moritz | there you go. | ||
timotimo | so "do" is actually short for "do_it_in_one_statement"? | ||
moritz | "do" means "turn this statement or expression into an expression, and call it if it's a block" | 12:52 | |
timotimo | how come this works: | 12:57 | |
r: ("8438947349873498574398".comb »Z=>» (1,)).perl.say | |||
p6eval | rakudo 53daef: OUTPUT«("8" => 1, "4" => 1, "3" => 1, "8" => 1, "9" => 1, "4" => 1, "7" => 1, "3" => 1, "4" => 1, "9" => 1, "8" => 1, "7" => 1, "3" => 1, "4" => 1, "9" => 1, "8" => 1, "5" => 1, "7" => 1, "4" => 1, "3" => 1, "9" => 1, "8" => 1).list» | ||
timotimo | but this doesn't: | ||
r: ("8438947349873498574398".comb »Z=>» ((state %h),)).perl | 12:58 | ||
p6eval | rakudo 53daef: OUTPUT«(timeout)» | ||
moritz | I wouldn't call the first one "working" | ||
timotimo | 1 is just a dummy value in this case | 12:59 | |
i want to try to have the same hash as the value for each of the keys in the resulting list | |||
moritz | anyway, I don't even see what the second one is supposed to do | ||
timotimo | so ("8" => %h, "4" => %h, ...).list | ||
moritz | but you don't ever change %h | ||
timotimo | not yet :) | ||
moritz | ah | ||
r: say ("8438947349873498574398".comb X=> ((state %h),)).perl | 13:00 | ||
p6eval | rakudo 53daef: OUTPUT«().list» | ||
moritz | r: say ("8438947349873498574398".comb X=> (state %h).item).perl | ||
p6eval | rakudo 53daef: OUTPUT«().list» | ||
timotimo | is it because %h is empty and the X op tries to unpack it? | ||
moritz | I think so, yes | ||
r: say ("8438947349873498574398".comb X=> {}).perl | |||
p6eval | rakudo 53daef: OUTPUT«().list» | ||
moritz | r: say ("8438947349873498574398".comb X=> Any).perl | ||
p6eval | rakudo 53daef: OUTPUT«("8" => Any, "4" => Any, "3" => Any, "8" => Any, "9" => Any, "4" => Any, "7" => Any, "3" => Any, "4" => Any, "9" => Any, "8" => Any, "7" => Any, "3" => Any, "4" => Any, "9" => Any, "8" => Any, "5" => Any, "7" => Any, "4" => Any, "3" => Any, "9" => Any, "8" => Any).… | ||
moritz | it probably should respect its itemness, but doesn't | 13:01 | |
timotimo | mhm | ||
moritz | r: say ("8438947349873498574398".comb X=> []).perl | ||
p6eval | rakudo 53daef: OUTPUT«().list» | ||
moritz | same problem here | ||
timotimo | i think i've got a workaround | ||
now to figure out which way i want the dwim to point | 13:02 | ||
oh, X=> solves it nicer than Z=> + dwim | |||
r: ("8438947349873498574398".comb X=> ((state %h,).tree)).perl.say | |||
p6eval | rakudo 53daef: OUTPUT«("8" => {}, "4" => {}, "3" => {}, "8" => {}, "9" => {}, "4" => {}, "7" => {}, "3" => {}, "4" => {}, "9" => {}, "8" => {}, "7" => {}, "3" => {}, "4" => {}, "9" => {}, "8" => {}, "5" => {}, "7" => {}, "4" => {}, "3" => {}, "9" => {}, "8" => {}).list» | ||
timotimo | r: ("8438947349873498574398".comb X=> ((state %h,).tree)).map({.value{.key}++; .value}).perl.say # i think this gives me a list of the hash multiple times | 13:04 | |
p6eval | rakudo 53daef: OUTPUT«({"8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1}, {"8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1}, {"8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1}, {"8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1}, {"8" => 5, "4" =… | ||
timotimo | r: ("8438947349873498574398".comb X=> ((state %h,).tree)).map({.value{.key}++; .value})[*-1] | 13:05 | |
p6eval | rakudo 53daef: ( no output ) | ||
timotimo | r: ("8438947349873498574398".comb X=> ((state %h,).tree)).map({.value{.key}++; .value})[*-1].perl.say | ||
p6eval | rakudo 53daef: OUTPUT«{"8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1}» | ||
timotimo | what i don't understand yet is this: | ||
r: ("8438947349873498574398".comb X=> ((state %h,).tree)).map({.value{.key}++; .value})[0].perl.say | |||
p6eval | rakudo 53daef: OUTPUT«{"8" => 1}» | ||
moritz | r: my %a = a => 1, b => 2; say %a[0] | 13:06 | |
p6eval | rakudo 53daef: OUTPUT«("a" => 1, "b" => 2).hash» | ||
moritz | r: my %a = a => 1, b => 2; say %a[1] | ||
p6eval | rakudo 53daef: OUTPUT«Index out of range. Is: 1, should be in 0..0 in method gist at src/gen/CORE.setting:10189 in sub say at src/gen/CORE.setting:7474 in block at /tmp/pkT761oYpB:1» | ||
moritz | r: my %a = a => 1, b => 2; say %a.list[0] | ||
p6eval | rakudo 53daef: OUTPUT«"a" => 1» | ||
moritz | I guess something in there flattens | ||
timotimo | that could be, yes | 13:07 | |
13:11
[particle] left
13:12
[particle] joined
|
|||
timotimo | r: ("8438947349873498574398".comb X=> ((state %h,).tree)).map({.value{.key}++; .value}).hash[0].perl.say | 13:13 | |
p6eval | rakudo 53daef: OUTPUT«("8" => 5, "4" => 5, "3" => 4, "9" => 4, "7" => 3, "5" => 1).hash» | ||
timotimo | that doesn't make sense to me, either. | ||
the community of perl6 could initiate the Unintentional Code Obfuscation Contest 2013 :D | 13:16 | ||
(not saying this task couldn't be done in a very transparent, readable and obvious way, because i'm sure it can. with ease, too) | |||
13:16
SamuraiJack_ joined
13:17
SamuraiJack left
|
|||
timotimo | moritz: so, was the thing where Z=> or X=> wouldn't respect the itemness even if .item was called, a rakudobug? i'll check what niecza has to say. | 13:18 | |
n: say ("8438947349873498574398".comb X=> (state %h).item).perl | |||
p6eval | niecza v24-5-g599cbcb: OUTPUT«Potential difficulties: %h is declared but not used at /tmp/pS34JeHBKf line 1:------> 8438947349873498574398".comb X=> (state ⏏%h).item).perl("8" => {}, "4" => {}, "3" => {}, "8" => {}, "9" => {}, "4" => {}, "7" => {}, "3" => {}, "4"… | ||
timotimo | there we have our answer, i guess! | 13:19 | |
rn: say ("8438947349873498574398".comb X=> (state %h,)).perl | |||
p6eval | rakudo 53daef: OUTPUT«().list» | ||
..niecza v24-5-g599cbcb: OUTPUT«Potential difficulties: %h is declared but not used at /tmp/6PcVs5UQVr line 1:------> 8438947349873498574398".comb X=> (state ⏏%h,)).perl().list» | |||
moritz | timotimo: yes, it's a bug | ||
timotimo | would you like to file it? | ||
moritz | I can | 13:20 | |
nr: say <a b> X=> []; | |||
p6eval | niecza v24-5-g599cbcb: OUTPUT«"a" => [] "b" => []» | ||
..rakudo 53daef: OUTPUT«» | |||
moritz | (just a minimal test case for the ticket) | 13:21 | |
timotimo | only if you have time left over that you don't know what to do with :P | ||
13:21
kivutar joined
|
|||
timotimo | otherwise i can do it | 13:21 | |
moritz | nr: say <a b> Z=> []; | ||
p6eval | niecza v24-5-g599cbcb: OUTPUT«"a" => []» | ||
..rakudo 53daef: OUTPUT«» | |||
moritz | submitted. | 13:23 | |
timotimo | thank you | ||
pugs: say <a b> Z=> []; | |||
p6eval | pugs: OUTPUT«***  Unexpected ">" at /tmp/WDCS9Ud0v7 line 1, column 13» | ||
13:23
SamuraiJack_ left
|
|||
moritz | Z as metaop is way younger than pugs' last features | 13:24 | |
timotimo | OK | ||
n: say <a b> X=> [state %h] | |||
p6eval | niecza v24-5-g599cbcb: OUTPUT«Potential difficulties: %h is declared but not used at /tmp/QIoIHLEoOK line 1:------> say <a b> X=> [state ⏏%h]"a" => [] "b" => []» | 13:25 | |
tadzik | masak: oxforddictionaries.com/definition/e...ndiloquent autopun? :) | ||
grandiloquent (adj.) – pompous or extravagant in language, style, or manner | |||
moritz | nice one, tadzik++ | 13:26 | |
tadzik | robertj++ actually (twitter.com/robertjacobsen/status/...181979649) | ||
moritz | r: gist.github.com/4250553 | 13:27 | |
p6eval | rakudo 53daef: OUTPUT«("A", "B", "Z", "-").list("a", "b", "c", "_").list» | ||
moritz | for some reason that produces ("Z", "-", "A", "B").list("_", "a", "b", "c").list("_", "a", "b", "c").list in the qast-sink-1 branch | 13:28 | |
timotimo | is there a \n missing in your last line, moritz? | 13:29 | |
r: ("_", "a", "b", "c").list("_", "a", "b", "c").say | |||
p6eval | rakudo 53daef: OUTPUT«Too many positional parameters passed; got 5 but expected 1 in method list at src/gen/CORE.setting:5023 in block at /tmp/luNLRme_Zy:1» | ||
timotimo | r: ("_", "a", "b", "c").list(("_", "a", "b", "c")).say | ||
p6eval | rakudo 53daef: OUTPUT«Too many positional parameters passed; got 2 but expected 1 in method list at src/gen/CORE.setting:5023 in block at /tmp/8bnLviawJx:1» | ||
timotimo | ah, the implicit self, i suppose? | ||
moritz | timotimo: there's a  | 13:30 | |
timotimo | i see two, i believe there should be three | 13:31 | |
moritz | anyway, the amount of newlines isn't the issue here | ||
that might be copy&paste gone wrong | |||
timotimo | of course :) | ||
moritz | rather the order of returned values | 13:32 | |
timotimo | oh, now i see it | ||
i thought the mistake was that it somehow returns three lists for two walls and was very surprised | |||
13:35
Kharec left
13:36
breinbaa1 left
|
|||
[Coke] | moritz: when rejecting/responding to tickets, I find it helpful to reply to the list also. Did you intentionally not reply to list on 116026? | 13:36 | |
13:37
breinbaas joined
|
|||
moritz | [Coke]: no; I simply though that when I hit "reply", it includes everybody who's relevant | 13:39 | |
[Coke] | yes, for RT's definition. | ||
13:39
brrt joined
|
|||
timotimo | is there a possibility to get proper perl6 syntax highlighting up on github? how about better support for rendering the POD that's used for the perl6book? | 13:40 | |
[Coke] | you must check the "cc" box, or it doesn't get cc'd to the list. (despite the fact that the initial bug report is always sent to the list.) | ||
13:40
wamba left
|
|||
moritz | heh, I have a another autopun, from an internal software release: | 13:41 | |
* #13332033: Encoding-Fixes für Wheezy | |||
13:42
dalek left
|
|||
moritz | timotimo: you probably "just" have to patch whatever syntax hilighter github uses to support Perl 6 | 13:42 | |
13:42
dalek joined,
ChanServ sets mode: +v dalek
|
|||
hoelzro | I was thinking of patching it a while ago | 13:43 | |
not enough tuits =( | |||
timotimo: if you want to patch it, it's called linguist, iirc | |||
timotimo | it's probably ruby software? | 13:44 | |
hoelzro | looks like | ||
timotimo | triage mode engaged: rt.perl.org/rt3/Public/Bug/Display...l?id=71356 - this bug seems resolved. can be closed. | ||
hoelzro | oh, interesting. | 13:45 | |
linguist is just the language detection framework | |||
moritz | rakudo: class A { has $!b is readonly = "foo"; method b { say $!b } }; A.new.b | ||
p6eval | rakudo 53daef: OUTPUT«foo» | ||
[Coke] | timotimo: are there tests? | ||
hoelzro | it actually uses pygments under the hood for the coloring | ||
moritz | rakudo: class A { has $!b is readonly = "foo"; method b { say $!b }; method set-b { $!b = 'blubb' } }; give A.new { .set-b; say .b } | 13:46 | |
p6eval | rakudo 53daef: OUTPUT«===SORRY!===Confusedat /tmp/8EMEuQyTiD:1------> d set-b { $!b = 'blubb' } }; give A.new ⏏{ .set-b; say .b }» | ||
timotimo | [Coke]: doesn't seem so. are tests required for each bug to be closed? that would probably be a good thing so do. | ||
moritz | timotimo: yes, we do require tests | ||
[Coke] | for testable things, aye. | ||
timotimo | ok, sure. they go into roast, right? | ||
moritz | right | ||
timotimo | i'll see if i can add a test :) | 13:47 | |
[Coke] | we can mark that one testneeded, though. | ||
timotimo: ok - then add a pointer to the test in a comment on the ticket, and we can close it out. | |||
timotimo | should the test refer to the bug number, too? | 13:48 | |
13:48
skids left
|
|||
moritz | yes, in a comment | 13:48 | |
timotimo | i'll get started then :) | 13:49 | |
[Coke] | awesome. | ||
timotimo: do you have an RT id? | |||
timotimo | i don't think i do yet. do i just sugn up for a bitcard? | 13:50 | |
13:52
colomon left
|
|||
[Coke] | ... probably? It's been 10 years, I unno. :) | 13:53 | |
moritz | timotimo: I think so, yes | 13:54 | |
timotimo | good, i'm in now | 13:56 | |
moritz | timotimo: what's your RT id? | ||
dalek | kudo/qast-sink-1: cd1ab4c | moritz++ | src/core/Str.pm: work around a sink bug |
13:57 | |
13:57
brrt left
|
|||
timotimo | is it the one on the top right where it says "logged in as timo"? | 13:57 | |
13:57
Su-Shee_ is now known as Su-Shee
|
|||
moritz | right | 13:57 | |
[Coke]: can you make timo a bug admin please? | 13:58 | ||
timotimo | whoa! | ||
13:58
atrodo_ joined
|
|||
diakopter | hm, 3 not-quite-spam emails today saying "2 days left" | 13:59 | |
timotimo | huh? isn't the world going to end on the 22nd? | 14:00 | |
14:00
atrodo left,
atrodo_ is now known as atrodo
14:01
atrodo left,
atrodo joined
14:02
PacoAir joined
|
|||
moritz | jnthn: I can't seem to find out how to sink CATCH (and similar) blocks.. HALP PLZ! | 14:05 | |
timotimo | oh. well, is readonly works as in "can be written and won't crash", but the variable isn't actually readonly | ||
well, at least i can write tests. | |||
moritz | timotimo: that's what I feared | 14:06 | |
timotimo | tests will reveal all. | ||
14:06
am0c joined
|
|||
moritz | all hail the tests! | 14:07 | |
timotimo | the tests shall test your faith. do not falter! | ||
i'm considering modifying Configure.pl so that checking out parrot and nqp won't give a big "oh god oh no no no no detached head oh god what am i gonna do? what are YOU gonna do? we're doomed!" message | 14:08 | ||
moritz | timotimo: but please only do that if the last commit in the branch is the same revision as the requested revision | 14:09 | |
diakopter | speaking of which.. is there a way to make nqp --gen-parrot clone parrot with none of the .git history? | ||
moritz | otherwise you won't get the right revision | ||
diakopter: no | |||
timotimo | yes, of course. i was going to add branches that tell you "required by perl6 version uiaeo" and checking those out | ||
diakopter | <sad> | ||
Woodi | hallo today | ||
moritz | timotimo: that doesn't seem too helpful | 14:10 | |
timotimo | if it's not, i'm going to leave it be | ||
moritz | timotimo: instead of getting a warning about a detached head, you'll get commits to a branch that nobody cares about | ||
and is stuck on 'git pull' without a good error message | |||
timotimo | oh, hadn't thought of that properly. | ||
then a tag would be more appropriate? | 14:11 | ||
diakopter | moritz: I guess I was more asking "is there a way to do that in git" (clone a particular revision without history) | ||
moritz | timotimo: a tag won't prevent the detached head warning | ||
timotimo | doh. | ||
in that case, it'll be fine to leave it be. | 14:12 | ||
moritz | the problem is really that we want a specific revision, and the specific revision is not what the user wants when he wants to patch nqp or parrot | ||
Woodi | just tried star 2012.11 with --profile and compiling nqp SEGFAULTs at stage1. 2Gb here, but retrying 'make' explodes in 0,5s - maybe it can't fill all memory so fast ? | ||
14:12
PacoAir left
|
|||
Woodi | *parrot with --profile | 14:12 | |
14:12
bphillips joined
14:13
PacoAir joined
|
|||
timotimo | diakopter: i know how to make git clone only the needed stuff for the newest revision, i'll look into Configure.pl to see if i can figure out how it works since i know even less perl5 than i do perl6 | 14:13 | |
diakopter | timotimo: I think it'd be a neat option like --no-parrot-history or something | 14:14 | |
14:14
hash_table joined
|
|||
timotimo | oh, configure-pl doesn't do very much by itself. i'll see. | 14:14 | |
moritz | diakopter: git supports it with the --depth option | ||
diakopter | cool | 14:15 | |
14:16
benabik left
|
|||
moritz | though the resulting repo doesn't support many operations | 14:16 | |
timotimo | uh, that's not completely true | ||
moritz | google for 'git shallow clone' for more info ;-) | ||
timotimo | well, yeah, it doesn't do blame or history | 14:17 | |
but you can push from it, i believe | |||
and you can easily expand the history after the fact, i think. | |||
moritz | "(you cannot clone or fetch from it, nor push from nor into it)" says man git-clone | ||
timotimo | o_O | 14:18 | |
i must have something confused here. | |||
at least git pull --depth can expand the history as i remembered | |||
moritz | timotimo: or maybe newer git revisions can do it | 14:19 | |
bphillips | I'm playing around with implementing a Spore REST client in perl6 (i.e. metacpan.org/module/Net%3A%3AHTTP%3A%3ASpore). Can someone point me to a reasonably good example or doc on metaprogramming in perl6 (specifically, adding a dynamically named method+signature to an instance) | ||
timotimo | hum. i have 1.7, but 1.8 is the current stable one. i should investigare | 14:20 | |
diakopter | I'd argue that nqp/parrot developers are not going to use the --gen-parrot option to do development. I can't tell you how many times I've waited for parrot to clone over a slow connection | 14:21 | |
I change systems too often | |||
moritz | bphillips: $obj.^add_method($name, method (\c) { # check arguments yoursel here }); $obj.^compose; | 14:22 | |
timotimo | at least the documentation still says, that you can't pull to or push from it :( | ||
moritz | diakopter: I regularly develop nqp, and occasinally parrot, and I do use --gen-{nqp,parrot} | ||
diakopter | oh | ||
bphillips | moritz: Is there no way to create the signature dynamically as well so that perl6 does argument checking for me? | 14:23 | |
timotimo | not being able to pull into a shallow clone is a problem with how gen-nqp and gen-parrot do updates | ||
14:23
hash_table left
|
|||
diakopter | n00b question: segfault in arbitrary C program on linux. I know how to debug on Windows MSVC. where do I start with gcc/linux | 14:24 | |
timotimo | diakopter: gdb binary_name and then run and see what happens, bt is the most interesting command for you | ||
in some distros you will get a list of packages you have to install to get complete symbol tables for your program, so that you can have complete tracebacks | |||
moritz | diakopter: valgrind $programname | ||
bphillips: not that I know of. Parameters in signatures are tied to lexical variables, and you can't easily create them at run time | 14:25 | ||
diakopter | moritz: Invalid read of size 4 | 14:27 | |
yay! | |||
neat, it found the debug symbols automagically | |||
bphillips | moritz: cool, I'll give it a whirl | ||
14:28
cognominal_ joined
14:29
cognominal left
|
|||
moritz | though I wonder if we could provide an API for creating a signature that only does checking, but no binding | 14:29 | |
timotimo | there are spectests for the is readonly trait in S06-traits/is-readonly.t, but i can't run them because my perl6 doesn't know what VAR is | ||
diakopter | moritz: thanks! | ||
too scared to try gdb | 14:30 | ||
moritz | timotimo: that' test is fudged, no? | 14:31 | |
14:31
pmurias joined
|
|||
timotimo | well, it says #?rakudo skip VAR, so apparently yes | 14:32 | |
the other one where VAR is used is #?rakudo skip 'segfault', which isn't better | |||
14:34
colomon joined
|
|||
timotimo | AFK for a bit | 14:35 | |
moritz | anyway, I think you can remove those VAR tests | ||
I don't see how they add any value | 14:36 | ||
timotimo | after that, should i see that i make tests that test is readonly with classes rather than local variables? | ||
moritz | ss/rather than/in addition to/ | 14:37 | |
timotimo | er, yes, i meant that. would they go into S12-traits? | 14:38 | |
moritz | put them into S06-traits/is-readonly.t too | 14:40 | |
[Coke] | timotimo, moritz: timo is now a bugadmin. | 14:41 | |
moritz | thanks [Coke]++ | 14:42 | |
jnthn | moritz: Can have a look at the CATCH sinking when I get home from $dayjob | 14:43 | |
moritz | jnthn: thanks | 14:44 | |
14:45
yves_ joined,
wamba joined
14:46
Kharec joined
14:52
PerlPilot is now known as PerlJam,
kaare_ joined
14:58
Patterner left
15:00
Psyche^ joined,
Psyche^ is now known as Patterner
15:02
stopbit joined
15:09
fgomez left
15:11
birdwindupbird left
|
|||
Woodi | strange, after installtion I getting: Missing or wrong version of dependency 'src/gen/CORE.setting' (from ModuleLoader.pbc)? ... | 15:13 | |
moritz | Woodi: probably you have an old installation, or old .pir files, which interfer with the new one | ||
Woodi | no, strace shows that it is accessing /*/star-2012.11/*/ModuleLoader.pbc... or something happend during compilation | 15:15 | |
moritz | try export RAKUDO_MODULE_DEBUG=1 | 15:18 | |
15:21
wamba left
15:22
wamba joined
15:24
skids joined
15:31
PacoAir left
|
|||
Woodi | looks: use Config::INI; triggered this. so probably precompiled old modules... | 15:31 | |
15:32
PacoAir joined
15:33
fgomez joined,
wamba left
15:34
huf_ is now known as huf
15:36
cognominal_ left,
FROGGS joined
|
|||
Woodi | ok, thanx moritz++ | 15:38 | |
15:39
PacoAir left,
hash_table joined
15:40
kaleem joined,
fgomez left
15:41
Kharec left
|
|||
Woodi | so I think there is problem with NativeCall: while my $a = native_function( $sock, $structure, $kind-of-C-iterator-on-structure ) { ... } exploding with SEGFAULT... cannot find user error this time... | 15:42 | |
similiar while $b = native_without_C_iterator(...) { ... } works | |||
15:43
cognominal joined
15:45
kst joined
|
|||
timotimo | t.h8.lv/0001-test-for-RT-71356-read...ribu.patch - does this look correct? i'll push it if it's deemed good. | 15:45 | |
15:46
kivutar left
|
|||
timotimo | oh, another question: niecza doesn't seem to implement is readonly. can i write the test so that instead of crashing(?) niecza would get a "not ok" for the class definition? | 15:46 | |
15:47
kivutar joined
|
|||
moritz | timotimo: niecza probably doesn't run the test file if it crashes on the trait | 15:48 | |
timotimo | hah! duh :) | ||
bphillips | (perl6 newb alert) does declaring an empty submethod BUILD {} in a class affect the initialization of an instance of that class? | 15:49 | |
moritz | bphillips: yes | 15:50 | |
bphillips | moritz: what are the requirements for the BUILD method? should it return something? | ||
moritz | bphillips: please see doc.perl6.org/language/objects#Obje...nstruction | ||
bphillips | mortiz++ thanks | 15:51 | |
timotimo | i see there's lots of tests for advent2009, but none for 2010, 2011, 2012 in roast/integration. were the newer advent calendars not fit for their own tests because the test suite around them has already matured well enough in 2010? | 15:54 | |
moritz | timotimo: I think nobody got around to make test out of the posts | 15:55 | |
timotimo | is duplicating tests an issue? | ||
hm, actually, integration tests are sufficiently different from the rest of the spec test suite, aren't they? | |||
do you think making test cases for the rest of the advent calendars is a worthwile project for getting familiar and comfortable with perl6 and tests? | 15:56 | ||
and would perl6 benefit? | |||
15:58
atrodo left
|
|||
moritz | yes, and yes | 15:58 | |
timotimo | cool :) | 15:59 | |
moritz | though only do it for posts that are well-suited for tests | ||
timotimo | yes, certainly | ||
jnthn | decommute, bbiab & | ||
16:00
atrodo_ joined,
cognominal left,
atrodo_ is now known as atrodo
16:01
telex left
16:02
telex joined
|
|||
GlitchMr | glitchmr@feather ~/examples> /usr/bin/perl6 --version | 16:03 | |
This is perl6 version 2012.11-27-g53daeff | |||
Up-to-date version of perl6 in /usr/bin. Surprised... | |||
Anyway, I've problem. You see, Rakudo complains about my custom operator not iffy enough. | 16:07 | ||
gist.github.com/4251501 | |||
How can I make it iffy enough? | |||
16:08
cognominal joined
|
|||
[Coke] | GlitchMr: if you make that a file rather than a shell session, you could have the evalbot run it from here. | 16:10 | |
r: gist.github.com/7c78460908e96476bf3e | 16:11 | ||
p6eval | rakudo 53daef: OUTPUT«===SORRY!===Confusedat /tmp/thRDO6p6pb:1------> https⏏://gist.github.com/7c78460908e96476bf3e» | ||
[Coke] | ... or at least you used to be able to. :P | 16:12 | |
diakopter | public gists only I think | 16:13 | |
GlitchMr | r: gist.github.com/4251559 | ||
p6eval | rakudo 53daef: OUTPUT«===SORRY!===Cannot negate in because it is not iffy enoughat /tmp/39hJ6K2TVh:9------> say 'lol' !in⏏ 'face';» | ||
GlitchMr | n: gist.github.com/4251559 | ||
p6eval | niecza v24-5-g599cbcb: OUTPUT«===SORRY!===Cannot negate in because additive operators are not iffy enough at /tmp/7TmJ67zdo1 line 9:------> say 'lol' !in⏏ 'face';Parse failed» | 16:14 | |
GlitchMr | std: gist.github.com/4251559 | ||
p6eval | std a8bc48f: OUTPUT«===SORRY!===Cannot negate in because additive operators are not iffy enough at /tmp/PAfiKpUwOT line 9:------> say 'lol' !in⏏ 'face';Parse failedFAILED 00:01 52m» | ||
GlitchMr | Huh? | ||
How can I make actually iffy enough operator. I even have marked it returns boolean. | |||
[Coke] | ah. didn't realize I had made it private, whoops! | ||
GlitchMr: in the grammar, you declare it iffy: | 16:17 | ||
Perl6::Grammar.O(':prec<m=>, :assoc<left>, :iffy<1>, :pasttype<chain>', '%chaining'); | |||
I have no idea how to mark it iffy outside the grammar, though. | |||
it's not introspecting the signature for a boolish return, though. | 16:19 | ||
GlitchMr | Well, specification says "You may negate only those operators that return a Bool". | ||
It doesn't depend on any internal "iffy" property. | |||
[Coke] | GlitchMr: I'm just telling you what's in rakudo src. | 16:20 | |
I don't see any examples in roast that test for adding new iffy operators, just for testing that + isn't iffy enough. | |||
your request seems reasonable to me. no clue how hard it would be to update the iffy test to check the signature as opposed to the iffy flag. | 16:21 | ||
(or to update the iffy flag based on the sig for new items.) | 16:22 | ||
16:22
[particle]1 joined
16:23
[particle] left
|
|||
[Coke] | std: sub infix:<in>(Str $a, Str $b --> Bool) { True } ; say "a" in "b" | 16:26 | |
p6eval | std a8bc48f: OUTPUT«Potential difficulties: $b is declared but not used at /tmp/W4frjONWe5 line 1:------> sub infix:<in>(Str $a, Str ⏏$b --> Bool) { True } ; say "a" in "b" $a is declared but not used at /tmp/W4frjONWe5 line 1:------> sub infix:<in>(Str [3… | ||
[Coke] | std: sub infix:<in>(Str $a, Str $b --> Bool) { $a, $b; True } ; say "a" in "b" | ||
p6eval | std a8bc48f: OUTPUT«ok 00:00 47m» | ||
[Coke] | std: sub infix:<in>(Str $a, Str $b --> Bool) { $a, $b; True } ; say "a" !in "b" | ||
p6eval | std a8bc48f: OUTPUT«===SORRY!===Cannot negate in because additive operators are not iffy enough at /tmp/U6VgRNhrym line 1:------> --> Bool) { $a, $b; True } ; say "a" !in⏏ "b"Parse failedFAILED 00:00 47m» | ||
16:26
spider-mario joined
|
|||
GlitchMr | Iffy flag looks like hack to me | 16:27 | |
[Coke] | std: sub infix:<asdfasdf>(Str $a, Str $b --> Bool) { $a, $b; True } ; say "a" !asdfasdf "b" | ||
p6eval | std a8bc48f: OUTPUT«===SORRY!===Cannot negate asdfasdf because additive operators are not iffy enough at /tmp/O1ljUoRF0S line 1:------> ol) { $a, $b; True } ; say "a" !asdfasdf⏏ "b"Parse failedFAILED 00:00 47m» | ||
GlitchMr | Of course, I could make infix:<!in> operator, but that's hax. | ||
[Coke] | probably your quickest way to working code, and leave a comment that it shouldn't be needed. | 16:28 | |
looks like std doesn't allow it yet, either. | |||
GlitchMr | I wonder if infix:<not in> operator, just like in Python would work | ||
16:29
atrodo left,
atrodo joined
|
|||
GlitchMr | Seems to work | 16:29 | |
Even if I put space between "not" and "in". Impressive. | 16:30 | ||
put more than one space* | |||
16:31
kaleem_ joined
16:34
wamba joined,
kaleem left
|
|||
jnthn | If you put it at the same precedence level as a relational operator, it should get the iffy-ness of that. | 16:39 | |
GlitchMr | That's... hacky | 16:44 | |
What precedence would have with iffy-ness. | |||
16:44
grondilu left
|
|||
jnthn | GlitchMr: It's exactly what STD does. | 16:45 | |
16:45
am0c left
|
|||
jnthn | GlitchMr: The precedence level relational operators have, as I told you. | 16:46 | |
is equiv(&infix:<==>) for example | |||
16:47
wamba left
16:49
colomon left
16:53
colomon joined
16:54
aindilis left,
[particle]1 left
16:56
[particle] joined
|
|||
[Coke] | r: sub infix:<in> is equiv(&infix:<==>) (Str $a, Str $b --> Bool) { $a, $b; True } ; say "a" !in "b" | 16:57 | |
p6eval | rakudo 53daef: OUTPUT«===SORRY!===Missing blockat /tmp/qEBaxfAzxf:1------> sub infix:<in> is equiv(&infix:<==>) ⏏(Str $a, Str $b --> Bool) { $a, $b; True» | ||
[Coke] | r: sub infix:<in> (Str $a, Str $b --> Bool) is equiv(&infix:<==>) { $a, $b; True } ; say "a" !in "b" | ||
p6eval | rakudo 53daef: OUTPUT«False» | ||
japhb | jnthn: Did you see the Rakudo performance issues with 'for ^100 X ^100' and with push/join in the backlog? | 17:00 | |
diakopter, Regarding the parrot/nqp cloning issue: Since perl6-bench makes a LOT of clones of everything, it starts out by making one --mirror clone of each major component, and then doing local (very fast) clones as needed; in particular, before building Rakudo (or NQP), it starts by local-cloning the NQP and Parrot into place inside the Rakudo checkout, and then --gen-parrot recognizes those are there and just builds. | 17:02 | ||
diakopter, if you change machines a lot, but are only in one or two locations, you might get a win by mirroring the repos to a single machine in each location, and cloning from that as needed. | 17:03 | ||
17:04
SamuraiJack_ joined
|
|||
japhb | (Just make sure to 'git fetch -t' and 'git fetch -u' starting at the mirror when you want to update -- or run a cronjob on the mirror to do that.) | 17:05 | |
jnthn | japhb: Yes it's already in RT. | ||
japhb | jnthn, ah, sorry, my bad | ||
jnthn | japhb: np | ||
japhb: I didn't get to the bottom of why last time I looked at it. | |||
japhb | As I spend more time with perl6-bench, I'm starting to get a feel for when something is out of whack in the sense that a performance problem goes way past the general slowdown of Parrot + several layers of abstraction. Sometimes just seeing a really large difference between NQP and Rakudo on a test raises that flag. | 17:07 | |
17:07
stanley joined
17:08
MayDaniel joined
|
|||
japhb | And sometimes it's a matter of niecza and Rakudo scaling very differently -- regardless of which one was faster for the "small" case. | 17:08 | |
jnthn | Yeah, it's good to look at those ones. | 17:09 | |
17:09
SamuraiJack joined
17:10
bluescreen10 joined,
SamuraiJack_ left
|
|||
jnthn | I'm curious what difference the sink changes will make | 17:11 | |
japhb | ditto that. | ||
jnthn | (They keep for loops in sink context from keeping all the results.) | ||
Well, from building up a result list. | |||
japhb | It's now easy in perl6-bench to compare builds from different branches, so we can even compare before the merge if we like. | ||
(I figured I'd do that anyway once more of the bugs were shaken out.) | 17:12 | ||
17:12
arlinius joined,
MayDaniel left
|
|||
japhb | Oh, that reminds me: I'm thinking perl6-bench really belongs under the perl6 org; it should be a community thing, so I was thinking of forking my repo into the perl6 one on github and declaring the fork "official". Anyone disagree and think that's a bad idea? If so, why? | 17:14 | |
17:15
ggoebel_ joined
17:17
MayDaniel joined
|
|||
moritz | japhb: go ahead | 17:19 | |
japhb | moritz, Thank you. I'll wait for a bit to see if anyone has any objections, just in case. | 17:20 | |
Also, I'm assuming that code I wrote should be officially placed under Artistic 2, and code derived from RosettaCode should be explicitly marked Gnu FDL, correct? | 17:21 | ||
17:22
wamba joined
|
|||
jnthn | moritz: So, should all CATCH blocks be sunk? | 17:22 | |
moritz: Same with CONTROL? | 17:23 | ||
17:24
pmurias left
|
|||
jnthn | moritz: I'm a bit surprised things aren't already considered in sink context there. | 17:27 | |
moritz: Because of the rethrow added at the end. | |||
oh, wait, I see it... | 17:28 | ||
FROGGS | is there a spec that says something about module search paths? | 17:29 | |
jnthn | r: try { die 'omg'; CATCH { for 1..10 { .say } } } | 17:30 | |
p6eval | rakudo 53daef: OUTPUT«12345678910omg in block at /tmp/jXeQmLYA01:1» | ||
17:32
Kharec joined
17:33
bphillips1 joined,
bphillips left
|
|||
TimToady | jnthn: typo in "by using the ident method on strings," | 17:34 | |
jnthn | uh, indent, yes :) | 17:35 | |
fixed, thanks | |||
17:36
bphillips joined
|
|||
jnthn | moritz: Got a fix. | 17:36 | |
17:37
fhelmberger left
17:38
bphillips1 left
|
|||
dalek | kudo/qast-sink-1: 5886931 | jnthn++ | src/Perl6/Actions.pm: Sink in CACTH and CONTROL blocks. |
17:41 | |
felher | ... I had to read TimToady's line four times to see the typo. Two times even after I realized it was in i[n]dent. And I did only realize that becaue jnthn said so :) | 17:46 | |
FROGGS | I've got a problem, I've got a string like 'Dog:auth({ .substr(0,5) eq "cpan:"})' and I've got a token like { 'Dog:auth({' .+ '})' } | 17:47 | |
my problem is that .+ even matches the last }) of my string, so the token itself wont match in the end | |||
how do I prevent it from matching the enclosing braces? | |||
flussence | /.+?/ maybe | 17:48 | |
FROGGS tries | |||
flussence: hmm, no, doesnt work | 17:49 | ||
same result | |||
ohh wait | |||
it works somehow | |||
flussence: thanks! | 17:50 | ||
flussence | I guess you could also use the ~ operator in that case since it's two delimiters... | 17:51 | |
18:03
MayDaniel left
18:04
MayDaniel joined,
kaleem_ left
18:07
PacoAir joined
18:09
dakkar left,
benabik joined
18:15
atrodo_ joined
|
|||
TimToady | nr: sub postfix:<-> ($x) is equiv(&prefix:<->) { -$x }; say 2**3- | 18:15 | |
p6eval | rakudo 53daef, niecza v24-5-g599cbcb: OUTPUT«0.125» | 18:16 | |
TimToady | this is perhaps a clearer example of the postfix prec bu | ||
*bug | |||
looks like a STD bug | |||
jnthn | If you can fix it in STD, I can take a look at transliterating the fix into Rakudo's EXPR | 18:17 | |
18:17
atrodo left,
atrodo_ is now known as atrodo
18:19
bapa joined
|
|||
jnthn | r: class A { method Str() { 'a' } }; my @a = A.new xx 10; say @a.uniq.elems | 18:21 | |
p6eval | rakudo 53daef: OUTPUT«1» | ||
jnthn | Got a fix for that one locally | ||
18:24
kurahaupo joined
18:27
mikemol_ is now known as mikemol
|
|||
diakopter learns that TimToady mentally pronounces STD as standard | 18:27 | ||
TimToady | how do you pronounce 'stdin'? | 18:28 | |
besides, S.T.D. means something gross :) | 18:29 | ||
rindolf | TimToady: I call it standard-in. | ||
rurban | me too | ||
rindolf | Or maybe S.T.D.in. | 18:30 | |
rjbs | stuh-DIN | 18:31 | |
diakopter | ^ | ||
flussence | stiddin' | ||
rjbs | and stuh-DOUT and stuh-DAIR | ||
I used to say "standard in" until confound converted me. | |||
18:32
colomon left
|
|||
skids | If you are adequately antisocial, you never have to worry about such verbal pronunciations. | 18:32 | |
Also no hazard of STDs. | |||
TimToady | well, there are antisocial behaviors that can lead to STDs... | 18:33 | |
[Coke] | I read stdin in my head as "stand in" | 18:34 | |
www.quickmeme.com/meme/3qm3f8/ | 18:36 | ||
jnthn | [Coke]: And to make something appear on the terminal, your program has to "stand out"? :P | 18:38 | |
dalek | kudo/nom: 8e02c1e | jnthn++ | src/core/List.pm: Give uniq === semantics, not eq. Also sink the for that is being gathered. Once the sink branch lands, this should decrease memory usage also. |
18:39 | |
18:40
MayDaniel left
|
|||
GlitchMr | 0, [\+] 2 ** 15 xx 2 ** 15 # hash keys needed to make hash collision attack on PHP | 18:40 | |
18:40
bapa left
18:41
MayDaniel joined,
Chillance joined
|
|||
[Coke] | jnthn: eh. it doesn't mean that, it's just how it's pronounced. :) | 18:41 | |
jnthn | :) | 18:42 | |
18:43
bapa joined
|
|||
dalek | rl6-roast-data: d345408 | coke++ | / (3 files): today (automated commit) |
18:44 | |
[Coke] | github.com/coke/perl6-roast-data/b....out#L1857 - 2 todo PASSED | ||
GlitchMr | "unknon" | 18:45 | |
This is really proffesional | |||
diakopter | ... | ||
GlitchMr | (I know, professional is written with one f and two s) | ||
[Coke] | GlitchMr: do you have commit access to roast? | 18:46 | |
GlitchMr | Yes | ||
[Coke] | You know what you have to do. :) | ||
GlitchMr | ok, I'm going to find "unknon" | ||
jnthn | Typos happen :) | 18:47 | |
darn! I meant to typo that to make a joke then got it right | |||
[Coke] | mmmhehehe. | 18:48 | |
dalek | ast: a18f56f | GlitchMr++ | integration/99problems-11-to-20.t: Unknown, not unknon. |
||
18:48
immortal left
|
|||
[Coke] | if you could track down the 2 passing TODOs while you're in there, that would be awesome. | 18:48 | |
GlitchMr | Sure | 18:51 | |
18:52
benabik left
|
|||
[Coke] | \o/ | 18:53 | |
GlitchMr | Both of those TODO tests pass. But they pass just by accident. | 18:54 | |
oh wait, they don't | |||
I was confused by two similar tests | |||
They don't pass. No idea why they pass for you. | 18:55 | ||
dalek | kudo/nom: a1eff00 | jnthn++ | docs/ChangeLog: Update ChangeLog. |
||
GlitchMr | github.com/perl6/roast/blob/a18f56...-20.t#L136 | 18:56 | |
It's this test. | |||
But... | |||
not ok 5 - .. or a n-ary list with always same element | |||
18:57
kurahaupo left
|
|||
GlitchMr | Oh wait, it's "unknown", not "unknon" | 18:57 | |
dalek | ast: b8d4388 | GlitchMr++ | integration/99problems-11-to-20.t: Passing TODOs :-). |
18:58 | |
GlitchMr | [Coke]: Fixed. | 18:59 | |
19:03
colomon joined
19:06
cooper left,
cooper joined
19:08
popl joined
19:09
PacoAir left
19:10
PacoAir joined
19:11
atrodo left
19:12
atrodo joined
19:15
PacoAir left
|
|||
timotimo | so there was an advent calendar post on quoting, but there was no mention of quoting shell commands? | 19:16 | |
19:17
cognominal left
|
|||
jnthn | timotimo: It missed out quote words and various other things too. :) | 19:17 | |
19:17
PacoAir joined
|
|||
jnthn | It wasn't meant to be exhaustive. 'cus otherwise it woulda been exhausting to write :P | 19:18 | |
timotimo | mhm | ||
19:20
pecastro joined
|
|||
timotimo | er, what do i have to search in the synopses to find what quote word starts a shell execution quote? :| | 19:20 | |
jnthn | execute? :) | 19:21 | |
In S02 | |||
timotimo | ah, indeed. | 19:22 | |
19:22
SamuraiJack left
|
|||
timotimo | that part didn't show up in the search results sadly | 19:22 | |
bphillips | moritz: what does the "\c" part of the method (\c) { ... } indicate in your message from earlier? | 19:24 | |
(or if someone else knows, please feel free to chime in) | 19:25 | ||
[Coke] | GlitchMr++ | 19:26 | |
jnthn | bphillips: It means "take an argument and don't contextualize it in any way" | 19:28 | |
It can be referred to as just "c" within the method | |||
19:28
japhb_ left
|
|||
jnthn | moritz: Turns out my CATCH sink patch earlier wasn't enough, and didn't handle the default inside the CATCH needing sinking | 19:28 | |
timotimo | what do i have to do to get a perl6 binary with line history and in-line-editing? | 19:30 | |
19:30
ggoebel_ left
|
|||
jnthn | timotimo: Thinks that needs having a libreadline (or perhaps the dev for it) installed at the time you build Parrot. | 19:31 | |
timotimo | ah, at parrot build time | ||
that's the key | |||
so with :x i get the stdout and with run/shell i get the exit code. any way to get both at the same time without executing something twice? | 19:38 | ||
19:42
spider-mario left
19:43
spider-mario joined
|
|||
TimToady | timotimo: well, there's always redirecting to a file and then reading that | 19:43 | |
timotimo | well, since you're already the parent process, why not give pipes as stdout and stderr and read their contents to a buffer? | 19:44 | |
TimToady | or a named fifo, on Unix | ||
well, it's certainly possible to teach perl6 how to do such things; I was just suggesting a workaround | 19:45 | ||
19:46
spider-mario left
19:51
kivutar left
|
|||
rindolf | Hi all. Are there any open Rakudo / Niezca / Perlito Junior Jobs? | 19:52 | |
19:53
MayDaniel left,
cognominal joined,
MayDaniel joined,
ggoebel_ joined
|
|||
[Coke] | tasks or actual paying jobs? | 19:54 | |
dalek | kudo/qast-sink-1: f1b8fed | jnthn++ | src/Perl6/Actions.pm: Sink when/default in CATCH/CONTROL also. |
20:03 | |
jnthn | moritz: With that last patch, spectest in qast-sink-1 looks quite good now (though not got the ICU tests running, so maybe we've some leftovers in there). | 20:04 | |
20:04
SmokeMachine left
|
|||
dalek | kudo/nom: 24e882f | jnthn++ | docs/ROADMAP: Give estimates for a couple of tasks. |
20:05 | |
20:06
fgomez joined,
kurahaupo joined,
kurahaupo left
20:08
arlinius left
|
|||
timotimo | is there a forecast yet for when fork and wait might go into rakudo or niecza? | 20:10 | |
20:10
cognominal_ joined
20:11
cognominal left,
ingy left,
ingy joined
20:16
aindilis joined
20:18
cognominal_ left
20:24
cognominal joined
20:26
rindolf left
20:30
rindolf joined
|
|||
masak | ahoj, #perl6 | 20:30 | |
hoelzro | o/ masak | 20:31 | |
TimToady | ajoi <- Californian | ||
jnthn | hola, señor masak | 20:35 | |
masak takes the ~ from the n and uses it as a funny 'stache | 20:38 | ||
20:38
kaare__ joined
20:40
kaare_ left
|
|||
masak | TimToady: should the indentation from an interpolated variable figure in the de-indentation of a heredoc? | 20:41 | |
jnthn++ # Matryoshka dolls for Christmas! \o/ | |||
<jnthn> Typos happen :) | 20:43 | ||
<jnthn> darn! I meant to typo that to make a joke then got it right | |||
what's even more scary, I *read* it as containing a typo! o.O | 20:44 | ||
and only then discovered that it didn't, to my great surprise. | |||
20:44
kivutar joined
|
|||
masak | even now that I know that it doesn't contain a typo, just glancing at it, my brain expects one to be there. | 20:44 | |
I think I'm finally turning into an autopun. | 20:45 | ||
timotimo: [backlog] so... essentially, you are wait-ing for a fork-ast... :P | 20:46 | ||
20:51
fgomez left
|
|||
bphillips | I'm certain I must be doing something wrong, but can I expect $foo ~~ s/$search/$replace/ to return a boolean indicating that the search/replace was actually done? | 20:51 | |
20:51
cognominal left
|
|||
bphillips | I'm looping over a list of substitutions and once one matches, the ~~ s/// operation always seems to return true | 20:52 | |
timotimo | masak: *snrk* :D | ||
bphillips | (the relevant gist: gist.github.com/4253309) | 20:53 | |
masak | bphillips: what s/// should return is a discussion that was never fully resolved. | ||
at one point, Niecza and Rakudo returned different things. | 20:54 | ||
rn: $_ = "foo"; say s/foo/bar/ | |||
20:54
noggle joined
|
|||
p6eval | rakudo 24e882: OUTPUT«bar» | 20:54 | |
..niecza v24-5-g599cbcb: OUTPUT«True» | |||
masak | oh, they still do. | ||
:/ | |||
20:54
wamba left
|
|||
bphillips | regardless of the actual return value, if the subject of the search isn't matched, shouldn't it return something False-ish? | 20:55 | |
20:55
fgomez joined
|
|||
bphillips | or, should I do this differently? (I'm <24 into my perl6 adventure, my mind is primarily filled with p5 equivalents) | 20:55 | |
20:56
arlinius joined
|
|||
masak | :) | 20:57 | |
moritz is the resident expert on smartmatching, I believe. he may have a good answer for you, once he rezzes. | |||
21:00
fgomez left,
kaare_ joined
|
|||
bphillips | if I explicitly set $/ to False before doing the s///, that seems to "work" (although that seems like the worst way to go about this) | 21:00 | |
FROGGS | k, my Grammar for parsing "use" statements is set up and correctly matches 'auth', I got donuts, coffee and star trek is playing... life can be good | 21:02 | |
21:02
kaare__ left
21:05
GlitchMr left
|
|||
dalek | kudo/stdier: b9b110b | jnthn++ | src/Perl6/World.pm: Good error for unexpected closing bracket. |
21:07 | |
masak | \o/ | 21:15 | |
anything is better than "Confused" :) | 21:16 | ||
21:18
Chillance left
21:19
atrodo left,
rindolf left
21:20
atrodo joined,
Kharec left,
hash_table left
21:21
wamba joined
|
|||
timotimo | i like that branch name | 21:25 | |
tadzik | standardier | ||
sergot | hi o/ ! | 21:26 | |
timotimo | t.h8.lv/0001-test-for-RT-71356-read...ribu.patch - does this patch look good btw? i forgot to push it, so i just thought i'd ask before i do | ||
sergot | There something wrong with p6's libs on feather. :( | ||
21:28
grondilu joined
|
|||
jnthn | timotimo: did you forget to bump the plan? | 21:28 | |
[Coke] | where is p6 installed on feather? | ||
timotimo | oh, yes i did. thanks! | ||
[Coke] finds /usr/bin/perl6, which looks surprisingly recent. | 21:29 | ||
masak | tadziku, sergocie! \o/ | ||
tadzik | o/ | 21:30 | |
21:30
kurahaupo joined
21:35
cognominal joined
|
|||
timotimo | can i have push permission to perl6/roast? i'm timo on github | 21:35 | |
[Coke] | +1 | ||
sergot | masaku ! o/ | 21:36 | |
masak | vocative++ | 21:37 | |
dalek | p/highexpect: e6ea357 | jnthn++ | src/QRegex/Cursor.nqp: Lookaheads should not change highexpect. |
||
p/highexpect: 45ecaf8 | jnthn++ | src/QRegex/Cursor.nqp: Provide a way to manipulate highexpect. |
|||
kudo/stdier: 53e70fb | jnthn++ | src/Perl6/Grammar.pm: Fresh highexpect in ws, as per STD. |
21:38 | ||
grondilu | rn: say .[0] for [[<foo bar>], [^10]]; | ||
p6eval | rakudo 24e882, niecza v24-5-g599cbcb: OUTPUT«foo bar» | ||
[Coke] | hurm. looks like timo is already a member of perl6. | ||
grondilu was expecting "foon0" | |||
jnthn | rn: say .[0] for ([<foo bar>], [^10]); | 21:39 | |
p6eval | rakudo 24e882, niecza v24-5-g599cbcb: OUTPUT«foo0» | ||
jnthn | [...] is an item | ||
[Coke] | but it looks like I'm not an admin. I think. So hopefully someone else can sort you out. | ||
grondilu | rn: say .[0] for [[<foo bar>], [^10]].list; | ||
p6eval | rakudo 24e882, niecza v24-5-g599cbcb: OUTPUT«foo0» | ||
grondilu | jnthn: thanks | 21:40 | |
jnthn | timotimo: done | ||
sergot | "Could not find JSON::Tiny in any of:" I need JSON::Tiny on feather. :) | 21:42 | |
jnthn | bah, somehow implemetning highexpect busts...1 macros test? o.O | ||
masak | O.o | ||
jnthn | oh...that's unfortuante | ||
...and easily fixed | |||
masak .oO( nobody expects the macro inquisition! ) | |||
jnthn | nah, just that I put the highexpect things into an @.expected in X::Comp | 21:43 | |
21:44
cognominal left
|
|||
jnthn | And when that got mixed in to a type check exception, hid the expected type. | 21:44 | |
dalek | ast: 1fa9ddf | (Timo Paulssen)++ | S06-traits/is-readonly.t: test for RT #71356: readonly trait for private attributes |
||
[Coke] | timotimo++ jnthn++ | 21:45 | |
21:45
cognominal joined
21:47
bluescreen100 joined
|
|||
dalek | kudo/stdier: 324cb25 | jnthn++ | src/ (2 files): Rename to avoid a conflict. |
21:48 | |
jnthn does another spectest | |||
If this passes, I'll merge the next round of error reporting improvements :) | |||
21:49
spider-mario joined
|
|||
timotimo | jnthn++ sounds great! | 21:49 | |
21:49
bluescreen10 left
|
|||
popl | I'd like to help with Perl 6 but I suck. Is there anything I could do (documentation, sweeping up, etc.)? | 21:50 | |
masak | anything that stirs the pot is a good help. | 21:51 | |
21:51
cognominal left
|
|||
masak | I started my activity here on #perl6 basically trying out the spec, piece by piece. | 21:52 | |
dragged up a few things :) | |||
FROGGS | popl: if you wanna learn Perl 6 while helping, you could skim through the bugtrackers and check for already solved things, add tests or try to solve something on your own | ||
thats what I did to get a feeling for the internals | |||
21:53
cognominal joined
|
|||
popl | Ok. | 21:53 | |
FROGGS | masak: is version comparision implemented yet? | ||
dalek | p: b30fb7a | jnthn++ | src/Q (2 files): Keep :dba(...) values for a bit longer. This will allow them to make it unti NFA construction time. |
||
21:53
dalek left
|
|||
popl | I will look into it. | 21:53 | |
Thanks FROGGS. | |||
21:53
SmokeMachine joined
|
|||
FROGGS | popl: you're welcome | 21:53 | |
21:54
dalek joined,
ChanServ sets mode: +v dalek
|
|||
masak | FROGGS: try it and see. | 21:54 | |
FROGGS | how? | ||
masak | rn: say v3 > v2 | ||
p6eval | rakudo 24e882: OUTPUT«Cannot call 'Real'; none of these signatures match::(Mu:U \v: Mu *%_) in method Real at src/gen/CORE.setting:804 in sub infix:<>> at src/gen/CORE.setting:2822 in block at /tmp/QCXQ6GlTvf:1» | ||
..niecza v24-5-g599cbcb: OUTPUT«===SORRY!===Action method value:version not yet implemented at /tmp/sJy3iCqPQK line 1:------> say v3⏏ > v2Action method value:version not yet implemented at /tmp/sJy3iCqPQK line 1 (EOF):------> say v3 > v2[33… | |||
masak | rn: say v3 after v2 | ||
FROGGS | r: say so 1.2.3 > 3.2.0 | ||
p6eval | niecza v24-5-g599cbcb: OUTPUT«===SORRY!===Action method value:version not yet implemented at /tmp/moSDYyJ9Sz line 1:------> say v3⏏ after v2Action method value:version not yet implemented at /tmp/moSDYyJ9Sz line 1 (EOF):------> say v3 afte… | ||
..rakudo 24e882: OUTPUT«True» | |||
rakudo 24e882: OUTPUT«===SORRY!===Confusedat /tmp/ES0xIx9I7E:1------> say so 1.2.⏏3 > 3.2.0» | |||
dalek | kudo/nom: 4068131 | jnthn++ | src/ (2 files): Try reporting what was expected at high watermark. |
21:55 | |
kudo/nom: 0118e3b | jnthn++ | src/Perl6/Grammar.pm: Add a bunch of missing :dba(...)s. Remove completed highwater task. |
|||
21:55
dalek left
|
|||
FROGGS | okay, NYI | 21:55 | |
masak | r: say v4.beta after v4 | ||
p6eval | rakudo 24e882: OUTPUT«No such method 'beta' for invocant of type 'Version' in block at /tmp/MEEZIeeGaq:1» | ||
masak | r: say v4beta after v4 | ||
p6eval | rakudo 24e882: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&after' called (line 1)Undefined routine '&v4beta' called (line 1)» | ||
masak | r: say v4 after v4 | ||
p6eval | rakudo 24e882: OUTPUT«False» | ||
21:55
dalek joined,
ChanServ sets mode: +v dalek
|
|||
masak | hm. I should read up on version number syntax. | 21:55 | |
FROGGS | r: say v5 after v4 | ||
p6eval | rakudo 24e882: OUTPUT«True» | ||
jnthn | OK, it's merged :) | 21:56 | |
21:56
wamba left,
cognominal_ joined
|
|||
FROGGS | masak: let me read ;o) | 21:56 | |
[Coke] | jnthn++ | 21:57 | |
21:57
SmokeMachine left
21:58
kivutar left
21:59
wamba joined,
cognominal__ joined,
cognominal left
|
|||
timotimo | is "highwater" an established term/concept? what do i have to look for to find more about how it works without digging into code? | 22:00 | |
22:01
cognominal_ left
|
|||
cognominal__ | masak: "Everywhere I look, I see people falling prey to confirmation bias. Just as I suspected." | 22:01 | |
22:02
ggoebel_ left
|
|||
jnthn | timotimo: Not really sure what to point you at. But I can explain it... | 22:02 | |
masak | cognominal__: oh, it's a variant of "Is confirmation bias prevalent? Yes, I see it everywhere!" # autopun | ||
22:03
popl left
|
|||
jnthn | One of the reasons Rakudo has given dodgy location information at times is because certain kinds of errors make the parser try a bunch of alternatives, and in doing so it might jump back quite a long way in order to do so. | 22:03 | |
This means at the point it finally gives up, it may be quite a long way from where the real problem was. | |||
timotimo | OK, that seems plausible - if frustrating | 22:04 | |
jnthn | The highwater mark just records the furthest place we got to. | ||
timotimo | ah, and that's the point that gets reported as having the error? | ||
jnthn | The highexpect is a kind of "black box recorder" of the parse that keeps track of what we were looking for at the time. | ||
Yes. | |||
22:05
skids left
|
|||
jnthn | And that's basically it :) | 22:05 | |
timotimo | seems reasonable. and if it works, that's great, too :) | ||
jnthn | The only other bit to mention is that analyzing the contents of highexpect and the stuff immediately after the highwater is the way we manage to re-write some "Confused" messages into something a bit smarter. | 22:06 | |
masak | that raises a question for me. why all the backtracking? I thought Perl 6 syntax mostly didn't involve backtracking. | ||
22:06
cognominal__ left
|
|||
jnthn | masak: It's not backtracking in the sense of quantifier backtracking. | 22:07 | |
If you do | |||
timotimo | maybe it's got something to do with longest expression matching? | ||
jnthn | [ <foo_that_matches_lots_then_fails> || <bar_that_does_less> || <.panic: 'Confused'> ] | ||
masak | oh, troo. | 22:08 | |
jnthn | Then you can end up a long way back. | ||
masak | it's just resetting to a cursor that lets you retry something. | ||
jnthn | Well, just returning up the callstack really | ||
We don't reset cursors, just throw away ones that didn't work out. | |||
timotimo | i wonder if it makes any sense to autothread grammars, if they can be reset anyway? | 22:09 | |
jnthn | To give an example of highexpect, if I do: | ||
perl6 -e "42.\ " | |||
Then the error location also now has some info on what it wanted: | |||
------> 42.<HERE>\ | |||
expecting any of: | |||
dotty method or postfix | |||
timotimo: That may create issues with various other bits of parse state kept around in contextuals. Cursors aren't the only thing going on. | 22:11 | ||
timotimo | feared as much :( | 22:12 | |
22:13
hash_table joined
|
|||
jnthn | I don't think it'd be a huge win anyway, fwiw | 22:13 | |
The LTM-er often guesses right first time. | |||
timotimo | cool | 22:14 | |
jnthn | Thus the overhead of actually syncing up the various threaded runs (if you meant using multiple threads) would risk dominating any wins. | ||
22:14
cognominal__ joined
|
|||
timotimo | i was meaning multiple threads, yes. | 22:14 | |
jnthn | When I put in the LTM stuff I had a load of traces running to help me debug it, and I noticed it was guesing quite well. | 22:15 | |
timotimo | that's pretty amazing actually. i have no clue how it does that :| | 22:16 | |
sorear | I think a more promising approach would be to scrape your code for "use" statements using a simple regex, and then start background precompilation of modules | 22:17 | |
jnthn | sorear: mmm...yes :) | ||
(separate compilation)++ | 22:18 | ||
22:21
bbkr_ left
|
|||
masak | 'night, #perl6 | 22:21 | |
FROGGS | gnight | 22:23 | |
timotimo | night masak | ||
22:25
kaare_ left
22:31
cognominal__ left
22:38
MayDaniel left
22:40
cognominal joined
22:41
hash_table left
|
|||
grondilu | rn: say ^(3/2+1) | 22:42 | |
p6eval | niecza v24-5-g599cbcb: OUTPUT«0..^<5/2>» | 22:43 | |
..rakudo 41a658: OUTPUT«0..^5/2» | |||
22:43
PacoAir left
|
|||
grondilu | rn: say eager ^(3/2+1) | 22:43 | |
p6eval | rakudo 41a658: OUTPUT«0 1 2» | ||
..niecza v24-5-g599cbcb: OUTPUT«===SORRY!===Undeclared routine: 'eager' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5)  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37)  at /hom… | |||
grondilu | rn: say my @ = ^(3/2) | 22:44 | |
p6eval | rakudo 41a658, niecza v24-5-g599cbcb: OUTPUT«0 1» | ||
grondilu | rn: say my @ = ^(<3/2>.floor) | ||
p6eval | rakudo 41a658, niecza v24-5-g599cbcb: OUTPUT«0» | ||
grondilu | So I guess prefix:<^> doesn't use floor to convert to Int. | 22:45 | |
22:46
pecastro left,
jaldhar_ left
|
|||
timotimo | hm. should integration tests for the older perl6advent posts be there to point out inconsistencies between claims and implementation so that if spec changes, the advent post can be updated as well? | 22:48 | |
22:48
spider-mario left
22:50
cognominal left
22:55
cognominal joined
|
|||
jnthn | r: say 18.333 / 0.62 | 22:59 | |
p6eval | rakudo 41a658: OUTPUT«29.569355» | ||
23:02
grondilu left
|
|||
dalek | kudo/nom: 8fb8bc1 | jnthn++ | src/core/Junction.pm: Optimize the junction auto-threader. This makes the benchmark: for 1..10 { say so 9999 == any(1..2000) } Complete somewhere around 30 times faster. |
23:04 | |
kudo/nom: a308f34 | jnthn++ | docs/ChangeLog: Update ChangeLog. |
23:06 | ||
timotimo | what, auto-threading is in rakudo already? | ||
23:06
jerome joined
23:07
stopbit left
|
|||
jnthn | timotimo: Auto-threading of junctions doesn't have anything to do with threads. | 23:07 | |
I mean, it potentially could | |||
It just means that an operation threads through the junction. | |||
timotimo | oh, so it goes faster not because it actually threads | ||
but because the code that does it is just more efficient | |||
jnthn | Right. | ||
timotimo | 30 times, though. wow! | ||
jnthn | Quite a lot more efficient. :) | ||
Yeah, now I know why people kept telling me auto-threading was slow. It really was! | 23:08 | ||
23:08
jaldhar_ joined
|
|||
timotimo | i ran into that once, too ... | 23:08 | |
and i have absolutely no clue why your code changes improve performance | |||
jnthn | Well, this should make it hurt a bit less :) | ||
[Coke] | timotimo: if the old advent posts are wrong, it is awesome to update the tests to say "here's how that actually works these days". | 23:15 | |
I don't think we have to update the old post itself. | |||
timotimo | well, there are no tests yet for most of the advent posts | 23:16 | |
23:18
benabik joined
23:21
jaldhar_ left
|
|||
timotimo | hm. can c++ libraries like SFML be wrapped using zavolaj? | 23:22 | |
i fear they can't :( | |||
23:23
jaldhar_ joined
23:24
bluescreen10 joined
23:25
colomon left
|
|||
jnthn | japhb: Think I may have found a clue to the X issue, but out of hacking time for now. Will see if I can have a go at it tomorrow... | 23:25 | |
timotimo: I think C++ libs are tricky because of the name mangling etc. | |||
dalek | blets: dd5acfd | (Herbert Breunung)++ | docs/appendix-a-index.txt: add spurt to A |
23:26 | |
jnthn | sleep; night o/ | 23:27 | |
23:27
cognominal left
|
|||
timotimo | night jnthn | 23:29 | |
if i have a role with has @!foo and a class that does that role, will it have access to it? or would that have to be has @.foo instead? | 23:31 | ||
23:34
ponpon joined
23:35
cognominal joined,
am0c joined
|
|||
timotimo | ah, i see. | 23:35 | |
23:40
fgomez joined
23:44
lichtkind joined
|
|||
timotimo | r: say $result if my $result = 5 + 6; | 23:46 | |
p6eval | rakudo a308f3: OUTPUT«===SORRY!===Variable $result is not declaredat /tmp/7Y88nJVFHa:1------> say $result⏏ if my $result = 5 + 6;» | ||
timotimo | std: say $result if my $result = 5 + 6; | ||
p6eval | std a8bc48f: OUTPUT«===SORRY!===Variable $result is not predeclared at /tmp/S8Wo7FYaP5 line 1:------> say ⏏$result if my $result = 5 + 6;Check failedFAILED 00:00 43m» | ||
timotimo | right. | ||
diakopter | r: say my $result if $result = 5 + 6; | 23:47 | |
p6eval | rakudo a308f3: OUTPUT«11» | ||
timotimo | oh, that's simple | ||
i'm doing some wicked necromancy | 23:48 | ||
a bit of software that used to require the "alpha" branch of rakudo :) | |||
not saying what it is until i manage to actually make it run | |||
why would $foo ~~ $.bar ever giev me "sorry: virtual call $.bar may not be used on partially constructed objects" inside a submethod? | 23:50 | ||
oh, interestign | 23:51 | ||
diakopter | if it's called from a constructor? | ||
timotimo | turning it from a submethod into a method makes the error go away | ||
so basically submethods might be called from the objects own constructor before it's constructed completely? or something? | |||
diakopter | :? | 23:52 | |
dalek | blets: e91970d | (Herbert Breunung)++ | docs/appendix-a-index.txt: added some see also |
||
timotimo | well, there must be some limitation to methods that are not limitations of submethods | 23:53 | |
lichtkind | hai guys | ||
23:54
ggoebel_ joined
23:55
ponpon is now known as ponbiki
|
|||
lichtkind | is there still a byte smethod but not in Str? | 23:57 | |
benabik | Buf.bytes, perhaps? (guessing) | ||
23:58
fgomez left
|
|||
lichtkind | benabik: thanks i thought so buts where can i look this up? | 23:59 |