Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-10-21

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 japhb__ retupmoca: or just:
00:00 japhb__ nevermind, backlogged and didn't realize it.
00:04 benabik joined #perl6
00:08 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:12 Mouq lue: yeah
00:12 japhb__ r: say so run </bin/true>
00:12 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␤␤»
00:13 Mouq r: say 'ab' ~~ / \w <?after \w> <?before \w> /
00:13 camelia rakudo e55c66: OUTPUT«「a」␤␤»
00:13 Mouq r: say 'ab' ~~ / \w <?after \w> <?before \w> $<b>=b /
00:13 camelia rakudo e55c66: OUTPUT«「ab」␤ b => 「b」␤␤»
00:13 japhb__ It appears that rakudo-parrot and rakudo-jvm disagree on the boolification of run() results too.
00:14 japhb__ .oO( Where is the masakbot when I need him? )
00:14 Mouq r: say 'ab' ~~ / a <?after a> <?before b> b /
00:14 camelia rakudo e55c66: OUTPUT«「ab」␤␤»
00:14 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" };'
00:15 lue japhb__: which one is wrong (0 -> True, !0 -> False is right)
00:15 japhb__ rakudo-jvm is wrong
00:16 colomon easier to fix than to report the bug?
00:16 [Coke] japhb__: updating r-j to do replace existing is pretty trivial.
00:16 [Coke] working on it.
00:16 Mouq lue: Yeah, <eat_terminator> just eats up a ';', matches $, or matches before a terminator like }
00:17 japhb__ [Coke]: Thank you!
00:17 colomon [Coke]++
00:18 * [Coke] adds JVM/MOAR/PARROT tags to nqp issues.
00:18 [Coke] (just the ability to add them.)
00:19 * 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.
00:19 japhb__ [Coke]++
00:20 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
00:24 [Coke] japhb__: should it also copy attributes if possible?
00:25 japhb__ [Coke]: I don't think so, that's not the behavior of cp by default.
00:25 [Coke] Roger.
00:25 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))
00:26 [Coke] building a version with a fix...
00:27 japhb__ w00t
00:28 [Coke] also adding a "TESTNEEDED" label..
00:28 lue is <?[stuff]> eqv. to <?before stuff> ?
00:28 Mouq Oh, STD uses the same sort of endstmt thing too, it just does it in a nicer way :p
00:29 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:30 Mouq AFAIK, <?[stuff]> is more like <?before <[stuff]> >, but I don't know the precise difference between <?…> and <?before …>
00:31 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.
00:31 TimToady the first can only take another assertion-innards, the latter only a full refex
00:31 TimToady *regex
00:32 lue "full regex" as in no <rule> rules, or "full regex" as in everything I can do outside the construct?
00:33 Mouq everything
00:33 TimToady well, consider the difference between <?[...]> and <?before [...]>
00:33 TimToady the latter are just grouping brackets, and redundant
00:34 TimToady 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]>
00:34 lue or, no.
00:34 TimToady <?foo> means something very different from <?before foo>
00:35 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 <
00:35 TimToady <?before calls back into Regex language
00:36 TimToady r: say 'foo' ~~ /<?!?!before 'foo'>/
00:36 camelia rakudo e55c66: OUTPUT«「」␤␤»
00:36 TimToady hmm
00:37 TimToady n: say 'foo' ~~ /<?!?!before 'foo'>/
00:37 camelia niecza v24-98-g473bd20: OUTPUT«「」␤␤»
00:37 lue r: say 'foo' ~~ /<?!?!before 'foo'> (foo)/
00:37 camelia rakudo e55c66: OUTPUT«「foo」␤ 0 => 「foo」␤␤»
00:37 TimToady oh, yeah, duh
00:37 Mouq r: say 'foo' ~~ /<?!?!before (foo)>/ #?
00:37 camelia rakudo e55c66: OUTPUT«[31m===[0mSORRY![31m===[0m�Unrecognized regex metacharacter ( (must be quoted to match literally)�at /tmp/RE3isF5bZV:1�------> [32msay 'foo' ~~ /<?!?!before (foo)>[33m�[31m/ #?[0m�Regex not terminated�at /tmp/RE3isF5bZV:1�------> [32msay …»
00:38 TimToady n: say so 'foo' ~~ /<?!?!?!?!?!before 'foo'>/
00:38 camelia niecza v24-98-g473bd20: OUTPUT«True␤»
00:38 Mouq r: say 'foo' ~~ /<?!?!before (foo)> / #?
00:38 camelia rakudo e55c66: OUTPUT«[31m===[0mSORRY![31m===[0m�Unrecognized regex metacharacter ( (must be quoted to match literally)�at /tmp/tQnVXx4T2f:1�------> [32msay 'foo' ~~ /<?!?!before (foo)> [33m�[31m/ #?[0m�Regex not terminated�at /tmp/tQnVXx4T2f:1�------> [32msay…»
00:38 Mouq r: say 'foo' ~~ /<?!?!before (foo) > / #oh
00:38 camelia rakudo e55c66: OUTPUT«「」␤␤»
00:38 lue n: say 'foo' ~~ /<?!?!before (foo)> / #?
00:39 camelia niecza v24-98-g473bd20: OUTPUT«[31m===[0mSORRY![31m===[0m��Unable to parse capture parens at /tmp/hEZszNBhZ8 line 1:�------> [32msay 'foo' ~~ /<?!?!before ([33m�[31mfoo)> / #?[0m�Couldn't find final ')'; gave up at /tmp/hEZszNBhZ8 line 1:�------> [32msay 'foo' ~…»
00:39 Mouq lue: ')>' is a metacharacter
00:39 lue ( niecza has a better error message, assuming )> is being misinterpreted as part of <( )> )
00:40 lue Although the best error would be "found )> but not <(" imo
00:41 TimToady std: say 'foo' ~~ /<?!?!before (foo)> /
00:41 camelia std a0bcfb1: OUTPUT«ok 00:01 126m␤»
00:41 * Mouq checks on his branch and the error is now the same as nieczas. Woo.
00:41 dalek nqp: 329bff6 | coke++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
00:41 dalek nqp: (same behavior as nqp-p)
00:41 dalek nqp: review: https://github.com/perl6/nqp/commit/329bff6a0a
00:41 TimToady std treats the ) terminator as more important than the )> LTM
00:41 [Coke] japhb__: ^^
00:42 [Coke] ah, crap.
00:42 [Coke] can't reference the issue number on the first column of the line, or it's a comment! whoops.
00:45 lue I can't decide if the best error for that situation would complain about (, no ), no <(, or )> :/
00:45 lue (maybe a special error message for <( ... ) or ( ... )> screwups?)
00:46 [particle] joined #perl6
00:48 TimToady the correct thing would be to parse it correctly like STD does
00:50 TimToady in general, terminators should be considered stronger than LTM
00:50 dayangkun joined #perl6
00:51 dayangkun joined #perl6
00:51 lue this feels a bit like that std::vector<std::vector<object>> thing C++11 fixed.
00:52 [Coke] any way to add a label to a pull request on github?
00:56 lue [Coke]: I wouldn't know.
00:58 dalek nqp: 309fb1c | coke++ | src/vm/parrot/QAST/Operations.nqp:
00:58 dalek nqp: Remove concat_s fossil opcode
00:58 dalek nqp:
00:58 dalek nqp: Fixes #138
00:58 dalek nqp: review: https://github.com/perl6/nqp/commit/309fb1c45b
00:59 japhb__ [Coke]++ # copy fix
01:00 [Coke] japhb__: hopefully it helps with panda. g'luck.
01:03 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:05 lue (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:08 lue Waitaminute. Isn't line 49 in NQP/Grammar.nqp redundant? Doesn't  <.unv>?  effectively cover  \h*  ?
01:09 lue r: say so "" ~~ /\h*/; say so "" ~~ /[\h+]?/;
01:09 camelia rakudo e55c66: OUTPUT«True␤True␤»
01:09 Mouq It looks like MARKER('thing') sets a hash in the cursor with %h<thing> = <<<Something cursor related>>>, so that's scoped
01:10 lue It had to be, or else one ENDSTMT and then you'd never have a false MARKED('endstmt') again.
01:10 lue 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?
01:12 Mouq I believe <<<Something cursor related>>> is a cursor eqv to <?>
01:12 Mouq lue: Looks like it
01:12 * lue will go to update NQP, and then compare spectests with/without line 49
01:13 Mouq Although it may be an optimization
01:14 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:15 Mouq Wouldn't || throw away the any \h* already matched?
01:17 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:18 woosley joined #perl6
01:19 Mouq r: say 'ab' ~~ /a<.ws>b/
01:19 camelia rakudo e55c66: OUTPUT«Nil␤»
01:19 Mouq r: say 'ab' ~~ /a<.unv>b/
01:19 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␤␤»
01:19 Mouq r: say 'ab' ~~ /a<!ww>b/
01:19 camelia rakudo e55c66: OUTPUT«Nil␤»
01:19 Mouq r: say 'ab' ~~ /a<ww>b/
01:19 camelia rakudo e55c66: OUTPUT«「ab」␤ ww => 「」␤␤»
01:20 Mouq r: say 'ab' ~~ /a [ \h* | [<!ww>\h+]? ] b/
01:20 camelia rakudo e55c66: OUTPUT«「ab」␤␤»
01:20 grondilu joined #perl6
01:20 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␤»
01:21 Mouq Oh, wait
01:21 lue (nvm, ENDSTMT takes care of it with <.ws>. Durp.)
01:22 Mouq r: say "a\nb" ~~ /a [<!ww><.ws>] b/
01:22 camelia rakudo e55c66: OUTPUT«「a␤b」␤␤»
01:22 Mouq r: say "a\nb" ~~ /a [<!ww>$$] b/
01:22 camelia rakudo e55c66: OUTPUT«Nil␤»
01:22 Mouq r: say "a\nb" ~~ /a [<!ww><.ws>$$] b/
01:22 camelia rakudo e55c66: OUTPUT«Nil␤»
01:22 Mouq r: say "a\nb" ~~ /a [<!ww>\h*$$] b/
01:22 camelia rakudo e55c66: OUTPUT«Nil␤»
01:22 Mouq r: say "a\nb" ~~ /a [\h*$$] b/
01:22 camelia rakudo e55c66: OUTPUT«Nil␤»
01:23 Mouq r: say "a\nb" ~~ /a [\h*$$<.ws>] b/
01:23 camelia rakudo e55c66: OUTPUT«「a␤b」␤␤»
01:23 Mouq r: say "a\nb" ~~ /a [<.ws>$$<.ws>] b/
01:23 camelia rakudo e55c66: OUTPUT«Nil␤»
01:24 Mouq ENDSTMT has line 48 to eat the case '}␤', me thinks
01:24 lue 49 you mean?
01:25 Mouq Yeah
01:25 lue r: say "}\n" ~~ /\h* $$ <.ws>/
01:25 camelia rakudo e55c66: OUTPUT«「␤」␤␤»
01:26 lue r: say "}\n" ~~ /[<!ww> [\v+ | '#' \N* | \h+]*]? $$ <.ws>/ # relevant bits of <.unv> in outermost []
01:26 camelia rakudo e55c66: OUTPUT«「␤」␤␤»
01:27 lue oh wait, I accidentally took ws. Where's my head?
01:28 lue r: say "}\n" ~~ /[[\h* '#' \N* | \h+]]? $$ <.ws>/ # relevant bits of <.unv> in outermost []
01:28 camelia rakudo e55c66: OUTPUT«「␤」␤␤»
01:39 [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:40 * [Coke] tries ripping out the java path and doing a build...
01:45 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:45 lue Then again, those changes were instated in 2011, so I'd be surprised if those measures were still necessary.
01:56 lue 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 lue 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)
01:57 lue (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 &
02:09 dalek nqp/stdsigspace: 05b0c30 | Mouq++ | src/QRegex/P6Regex/ (2 files):
02:09 dalek nqp/stdsigspace: Panic after a null regexes ( RT #77784 )
02:09 dalek nqp/stdsigspace:
02:09 dalek nqp/stdsigspace: Now catches and dies on more (hopefully all) null regexes, un-terminated
02:09 dalek nqp/stdsigspace: regexes, and unrecognized metacharacters
02:09 dalek nqp/stdsigspace: review: https://github.com/perl6/nqp/commit/05b0c304f0
02:09 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=77784
02:12 TimToady Mouq++
02:12 hypolin joined #perl6
02:17 Mouq Alas, I missed some! / || a || / dies as unrecognized metacharacter |
02:18 TimToady std: / || a || /
02:18 camelia std a0bcfb1: OUTPUT«[31m===[0mSORRY![31m===[0m�Null pattern not allowed at /tmp/TGblNyjSXi line 1:�------> [32m/ || a || [33m�[31m/[0m�Parse failed�FAILED 00:00 121m�»
02:18 * TimToady still appreciates that someone is working on it
02:18 TimToady it's a pretty important thing
02:19 Mouq n: / || a || /
02:19 camelia niecza v24-98-g473bd20: OUTPUT«[31m===[0mSORRY![31m===[0m��Null pattern not allowed at /tmp/9SAuDtKpk3 line 1:�------> [32m/ || a || [33m�[31m/[0m��Parse failed��»
02:19 TimToady niecza's parser is pretty close to STD
02:21 dalek nqp/stdsigspace: d565a90 | Mouq++ | src/QRegex/P6Regex/Grammar.nqp:
02:21 dalek nqp/stdsigspace: Replace <.throw_null_pattern> on regex infixes
02:21 dalek nqp/stdsigspace: review: https://github.com/perl6/nqp/commit/d565a907cf
02:34 odoacre joined #perl6
02:38 dalek roast: a5ab705 | coke++ | S12-enums/thorough.t:
02:38 dalek roast: Add test for RT #101900
02:38 dalek roast: review: https://github.com/perl6/roast/commit/a5ab705119
02:38 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=101900
02:48 xenoterracide joined #perl6
03:19 xinming joined #perl6
03:23 Quom joined #perl6
03:25 TimToady joined #perl6
03:25 dalek nqp: db37f2d | dwarring++ | examples/rubyish/ (12 files):
03:25 dalek nqp: added rubyish unless blocks
03:25 dalek nqp: review: https://github.com/perl6/nqp/commit/db37f2d7c3
03:25 Bucciarati joined #perl6
03:40 preflex joined #perl6
03:45 SmokeMachine joined #perl6
03:45 Quom n: say 'ab cd' ~~ /:s $<w>=[\w+] /
03:45 camelia niecza v24-98-g473bd20: OUTPUT«「ab 」␤ w => 「ab」␤␤»
03:45 Quom n: say 'ab cd' ~~ /:s $<w>=[\w+]/
03:45 camelia niecza v24-98-g473bd20: OUTPUT«「ab」␤ w => 「ab」␤␤»
03:45 Quom n: say 'ab cd' ~~ /:s $<w>=\w+ /
03:45 camelia niecza v24-98-g473bd20: OUTPUT«「ab 」␤ w => 「ab」␤␤»
03:46 Quom n: say 'ab cd' ~~ /:s $<w>= \w+ /
03:46 camelia niecza v24-98-g473bd20: OUTPUT«「ab 」␤ w => 「ab」␤␤»
03:49 Quom n: say 'ab cd' ~~ /:s $<w>=[\w+ ] /
03:49 camelia niecza v24-98-g473bd20: OUTPUT«「ab 」␤ w => 「ab 」␤␤»
03:49 Quom Hmm :(
03:50 Quom Niecza does what I think makes sense, but it differs in what I think STD does
03:52 Quom TimToady: ping
03:53 fridim_ joined #perl6
04:00 TimToady how is STD different?
04:03 Quom Just going by source, /:s $<w>=\w+ / will grab "\w+<.ws>" for $<w>
04:04 Quom Niecza doesn't grab the final sigspace
04:14 BenGoldberg r: say 1 [R[R~]] 2
04:14 camelia rakudo e55c66: OUTPUT«12␤»
04:16 Quom r: say 1 RR~ 2
04:16 camelia rakudo e55c66: OUTPUT«12␤»
04:16 Quom r: say 1 RRRRRRRRRRRRRRRRRR~ 2
04:16 camelia rakudo e55c66: OUTPUT«12␤»
04:17 BenGoldberg r: say 'abcd' ~~ /(\w\w)(\w\w)/
04:17 camelia rakudo e55c66: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
04:17 BenGoldberg r: say /(\w\w)(\w\w)/ [R~~] 'abcd'
04:17 lue some times: https://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.)
04:17 camelia rakudo e55c66: OUTPUT«True␤»
04:18 BenGoldberg Why True, instead of 0 => ab, 1 => cd ?
04:18 BenGoldberg r: say (/(\w\w)(\w\w)/ [R~~] 'abcd').WHAT
04:18 camelia rakudo e55c66: OUTPUT«(Bool)␤»
04:19 BenGoldberg r: say (/(\w\w)(\w\w)/ R~~ 'abcd').WHAT
04:19 camelia rakudo e55c66: OUTPUT«(Bool)␤»
04:19 Quom BenGoldberg: I'd wager bug
04:19 BenGoldberg r: say (/(\w\w)(\w\w)/ ~~ 'abcd').WHAT
04:19 camelia rakudo e55c66: OUTPUT«(Bool)␤»
04:19 BenGoldberg r: say (/(\w\w)(\w\w)/ ~~ 'abcd')
04:19 camelia rakudo e55c66: OUTPUT«False␤»
04:21 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␤␤»
04:21 BenGoldberg r: say <Another> [R,] <Perl> , <Hacker>
04:21 camelia rakudo e55c66: OUTPUT«Perl Hacker Another␤»
04:21 BenGoldberg r: say <Another>, <Perl> R, <Hacker>
04:21 camelia rakudo e55c66: OUTPUT«AnotherHacker Perl␤»
04:22 BenGoldberg r: say <Another> R, <Just>,  <Perl> R, <Hacker>
04:22 camelia rakudo e55c66: OUTPUT«Just Hacker Perl Another␤»
04:22 BenGoldberg r: say <Hacker> R, <Perl>,  <Just> R, <Another>
04:23 camelia rakudo e55c66: OUTPUT«Perl Another Just Hacker␤»
04:23 BenGoldberg r: say 1 R, 2, 3 R, 4
04:23 camelia rakudo e55c66: OUTPUT«2 4 3 1␤»
04:24 BenGoldberg r: say <Hacker> R, <Just>, <Perl> R, <Another>
04:24 camelia rakudo e55c66: OUTPUT«Just Another Perl Hacker␤»
04:24 BenGoldberg r: say 1 R, 2, 3 R, 4, 5 R, 6
04:24 camelia rakudo e55c66: OUTPUT«2 4 6 5 3 1␤»
04:24 BenGoldberg r: say 1 R, 2, 3 R, 4, 5 R, 6, 7 R 8
04:24 camelia rakudo e55c66: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/AZCm_GJVBRâ�¤Two terms in a rowâ�¤at /tmp/AZCm_GJVBR:1â�¤------> [32msay 1 R, 2, 3 R, 4, 5 R, 6, 7 R[33mâ��[31m 8[0mâ�¤    expecting any of:â�¤        postfixâ�¤        infix stopperâ�¤        infix …»
04:24 BenGoldberg r: say 1 R, 2, 3 R, 4, 5 R, 6, 7 R, 8
04:24 camelia rakudo e55c66: OUTPUT«2 4 6 8 7 5 3 1␤»
04:26 BenGoldberg r: say 5 R... 1
04:26 camelia rakudo e55c66: OUTPUT«1 2 3 4 5␤»
04:26 BenGoldberg r: say 5 R... 1 R, 0
04:26 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␤␤»
04:27 BenGoldberg r: say 0 R, 5 R... 1
04:27 camelia rakudo e55c66: OUTPUT«1 2 3 4 5 0␤»
04:27 BenGoldberg n: say <Another>, <Perl> R, <Hacker>
04:27 camelia niecza v24-98-g473bd20: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤"," and "R," are non-associative and require parens at /tmp/XprUQXRzvk line 1:â�¤------> [32msay <Another>, <Perl> R, [33mâ��[31m<Hacker>[0mâ�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/bo…»
04:27 BenGoldberg n: say (/(\w\w)(\w\w)/ R~~ 'abcd')
04:28 camelia niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
04:28 BenGoldberg rn: say (/(\w\w)(\w\w)/ R~~ 'abcd')
04:28 camelia rakudo e55c66: OUTPUT«True␤»
04:28 camelia ..niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
04:28 BenGoldberg rn: say ('abcd' ~~ /(\w\w)(\w\w)/)
04:28 camelia rakudo e55c66, niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
04:29 BenGoldberg n: say <Hacker> R, <Just>, <Perl> R, <Another>
04:29 camelia niecza v24-98-g473bd20: OUTPUT«[31m===[0mSORRY![31m===[0m��"R" and "," are non-associative and require parens at /tmp/fGYs8f9_P8 line 1:�------> [32msay <Hacker> R, <Just>, [33m�[31m<Perl> R, <Another>[0m��"," and "R," are non-associative and require parens at /t…»
04:29 BenGoldberg r: say <Hacker> R, <Just>, <Perl> R, <Another>
04:29 camelia rakudo e55c66: OUTPUT«Just Another Perl Hacker␤»
04:29 retupmoca so what does R actually do?
04:30 BenGoldberg It reverses the order of it's arguments
04:30 BenGoldberg Or rather, it's a meta-operator, which modifies a normal operator to create a "new" operator with the argument order reversed
04:31 BenGoldberg So 'a'~'b' is the same as 'b'R~'a'
04:31 retupmoca I gotcha
04:33 BenGoldberg Rakudo clearly is doing the wrong thing with 'str' R~~ /regex/;  Niecza has it right
04:33 BenGoldberg Rakudo is probably doing the wrong thing with two R, operators in one expression, niecza is probably doing the right thing
04:34 BenGoldberg But I'm not sure
04:34 BenGoldberg I would have expected this:
04:35 BenGoldberg 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␤»
04:35 BenGoldberg To produce 2, 1, 4, 3, 6, 5, 8, 7
04:35 BenGoldberg I think.
04:37 BenGoldberg r: say [*] 1..6
04:37 camelia rakudo e55c66: OUTPUT«720␤»
04:37 BenGoldberg r: say [\*] 1..6
04:37 camelia rakudo e55c66: OUTPUT«1 2 6 24 120 720␤»
04:37 BenGoldberg r: say [\,] 1..6
04:37 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␤»
04:37 BenGoldberg r: say [\R,] 1..6
04:37 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…»
04:37 BenGoldberg n: say [\,] 1..6
04:37 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␤»
04:38 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…»
04:38 BenGoldberg n: say [R,] 1..6
04:38 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…»
04:38 BenGoldberg n: say [R,] 1..6
04:38 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…»
04:38 BenGoldberg r: say [R,] 1..6
04:38 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␤␤»
04:39 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…»
04:41 BenGoldberg rn: say [\R~] 1..5
04:41 camelia rakudo e55c66: OUTPUT«1 21 321 4321 54321␤»
04:41 camelia ..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…»
04:42 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…»
04:42 camelia ..rakudo e55c66: OUTPUT«54321␤»
04:42 BenGoldberg rn: say [~] 1..5
04:42 camelia rakudo e55c66, niecza v24-98-g473bd20: OUTPUT«12345␤»
04:44 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»
04:47 Quom ... I *could* have flipped 'Just anoth…', but I like my programs to be self-documenting
04:54 ggoebel12 joined #perl6
04:56 TimToady Mouq: I suspect that STD handles the extra ws in the action rules somehow
04:58 Mouq TimToady: Okay, I'll have NQP/Rakudo do the same an Niecza then
04:59 TimToady niecza's behavior looks correct, anyway
05:00 TimToady at least in that case :)
05:00 Mouq It makes sense there, since to do right otherwise is:
05:00 Mouq n: say 'ab cd' ~~ /:s [$<w>=[\w+]]/
05:00 camelia niecza v24-98-g473bd20: OUTPUT«「ab」␤ w => 「ab」␤␤»
05:02 TimToady sure, sigspace is supposed to be an "oh, by the way, after you're done, skip to the next token"
05:02 TimToady STD was attaching it mostly to make it easier to write translators back to P6 and to P5, iirc
05:02 LWA joined #perl6
05:03 TimToady it needs to attach somewhere if you're going to preserve the comments...
05:16 TimToady there are, I imagine, a lot of spots where the current parser depends on the old semantics of :s
05:16 TimToady s/current/current rakudo/
05:29 kaleem joined #perl6
05:32 [Sno] joined #perl6
05:32 LWA joined #perl6
05:33 moritz \o
05:40 TimToady o/
05:42 moritz chocolate cake for breakfast \o/
05:43 Mouq n: say 'a , a, a ' ~~ /:s $<v>= a* % \, /
05:43 camelia niecza v24-98-g473bd20: OUTPUT«「a , a, a 」␤ v => 「a , a, a」␤␤»
05:44 Mouq Uggghhhh do I really have to try converting QRegex to use EXPR to make this work right?
05:45 moritz is that what STD and Niecza do?
05:46 TimToady that doesn't look right, offhand
05:46 * moritz hopes not
05:46 moritz Mouq++ # nqp/stdsigspace
05:47 TimToady that form shouldn't allow whitespace after 'a' and before the comma
05:49 Mouq n: say 'a , a, a ' ~~ /:s $<v>= a *% \, /
05:49 camelia niecza v24-98-g473bd20: OUTPUT«「a , a, a 」␤ v => 「a , a, a」␤␤»
05:50 Mouq I think it's just ignoring the final whitespace if it's $<var>=binding
05:52 TimToady n: say 'a , a, a ' ~~ /:s $<v>= a*% \, /
05:52 camelia niecza v24-98-g473bd20: OUTPUT«「a , a, a 」␤ v => 「a , a, a」␤␤»
05:52 TimToady n: say 'a , a, a ' ~~ /:s $<v>= a*%\, /
05:52 camelia niecza v24-98-g473bd20: OUTPUT«「a 」␤ v => 「a」␤␤»
05:53 SamuraiJack joined #perl6
05:53 Mouq n: say 'a , a, a ' ~~ /:s a*%\, /
05:53 camelia niecza v24-98-g473bd20: OUTPUT«「a 」␤␤»
05:53 TimToady I think that's the old semantics for ws around %
05:53 Mouq n: say 'a , a, a ' ~~ /:s a*% \, /
05:53 camelia niecza v24-98-g473bd20: OUTPUT«「a , a, a 」␤␤»
05:53 TimToady niecza hasn't caught up with that part of it
05:54 TimToady so don't copy that part :)
05:55 TimToady in the new semantics, the spaces around % don't matter at all
05:55 TimToady only the space after the a or the space after the comma
05:56 TimToady which is why the form a +% ',' is recommended if you want spaces on either side of the comma
05:57 TimToady that is, / a +% ',' /
05:57 TimToady it's actually a simplification of the old rules to be more consistent
05:59 Mouq consistency++
06:00 TimToady okay, I lied a little
06:00 TimToady if you write / a+ % ',' / then the space before % is significant, and applies after the whole thing matches
06:00 TimToady 'sigfinal' in STD's quantified_atom rule
06:01 TimToady it just doesn't matter if you write space before the + since that already eats the final ws anyway
06:01 sciurius joined #perl6
06:10 Mouq std: / )>* /
06:10 camelia std a0bcfb1: OUTPUT«ok 00:01 122m␤»
06:14 TimToady yeah, it oughta catch that as quantifying something that is known to be 0 width
06:14 TimToady I don't remember why those lines are commented out
06:16 denisboyun joined #perl6
06:17 TimToady though in any case it should perhaps allow it under %, since '' +% ',' make a perverse kind of sense
06:18 darutoko joined #perl6
06:19 TimToady though arguably in that case it's not really '' that it's quantify, but some combination of '' and ','
06:19 TimToady *fying
06:52 araujo joined #perl6
06:58 jnthn morning, #perl6
06:58 dayangkun joined #perl6
06:59 moritz \o *
06:59 frettled g'morning!
07:07 dalek nqp/unified-build: dbbd3ac | moritz++ | / (2 files):
07:07 dalek nqp/unified-build: [Configure] write single Makefile for multiple backends
07:07 dalek nqp/unified-build:
07:07 dalek nqp/unified-build: does not work yet properly, because several targets are defined multiple times
07:07 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/dbbd3aca09
07:07 dalek nqp/unified-build: a1267ed | moritz++ | tools/build/Makefile- (3 files):
07:07 dalek nqp/unified-build: [build] untagle build targets
07:07 dalek nqp/unified-build:
07:07 dalek nqp/unified-build: you can now write "perl Configure.pl --backends=parrot,jvm"
07:07 dalek nqp/unified-build: and then "make p-all" and "make j-all", and it will build both
07:07 dalek nqp/unified-build: nqp-parrot and nqp-jvm (though the launchers might still be confused)
07:07 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/a1267ed157
07:07 dalek nqp/unified-build: 617e6d8 | moritz++ | tools/build/Makefile- (3 files):
07:07 dalek nqp/unified-build: [build] unify "clean:" handling a bit
07:31 dmol joined #perl6
07:33 Mouq joined #perl6
07:46 xinming_ joined #perl6
07:55 FROGGS joined #perl6
08:16 iSlug joined #perl6
08:20 LWA joined #perl6
08:21 donaldh joined #perl6
08:36 daxim joined #perl6
08:50 FOAD joined #perl6
08:51 dakkar joined #perl6
09:06 jnthn arnsholt: I think I figured out the bug. At https://github.com/perl6/nqp/blob/master​/src/vm/jvm/runtime/org/perl6/nqp/sixmod​el/reprs/P6OpaqueBaseInstance.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 jnthn arnsholt: The solution is thus presumably to update delegate.st if there is an obj.delegate
09:07 arnsholt That sounds very promising, yeah
09:10 jnthn can't try it as at $teaching_gig :)
09:11 arnsholt Giving it a whirl now
09:12 arnsholt Success!
09:13 arnsholt jnthn++
09:15 jnthn \o/
09:15 jnthn arnsholt++ for golfing it to something that led to figuring it out :)_
09:15 jnthn bbl
09:16 kurahaupo joined #perl6
09:17 dayangkun joined #perl6
09:23 dalek Perlito: 87aa50b | (Flavio S. Glock)++ | / (2 files):
09:23 dalek Perlito: Perlito5 - command line - start with no-strict
09:23 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/87aa50bb1e
09:27 dalek nqp: a141179 | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/n​qp/runtime/NativeCallOps.java:
09:27 dalek nqp: Add missing break.
09:27 dalek nqp: review: https://github.com/perl6/nqp/commit/a14117903c
09:27 dalek nqp: 90244ee | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nq​p/sixmodel/reprs/P6Opaque.java:
09:27 dalek nqp: Update the STable of delegates in P6Opaque.change_type.
09:27 dalek nqp:
09:27 dalek nqp: This fixes a bug where cloning a P6Opaque resulted in an object of the wrong
09:27 dalek nqp: type if the opaque had a delegate and was then change_type-d without needing
09:27 dalek nqp: to introduce a new delegate. Thus obj.st != obj.delegate.st. Since
09:27 dalek nqp: P6OpaqueBaseInstance.clone simply clones the delegate if one is present, this
09:27 dalek nqp: resulted in an object of the wrong type under these conditions.
09:27 dalek nqp: review: https://github.com/perl6/nqp/commit/90244eedc5
09:30 moritz does the moarvm backend suffer from the same bug?
09:30 moritz and do we have a unit test?
09:34 arnsholt My test script can probably be turned into a unit test
09:35 arnsholt 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 moritz ah
09:36 moritz arnsholt: if you nopaste your test script somewhere, I can look into turning it into a unit test
09:36 arnsholt https://gist.github.com/arnsholt/7059777
09:37 arnsholt 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?
09:37 arnsholt Yeah
09:38 iSlug joined #perl6
09:38 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 :-)
09:39 arnsholt The does magic happens in Rakudo's src/Perl6/Metamodel/Mixins.nqp
09:40 arnsholt I think those bits should be more or less applicable to NQP's HOWs as well
09:41 moritz arnsholt: and in the end, &test.name eq 'what we want' should be true, right?
09:42 arnsholt No, nqp::can(nqp::clone($obj), 'bar') should return true
09:43 arnsholt I'll try to wrangle it into submission as NQP code later today or tonight
09:53 kurahaupo joined #perl6
09:54 denisboyun joined #perl6
10:05 dalek Perlito: e1a3c3f | (Flavio S. Glock)++ | / (3 files):
10:05 dalek Perlito: Perlito5 - js - goto fix
10:05 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/e1a3c3f3c4
10:08 lue joined #perl6
10:24 fhelmberger joined #perl6
10:59 pernatiy joined #perl6
11:01 iSlug joined #perl6
11:25 diakopter .tell TimToady http://www.drdobbs.com/mobile/fac​ebook-adopts-d-language/240162694
11:25 yoleaux diakopter: I'll pass your message to TimToady.
11:27 diakopter .tell stevan http://www.infoworld.com/print/228905
11:27 yoleaux diakopter: I'll pass your message to stevan.
11:27 diakopter stevan_: ^
11:30 dalek Perlito: 88e5ab4 | (Flavio S. Glock)++ | / (3 files):
11:30 dalek Perlito: Perlito5 - js - cleanup
11:30 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/88e5ab474b
12:07 rindolf joined #perl6
12:07 rindolf Hi all.
12:08 kaleem joined #perl6
12:11 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
12:11 jnthn The Moar one doesn't have the risk the JVM one does 'cus it doesn't store a duplicate st pointer anywhere.
12:12 arnsholt I'll try to make a unit test for this, in case of refactoring or some such
12:12 jnthn Yeah
12:12 jnthn It can go in NQP
12:12 jnthn Tehre's no does operator
12:12 arnsholt Yeah
12:12 jnthn but .HOW.mixin(...) is there
12:12 arnsholt Oh, that makes it a lot simpler
12:15 pdurbin left #perl6
12:17 jnthn arnsholt: Does that fix nicely unblock nativecall work? :)
12:21 arnsholt It was mostly unblocked by the box_target fix you put in a while back
12:21 arnsholt This was an annoying failure in the very first test file
12:21 jnthn *nod*
12:21 jnthn Good to have it out of the way.
12:22 arnsholt Yeah, definitely
12:23 jnthn Hopefully, November brings the JVM Star
12:24 grondilu joined #perl6
12:24 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
12:24 arnsholt The three easy ones, but still
12:24 jnthn yay :)
12:25 jnthn I guess arrays and structs next?
12:26 arnsholt Arrays, probably then structs
12:26 jnthn CArray will probably be the same pain as VMArray
12:26 jnthn Since the JVM needs you to tell it want kinda memory you're working with for the array
12:26 jnthn Whereas in C you can just screw
12:27 jnthn Wonder if it's possible to base CArray off VMArray somehow...
12:27 arnsholt Troo that
12:28 arnsholt 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
12:28 arnsholt I know =D
12:28 jnthn and you don't have to support mixins... :)
12:28 arnsholt Actually, I might do callbacks first. They look to be reasonably straightforward in JNA \o/
12:28 jnthn ooh
12:29 dalek zavolaj: d5fbad0 | (Arne Skjærholt)++ | t/02-simple-args.t:
12:29 dalek zavolaj: Skip a test on JVM for the time being.
12:29 dalek zavolaj: review: https://github.com/jnthn/zavolaj/commit/d5fbad0357
12:29 dalek zavolaj: 50bcadd | (Arne Skjærholt)++ | t/03-simple-returns.t:
12:29 dalek zavolaj: Mark a test as TODO on JVM.
12:29 dalek zavolaj: review: https://github.com/jnthn/zavolaj/commit/50bcadd31c
12:29 mtk joined #perl6
12:31 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;␤␤»
12:31 arnsholt That's a missing s/p6//, right?
12:32 arnsholt Hmm, no
12:32 arnsholt r: say Int.REPR
12:32 camelia rakudo e55c66: OUTPUT«P6opaque␤»
12:34 arnsholt Heh, it's a NYI I think
12:36 * [Coke] yawns, and heads off to $dayjob
12:37 jnthn wow, a real NYI!
12:37 jnthn I wonder if it's tested...
12:37 masak doubt it.
12:39 jnthn same
12:40 jnthn If there were a fudge-on-JVM test for it I'd probably have been like "om nom LHF" :)
12:40 jnthn *fudged
12:40 jnthn .oO( "fadge" )
13:05 arnsholt I'll have a look. If there's no test I'll add one
13:10 denis_boyun joined #perl6
13:15 iSlug joined #perl6
13:21 woolfy left #perl6
13:24 woolfy joined #perl6
13:31 lowpor03 joined #perl6
13:31 iSlug joined #perl6
13:37 btyler joined #perl6
13:38 colomon joined #perl6
13:44 ajr joined #perl6
13:46 bluescreen10 joined #perl6
13:50 dalek Perlito: 5b2a060 | (Flavio S. Glock)++ | / (3 files):
13:50 dalek Perlito: Perlito5 - js - infrastructure for variable redeclaration
13:50 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/5b2a060fac
13:53 woolfy1 joined #perl6
13:54 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:58 skids joined #perl6
14:03 moritz I think I noticed that too, once, and then ignored it again
14:15 jnap joined #perl6
14:15 colomon joined #perl6
14:21 sqirrel joined #perl6
14:24 masak this afternoon, I have wrested some time away from $dayjob to work on t4 reviews.
14:25 masak also, I will keep thinking about good macro use cases.
14:28 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:29 mathw ...I really hope you don't want one of those, though
14:29 mathw I've always suspected the best use of macros is for writing really neat libraries and frameworks
14:29 mathw that seems to be how they get used in Lisps
14:31 denis_boyun joined #perl6
14:32 masak aye.
14:33 arnsholt jnthn: Any ideas about the AWOL test file in Rakudo?
14:33 jnthn no :)
14:33 arnsholt Right
14:33 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".
14:34 jnthn oh...I see it
14:34 jnthn I think it's a test for something Rakudo has but is not spec
14:34 dalek rakudo/nom: e9830d3 | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java:
14:34 dalek rakudo/nom: Implement p6reprname op on JVM.
14:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e9830d3fe5
14:34 jnthn Actually that'd be a sane place to put testse like :from<jvm>
14:34 masak mathw: subroutines do that during runtime. macros do that during compile time.
14:34 jnthn Which are not spec but still Rakudo-provided.
14:34 jnthn We should probably run them as aprt of make test
14:34 arnsholt Yeah =)
14:35 jnthn Also, 00-parrot and 01-sanity could really just merge into 01-sanity :)
14:35 arnsholt But .REPR is spec, right?
14:35 jnthn Yes
14:35 jnthn It is
14:35 jnthn The p6reprname exists in order to hand back a Perl 6 Str
14:35 jnthn Maybe we should have a t/jvm and t/parrot for the vm-specific things
14:36 jnthn Rather than running then skip-alling 09-pir.t on Rakudo JVM
14:38 colomon joined #perl6
14:38 arnsholt True
14:38 arnsholt My test for p6reprname is just making sure Foo.REPR works though
14:38 arnsholt Since in Rakudo .REPR delegates to p6reprname
14:39 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:40 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
14:40 mathw People are going to do awesome things with them
14:40 mathw Maybe even me
14:41 masak the difference is simply that: BEGIN semantics rather than mainline semantics.
14:42 masak all that stuff with ASTs is simply necessary because the two worlds operate with different currencies.
14:42 mathw yeah
14:44 dalek nqp: 92a3962 | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/n​qp/runtime/NativeCallOps.java:
14:44 dalek nqp: Add a missing decont.
14:44 dalek nqp: review: https://github.com/perl6/nqp/commit/92a39629b4
14:48 tadzik oh, the backlog
14:48 tadzik hello #perl6
14:48 jnthn tadzik: I'd say hello, but it'd make more backlog :P
14:48 tadzik it's now frontlog :P
14:50 * masak .oO( it's... NOW fr... no, wait... here it comes... NOW... dang it... )
14:51 masak tadzik: "Yesterday is history, tomorrow is a mystery. Today? Today is a gift."
14:51 masak tadzik: "That’s why we call it the present." :P
14:52 arnsholt All right, four test files working =D
14:52 lizmat joined #perl6
14:53 jnthn Go arnsholt!
14:54 jnthn arnsholt: Which one did you make pass? :)
14:54 LWA joined #perl6
14:55 tadzik masak: hm hm, where did I hear that befoer? :)
14:56 masak tadzik: Kung Fu Panda.
14:57 benabik joined #perl6
14:58 tadzik hm, never seen that one :)
14:58 arnsholt jnthn: 04-pointers
14:59 arnsholt All that was blocking it was Foo.REPR, so it was really easy as well
14:59 araujo joined #perl6
14:59 kurahaupo joined #perl6
15:00 arnsholt The deps in the test files mean that callbacks block on structs, and the refresh things block on both arrays and structs
15:10 kurahaupo_ joined #perl6
15:11 kurahaupo joined #perl6
15:16 kurahaupo_ joined #perl6
15:19 colomon joined #perl6
15:20 robinsmidsrod joined #perl6
15:23 jnthn arnsholt: Well, I suspect module usage wise, arrays and structs are most depended on by e.g. MiniDBI
15:24 grondilu rn: say join ",", ([^3], [<foo bar>])»[]
15:24 camelia rakudo e9830d, niecza v24-98-g473bd20: OUTPUT«0 1 2,foo bar␤»
15:24 * grondilu was expecting 0,1,2,foo,bar
15:24 grondilu rn: say join ",", ([^3], [<foo bar>])».list
15:24 camelia rakudo e9830d, niecza v24-98-g473bd20: OUTPUT«0 1 2,foo bar␤»
15:24 grondilu *
15:28 jnthn decommute
15:30 dansamo joined #perl6
15:32 kurahaupo joined #perl6
15:33 TimToady quick, rewrite Moar in D :P
15:33 yoleaux 11:25Z <diakopter> TimToady: http://www.drdobbs.com/mobile/fac​ebook-adopts-d-language/240162694
15:34 lowpor03 joined #perl6
15:34 arnsholt jnthn: Oh, definitely. It's just that callbacks could've been an easy win
15:35 arnsholt 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 dayangkun joined #perl6
15:42 REPLeffect joined #perl6
15:42 ajr joined #perl6
15:42 [particle] joined #perl6
15:43 arnsholt "@SuppressWarnings("unchecked") // Because Java implemented generics stupidly" =D
15:43 denis_boyun joined #perl6
15:45 masak they chose a certain kind of forwards compatibility (as in "do not break the world") rather than a really clean implementation.
15:45 masak it was a tradeoff, and one which probably couldn't have done much differently.
15:46 masak but it did mean Java got the crappy generics, and C# got the nice ones.
15:47 arnsholt Definitely. They went the way they did for perfectly legitimate reasons
15:48 arnsholt But yeah, still means Java generics are a bit annoying
15:49 * masak .oO( we call it "erasure", which is a technical term meaning "it sucks" )
15:54 vky joined #perl6
16:00 cognominal http://en.wikipedia.org/wiki/Type_inference     "[type inference] is also planned for Perl 6".   WTF?
16:01 cognominal Is TimToady  hiding stuff from us in plain sight?
16:02 dalek nqp/unified-build: 8f7df78 | moritz++ | tools/build/Makefile- (3 files):
16:02 dalek nqp/unified-build: rename some more Makefile targets
16:02 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/8f7df788fb
16:02 dalek nqp/unified-build: e6580ee | moritz++ | Configure.pl:
16:02 dalek nqp/unified-build: [build] write targets like "all:" that delegate to p-all, j-all etc. (whatever is available)
16:02 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/e6580ee322
16:02 dalek nqp/unified-build: c72977b | moritz++ | / (7 files):
16:02 dalek nqp/unified-build: [build] untangle the runners
16:02 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/c72977b573
16:02 moritz you can now do
16:03 FROGGS joined #perl6
16:03 moritz perl Configure.pl --backends=parrot,jvm
16:03 colomon moritz++
16:03 flussence_ \o/
16:03 moritz and then run 'make j-test' and 'make p-test'
16:03 moritz dunno why 'make test' only runs j-test
16:04 flussence_ do things like "--parrot-make-option" still work with that?
16:04 moritz haven't tested it, but should still work, yes
16:04 arnsholt Cool!
16:04 arnsholt Are things installed to separate locations as well?
16:05 flussence_ well then, guess I'll be the tester for that...
16:07 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 benabik joined #perl6
16:07 moritz FROGGS: pretty far along
16:07 moritz FROGGS: worth doing stuff in the branch
16:07 moritz (and there's no ConfigureMoar.pl anymore in that branch :-)
16:08 FROGGS yeah...
16:15 alester joined #perl6
16:28 TimToady type inference isn't exactly planned; I see it more as inevitable from the pressure to optimize gradually typed code
16:30 colomon you're planning on it being inevitable?  ;)
16:33 cognominal ok, good to know
16:35 SamuraiJack joined #perl6
16:42 dmol joined #perl6
16:45 * jnthn back
16:45 vky joined #perl6
16:47 kurahaupo_ joined #perl6
16:49 arnsholt jnthn: Thought of the moment: A circular list of CStructs is all going to end in tears, isn't it?
16:49 fhelmberger joined #perl6
16:49 kurahaupo joined #perl6
16:49 TimToady or it will never end
16:50 arnsholt Yeah. A neverending stream of tears
16:50 jnthn arnsholt: Why, ooc? :)
16:51 * jnthn doesn't immediately see a reason why it has to :)
16:51 arnsholt It'll do an infinite pointer chase
16:51 jnthn Where, exactly?
16:51 arnsholt Oh, right. The Parrot implementation actually won't
16:52 arnsholt 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 :)
16:52 jnthn Sometimes, our past selves were smarter than we realized ;)
16:52 arnsholt Indeed
16:53 TimToady and sometimes our present selves are stupider than we had hoped :)
16:53 arnsholt Very, very true
16:53 jnthn Indeed :)
16:53 TimToady .oO(Do not look a present horse in the mouth.)
16:54 TimToady .oO(Do not look a past horse in the mouth either, since its mouth will be on the other end.)
16:55 jnthn .oO( "All these people looking in my mouth are making me horse" )
16:56 LWA joined #perl6
17:07 jnap left #perl6
17:08 iSlug joined #perl6
17:12 [Sno] joined #perl6
17:17 BenGoldberg joined #perl6
17:17 ssutch joined #perl6
17:17 kurahaupo_ joined #perl6
17:19 BenGoldberg rn: say 'abcd' ~~ /(\w\w)(\w\w)/
17:19 camelia rakudo e9830d, niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
17:20 BenGoldberg rn: say /(\w\w)(\w\w)/ R~~ 'abcd'
17:20 camelia rakudo e9830d: OUTPUT«True␤»
17:20 camelia ..niecza v24-98-g473bd20: OUTPUT«「abcd」␤ 0 => 「ab」␤ 1 => 「cd」␤␤»
17:21 BenGoldberg rn: say [~] 1..5
17:21 camelia rakudo e9830d, niecza v24-98-g473bd20: OUTPUT«12345␤»
17:21 BenGoldberg rn: say [R~] 1..5
17:22 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 camelia ..rakudo e9830d: OUTPUT«54321␤»
17:22 TimToady one rakudobug, one nieczabug, seems to me
17:23 dalek Heuristic branch merge: pushed 24 commits to nqp/unified-build by moritz
17:25 TimToady the nieczabug seems to be in not handling a list-associative reversal correctly
17:25 dalek nqp/unified-build: 283d36c | moritz++ | Configure.pl:
17:25 dalek nqp/unified-build: "install" target
17:25 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/283d36c52f
17:25 TimToady so I'd predict that other list-associative operators would also fail
17:28 TimToady 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…»
17:28 camelia ..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␤␤»
17:28 TimToady ooh, same failure in rakudo now :)
17:29 TimToady (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?
17:30 colomon rn: say [R+] 1
17:30 camelia niecza v24-98-g473bd20: OUTPUT«1␤»
17:30 camelia ..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␤␤»
17:30 colomon well, this certainly is a rich vein of bugs
17:33 TimToady reversing the entire list would seem to be the most straightforward thing to do
17:35 colomon you mean transforming [Rop] list to [op] list.reverse ?
17:35 colomon what is $a R~ $b R~ $c supposed to do?
17:36 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:38 kurahaupo joined #perl6
17:40 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.
17:40 * TimToady guesses not
17:41 * colomon has discovered that a $work bug he fixed a week ago has somehow mutated into a brand new bug.  :(
17:43 TimToady doesn't look like roast has such a test, offhand
17:44 TimToady it tests that R is transparent to precedence, but doesn't seem to test that it is also transparent to associativity
17:45 TimToady 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:46 TimToady std: 1 R, 2 , 3
17:46 camelia std a0bcfb1: OUTPUT«[31m===[0mSORRY![31m===[0m�"R" and "," are non-associative and require parens at /tmp/PD4G3MHiRu line 1:�------> [32m1 R, 2 , [33m�[31m3[0m�Check failed�FAILED 00:01 122m�»
17:46 TimToady hmm, should say R, there, but still
17:47 TimToady std: 1 R| 2 R& 3
17:47 camelia std a0bcfb1: OUTPUT«ok 00:01 122m␤»
17:47 TimToady is fine because of precedence
17:47 TimToady std: 1 R| 2 R^ 3
17:47 camelia std a0bcfb1: OUTPUT«ok 00:01 122m␤»
17:48 TimToady hmm, that should've faile, I think
17:48 TimToady *ed
17:48 TimToady std: 1 | 2 ^ 3
17:48 camelia std a0bcfb1: OUTPUT«[31m===[0mSORRY![31m===[0m�"|" and "^" are non-associative and require parens at /tmp/sj4c2F0cVB line 1:�------> [32m1 | 2 ^ [33m�[31m3[0m�Check failed�FAILED 00:01 122m�»
17:49 TimToady stdbug in R transparency too
17:49 TimToady probably sees both operators as "R" and says "That's fine then."
17:51 GlitchMr std: 1, 2, 3 R= my @array
17:51 TimToady std: 1 X| 2 X^ 3
17:51 camelia std a0bcfb1: OUTPUT«[31m===[0mSORRY![31m===[0m�Cannot reverse the args of = because list assignment operators are too fiddly at /tmp/Pt4qwqyOUb line 1:�------> [32m1, 2, 3 R=[33m�[31m my @array[0m�Check failed�FAILED 00:01 125m�»
17:51 camelia std a0bcfb1: OUTPUT«[31m===[0mSORRY![31m===[0m�"X|" and "X^" are non-associative and require parens at /tmp/8ehCWp4Lht line 1:�------> [32m1 X| 2 X^ [33m�[31m3[0m�Check failed�FAILED 00:01 122m�»
17:51 TimToady so R is wrong but not X, hmm
18:08 ajr joined #perl6
18:09 dalek std: 082981d | larry++ | STD.pm6:
18:09 dalek std: R and S metaops should include subop in $<sym>
18:09 dalek std: review: https://github.com/perl6/std/commit/082981d96c
18:09 dalek rakudo/unified-build: 54ffc91 | moritz++ | tools/build/Makefile-Parrot.in:
18:09 dalek rakudo/unified-build: [parrot] use nqp-p instead of nqp
18:09 dalek rakudo/unified-build: review: https://github.com/rakudo/rakudo/commit/54ffc91ba5
18:11 kaare_ joined #perl6
18:18 stevan_ joined #perl6
18:19 spider-mario joined #perl6
18:23 masak a really nice introduction to Haskell: http://yannesposito.com/Scratch​/en/blog/Haskell-the-Hard-Way/
18:23 xinming joined #perl6
18:24 TimToady quick, rewrite Moar in Haskell!
18:25 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. :)
18:27 diakopter eh
18:32 pecastro joined #perl6
18:34 dalek nqp/unified-build: 485d998 | moritz++ | tools/build/install-jvm-runner.pl:
18:34 dalek nqp/unified-build: install nqp on JVM as nqp-j
18:34 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/485d99887b
18:35 masak I think Parrot captured people's imaginations because it had ambitious goals.
18:36 masak it's important to have ambitious goals. among other things.
18:36 diakopter "Let's go to the moon" is ambitious.
18:37 diakopter "Let's build a Dyson sphere" is something else
18:37 masak diakopter: you have a point, and I believe I see it.
18:38 masak 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 masak but having language X be a slang of Perl 6, for various values of X, is still quite cool.
18:39 FROGGS +1 to build a dyson sphere
18:40 masak :)
18:40 masak diakopter++ is right. it would be something else ;)
18:41 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 * 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 #perl6
18:42 moritz ~/p6/rakudo>find install/ -name nqp.jar
18:42 moritz install/lib/parrot/5.9.0-dev​el/languages/nqp/lib/nqp.jar
18:42 moritz oops.
18:42 masak arnsholt: maybe all the unaccounted-for "dark matter" is made of Dyson spheres.
18:43 sorear joined #perl6
18:43 diakopter I try to register languagex.com on godaddy. it suggests Lang-U-Ag-Ex.com instead.  -_-
18:44 diakopter oh, also Language-You-Ag-Ex.net  how helpful.
18:45 moritz wow, I've managed to break installed nqp-p AND installed nqp-j
18:49 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;
18:49 camelia rakudo e9830d: ( no output )
18:50 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:53 dalek nqp/unified-build: 66eb272 | moritz++ | tools/build/Makefile-Parrot.in:
18:53 dalek nqp/unified-build: Parrot's NQP_LANG_DIR is different from the others
18:53 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/66eb2725be
18:53 moritz ... and that fixes the nqp-j failure
18:53 moritz nqp-p still b0rked
18:53 FROGGS joined #perl6
18:54 denis_boyun joined #perl6
18:56 arnsholt jnthn: When making nqp::consts out of the TYPE_CHECK constants, we don't want to include the _MASK one, right?
18:57 bluescreen10 joined #perl6
18:58 dalek rakudo/unified-build: 5df1482 | moritz++ | ConfigureJVM.pl:
18:58 dalek rakudo/unified-build: [JVM] use "install" prefix, and nqp-j
18:58 dalek rakudo/unified-build: review: https://github.com/rakudo/rakudo/commit/5df14829f2
18:58 spider-mario joined #perl6
19:02 dalek rakudo/unified-build: 07e119e | moritz++ | tools/build/Makefile- (2 files):
19:02 dalek rakudo/unified-build: avoid variable name collisions
19:02 dalek rakudo/unified-build: review: https://github.com/rakudo/rakudo/commit/07e119e1e7
19:04 dalek rakudo/unified-build: 9fbb4e7 | moritz++ | Configure.pl:
19:04 dalek rakudo/unified-build: [parrot] use nqp-p, really.
19:04 dalek rakudo/unified-build: review: https://github.com/rakudo/rakudo/commit/9fbb4e71a4
19:04 woolfy1 left #perl6
19:05 arnsholt moritz: You're a hero for doing the config reunification work, BTW
19:07 moritz :-)
19:07 woolfy joined #perl6
19:08 FROGGS absolutely
19:08 FROGGS it is not the funniest job, but an awesome one :o)
19:09 FROGGS (awesome for us)
19:09 diakopter moritz++
19:10 arnsholt moritz++ indeed
19:12 moritz can anybody please test the nqp build + make test on windows?
19:12 moritz (with parrot backend, mostly)
19:12 dalek rakudo/unified-build: 3deeff2 | moritz++ | tools/build/Makefile- (2 files):
19:12 dalek rakudo/unified-build: [build] shuffle around stuff from the Makefiles a bit
19:12 dalek rakudo/unified-build: review: https://github.com/rakudo/rakudo/commit/3deeff2aa6
19:14 dalek rakudo/unified-build: 2b18010 | moritz++ | tools/build/Makefile- (2 files):
19:14 dalek rakudo/unified-build: [build] avoid collision of HARNESS_WITH_FUDGE
19:14 dalek rakudo/unified-build: review: https://github.com/rakudo/rakudo/commit/2b18010432
19:16 moritz fwiw I've decided not to install an 'nqp' binary for now
19:16 diakopter ++
19:16 moritz nqp is low-level enough that we can force people to use nqp-j or nqp-p
19:16 moritz can't do that with rakudo/perl6 though :-)
19:17 Rotwang joined #perl6
19:17 arnsholt Yeah
19:17 arnsholt 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
19:19 dalek nqp/unified-build: 7297c44 | moritz++ | tools/build/Makefile-Parrot.in:
19:19 dalek nqp/unified-build: get rid of "nqp" executable
19:19 dalek nqp/unified-build:
19:19 dalek nqp/unified-build: it did not work, and we can force people to use nqp-j or nqp-p
19:19 dalek nqp/unified-build: review: https://github.com/perl6/nqp/commit/7297c44648
19:20 FROGGS /o\
19:23 arnsholt I can definitely live with that! =)
19:34 lue hello world o/
19:34 dalek rakudo/unified-build: a135bc6 | moritz++ | tools/lib/NQP/Configure.pm:
19:34 dalek rakudo/unified-build: (mostly) import NQP::Configure from nqp
19:34 dalek rakudo/unified-build: review: https://github.com/rakudo/rakudo/commit/a135bc6140
19:37 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 moritz probably   --backends=parrot,jvm and optionally --prefix=
19:39 moritz and if only prefix is present, look into the prefix which backends are available
19:39 moritz and --with-nqp goes
19:39 moritz away
19:40 moritz 'cause there's not just one nqp, and it always looks in --prefix
19:40 moritz does that sound sensible?
19:40 lue jnthn: have you seen this from a while ago? https://gist.github.com/lue/7078598
19:42 sizz joined #perl6
19:42 jnthn lue: Hm, I'd have to look at it in context but not sure why to remove it? :)
19:44 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 Rotwang joined #perl6
19:45 lue jnthn: discussion last night on the subject starts here: http://irclog.perlgeek.de/​perl6/2013-10-21#i_7740763
19:46 jnthn lue: Looks like you're correct
19:46 jnthn And that we get rid of an alternation
19:47 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:48 lue s/comment/correctness/
19:48 jnthn Very possible speed
19:49 jnthn If it was pre-LTM for example...
19:49 jnthn Now, the tran-LTMer will happily look into the unv
19:50 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:51 jnthn Yeah. But it's no worse, and it's a simplification :)
19:51 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
19:51 jnthn And I don't see how this case could be these days
19:52 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:53 jnthn aye
19:53 lue moritz: will do, just have to update NQP if needed first.
19:53 * lue will enjoy the mathing to come :)
19:55 BenGoldberg r: say <Hacker> R, <Just>, <R,> R, <Another>
19:55 camelia rakudo e9830d: OUTPUT«Just Another R, Hacker␤»
19:55 masak :P
19:59 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.  :)
20:00 * moritz is sure he hasn't read enough of the discussion above to comment
20:00 * lue personally has never found himself needing R :/
20:00 colomon …. actually, is infix:<,> list-associative?
20:01 moritz lue: that doesn't preclude you from being a valuable member of society
20:01 moritz colomon: it is
20:01 lue :)
20:01 moritz if not infix:<,>, what is? :-)
20:01 lue (it does mean my opinions would lean towards "R seems kinda useless, don't it? Let's get rid of it!")
20:02 colomon n: say <Hacker> R, <Just>, <R,> R, <Another>
20:02 camelia niecza v24-98-g473bd20: OUTPUT«[31m===[0mSORRY![31m===[0m��"R" and "," are non-associative and require parens at /tmp/aDysg8M_4Z line 1:�------> [32msay <Hacker> R, <Just>, [33m�[31m<R,> R, <Another>[0m��"," and "R," are non-associative and require parens at /tmp…»
20:02 colomon so yes, wrong.  :)
20:02 colomon std: say <Hacker> R, <Just>, <R,> R, <Another>
20:02 camelia std 082981d: OUTPUT«[31m===[0mSORRY![31m===[0m�"R," and "," are non-associative and require parens at /tmp/B7gfb0JVEY line 1:�------> [32msay <Hacker> R, <Just>, [33m�[31m<R,> R, <Another>[0m�"," and "R," are non-associative and require parens at /tmp/B7gfb0JVEY line…»
20:02 colomon TimToady++ # improved the error message on std today
20:03 BenGoldberg rn: my $a = "bar"; $a [R~]= "foo"; say $a
20:03 camelia niecza v24-98-g473bd20: OUTPUT«foobar␤»
20:03 camelia ..rakudo e9830d: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/FupIduYeNT�Preceding context expects a term, but found infix = instead�at /tmp/FupIduYeNT:1�------> [32mmy $a = "bar"; $a [R~]=[33m�[31m "foo"; say $a[0m�»
20:06 BenGoldberg r: say [\**] 1..4
20:06 camelia rakudo e9830d: OUTPUT«4 81 2417851639229258349412352 1␤»
20:07 masak lue: I know of one good use of R
20:07 BenGoldberg ?
20:07 masak lue: when the operands come in an already-fixed order, and you need, let's say, "reverse minus".
20:07 masak lue: I've seen it once in a nice RPN calculator pmichaud++ wrote.
20:08 masak 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!)
20:09 lue 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 BenGoldberg Or is it the other way around?
20:10 geekosaur first one is correct
20:10 geekosaur stack-based
20:11 xenoterracide joined #perl6
20:12 lue moritz: I'm guessing I want to use sample σ, not population σ, right?
20:18 LWA joined #perl6
20:22 FROGGS joined #perl6
20:32 dalek nqp: 3b9cb86 | (Arne Skjærholt)++ | src/vm/ (2 files):
20:32 dalek nqp: Add nqp::consts for the TYPE_CHECK_* family of constants.
20:32 dalek nqp:
20:32 dalek nqp: This closes #126.
20:32 dalek nqp: review: https://github.com/perl6/nqp/commit/3b9cb865fe
20:33 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:34 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
20:35 arnsholt If the chances of getting big outliers is there, you might be better served by something like the median and interquartile range
20:37 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
20:37 arnsholt I've been doing quite a bit of this recently, so it's a chance to geek out a bit
20:40 grondilu joined #perl6
20:42 lue :)
20:46 * 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:47 geekosaur Dyson's original assumption was that the point was to capture and use all the solar power output
20:47 aindilis joined #perl6
20:48 TimToady thermodynamically speaking, you can't
20:48 TimToady you have to radiate heat
20:48 geekosaur yes, but the radiated heat is difficult to detect over interstellar distances
20:48 geekosaur (although, see recent discovery of free-floating planets by their heat signatures)
20:49 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 TimToady free-floaters don't have to radiate the energy output of a star
20:49 TimToady at we still can detect them by their IR siggie
20:50 TimToady dark matter doesn't seem to radiate *at all*
20:50 TimToady that we can detect
20:56 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:58 grondilu redirecting the light of a star to some kind of a sink?  Easy, make a kugleblitz:  https://en.wikipedia.org/wik​i/Kugelblitz_(astrophysics)
20:59 dmol joined #perl6
21:17 dayangkun joined #perl6
21:19 REPLeffect joined #perl6
21:20 nebuchadnezzar joined #perl6
21:21 denisboyun joined #perl6
21:24 fhelmberger joined #perl6
21:31 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:43 vky joined #perl6
21:45 stevan_ joined #perl6
21:50 araujo joined #perl6
21:53 dalek nqp/stdsigspace: e31c208 | Mouq++ | src/QRegex/P6Regex/ (2 files):
21:53 dalek nqp/stdsigspace: Don't grab sigspace after $<var> = binding
21:53 dalek nqp/stdsigspace: review: https://github.com/perl6/nqp/commit/e31c2088d8
21:55 dalek nqp/stdsigspace: 1203912 | Mouq++ | src/QRegex/P6Regex/Grammar.nqp:
21:55 dalek nqp/stdsigspace: Remove hard-to-reach debugging lines
21:55 dalek nqp/stdsigspace: review: https://github.com/perl6/nqp/commit/1203912e97
22:07 iSlug joined #perl6
22:20 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:36 BenGoldberg joined #perl6
22:39 lue hey, I got some times: https://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:52 LWA joined #perl6
22:52 Mouq n: say "abc = 123" ~~ /:s $<key>=\w+ \= $<val>=\S+ /
22:52 camelia niecza v24-98-g473bd20: OUTPUT«「abc = 123」␤ key => 「abc」␤ val => 「123」␤␤»
22:53 Mouq k
23:03 lue wha? I don't have push rights to NQP‽
23:04 LWA joined #perl6
23:05 Mouq lue: Yeah, that's a separate bit IIRC
23:05 * lue has pull & push rights to every other perl6 repo, so idk...
23:05 Mouq Yeah
23:07 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:10 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 joined #perl6
23:58 Mouq n: say "abc, efg = 123" ~~ /:s $<key>=\w+ % \, \= $<val>=\S+ /
23:58 camelia niecza v24-98-g473bd20: OUTPUT«Nil␤»
23:58 Mouq n: say "abc, efg = 123" ~~ /:s $<key>=\w+ % [\, ] \= $<val>=\S+ /
23:58 camelia niecza v24-98-g473bd20: OUTPUT«Nil␤»
23:58 Mouq n: say "abc, efg = 123" ~~ /:s $<key>=\w +% \, \= $<val>=\S+ /
23:58 camelia niecza v24-98-g473bd20: OUTPUT«Nil␤»
23:59 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」␤␤»
23:59 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」␤␤»
23:59 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」␤␤»
23:59 Mouq Cool

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo