»ö« 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.
japhb__ retupmoca: or just: 00:00
nevermind, backlogged and didn't realize it.
00:04 benabik joined
lue Quick sanity check: ("|" denotes where the imaginary "cursor" lies) in the string "a|b", <?before> checks against 'b', and <?after> checks against 'a', correct? 00:08
Mouq lue: yeah 00:12
japhb__ r: say so run </bin/true>
camelia rakudo e55c66: OUTPUT«run is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in sub run at src/RESTRICTED.setting:8␤ in block at /tmp/vgiETL9pw0:1␤␤»
Mouq r: say 'ab' ~~ / \w <?after \w> <?before \w> / 00:13
camelia rakudo e55c66: OUTPUT«「a」␤␤»
Mouq r: say 'ab' ~~ / \w <?after \w> <?before \w> $<b>=b /
camelia rakudo e55c66: OUTPUT«「ab」␤ b => 「b」␤␤»
japhb__ It appears that rakudo-parrot and rakudo-jvm disagree on the boolification of run() results too.
.oO( Where is the masakbot when I need him? )
00:14
Mouq r: say 'ab' ~~ / a <?after a> <?before b> b /
camelia rakudo e55c66: OUTPUT«「ab」␤␤»
lue OK. Perhaps I should look at NQP terminator eater now; it's maddening trying to get mine to work :) (specifically letting the semicolon not required after the echo in -e 'if (1=1) { echo "hi" };'
japhb__: which one is wrong (0 -> True, !0 -> False is right) 00:15
japhb__ rakudo-jvm is wrong
colomon easier to fix than to report the bug? 00:16
[Coke] japhb__: updating r-j to do replace existing is pretty trivial.
working on it.
Mouq lue: Yeah, <eat_terminator> just eats up a ';', matches $, or matches before a terminator like }
japhb__ [Coke]: Thank you! 00:17
colomon [Coke]++
[Coke] adds JVM/MOAR/PARROT tags to nqp issues. 00:18
(just the ability to add them.)
japhb__ has decided this weekend to keep the yak-shaving limit at Rakudo source fixes; anything that requires changes to VM-specific code, I'm handing the shaver to someone else. :-) 00:19
[Coke] if someone could add a test for that feature, it would be helpful.
japhb__ [Coke]++
lue Mouq: well then. mine is actually token term_eat { [ <!before \}> ';'? <.ws> <?before \}> | '}' \h* [';'? \h* \n | ';' \h*] | ';' ] } right now, and works only most of the time. *sigh* :) 00:20
Mouq lue: (Though note that NQP and Rakudo use <?ENDSTMT> to match the 'curly + end of line is statement terminator' rule
[Coke] japhb__: should it also copy attributes if possible? 00:24
japhb__ [Coke]: I don't think so, that's not the behavior of cp by default. 00:25
[Coke] Roger.
lue (my eater is the one that eats the brace, not the blockoid-equivalent (although that's actually probably an artifact of how I did PHPish functions before needing to separate out the { } parser for ex. 6.2))
[Coke] building a version with a fix... 00:26
japhb__ w00t 00:27
[Coke] also adding a "TESTNEEDED" label.. 00:28
lue is <?[stuff]> eqv. to <?before stuff> ?
Mouq Oh, STD uses the same sort of endstmt thing too, it just does it in a nicer way :p
lue (there's also MARKED stuff in the NQP grammar I'll need more detail on later, but hopefully I don't need it. At least it seems to be provided by HLL::Grammar) 00:29
Mouq AFAIK, <?[stuff]> is more like <?before <[stuff]> >, but I don't know the precise difference between <?…> and <?before …> 00:30
TimToady only a syntactic difference 00:31
lue
.oO(This compiler writin' sure is hard. How do you ever manage Perl 6‽) On the plus side, though, I got this sudden sense that I *can* understand Perl 6's grammar and actions now. I at least have my foot in the door.
TimToady the first can only take another assertion-innards, the latter only a full refex
*regex
lue "full regex" as in no <rule> rules, or "full regex" as in everything I can do outside the construct? 00:32
Mouq everything 00:33
TimToady well, consider the difference between <?[...]> and <?before [...]>
the latter are just grouping brackets, and redundant
the former are cclass delims 00:34
lue ah, ok. So my statement "is <?[stuff]> eqv. to <?before stuff> ?" was wrong, and should be <?[stuff]> eqv to <?before [stuff]>
or, no.
TimToady <?foo> means something very different from <?before foo>
lue oh oh, ok. I had completely forgotten the existence of <[ ]> for character classes. <?[ ]> now makes much much more sense. 00:35
TimToady <? recursively calls back into <
<?before calls back into Regex language
00:35 benabik left
TimToady r: say 'foo' ~~ /<?!?!before 'foo'>/ 00:36
camelia rakudo e55c66: OUTPUT«「」␤␤»
TimToady hmm
n: say 'foo' ~~ /<?!?!before 'foo'>/ 00:37
camelia niecza v24-98-g473bd20: OUTPUT«「」␤␤»
lue r: say 'foo' ~~ /<?!?!before 'foo'> (foo)/
camelia rakudo e55c66: OUTPUT«「foo」␤ 0 => 「foo」␤␤»
TimToady oh, yeah, duh
Mouq r: say 'foo' ~~ /<?!?!before (foo)>/ #?
camelia rakudo e55c66: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter ( (must be quoted to match literally)␤at /tmp/RE3isF5bZV:1␤------> say 'foo' ~~ /<?!?!before (foo)>⏏/ #?␤Regex not terminated␤at /tmp/RE3isF5bZV:1␤------> say …»
TimToady n: say so 'foo' ~~ /<?!?!?!?!?!before 'foo'>/ 00:38
camelia niecza v24-98-g473bd20: OUTPUT«True␤»
Mouq r: say 'foo' ~~ /<?!?!before (foo)> / #?
camelia rakudo e55c66: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter ( (must be quoted to match literally)␤at /tmp/tQnVXx4T2f:1␤------> say 'foo' ~~ /<?!?!before (foo)> ⏏/ #?␤Regex not terminated␤at /tmp/tQnVXx4T2f:1␤------> say…»
Mouq r: say 'foo' ~~ /<?!?!before (foo) > / #oh
camelia rakudo e55c66: OUTPUT«「」␤␤»
lue n: say 'foo' ~~ /<?!?!before (foo)> / #?
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Unable to parse capture parens at /tmp/hEZszNBhZ8 line 1:␤------> say 'foo' ~~ /<?!?!before (⏏foo)> / #?␤Couldn't find final ')'; gave up at /tmp/hEZszNBhZ8 line 1:␤------> say 'foo' ~…» 00:39
Mouq lue: ')>' is a metacharacter
lue ( niecza has a better error message, assuming )> is being misinterpreted as part of <( )> )
Although the best error would be "found )> but not <(" imo 00:40
TimToady std: say 'foo' ~~ /<?!?!before (foo)> / 00:41
camelia std a0bcfb1: OUTPUT«ok 00:01 126m␤»
Mouq checks on his branch and the error is now the same as nieczas. Woo.
dalek p: 329bff6 | coke++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
(same behavior as nqp-p)
TimToady std treats the ) terminator as more important than the )> LTM
[Coke] japhb__: ^^
ah, crap. 00:42
can't reference the issue number on the first column of the line, or it's a comment! whoops.
lue I can't decide if the best error for that situation would complain about (, no ), no <(, or )> :/ 00:45
(maybe a special error message for <( ... ) or ( ... )> screwups?)
00:46 [particle] joined
TimToady the correct thing would be to parse it correctly like STD does 00:48
in general, terminators should be considered stronger than LTM 00:50
00:50 dayangkun joined, dayangkun left 00:51 dayangkun joined
lue this feels a bit like that std::vector<std::vector<object>> thing C++11 fixed. 00:51
[Coke] any way to add a label to a pull request on github? 00:52
lue [Coke]: I wouldn't know. 00:56
dalek p: 309fb1c | coke++ | src/vm/parrot/QAST/Operations.nqp:
Remove concat_s fossil opcode

Fixes #138
00:58
japhb__ [Coke]++ # copy fix 00:59
[Coke] japhb__: hopefully it helps with panda. g'luck. 01:00
lue is MARKER/MARKED used to set/look for various flags to see if things happened in other rules? If so, then in NQP::Grammar <?MARKED('endstmt')> checks for the use of the ENDSTMT rule recently, correct? 01:03
(And I would assume said flags are subject to some sort of scoping rules, because there don't seem to be any UNMARKER things.) 01:05
Waitaminute. Isn't line 49 in NQP/Grammar.nqp redundant? Doesn't <.unv>? effectively cover \h* ? 01:08
r: say so "" ~~ /\h*/; say so "" ~~ /[\h+]?/; 01:09
camelia rakudo e55c66: OUTPUT«True␤True␤»
Mouq It looks like MARKER('thing') sets a hash in the cursor with %h<thing> = <<<Something cursor related>>>, so that's scoped
lue It had to be, or else one ENDSTMT and then you'd never have a false MARKED('endstmt') again. 01:10
aren't I right with Grammar.nqp:49 though? Or is that there because the contents of <.unv> aren't guaranteed to have a \h+ alternation?
Mouq I believe <<<Something cursor related>>> is a cursor eqv to <?> 01:12
lue: Looks like it
lue will go to update NQP, and then compare spectests with/without line 49
Mouq Although it may be an optimization 01:13
lue That's what I was thinking, but the alternation uses |, not ||. (At least, that's what I'd use unless || causes more problems) 01:14
Mouq Wouldn't || throw away the any \h* already matched? 01:15
lue I don't know about that. Point is, it's functionally useless, but I can't say I've ruled out some optimization use for it. 01:17
01:18 woosley joined
Mouq r: say 'ab' ~~ /a<.ws>b/ 01:19
camelia rakudo e55c66: OUTPUT«Nil␤»
Mouq r: say 'ab' ~~ /a<.unv>b/
camelia rakudo e55c66: OUTPUT«No such method 'unv' for invocant of type 'Cursor'␤ in regex at /tmp/gROLV_zIEA:1␤ in method ACCEPTS at src/gen/CORE.setting:12249␤ in method ACCEPTS at src/gen/CORE.setting:750␤ in block at /tmp/gROLV_zIEA:1␤␤»
Mouq r: say 'ab' ~~ /a<!ww>b/
camelia rakudo e55c66: OUTPUT«Nil␤»
Mouq r: say 'ab' ~~ /a<ww>b/
camelia rakudo e55c66: OUTPUT«「ab」␤ ww => 「」␤␤»
Mouq r: say 'ab' ~~ /a [ \h* | [<!ww>\h+]? ] b/ 01:20
camelia rakudo e55c66: OUTPUT«「ab」␤␤»
01:20 grondilu joined
lue r: say "a\nb" ~~ /a $$ b/; # I could swear $$ doesn't eat the newline, but I think I'm mistaken. 01:20
camelia rakudo e55c66: OUTPUT«Nil␤»
Mouq Oh, wait 01:21
lue (nvm, ENDSTMT takes care of it with <.ws>. Durp.)
Mouq r: say "a\nb" ~~ /a [<!ww><.ws>] b/ 01:22
camelia rakudo e55c66: OUTPUT«「a␤b」␤␤»
Mouq r: say "a\nb" ~~ /a [<!ww>$$] b/
camelia rakudo e55c66: OUTPUT«Nil␤»
Mouq r: say "a\nb" ~~ /a [<!ww><.ws>$$] b/
camelia rakudo e55c66: OUTPUT«Nil␤»
Mouq r: say "a\nb" ~~ /a [<!ww>\h*$$] b/
camelia rakudo e55c66: OUTPUT«Nil␤»
Mouq r: say "a\nb" ~~ /a [\h*$$] b/
camelia rakudo e55c66: OUTPUT«Nil␤»
Mouq r: say "a\nb" ~~ /a [\h*$$<.ws>] b/ 01:23
camelia rakudo e55c66: OUTPUT«「a␤b」␤␤»
Mouq r: say "a\nb" ~~ /a [<.ws>$$<.ws>] b/
camelia rakudo e55c66: OUTPUT«Nil␤»
Mouq ENDSTMT has line 48 to eat the case '}␤', me thinks 01:24
lue 49 you mean?
Mouq Yeah 01:25
lue r: say "}\n" ~~ /\h* $$ <.ws>/
camelia rakudo e55c66: OUTPUT«「␤」␤␤»
lue r: say "}\n" ~~ /[<!ww> [\v+ | '#' \N* | \h+]*]? $$ <.ws>/ # relevant bits of <.unv> in outermost [] 01:26
camelia rakudo e55c66: OUTPUT«「␤」␤␤»
lue oh wait, I accidentally took ws. Where's my head? 01:27
r: say "}\n" ~~ /[[\h* '#' \N* | \h+]]? $$ <.ws>/ # relevant bits of <.unv> in outermost [] 01:28
camelia rakudo e55c66: OUTPUT«「␤」␤␤»
01:30 sciurius left
[Coke] looking at rakudo's src/core/Mu.pm - there's a huge #?if parrot conditional that seems to differ only by use of atpos in one side, and atpos_s in the other ... but all the vm's have atpos_s 01:39
[Coke] tries ripping out the java path and doing a build... 01:40
lue it looks like the \h* line was added the same time .unv's current contents are, so there's some reason for the redundancy to be a speed optimization perhaps. 01:44
Then again, those changes were instated in 2011, so I'd be surprised if those measures were still necessary. 01:46
pre-redundancy removal: Files=98, Tests=2236, 189 wallclock secs ( 0.86 usr 0.17 sys + 173.19 cusr 8.80 csys = 183.02 CPU) 01:56
post-redundancy removal: Files=98, Tests=2236, 185 wallclock secs ( 0.84 usr 0.14 sys + 172.42 cusr 8.91 csys = 182.31 CPU)
(The times are close enough that I should probably run 'make test' a couple more times each way. But so far there seems a slight improvement in times.) 01:57
lue &
dalek p/stdsigspace: 05b0c30 | Mouq++ | src/QRegex/P6Regex/ (2 files):
Panic after a null regexes ( RT #77784 )

Now catches and dies on more (hopefully all) null regexes, un-terminated regexes, and unrecognized metacharacters
02:09
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77784
02:12 mtk left
TimToady Mouq++ 02:12
02:12 hypolin joined
Mouq Alas, I missed some! / || a || / dies as unrecognized metacharacter | 02:17
TimToady std: / || a || / 02:18
camelia std a0bcfb1: OUTPUT«===SORRY!===␤Null pattern not allowed at /tmp/TGblNyjSXi line 1:␤------> / || a || ⏏/␤Parse failed␤FAILED 00:00 121m␤»
TimToady still appreciates that someone is working on it
it's a pretty important thing
Mouq n: / || a || / 02:19
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Null pattern not allowed at /tmp/9SAuDtKpk3 line 1:␤------> / || a || ⏏/␤␤Parse failed␤␤»
TimToady niecza's parser is pretty close to STD
dalek p/stdsigspace: d565a90 | Mouq++ | src/QRegex/P6Regex/Grammar.nqp:
Replace <.throw_null_pattern> on regex infixes
02:21
02:34 odoacre joined
dalek ast: a5ab705 | coke++ | S12-enums/thorough.t:
Add test for RT #101900
02:38
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=101900
02:48 xenoterracide joined 02:55 grondilu left 03:13 integral left 03:16 araujo left 03:17 xinming left 03:19 xinming joined 03:22 [particle] left 03:23 Quom joined 03:24 Bucciarati left, TimToady left 03:25 TimToady joined, Mouq left
dalek p: db37f2d | dwarring++ | examples/rubyish/ (12 files):
added rubyish unless blocks
03:25
03:25 Bucciarati joined 03:38 preflex left 03:40 preflex joined, ChanServ sets mode: +v preflex 03:45 SmokeMachine joined
Quom n: say 'ab cd' ~~ /:s $<w>=[\w+] / 03:45
camelia niecza v24-98-g473bd20: OUTPUT«「ab 」␤ w => 「ab」␤␤»
Quom n: say 'ab cd' ~~ /:s $<w>=[\w+]/
camelia niecza v24-98-g473bd20: OUTPUT«「ab」␤ w => 「ab」␤␤»
Quom n: say 'ab cd' ~~ /:s $<w>=\w+ /
camelia niecza v24-98-g473bd20: OUTPUT«「ab 」␤ w => 「ab」␤␤»
Quom n: say 'ab cd' ~~ /:s $<w>= \w+ / 03:46
camelia niecza v24-98-g473bd20: OUTPUT«「ab 」␤ w => 「ab」␤␤»
Quom n: say 'ab cd' ~~ /:s $<w>=[\w+ ] / 03:49
camelia niecza v24-98-g473bd20: OUTPUT«「ab 」␤ w => 「ab 」␤␤»
Quom Hmm :(
Niecza does what I think makes sense, but it differs in what I think STD does 03:50
TimToady: ping 03:52
03:53 fridim_ joined
TimToady how is STD different? 04:00
Quom Just going by source, /:s $<w>=\w+ / will grab "\w+<.ws>" for $<w> 04:03
Niecza doesn't grab the final sigspace 04:04
BenGoldberg r: say 1 [R[R~]] 2 04:14
camelia rakudo e55c66: OUTPUT«12␤»
Quom r: say 1 RR~ 2 04:16
camelia rakudo e55c66: OUTPUT«12␤»
Quom r: say 1 RRRRRRRRRRRRRRRRRR~ 2
camelia rakudo e55c66: OUTPUT«12␤»
BenGoldberg r: say 'abcd' ~~ /(\w\w)(\w\w)/ 04:17
camelia rakudo e55c66: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
BenGoldberg r: say /(\w\w)(\w\w)/ [R~~] 'abcd'
lue some times: gist.github.com/lue/7078598 (I'm not pushing this change, in any case, until jnthn has a chance to see it. But it does appear to save a couple of seconds in the tests at least.)
camelia rakudo e55c66: OUTPUT«True␤»
BenGoldberg Why True, instead of 0 => ab, 1 => cd ? 04:18
r: say (/(\w\w)(\w\w)/ [R~~] 'abcd').WHAT
camelia rakudo e55c66: OUTPUT«(Bool)␤»
BenGoldberg r: say (/(\w\w)(\w\w)/ R~~ 'abcd').WHAT 04:19
camelia rakudo e55c66: OUTPUT«(Bool)␤»
Quom BenGoldberg: I'd wager bug
BenGoldberg r: say (/(\w\w)(\w\w)/ ~~ 'abcd').WHAT
camelia rakudo e55c66: OUTPUT«(Bool)␤»
BenGoldberg r: say (/(\w\w)(\w\w)/ ~~ 'abcd')
camelia rakudo e55c66: OUTPUT«False␤»
04:21 [Sno] left
BenGoldberg r: say <Another> [R,] <Perl> [R,] <Hacker> 04:21
camelia rakudo e55c66: OUTPUT«Too many positional parameters passed; got 3 but expected 2␤ in block at src/gen/CORE.setting:16364␤ in block at /tmp/Fxq45QMJg9:1␤␤»
BenGoldberg r: say <Another> [R,] <Perl> , <Hacker>
camelia rakudo e55c66: OUTPUT«Perl Hacker Another␤»
BenGoldberg r: say <Another>, <Perl> R, <Hacker>
camelia rakudo e55c66: OUTPUT«AnotherHacker Perl␤»
BenGoldberg r: say <Another> R, <Just>, <Perl> R, <Hacker> 04:22
camelia rakudo e55c66: OUTPUT«Just Hacker Perl Another␤»
BenGoldberg r: say <Hacker> R, <Perl>, <Just> R, <Another>
camelia rakudo e55c66: OUTPUT«Perl Another Just Hacker␤» 04:23
BenGoldberg r: say 1 R, 2, 3 R, 4
camelia rakudo e55c66: OUTPUT«2 4 3 1␤»
BenGoldberg r: say <Hacker> R, <Just>, <Perl> R, <Another> 04:24
camelia rakudo e55c66: OUTPUT«Just Another Perl Hacker␤»
BenGoldberg r: say 1 R, 2, 3 R, 4, 5 R, 6
camelia rakudo e55c66: OUTPUT«2 4 6 5 3 1␤»
BenGoldberg r: say 1 R, 2, 3 R, 4, 5 R, 6, 7 R 8
camelia rakudo e55c66: OUTPUT«===SORRY!=== Error while compiling /tmp/AZCm_GJVBR␤Two terms in a row␤at /tmp/AZCm_GJVBR:1␤------> say 1 R, 2, 3 R, 4, 5 R, 6, 7 R⏏ 8␤ expecting any of:␤ postfix␤ infix stopper␤ infix …»
BenGoldberg r: say 1 R, 2, 3 R, 4, 5 R, 6, 7 R, 8
camelia rakudo e55c66: OUTPUT«2 4 6 8 7 5 3 1␤»
BenGoldberg r: say 5 R... 1 04:26
camelia rakudo e55c66: OUTPUT«1 2 3 4 5␤»
BenGoldberg r: say 5 R... 1 R, 0
camelia rakudo e55c66: OUTPUT«Too many positional parameters passed; got 3 but expected 2␤ in block at src/gen/CORE.setting:16364␤ in block at /tmp/lFmQaguGxx:1␤␤»
BenGoldberg r: say 0 R, 5 R... 1 04:27
camelia rakudo e55c66: OUTPUT«1 2 3 4 5 0␤»
BenGoldberg n: say <Another>, <Perl> R, <Hacker>
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤"," and "R," are non-associative and require parens at /tmp/XprUQXRzvk line 1:␤------> say <Another>, <Perl> R, ⏏<Hacker>␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/bo…»
BenGoldberg n: say (/(\w\w)(\w\w)/ R~~ 'abcd')
camelia niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤» 04:28
BenGoldberg rn: say (/(\w\w)(\w\w)/ R~~ 'abcd')
camelia rakudo e55c66: OUTPUT«True␤»
..niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
BenGoldberg rn: say ('abcd' ~~ /(\w\w)(\w\w)/)
camelia rakudo e55c66, niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
BenGoldberg n: say <Hacker> R, <Just>, <Perl> R, <Another> 04:29
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤"R" and "," are non-associative and require parens at /tmp/fGYs8f9_P8 line 1:␤------> say <Hacker> R, <Just>, ⏏<Perl> R, <Another>␤␤"," and "R," are non-associative and require parens at /t…»
BenGoldberg r: say <Hacker> R, <Just>, <Perl> R, <Another>
camelia rakudo e55c66: OUTPUT«Just Another Perl Hacker␤»
retupmoca so what does R actually do?
BenGoldberg It reverses the order of it's arguments 04:30
Or rather, it's a meta-operator, which modifies a normal operator to create a "new" operator with the argument order reversed
So 'a'~'b' is the same as 'b'R~'a' 04:31
retupmoca I gotcha
04:32 skids left
BenGoldberg Rakudo clearly is doing the wrong thing with 'str' R~~ /regex/; Niecza has it right 04:33
Rakudo is probably doing the wrong thing with two R, operators in one expression, niecza is probably doing the right thing
But I'm not sure 04:34
I would have expected this:
r: say 1 R, 2, 3 R, 4, 5 R, 6, 7 R, 8 04:35
camelia rakudo e55c66: OUTPUT«2 4 6 8 7 5 3 1␤»
BenGoldberg To produce 2, 1, 4, 3, 6, 5, 8, 7
04:35 fridim_ left
BenGoldberg I think. 04:35
r: say [*] 1..6 04:37
camelia rakudo e55c66: OUTPUT«720␤»
BenGoldberg r: say [\*] 1..6
camelia rakudo e55c66: OUTPUT«1 2 6 24 120 720␤»
BenGoldberg r: say [\,] 1..6
camelia rakudo e55c66: OUTPUT«1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6␤»
BenGoldberg r: say [\R,] 1..6
camelia rakudo e55c66: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in block at src/gen/CORE.setting:16364␤ in block at src/gen/CORE.setting:16467␤ in any coro at src/gen/CORE.setting:7306␤ in method reify at src/gen/CORE.setting:7288␤ in method rei…»
BenGoldberg n: say [\,] 1..6
camelia niecza v24-98-g473bd20: OUTPUT«1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6␤»
BenGoldberg n: say [\R,] 1..6 04:38
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: No value for parameter 'anon_1' in 'ANON'␤ at /tmp/QH_6u5U1it line 0 (ANON @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2755 (reduceop @ 12) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2722 (ANON @ 7) ␤ at <un…»
BenGoldberg n: say [R,] 1..6
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Excess arguments to ANON, used 2 of 6 positionals␤ at /tmp/CNwvzk3k8_ line 0 (ANON @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2755 (reduceop @ 12) ␤ at /tmp/CNwvzk3k8_ line 1 (mainline @ 3) ␤ at /home/p6eval/ni…»
BenGoldberg n: say [R,] 1..6
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Excess arguments to ANON, used 2 of 6 positionals␤ at /tmp/tvbTjePqx1 line 0 (ANON @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2755 (reduceop @ 12) ␤ at /tmp/tvbTjePqx1 line 1 (mainline @ 3) ␤ at /home/p6eval/ni…»
BenGoldberg r: say [R,] 1..6
camelia rakudo e55c66: OUTPUT«Too many positional parameters passed; got 6 but expected 2␤ in block at src/gen/CORE.setting:16364␤ in sub at src/gen/CORE.setting:16471␤ in block at /tmp/keRC6oUVxE:1␤␤»
BenGoldberg r: say [\R,] 1..6 04:39
camelia rakudo e55c66: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in block at src/gen/CORE.setting:16364␤ in block at src/gen/CORE.setting:16467␤ in any coro at src/gen/CORE.setting:7306␤ in method reify at src/gen/CORE.setting:7288␤ in method rei…»
BenGoldberg rn: say [\R~] 1..5 04:41
camelia rakudo e55c66: OUTPUT«1 21 321 4321 54321␤»
..niecza v24-98-g473bd20: OUTPUT«Unhandled exception: No value for parameter 'anon_1' in 'ANON'␤ at /tmp/oNlzzGzSZH line 0 (ANON @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2755 (reduceop @ 12) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2722 (ANON @ 7) ␤ at <un…»
BenGoldberg rn: say [R~] 1..5 04:42
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Excess arguments to ANON, used 2 of 5 positionals␤ at /tmp/GkRoSYuPZs line 0 (ANON @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2755 (reduceop @ 12) ␤ at /tmp/GkRoSYuPZs line 1 (mainline @ 3) ␤ at /home/p6eval/ni…»
..rakudo e55c66: OUTPUT«54321␤»
BenGoldberg rn: say [~] 1..5
camelia rakudo e55c66, niecza v24-98-g473bd20: OUTPUT«12345␤»
Quom r: sub f (*@a) { (@a-1||return @a)&&&[,](@a[*/2..*].&f,@a[0..^(*-1)/2].&f) }; .print for f 'Just another Perl hacker'.flip.comb 04:44
camelia rakudo e55c66: OUTPUT«Just another Perl hacker»
Quom ... I *could* have flipped 'Just anoth…', but I like my programs to be self-documenting 04:47
04:49 Quom is now known as Mouq 04:54 ggoebel12 joined
TimToady Mouq: I suspect that STD handles the extra ws in the action rules somehow 04:56
04:57 ggoebel11 left
Mouq TimToady: Okay, I'll have NQP/Rakudo do the same an Niecza then 04:58
TimToady niecza's behavior looks correct, anyway 04:59
at least in that case :) 05:00
Mouq It makes sense there, since to do right otherwise is:
n: say 'ab cd' ~~ /:s [$<w>=[\w+]]/
camelia niecza v24-98-g473bd20: OUTPUT«「ab」␤ w => 「ab」␤␤»
TimToady sure, sigspace is supposed to be an "oh, by the way, after you're done, skip to the next token" 05:02
STD was attaching it mostly to make it easier to write translators back to P6 and to P5, iirc
05:02 LWA joined
TimToady it needs to attach somewhere if you're going to preserve the comments... 05:03
05:05 BenGoldberg left
TimToady there are, I imagine, a lot of spots where the current parser depends on the old semantics of :s 05:16
s/current/current rakudo/
05:29 kaleem joined 05:31 LWA left 05:32 [Sno] joined, LWA joined
moritz \o 05:33
TimToady o/ 05:40
moritz chocolate cake for breakfast \o/ 05:42
Mouq n: say 'a , a, a ' ~~ /:s $<v>= a* % \, / 05:43
camelia niecza v24-98-g473bd20: OUTPUT«「a , a, a 」␤ v => 「a , a, a」␤␤»
Mouq Uggghhhh do I really have to try converting QRegex to use EXPR to make this work right? 05:44
moritz is that what STD and Niecza do? 05:45
TimToady that doesn't look right, offhand 05:46
moritz hopes not
Mouq++ # nqp/stdsigspace
TimToady that form shouldn't allow whitespace after 'a' and before the comma 05:47
Mouq n: say 'a , a, a ' ~~ /:s $<v>= a *% \, / 05:49
camelia niecza v24-98-g473bd20: OUTPUT«「a , a, a 」␤ v => 「a , a, a」␤␤»
Mouq I think it's just ignoring the final whitespace if it's $<var>=binding 05:50
TimToady n: say 'a , a, a ' ~~ /:s $<v>= a*% \, / 05:52
camelia niecza v24-98-g473bd20: OUTPUT«「a , a, a 」␤ v => 「a , a, a」␤␤»
TimToady n: say 'a , a, a ' ~~ /:s $<v>= a*%\, /
camelia niecza v24-98-g473bd20: OUTPUT«「a 」␤ v => 「a」␤␤»
05:53 SamuraiJack joined
Mouq n: say 'a , a, a ' ~~ /:s a*%\, / 05:53
camelia niecza v24-98-g473bd20: OUTPUT«「a 」␤␤»
TimToady I think that's the old semantics for ws around %
Mouq n: say 'a , a, a ' ~~ /:s a*% \, /
camelia niecza v24-98-g473bd20: OUTPUT«「a , a, a 」␤␤»
TimToady niecza hasn't caught up with that part of it
so don't copy that part :) 05:54
in the new semantics, the spaces around % don't matter at all 05:55
only the space after the a or the space after the comma
05:56 dayangkun left
TimToady which is why the form a +% ',' is recommended if you want spaces on either side of the comma 05:56
that is, / a +% ',' / 05:57
it's actually a simplification of the old rules to be more consistent
Mouq consistency++ 05:59
TimToady okay, I lied a little 06:00
if you write / a+ % ',' / then the space before % is significant, and applies after the whole thing matches
'sigfinal' in STD's quantified_atom rule
it just doesn't matter if you write space before the + since that already eats the final ws anyway 06:01
06:01 sciurius joined
Mouq std: / )>* / 06:10
camelia std a0bcfb1: OUTPUT«ok 00:01 122m␤»
TimToady yeah, it oughta catch that as quantifying something that is known to be 0 width 06:14
I don't remember why those lines are commented out
06:16 denisboyun joined
TimToady though in any case it should perhaps allow it under %, since '' +% ',' make a perverse kind of sense 06:17
06:18 darutoko joined
TimToady though arguably in that case it's not really '' that it's quantify, but some combination of '' and ',' 06:19
*fying
06:42 REPLeffect left 06:48 FROGGS left 06:52 araujo joined
jnthn morning, #perl6 06:58
06:58 dayangkun joined
moritz \o * 06:59
frettled g'morning!
dalek p/unified-build: dbbd3ac | moritz++ | / (2 files):
[Configure] write single Makefile for multiple backends

does not work yet properly, because several targets are defined multiple times
07:07
p/unified-build: a1267ed | moritz++ | tools/build/Makefile- (3 files):
[build] untagle build targets

you can now write "perl Configure.pl --backends=parrot,jvm" and then "make p-all" and "make j-all", and it will build both nqp-parrot and nqp-jvm (though the launchers might still be confused)
nqp/unified-build: 617e6d8 | moritz++ | tools/build/Makefile- (3 files):
nqp/unified-build: [build] unify "clean:" handling a bit
07:19 Mouq left 07:31 dmol joined 07:33 Mouq joined 07:38 denisboyun left 07:46 xinming_ joined 07:49 xinming left 07:55 FROGGS joined 08:16 iSlug joined 08:19 LWA left, donaldh left 08:20 LWA joined 08:21 donaldh joined 08:36 daxim joined 08:49 FOAD left 08:50 FOAD joined 08:51 dakkar joined 08:59 dayangkun left
jnthn arnsholt: I think I figured out the bug. At github.com/perl6/nqp/blob/master/s...e.java#L39 it just clones the delegate if there is one, for efficiency. But in change_type, if there is a delegate, we update only the obj.st = newType.st; but fail to update obj.delegate.st to newType.st so the clone ends up with an out-of-date st 09:06
arnsholt: The solution is thus presumably to update delegate.st if there is an obj.delegate
arnsholt That sounds very promising, yeah 09:07
jnthn can't try it as at $teaching_gig :) 09:10
arnsholt Giving it a whirl now 09:11
Success! 09:12
jnthn++ 09:13
jnthn \o/ 09:15
arnsholt++ for golfing it to something that led to figuring it out :)_
bbl
09:16 kurahaupo joined 09:17 dayangkun joined
dalek rlito: 87aa50b | (Flavio S. Glock)++ | / (2 files):
Perlito5 - command line - start with no-strict
09:23
p: a141179 | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/NativeCallOps.java:
Add missing break.
09:27
p: 90244ee | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/P6Opaque.java:
Update the STable of delegates in P6Opaque.change_type.

This fixes a bug where cloning a P6Opaque resulted in an object of the wrong type if the opaque had a delegate and was then change_type-d without needing to introduce a new delegate. Thus obj.st != obj.delegate.st. Since P6OpaqueBaseInstance.clone simply clones the delegate if one is present, this resulted in an object of the wrong type under these conditions.
moritz does the moarvm backend suffer from the same bug? 09:30
and do we have a unit test?
09:34 ssutch left
arnsholt My test script can probably be turned into a unit test 09:34
I don't think Moar's P6Opaque will use delegates though, since it can do C shenanigans similar to what the Parrot implementation does 09:35
09:35 iSlug left
moritz ah 09:35
arnsholt: if you nopaste your test script somewhere, I can look into turning it into a unit test 09:36
arnsholt gist.github.com/arnsholt/7059777
The crux is that the first mixin introduces a new attribute (which means we need a delegate), but the second one does not 09:37
moritz that's Perl 6 level, right?
arnsholt Yeah
09:38 iSlug joined
arnsholt The nqp op you'll want to use is nqp::rebless 09:38
moritz I'm not sure I'll be able to translate this to nqp :-)
arnsholt The does magic happens in Rakudo's src/Perl6/Metamodel/Mixins.nqp 09:39
I think those bits should be more or less applicable to NQP's HOWs as well 09:40
moritz arnsholt: and in the end, &test.name eq 'what we want' should be true, right? 09:41
arnsholt No, nqp::can(nqp::clone($obj), 'bar') should return true 09:42
I'll try to wrangle it into submission as NQP code later today or tonight 09:43
09:53 kurahaupo left, kurahaupo joined 09:54 denisboyun joined
dalek rlito: e1a3c3f | (Flavio S. Glock)++ | / (3 files):
Perlito5 - js - goto fix
10:05
10:07 lue left 10:08 lue joined 10:16 xenoterracide left 10:24 fhelmberger joined 10:55 denisboyun left 10:58 dayangkun left 10:59 pernatiy joined, iSlug left 11:01 iSlug joined 11:08 kaleem left
diakopter .tell TimToady www.drdobbs.com/mobile/facebook-ado.../240162694 11:25
yoleaux diakopter: I'll pass your message to TimToady.
diakopter .tell stevan www.infoworld.com/print/228905 11:27
yoleaux diakopter: I'll pass your message to stevan.
diakopter stevan_: ^
dalek rlito: 88e5ab4 | (Flavio S. Glock)++ | / (3 files):
Perlito5 - js - cleanup
11:30
11:54 LWA left 12:07 rindolf joined
rindolf Hi all. 12:07
12:08 kaleem joined
jnthn moritz, arnsholt: All of Moar, JVM and Parrot implement change_type differently 'cus they all have sufficiently different memory models :) 12:11
arnsholt Oh, right. Good to know
jnthn The Moar one doesn't have the risk the JVM one does 'cus it doesn't store a duplicate st pointer anywhere.
arnsholt I'll try to make a unit test for this, in case of refactoring or some such 12:12
jnthn Yeah
It can go in NQP
Tehre's no does operator
arnsholt Yeah
jnthn but .HOW.mixin(...) is there
arnsholt Oh, that makes it a lot simpler
12:15 pdurbin left
jnthn arnsholt: Does that fix nicely unblock nativecall work? :) 12:17
arnsholt It was mostly unblocked by the box_target fix you put in a while back 12:21
This was an annoying failure in the very first test file
jnthn *nod*
Good to have it out of the way.
12:22 iSlug left
arnsholt Yeah, definitely 12:22
jnthn Hopefully, November brings the JVM Star 12:23
12:24 grondilu joined
jnthn
.oO( In my mind and in my car... )
12:24
arnsholt Once I put in a TODO (the very weird null string bug, if you remember), this means we now have three out of eight Zavolaj test files working
The three easy ones, but still
jnthn yay :)
I guess arrays and structs next? 12:25
arnsholt Arrays, probably then structs 12:26
12:26 kaleem left
jnthn CArray will probably be the same pain as VMArray 12:26
Since the JVM needs you to tell it want kinda memory you're working with for the array
Whereas in C you can just screw
Wonder if it's possible to base CArray off VMArray somehow... 12:27
arnsholt Troo that
CStruct might be easier, although CStruct will probably involve generating classes a la P6Opaque 12:28
jnthn aye, but you can nab the existing code :D
arnsholt I know =D
jnthn and you don't have to support mixins... :)
arnsholt Actually, I might do callbacks first. They look to be reasonably straightforward in JNA \o/
jnthn ooh
dalek volaj: d5fbad0 | (Arne Skjærholt)++ | t/02-simple-args.t:
Skip a test on JVM for the time being.
12:29
volaj: 50bcadd | (Arne Skjærholt)++ | t/03-simple-returns.t:
Mark a test as TODO on JVM.
12:29 mtk joined
arnsholt rj: say Int.REPR 12:31
camelia rakudo-jvm e55c66: OUTPUT«java.lang.NoSuchMethodError: org.perl6.rakudo.RakOps.p6reprname(Lorg/perl6/nqp/sixmodel/SixModelObject;Lorg/perl6/nqp/runtime/ThreadContext;)Lorg/perl6/nqp/sixmodel/SixModelObject;␤␤»
arnsholt That's a missing s/p6//, right?
Hmm, no 12:32
r: say Int.REPR
camelia rakudo e55c66: OUTPUT«P6opaque␤» 12:33
arnsholt Heh, it's a NYI I think 12:34
[Coke] yawns, and heads off to $dayjob 12:36
jnthn wow, a real NYI! 12:37
I wonder if it's tested...
masak doubt it.
jnthn same 12:39
If there were a fudge-on-JVM test for it I'd probably have been like "om nom LHF" :) 12:40
*fudged
.oO( "fadge" )
13:03 SamuraiJack left
arnsholt I'll have a look. If there's no test I'll add one 13:05
13:10 denis_boyun joined 13:15 iSlug joined 13:21 woolfy left, dmol left 13:24 woolfy joined 13:27 iSlug left 13:31 lowpor03 joined, iSlug joined 13:35 colomon left 13:37 btyler joined 13:38 colomon joined 13:44 ajr joined, ajr is now known as Guest95761, Guest95761 is now known as ajr_ 13:46 bluescreen10 joined 13:48 lowpor03 left
dalek rlito: 5b2a060 | (Flavio S. Glock)++ | / (3 files):
Perlito5 - js - infrastructure for variable redeclaration
13:50
13:53 woolfy left, woolfy1 joined
arnsholt So, Rakudo has a directory t/02-rakudo but there doesn't seem to be any targets that actually run those tests. Wat? 13:54
13:58 skids joined 14:02 denis_boyun left
moritz I think I noticed that too, once, and then ignored it again 14:03
14:05 fhelmberger left 14:09 colomon left 14:15 jnap joined, colomon joined 14:21 sqirrel joined
masak this afternoon, I have wrested some time away from $dayjob to work on t4 reviews. 14:24
also, I will keep thinking about good macro use cases. 14:25
mathw macros are great if you want a new loop structure that writes 'And we're going round again' to a filehandle every time it loops 14:28
...I really hope you don't want one of those, though 14:29
I've always suspected the best use of macros is for writing really neat libraries and frameworks
that seems to be how they get used in Lisps
14:31 denis_boyun joined 14:32 colomon left
masak aye. 14:33
arnsholt jnthn: Any ideas about the AWOL test file in Rakudo?
jnthn no :)
arnsholt Right
masak mathw: at its simplest: APIs package relatively inconvenient computations into relatively convenient names, chunking them and allowing the user to focus on the "what", not the "how".
jnthn oh...I see it 14:34
14:34 rindolf left
jnthn I think it's a test for something Rakudo has but is not spec 14:34
dalek kudo/nom: e9830d3 | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java:
Implement p6reprname op on JVM.
jnthn Actually that'd be a sane place to put testse like :from<jvm>
masak mathw: subroutines do that during runtime. macros do that during compile time.
jnthn Which are not spec but still Rakudo-provided.
We should probably run them as aprt of make test
arnsholt Yeah =)
jnthn Also, 00-parrot and 01-sanity could really just merge into 01-sanity :) 14:35
arnsholt But .REPR is spec, right?
jnthn Yes
It is
The p6reprname exists in order to hand back a Perl 6 Str
Maybe we should have a t/jvm and t/parrot for the vm-specific things
Rather than running then skip-alling 09-pir.t on Rakudo JVM 14:36
14:38 colomon joined
arnsholt True 14:38
My test for p6reprname is just making sure Foo.REPR works though
Since in Rakudo .REPR delegates to p6reprname
mathw masak: quite. I suspect macros might be a little less useful in Perl 6 compared to if, say, C# had them, because Perl 6 has the ability to add methods to classes at runtime etc. 14:39
masak mathw: it reduces but does not remove the need for and usefulness of macros. 14:40
mathw Oh I'm not about to argue they're unnecessary
People are going to do awesome things with them
Maybe even me
masak the difference is simply that: BEGIN semantics rather than mainline semantics. 14:41
all that stuff with ASTs is simply necessary because the two worlds operate with different currencies. 14:42
mathw yeah
14:42 denis_boyun left
dalek p: 92a3962 | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/NativeCallOps.java:
Add a missing decont.
14:44
tadzik oh, the backlog 14:48
hello #perl6
jnthn tadzik: I'd say hello, but it'd make more backlog :P
tadzik it's now frontlog :P
masak .oO( it's... NOW fr... no, wait... here it comes... NOW... dang it... ) 14:50
tadzik: "Yesterday is history, tomorrow is a mystery. Today? Today is a gift." 14:51
tadzik: "That’s why we call it the present." :P
14:52 lizmat left
arnsholt All right, four test files working =D 14:52
14:52 lizmat joined
jnthn Go arnsholt! 14:53
arnsholt: Which one did you make pass? :) 14:54
14:54 LWA joined
tadzik masak: hm hm, where did I hear that befoer? :) 14:55
14:56 iSlug left
masak tadzik: Kung Fu Panda. 14:56
14:57 benabik joined
tadzik hm, never seen that one :) 14:58
arnsholt jnthn: 04-pointers
14:58 araujo left
arnsholt All that was blocking it was Foo.REPR, so it was really easy as well 14:59
14:59 araujo joined, kurahaupo left 15:00 kurahaupo joined
arnsholt The deps in the test files mean that callbacks block on structs, and the refresh things block on both arrays and structs 15:00
15:06 colomon left 15:10 kurahaupo_ joined, kurahaupo left 15:11 kurahaupo joined, kurahaupo_ left 15:16 kurahaupo_ joined, kurahaupo left 15:19 robinsmidsrod left, colomon joined 15:20 robinsmidsrod joined 15:23 [Sno] left
jnthn arnsholt: Well, I suspect module usage wise, arrays and structs are most depended on by e.g. MiniDBI 15:23
grondilu rn: say join ",", ([^3], [<foo bar>])»[] 15:24
camelia rakudo e9830d, niecza v24-98-g473bd20: OUTPUT«0 1 2,foo bar␤»
grondilu was expecting 0,1,2,foo,bar
rn: say join ",", ([^3], [<foo bar>])».list
camelia rakudo e9830d, niecza v24-98-g473bd20: OUTPUT«0 1 2,foo bar␤»
grondilu * 15:25
15:27 kurahaupo_ left 15:28 risou_awy is now known as risou
jnthn decommute 15:28
15:30 dansamo joined 15:32 kurahaupo joined
TimToady quick, rewrite Moar in D :P 15:33
yoleaux 11:25Z <diakopter> TimToady: www.drdobbs.com/mobile/facebook-ado.../240162694
15:34 lowpor03 joined
arnsholt jnthn: Oh, definitely. It's just that callbacks could've been an easy win 15:34
But if the tests depend on structs anyways, implementing it is a bit useless, since I won't know if it works properly 15:35
15:35 dayangkun joined 15:36 FROGGS left 15:42 REPLeffect joined, ajr_ left, ajr joined, [particle] joined 15:43 ajr is now known as Guest56510
arnsholt "@SuppressWarnings("unchecked") // Because Java implemented generics stupidly" =D 15:43
15:43 denis_boyun joined
masak they chose a certain kind of forwards compatibility (as in "do not break the world") rather than a really clean implementation. 15:45
it was a tradeoff, and one which probably couldn't have done much differently.
but it did mean Java got the crappy generics, and C# got the nice ones. 15:46
arnsholt Definitely. They went the way they did for perfectly legitimate reasons 15:47
But yeah, still means Java generics are a bit annoying 15:48
masak .oO( we call it "erasure", which is a technical term meaning "it sucks" ) 15:49
15:54 vky joined
cognominal en.wikipedia.org/wiki/Type_inference "[type inference] is also planned for Perl 6". WTF? 16:00
Is TimToady hiding stuff from us in plain sight? 16:01
dalek p/unified-build: 8f7df78 | moritz++ | tools/build/Makefile- (3 files):
rename some more Makefile targets
16:02
p/unified-build: e6580ee | moritz++ | Configure.pl:
[build] write targets like "all:" that delegate to p-all, j-all etc. (whatever is available)
p/unified-build: c72977b | moritz++ | / (7 files):
[build] untangle the runners
moritz you can now do
16:03 FROGGS joined
moritz perl Configure.pl --backends=parrot,jvm 16:03
colomon moritz++
flussence_ \o/
moritz and then run 'make j-test' and 'make p-test'
dunno why 'make test' only runs j-test
16:03 benabik left, daxim left, Guest56510 is now known as ajr_
flussence_ do things like "--parrot-make-option" still work with that? 16:04
moritz haven't tested it, but should still work, yes
arnsholt Cool!
Are things installed to separate locations as well?
flussence_ well then, guess I'll be the tester for that... 16:05
16:05 flussence_ is now known as flussence
FROGGS moritz: how far is it? I am thinking about waiting for yours to finish, before I introduce weird stuff for rakudo's Makefile-Moar.in and ConfigureMoar.pl 16:07
16:07 benabik joined
moritz FROGGS: pretty far along 16:07
FROGGS: worth doing stuff in the branch
(and there's no ConfigureMoar.pl anymore in that branch :-)
FROGGS yeah... 16:08
16:08 lowpor03 left 16:15 alester joined
TimToady type inference isn't exactly planned; I see it more as inevitable from the pressure to optimize gradually typed code 16:28
colomon you're planning on it being inevitable? ;) 16:30
cognominal ok, good to know 16:33
16:35 SamuraiJack joined 16:38 vky left, pernatiy left 16:42 dmol joined
jnthn back 16:45
16:45 vky joined 16:47 kurahaupo_ joined, kurahaupo left 16:48 LWA left
arnsholt jnthn: Thought of the moment: A circular list of CStructs is all going to end in tears, isn't it? 16:49
16:49 kurahaupo_ left, fhelmberger joined, kurahaupo joined
TimToady or it will never end 16:49
arnsholt Yeah. A neverending stream of tears 16:50
jnthn arnsholt: Why, ooc? :)
jnthn doesn't immediately see a reason why it has to :) 16:51
arnsholt It'll do an infinite pointer chase
jnthn Where, exactly?
arnsholt Oh, right. The Parrot implementation actually won't
Been too long since I worked on that part of the code 16:52
TimToady it will not only never end, it will never start, I guess :)
jnthn Sometimes, our past selves were smarter than we realized ;)
arnsholt Indeed
TimToady and sometimes our present selves are stupider than we had hoped :) 16:53
arnsholt Very, very true
jnthn Indeed :)
TimToady
.oO(Do not look a present horse in the mouth.)
.oO(Do not look a past horse in the mouth either, since its mouth will be on the other end.)
16:54
jnthn
.oO( "All these people looking in my mouth are making me horse" )
16:55
16:56 LWA joined 17:06 salv0 left, dakkar left 17:07 jnap left 17:08 iSlug joined 17:09 bruges left 17:12 [Sno] joined 17:17 BenGoldberg joined, ssutch joined, kurahaupo left, kurahaupo_ joined
BenGoldberg rn: say 'abcd' ~~ /(\w\w)(\w\w)/ 17:19
camelia rakudo e9830d, niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
BenGoldberg rn: say /(\w\w)(\w\w)/ R~~ 'abcd' 17:20
camelia rakudo e9830d: OUTPUT«True␤»
..niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
BenGoldberg rn: say [~] 1..5 17:21
camelia rakudo e9830d, niecza v24-98-g473bd20: OUTPUT«12345␤»
BenGoldberg rn: say [R~] 1..5
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Excess arguments to ANON, used 2 of 5 positionals␤ at /tmp/D1ZhvOgN0U line 0 (ANON @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2755 (reduceop @ 12) ␤ at /tmp/D1ZhvOgN0U line 1 (mainline @ 3) ␤ at /home/p6eval/ni…» 17:22
..rakudo e9830d: OUTPUT«54321␤»
TimToady one rakudobug, one nieczabug, seems to me
dalek Heuristic branch merge: pushed 24 commits to nqp/unified-build by moritz 17:23
TimToady the nieczabug seems to be in not handling a list-associative reversal correctly 17:25
dalek p/unified-build: 283d36c | moritz++ | Configure.pl:
"install" target
TimToady so I'd predict that other list-associative operators would also fail
rn: say [R^] 1..5 17:28
camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Excess arguments to ANON, used 2 of 5 positionals␤ at /tmp/JtJV3IGxK_ line 0 (ANON @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2755 (reduceop @ 12) ␤ at /tmp/JtJV3IGxK_ line 1 (mainline @ 3) ␤ at /home/p6eval/ni…»
..rakudo e9830d: OUTPUT«Too many positional parameters passed; got 5 but expected 2␤ in block at src/gen/CORE.setting:16364␤ in sub at src/gen/CORE.setting:16471␤ in block at /tmp/D36m3YJ3Sy:1␤␤»
TimToady ooh, same failure in rakudo now :)
(not that reversing a commutative operator makes any sense, but still) 17:29
colomon so list-associative Rop should reverse the list of arguments before sending to op?
rn: say [R+] 1 17:30
camelia niecza v24-98-g473bd20: OUTPUT«1␤»
..rakudo e9830d: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in block at src/gen/CORE.setting:16364␤ in sub at src/gen/CORE.setting:16419␤ in block at /tmp/828WyxkFwF:1␤␤»
colomon well, this certainly is a rich vein of bugs
17:31 ajr_ left
TimToady reversing the entire list would seem to be the most straightforward thing to do 17:33
colomon you mean transforming [Rop] list to [op] list.reverse ? 17:35
what is $a R~ $b R~ $c supposed to do?
TimToady probably the same thing 17:36
flussence moritz: gave it a try, I can get a working rakudo-parrot with no trouble, but it seems to get really confused with the jvm bits (installs them to the parrot folders)
17:39 kurahaupo joined, kurahaupo_ left
colomon TimToady: so we need a rule saying that if op is list-associative, Rop generates a new operator which is also list-associative, takes a list, reverses it, and passes it to op? 17:40
colomon wonders if this is in roast somewhere.
TimToady guesses not
17:40 grondilu left
colomon has discovered that a $work bug he fixed a week ago has somehow mutated into a brand new bug. :( 17:41
TimToady doesn't look like roast has such a test, offhand 17:43
it tests that R is transparent to precedence, but doesn't seem to test that it is also transparent to associativity 17:44
I note that the list reversal semantics are not just simpler, but consistent with the decision that mixed list associations must use the same operator consistently, or be parenthesized 17:45
std: 1 R, 2 , 3 17:46
camelia std a0bcfb1: OUTPUT«===SORRY!===␤"R" and "," are non-associative and require parens at /tmp/PD4G3MHiRu line 1:␤------> 1 R, 2 , ⏏3␤Check failed␤FAILED 00:01 122m␤»
TimToady hmm, should say R, there, but still
std: 1 R| 2 R& 3 17:47
camelia std a0bcfb1: OUTPUT«ok 00:01 122m␤»
TimToady is fine because of precedence
std: 1 R| 2 R^ 3
camelia std a0bcfb1: OUTPUT«ok 00:01 122m␤»
TimToady hmm, that should've faile, I think 17:48
*ed
std: 1 | 2 ^ 3
camelia std a0bcfb1: OUTPUT«===SORRY!===␤"|" and "^" are non-associative and require parens at /tmp/sj4c2F0cVB line 1:␤------> 1 | 2 ^ ⏏3␤Check failed␤FAILED 00:01 122m␤»
TimToady stdbug in R transparency too 17:49
probably sees both operators as "R" and says "That's fine then."
17:50 denis_boyun left
GlitchMr std: 1, 2, 3 R= my @array 17:51
TimToady std: 1 X| 2 X^ 3
camelia std a0bcfb1: OUTPUT«===SORRY!===␤Cannot reverse the args of = because list assignment operators are too fiddly at /tmp/Pt4qwqyOUb line 1:␤------> 1, 2, 3 R=⏏ my @array␤Check failed␤FAILED 00:01 125m␤»
std a0bcfb1: OUTPUT«===SORRY!===␤"X|" and "X^" are non-associative and require parens at /tmp/8ehCWp4Lht line 1:␤------> 1 X| 2 X^ ⏏3␤Check failed␤FAILED 00:01 122m␤»
TimToady so R is wrong but not X, hmm
18:00 stevan_ left 18:05 iSlug left, dansamo left 18:08 ajr joined 18:09 ajr is now known as Guest1017, Guest1017 is now known as ajr_
dalek d: 082981d | larry++ | STD.pm6:
R and S metaops should include subop in $<sym>
18:09
kudo/unified-build: 54ffc91 | moritz++ | tools/build/Makefile-Parrot.in:
[parrot] use nqp-p instead of nqp
18:11 kaare_ joined 18:15 SamuraiJack left 18:16 xinming_ left 18:17 kurahaupo left 18:18 stevan_ joined 18:19 spider-mario joined
masak a really nice introduction to Haskell: yannesposito.com/Scratch/en/blog/Ha...-Hard-Way/ 18:23
18:23 xinming joined
TimToady quick, rewrite Moar in Haskell! 18:24
diakopter *grunt* 18:25
masak TimToady: tsk, don't be so impatient. the goal is still to make Perl 6 slang the rest of the world. :)
diakopter eh 18:27
18:31 pecastro left 18:32 pecastro joined
dalek p/unified-build: 485d998 | moritz++ | tools/build/install-jvm-runner.pl:
install nqp on JVM as nqp-j
18:34
masak I think Parrot captured people's imaginations because it had ambitious goals. 18:35
it's important to have ambitious goals. among other things. 18:36
18:36 fhelmberger left
diakopter "Let's go to the moon" is ambitious. 18:36
"Let's build a Dyson sphere" is something else 18:37
masak diakopter: you have a point, and I believe I see it.
diakopter: just because you can use SQL as a slang of Perl 6 doesn't mean SQL outside of Perl 6 ceases to exist, or ceases to be important. 18:38
but having language X be a slang of Perl 6, for various values of X, is still quite cool.
FROGGS +1 to build a dyson sphere 18:39
18:40 sorear left
masak :) 18:40
diakopter++ is right. it would be something else ;)
diakopter "we would be the envy of all the solar systems." "but we'd be so cool.. they couldn't see us" 18:41
moritz a whole new realm of awesome
18:42 spider-mario left
masak .oO( Schrödinger's Earth ) 18:42
arnsholt "we'd be so cool they couldn't see us" *groan*
18:42 spider-mario joined
moritz ~/p6/rakudo>find install/ -name nqp.jar 18:42
install/lib/parrot/5.9.0-devel/languages/nqp/lib/nqp.jar
oops.
masak arnsholt: maybe all the unaccounted-for "dark matter" is made of Dyson spheres.
18:43 sorear joined
diakopter I try to register languagex.com on godaddy. it suggests Lang-U-Ag-Ex.com instead. -_- 18:43
oh, also Language-You-Ag-Ex.net how helpful. 18:44
18:44 darutoko left
moritz wow, I've managed to break installed nqp-p AND installed nqp-j 18:45
arnsholt masak: OMG, that's genius! =D 18:49
diakopter r: constant f'f'f'f'f'f'f'f'f'f'f'f'f'f'f'f = 4;
camelia ( no output )
GlitchMr r: constant identifiers-are-nice-aren't-they = 42; say identifiers-are-nice-aren't-they 18:50
camelia rakudo e9830d: OUTPUT«42␤»
18:51 FROGGS left
dalek p/unified-build: 66eb272 | moritz++ | tools/build/Makefile-Parrot.in:
Parrot's NQP_LANG_DIR is different from the others
18:53
moritz ... and that fixes the nqp-j failure
nqp-p still b0rked
18:53 FROGGS joined 18:54 bluescreen10 left, denis_boyun joined
arnsholt jnthn: When making nqp::consts out of the TYPE_CHECK constants, we don't want to include the _MASK one, right? 18:56
18:57 bluescreen10 joined, spider-mario left
dalek kudo/unified-build: 5df1482 | moritz++ | ConfigureJVM.pl:
[JVM] use "install" prefix, and nqp-j
18:58
18:58 spider-mario joined 19:01 denis_boyun left
dalek kudo/unified-build: 07e119e | moritz++ | tools/build/Makefile- (2 files):
avoid variable name collisions
19:02
kudo/unified-build: 9fbb4e7 | moritz++ | Configure.pl:
[parrot] use nqp-p, really.
19:04
19:04 woolfy1 left
arnsholt moritz: You're a hero for doing the config reunification work, BTW 19:05
moritz :-) 19:07
19:07 woolfy joined
FROGGS absolutely 19:08
it is not the funniest job, but an awesome one :o)
(awesome for us) 19:09
diakopter moritz++
19:10 risou is now known as risou_awy
arnsholt moritz++ indeed 19:10
moritz can anybody please test the nqp build + make test on windows? 19:12
(with parrot backend, mostly)
dalek kudo/unified-build: 3deeff2 | moritz++ | tools/build/Makefile- (2 files):
[build] shuffle around stuff from the Makefiles a bit
kudo/unified-build: 2b18010 | moritz++ | tools/build/Makefile- (2 files):
[build] avoid collision of HARNESS_WITH_FUDGE
19:14
moritz fwiw I've decided not to install an 'nqp' binary for now 19:16
diakopter ++
moritz nqp is low-level enough that we can force people to use nqp-j or nqp-p
can't do that with rakudo/perl6 though :-)
19:17 Rotwang joined
arnsholt Yeah 19:17
But being able to have both JVM and Parrot NQP side by side without doing the recompile dance all the time is going to be useful, I think
dalek p/unified-build: 7297c44 | moritz++ | tools/build/Makefile-Parrot.in:
get rid of "nqp" executable

it did not work, and we can force people to use nqp-j or nqp-p
19:19
FROGGS /o\ 19:20
arnsholt I can definitely live with that! =) 19:23
19:26 Rotwang left
lue hello world o/ 19:34
dalek kudo/unified-build: a135bc6 | moritz++ | tools/lib/NQP/Configure.pm:
(mostly) import NQP::Configure from nqp
19:36 benabik left
jnthn arnsholt: Right, not the mask. 19:37
moritz I have some trouble figuring out how the options to rakudo's Configure.pl should look like
19:38 vky left
moritz probably --backends=parrot,jvm and optionally --prefix= 19:38
and if only prefix is present, look into the prefix which backends are available 19:39
and --with-nqp goes
away
'cause there's not just one nqp, and it always looks in --prefix 19:40
does that sound sensible?
lue jnthn: have you seen this from a while ago? gist.github.com/lue/7078598
19:41 dmol left, sizz left 19:42 sizz joined
jnthn lue: Hm, I'd have to look at it in context but not sure why to remove it? :) 19:42
lue because the next line is | <.unv>? $$ <.ws> <?MARKER('endstmt')>, and <.unv> contains \h+ as an alternative, and [\h+]? is equivalent to \h* 19:44
19:44 Rotwang joined
lue jnthn: discussion last night on the subject starts here: irclog.perlgeek.de/perl6/2013-10-21#i_7740763 19:45
jnthn lue: Looks like you're correct 19:46
And that we get rid of an alternation
lue git blame says you added unv's contents and ENDSTMT in 2011, so I'm guessing there was some speed/comment advantage for the \h* line at the time? 19:47
s/comment/correctness/ 19:48
jnthn Very possible speed
If it was pre-LTM for example... 19:49
Now, the tran-LTMer will happily look into the unv
lue As my gist shows, there appears to be a modest improvement of a few seconds running the test w/o the line, but I have no clue what the margin of error is :) 19:50
jnthn Yeah. But it's no worse, and it's a simplification :) 19:51
19:51 bluescreen10 left
jnthn Removing unrequired code is always a nice thing if it's not helping performance. 19:51
moritz lue: do it 5 times or more, and calculate the standard deviation
jnthn And I don't see how this case could be these days
lue jnthn: the only caveat I see is if all the following occur: 1) unv loses its \h+ alternative 2) ENDSTMT still needs an effectively \h* alternative. Since neither rule has been touched in about two years, I doubt this will occur. 19:52
jnthn aye 19:53
lue moritz: will do, just have to update NQP if needed first.
lue will enjoy the mathing to come :)
BenGoldberg r: say <Hacker> R, <Just>, <R,> R, <Another> 19:55
camelia rakudo e9830d: OUTPUT«Just Another R, Hacker␤»
masak :P
colomon that's wrong, isn't it? 19:59
colomon is not sure how much of the discussion from a couple of hours ago people have read. :)
moritz is sure he hasn't read enough of the discussion above to comment 20:00
lue personally has never found himself needing R :/
colomon …. actually, is infix:<,> list-associative?
20:00 MrMeek-afk left
moritz lue: that doesn't preclude you from being a valuable member of society 20:01
colomon: it is
lue :)
moritz if not infix:<,>, what is? :-)
lue (it does mean my opinions would lean towards "R seems kinda useless, don't it? Let's get rid of it!")
colomon n: say <Hacker> R, <Just>, <R,> R, <Another> 20:02
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤"R" and "," are non-associative and require parens at /tmp/aDysg8M_4Z line 1:␤------> say <Hacker> R, <Just>, ⏏<R,> R, <Another>␤␤"," and "R," are non-associative and require parens at /tmp…»
colomon so yes, wrong. :)
std: say <Hacker> R, <Just>, <R,> R, <Another>
camelia std 082981d: OUTPUT«===SORRY!===␤"R," and "," are non-associative and require parens at /tmp/B7gfb0JVEY line 1:␤------> say <Hacker> R, <Just>, ⏏<R,> R, <Another>␤"," and "R," are non-associative and require parens at /tmp/B7gfb0JVEY line…»
colomon TimToady++ # improved the error message on std today
BenGoldberg rn: my $a = "bar"; $a [R~]= "foo"; say $a 20:03
camelia niecza v24-98-g473bd20: OUTPUT«foobar␤»
..rakudo e9830d: OUTPUT«===SORRY!=== Error while compiling /tmp/FupIduYeNT␤Preceding context expects a term, but found infix = instead␤at /tmp/FupIduYeNT:1␤------> my $a = "bar"; $a [R~]=⏏ "foo"; say $a␤»
BenGoldberg r: say [\**] 1..4 20:06
camelia rakudo e9830d: OUTPUT«4 81 2417851639229258349412352 1␤»
masak lue: I know of one good use of R 20:07
BenGoldberg ?
masak lue: when the operands come in an already-fixed order, and you need, let's say, "reverse minus".
lue: I've seen it once in a nice RPN calculator pmichaud++ wrote.
lue: the operands come in a fixed order because they are on the stack. the use of R- (and R/) was very beautiful. 20:08
lue
.oO(uh, that, uh, doesn't count, 'cos it, uh, has "Reverse" in the name! RPN was clearly designed as pro-R propaganda!)
masak: Somehow I'm not surprised RPN would make use of R. It is a very valid use I must say. :) 20:09
BenGoldberg RPN is where you would write "3 * 4 + 5" as "5 3 4 * +", yes?
20:09 kaare_ left
BenGoldberg Or is it the other way around? 20:09
geekosaur first one is correct 20:10
stack-based
20:11 xenoterracide joined
lue moritz: I'm guessing I want to use sample σ, not population σ, right? 20:12
20:17 LWA left 20:18 LWA joined 20:19 FROGGS left 20:22 FROGGS joined
dalek p: 3b9cb86 | (Arne Skjærholt)++ | src/vm/ (2 files):
Add nqp::consts for the TYPE_CHECK_* family of constants.

This closes #126.
20:32
arnsholt lue: In pretty much all contexts where you're doing descriptive stats, you want to divide by n-1 rather than n, I think 20:33
lue so sample σ then :) (that's what I thought, considering it's a handful of timings from an indefinite population of them) 20:34
arnsholt Also, note that some distributions are perverse and don't have well defined means or deviations
If the chances of getting big outliers is there, you might be better served by something like the median and interquartile range 20:35
lue It seems to be all within a small range, so I don't think there's much a chance for outliers (excepting lag on my computer's part, but I'd be suspicious of those numbers anyway) 20:37
arnsholt Good, good
I've been doing quite a bit of this recently, so it's a chance to geek out a bit
20:39 BenGoldberg left 20:40 grondilu joined
lue :) 20:42
TimToady would like to point out for the record that a Dyson sphere that is cool enough to make dark matter out of would have to have some way of redirecting all the energy output of their star to some sink other than the universe at large. Just sayin'... 20:46
geekosaur Dyson's original assumption was that the point was to capture and use all the solar power output 20:47
20:47 aindilis joined
TimToady thermodynamically speaking, you can't 20:48
you have to radiate heat
geekosaur yes, but the radiated heat is difficult to detect over interstellar distances
(although, see recent discovery of free-floating planets by their heat signatures)
TimToady even if it's in the far microwave region, it'd be a huge bump on CMB if there were enough of them to account for dark matter 20:49
free-floaters don't have to radiate the energy output of a star
at we still can detect them by their IR siggie
20:50 Rotwang left
TimToady dark matter doesn't seem to radiate *at all* 20:50
that we can detect
20:56 sqirrel left
TimToady I'd much sooner believe that the Dyson spheres have found a way to sink the flow into dark energy, and that's why the universe is now accellerating, because there are too many Dyson spheres :) 20:56
grondilu redirecting the light of a star to some kind of a sink? Easy, make a kugleblitz: en.wikipedia.org/wiki/Kugelblitz_(astrophysics) 20:58
20:59 dmol joined 21:04 dayangkun left 21:06 REPLeffect left 21:10 skids left 21:13 spider-mario left 21:15 nebuchadnezzar left 21:17 dayangkun joined 21:19 REPLeffect joined 21:20 nebuchadnezzar joined 21:21 stevan_ left, denisboyun joined 21:24 denisboyun left, fhelmberger joined 21:25 fhelmberger left
lue What's funny is that I'm looking at some of the skip reasons in the NQP tests during make test and thinking "I wonder if I couldn't do something about that" :) 21:31
21:42 ajr_ left 21:43 vky joined 21:45 stevan_ joined 21:49 araujo left 21:50 araujo joined
dalek p/stdsigspace: e31c208 | Mouq++ | src/QRegex/P6Regex/ (2 files):
Don't grab sigspace after $<var> = binding
21:53
p/stdsigspace: 1203912 | Mouq++ | src/QRegex/P6Regex/Grammar.nqp:
Remove hard-to-reach debugging lines
21:55
22:03 FROGGS left 22:07 iSlug joined 22:12 iSlug left
lue jnthn: when the hll/ tests say "design changes, needs re-work", is that the tests needing fixing or the feature? (I'm assuming tests) 22:20
22:36 BenGoldberg joined
lue hey, I got some times: gist.github.com/lue/7078598 (result is that the removal causes no significant speed improvement, but since there's no epic slowdown or regression, I think it's safe to push. Stop me if I'm wrong.) 22:39
22:52 LWA left, LWA joined
Mouq n: say "abc = 123" ~~ /:s $<key>=\w+ \= $<val>=\S+ / 22:52
camelia niecza v24-98-g473bd20: OUTPUT«「abc = 123」␤ key => 「abc」␤ val => 「123」␤␤»
Mouq k 22:53
23:01 LWA left
lue wha? I don't have push rights to NQP‽ 23:03
23:04 LWA joined
Mouq lue: Yeah, that's a separate bit IIRC 23:05
lue has pull & push rights to every other perl6 repo, so idk...
Mouq Yeah
lue :( .oO(Which complaint dept. do I yell at?) 23:07
Mouq I don't think I can give you a commit bit, and even if I could, that wouldn't really be my place
23:07 vky left
lue .tell jnthn I haz change to nqp, but I no haz push bit. halp? :) [the specific change is the removal of the "redundant \h* line" from earlier] 23:10
yoleaux lue: I'll pass your message to jnthn.
23:20 gshank left, gshank joined 23:57 dmol left
Mouq n: say "abc, efg = 123" ~~ /:s $<key>=\w+ % \, \= $<val>=\S+ / 23:58
camelia niecza v24-98-g473bd20: OUTPUT«Nil␤»
Mouq n: say "abc, efg = 123" ~~ /:s $<key>=\w+ % [\, ] \= $<val>=\S+ /
camelia niecza v24-98-g473bd20: OUTPUT«Nil␤»
Mouq n: say "abc, efg = 123" ~~ /:s $<key>=\w +% \, \= $<val>=\S+ /
camelia niecza v24-98-g473bd20: OUTPUT«Nil␤»
Mouq n: say "abc, efg = 123" ~~ /:s $<key>=[\w+] +% \, \= $<val>=\S+ / 23:59
camelia niecza v24-98-g473bd20: OUTPUT«「abc, efg = 123」␤ key => 「abc, efg」␤ val => 「123」␤␤»
Mouq n: say "abc, efg = 123" ~~ /:s $<key>=[\w+]+ % \, \= $<val>=\S+ /
camelia niecza v24-98-g473bd20: OUTPUT«「abc, efg = 123」␤ key => 「abc, efg」␤ val => 「123」␤␤»
Mouq n: say "abc, efg = 123" ~~ /:s $<key>=[\w+]+% \, \= $<val>=\S+ /
camelia niecza v24-98-g473bd20: OUTPUT«「abc, efg = 123」␤ key => 「abc, efg」␤ val => 「123」␤␤»
Mouq Cool