Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2015-04-24

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:15 vendethiel joined #perl6
00:28 laouji joined #perl6
00:39 dalek specs: 23147dd | TimToady++ | S32-setting-library/Containers.pod:
00:39 dalek specs: ':partial' option for partial final rotor result
00:39 dalek specs: review: https://github.com/perl6/specs/commit/23147dd79d
00:39 laouji joined #perl6
00:40 dalek rakudo/nom: ea0b3f0 | TimToady++ | src/core/List.pm:
00:40 dalek rakudo/nom: new rotor implementation to play with
00:40 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ea0b3f04a2
00:48 moritz 12
00:49 laouji joined #perl6
00:55 vendethiel joined #perl6
01:22 TimToady m: say ('a'..'z').rotor(2,3).perl
01:22 camelia rakudo-moar ea0b3f: OUTPUT«($("a", "b"), $("c", "d", "e"), $("f", "g"), $("h", "i", "j"), $("k", "l"), $("m", "n", "o"), $("p", "q"), $("r", "s", "t"), $("u", "v"), $("w", "x", "y"))␤»
01:22 TimToady m: say ('a'..'z').rotor(5 => -1).perl
01:22 camelia rakudo-moar ea0b3f: OUTPUT«($("a", "b", "c", "d", "e"), $("e", "f", "g", "h", "i"), $("i", "j", "k", "l", "m"), $("m", "n", "o", "p", "q"), $("q", "r", "s", "t", "u"), $("u", "v", "w", "x", "y"))␤»
01:22 TimToady m: say ('a'..'z').rotor(5 => -1, :partial).perl
01:22 camelia rakudo-moar ea0b3f: OUTPUT«($("a", "b", "c", "d", "e"), $("e", "f", "g", "h", "i"), $("i", "j", "k", "l", "m"), $("m", "n", "o", "p", "q"), $("q", "r", "s", "t", "u"), $("u", "v", "w", "x", "y"), $("y", "z"))␤»
01:24 TimToady we'll lose those $'s when we GLR, I think
01:24 TimToady m: say ('a'..'z').rotor(5 => -1).map(*.<>).perl
01:24 camelia rakudo-moar ea0b3f: OUTPUT«(("a", "b", "c", "d", "e"), ("e", "f", "g", "h", "i"), ("i", "j", "k", "l", "m"), ("m", "n", "o", "p", "q"), ("q", "r", "s", "t", "u"), ("u", "v", "w", "x", "y"))␤»
01:25 TimToady will look more like that
01:25 TimToady m: .say for lol |('a'..'z').rotor(5 => -1).map(*.<>)
01:25 camelia rakudo-moar ea0b3f: OUTPUT«a b c d e␤e f g h i␤i j k l m␤m n o p q␤q r s t u␤u v w x y␤»
01:26 TimToady probably about time to think about the semantic shift of map etc. for the GLR too
01:26 dayangkun joined #perl6
01:27 moritz which semantic shift?
01:27 TimToady .map not flattening, for instance
01:28 TimToady meeting &
01:32 moritz m: say <a b c d e f g h>.rotor(3).join('|')
01:32 camelia rakudo-moar ea0b3f: OUTPUT«a b c|d e f␤»
01:32 moritz m: say <a b c d e f g h>.rotor(3, :partial).join('|')
01:32 camelia rakudo-moar ea0b3f: OUTPUT«a b c|d e f|g h␤»
01:33 moritz m: say ('a'..'h').rotor(3, :partial).join('|')
01:33 camelia rakudo-moar ea0b3f: OUTPUT«a b c|d e f|g h␤»
01:33 aborazmeh joined #perl6
01:33 aborazmeh joined #perl6
01:34 Peter_R joined #perl6
01:35 moritz m: say ('a'..'h').rotor(2 => 1).join('|')
01:35 camelia rakudo-moar ea0b3f: OUTPUT«a b|d e|g h␤»
01:35 moritz m: say ('a'..'h').rotor(3 => -1).join('|')
01:35 camelia rakudo-moar ea0b3f: OUTPUT«a b c|c d e|e f g␤»
01:36 vendethiel joined #perl6
01:37 moritz m: say ('a'..'h').rotor(2, 3).join('|')
01:37 camelia rakudo-moar ea0b3f: OUTPUT«a b|c d e|f g␤»
01:37 moritz m: say ('a'..'h').rotor(1 => 1, 3).join('|')
01:37 camelia rakudo-moar ea0b3f: OUTPUT«a|c d e|f␤»
01:38 moritz m: say ('a'..'h').rotor(1 => 1, 3, :partial).join('|')
01:38 camelia rakudo-moar ea0b3f: OUTPUT«a|c d e|f|h␤»
01:38 moritz m: say ('a'..'h').rotor(1 => 1, 3 => -1, :partial).join('|')
01:38 camelia rakudo-moar ea0b3f: OUTPUT«a|c d e|e|g h␤»
01:39 dalek doc: 003d721 | moritz++ | / (2 files):
01:39 dalek doc: List.rotor
01:39 dalek doc: review: https://github.com/perl6/doc/commit/003d721988
01:40 moritz masak++ # release
01:40 moritz TimToady++ # speculating and implementing the new List.rotor
01:45 Juerd What's the real world use case for rotor?
01:47 dtscode thanks raydiak psch
01:54 dalek roast: 46452a1 | moritz++ | S32-list/rotor.t:
01:54 dalek roast: List.rotor tests
01:54 dalek roast: review: https://github.com/perl6/roast/commit/46452a1a58
01:55 dalek rakudo/nom: c44c52e | moritz++ | t/spectest.data:
01:55 dalek rakudo/nom: Run List.rotor tests
01:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c44c52e957
01:55 * moritz should try to sleep again
02:06 ugexe n-at-a-time for starters
02:18 colomon or 1 2, 2 3, 3 4, 4 5 # I find this a very common pattern in my code
02:41 dtscode i am loving perl 5
02:42 dtscode perl 6 even
02:55 vendethiel joined #perl6
02:59 noganex_ joined #perl6
03:06 telex joined #perl6
03:07 timotimo 0, 1, 2; 1, 2, 3; 2, 3, 4; ... is perfect for linear cellular automata
03:08 raiph joined #perl6
03:12 TimToady the basic problem is that the real world cannot be predicted, so it's tough to come up with use cases, but this covers a large number of similar situations with an FPish solution rather than procedural
03:19 ShimmerFairy joined #perl6
03:21 Woodi joined #perl6
03:48 vendethiel joined #perl6
03:51 skids m: say (1,0,1,1,1,0,1,0,1,0,1,0,0,0,1,0,0,1,0,1,0,1).rotor(5,-4).map: { ([+] $_.values) / 5 } # rolling everage.
03:51 camelia rakudo-moar c44c52: OUTPUT«0.8 0 0.6 0 0.8 0 0.6 0 0.6 0 0.4 0 0.6 0 0.4 0 0.4 0 0.2 0 0.4 0 0.2 0 0.2 0 0.4 0 0.4 0 0.4 0 0.4 0 0.6 0␤»
03:51 skids There are probably a lot of DSP applications using sliding windows.
04:02 raydiak waitwait that's not right...
04:02 raydiak m: say (^4).rotor(2,0).perl
04:02 camelia rakudo-moar c44c52: OUTPUT«($(0, 1), $( ), $(2, 3), $( ))␤»
04:02 raydiak '$( )'?
04:03 TimToady that's 2 => 0 now
04:04 TimToady or just 2
04:04 TimToady or are you wanting empty slices?
04:05 TimToady m: say (1,0,1,1,1,0,1,0,1,0,1,0,0,0,1,0,0,1,0,1,0,1).rotor(5 => -4).map: { ([+] $_.values) / 5 }
04:05 camelia rakudo-moar c44c52: OUTPUT«0.8 0.6 0.8 0.6 0.6 0.4 0.6 0.4 0.4 0.2 0.4 0.2 0.2 0.4 0.4 0.4 0.4 0.6␤»
04:05 raydiak oh right
04:06 TimToady we should probably disallow negative integers
04:08 raydiak agreed
04:11 raydiak m: role foo { has $.foo; multi trait_mod:is<foo> ($r, :$foo!) { say $r }; }; grammar G { token a is foo { .* } };
04:11 camelia rakudo-moar c44c52: OUTPUT«use of uninitialized value of type Any in string context  in any  at src/Perl6/World.nqp:2043␤␤Unhandled exception: No exception handler located for warn␤   at <unknown>:1  (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm:print_ex…»
04:12 vendethiel joined #perl6
04:12 raydiak am I doing something wrong, or are user-defined traits broken somewhere here? (in Grammar, on Regex, something like that)
04:24 raydiak m: role foo { multi trait_mod:is<foo> ($r, :$foo!) { }; }; sub a () is foo {}; # reduced
04:24 camelia rakudo-moar c44c52: OUTPUT«use of uninitialized value of type Any in string context  in any  at src/Perl6/World.nqp:2043␤␤Unhandled exception: No exception handler located for warn␤   at <unknown>:1  (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm:print_ex…»
04:39 spider-mario joined #perl6
04:43 vendethiel joined #perl6
04:45 mr-foobar joined #perl6
04:46 grettis joined #perl6
04:46 kaare_ joined #perl6
04:50 aindilis joined #perl6
04:52 nbdsp joined #perl6
04:52 nbdsp Greetings! Could someone advise please if STD.pm6 can be used for parsing Perl 6 code? When I try from command line: perl6 -Ilib -I. ./STD.pm6 parse ~/tst.pl6 - I receive an error: "Could not locate compile-time value for symbol P6."
04:52 yoleaux 21 Apr 2015 21:37Z <jnthn> nbdsp: I did a quick MOP hack... https://gist.github.com/jnthn/d8c27741c7b0d25f340d
04:54 TimToady no, STD only works by translating itself to P5, and it's really only intended to be a prototype that we will eventually throw away
04:54 TimToady there are a number of ways in which rakudo has surpassed STD already
04:54 nbdsp Ah, thanks!
05:03 nbdsp .tell jnthn Regarding M.pm6 - very useful and instructive, thanks!
05:03 yoleaux nbdsp: I'll pass your message to jnthn.
05:19 vendethiel joined #perl6
05:43 konsolebox joined #perl6
05:45 Psyche^ joined #perl6
05:46 konsolebox joined #perl6
06:03 dtscode_ joined #perl6
06:03 dtscode_ left #perl6
06:06 diana_olhovik_ joined #perl6
06:16 vendethiel joined #perl6
06:17 konsolebox joined #perl6
06:18 konsolebox joined #perl6
06:22 ggoebel joined #perl6
06:26 Timbus joined #perl6
06:41 gfldex joined #perl6
06:42 domidumont joined #perl6
06:47 RabidGravy joined #perl6
06:48 domidumont joined #perl6
06:48 FROGGS joined #perl6
06:49 Ven joined #perl6
06:53 rindolf joined #perl6
07:00 _mg_ joined #perl6
07:01 Rounin joined #perl6
07:01 dalek nqp: eec34ed | FROGGS++ | tools/build/MOAR_REVISION:
07:01 dalek nqp: bump moar frev for cp1252 support
07:01 dalek nqp: review: https://github.com/perl6/nqp/commit/eec34ed20f
07:02 dalek nqp: 2dbb0ab | skids++ | / (2 files):
07:02 dalek nqp: Activate previously existing windows-1252 charset support
07:02 dalek nqp: This needs some changes to moarvm to be in place first.
07:02 dalek nqp: review: https://github.com/perl6/nqp/commit/2dbb0ab9c0
07:02 dalek nqp: 08d257a | FROGGS++ | / (2 files):
07:02 dalek nqp: Merge pull request #236 from skids/windows-1252
07:02 dalek nqp:
07:02 dalek nqp: Activate previously existing windows-1252 charset support
07:02 dalek nqp: review: https://github.com/perl6/nqp/commit/08d257ae54
07:02 dalek rakudo/nom: 9f840b7 | FROGGS++ | tools/build/NQP_REVISION:
07:02 dalek rakudo/nom: bump nqp/moar rev for cp1252 support
07:02 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9f840b735f
07:03 dalek rakudo/nom: 35ea31f | skids++ | src/core/Str.pm:
07:03 dalek rakudo/nom: Hook up windows-1252 charset support.  This requires changes
07:03 dalek rakudo/nom: in moarvm an nqp to be committed first.
07:03 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/35ea31fa98
07:03 dalek rakudo/nom: 59f57a8 | FROGGS++ | src/core/Str.pm:
07:03 dalek rakudo/nom: Merge pull request #415 from skids/windows-1252
07:03 dalek rakudo/nom:
07:03 dalek rakudo/nom: Hook up windows-1252 charset support.
07:03 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/59f57a8063
07:09 nine .tell colomon ah, yes, I do not handle overloading at all, yet. Maybe I should have a look at that soonish.
07:09 yoleaux nine: I'll pass your message to colomon.
07:13 vendethiel joined #perl6
07:15 bjz joined #perl6
07:31 jnthn morning, #perl6
07:31 yoleaux 05:03Z <nbdsp> jnthn: Regarding M.pm6 - very useful and instructive, thanks!
07:44 darutoko joined #perl6
07:45 RabidGravy in Test, "use-ok" stands alone as having a hyphen instead of an underscore, is this for some reason I can't determine or just an accident of history?
07:45 cschwenz joined #perl6
07:46 vendethiel joined #perl6
07:47 [ptc] RabidGravy: no, it was desired to have all names in the Test module to use kebab-case instead of underscores
07:48 zakharyas joined #perl6
07:48 [ptc] RabidGravy: there's a PR waiting in the wings, but noone has bitten yet...
07:49 [ptc] RabidGravy: the idea being to have constitent naming in Test.pm
07:50 RabidGravy right, I won't worry too much, but it probably want's to go in sooner rather than later so the deprecations have time to work through
07:53 [ptc] we just have to convince one of the rakudo devs to apply the patch :-)
07:54 [ptc] strange, I'm still getting 404 when trying to download the latest nqp and/or rakudo...
07:55 konsolebox joined #perl6
07:55 RabidGravy https://github.com/rakudo/rakudo/pull/371 for reference
07:56 FROGGS [ptc]: me too :o(
07:56 konsolebox joined #perl6
07:56 RabidGravy I think there should be some element of deprecation on the existing subs
07:57 FROGGS m: say "rakudo-2015.04.tar.gz".chars; say "rakudo-2015.03.tar.gz".chars
07:57 camelia rakudo-moar 59f57a: OUTPUT«21␤21␤»
07:57 FROGGS hmmm, so it is not an invisible char this time
07:58 FROGGS m: say "rakudo-2015.04.tar.gz".perl; say "rakudo-2015.03.tar.gz".perl
07:58 camelia rakudo-moar 59f57a: OUTPUT«"rakudo-2015.04.tar.gz"␤"rakudo-2015.03.tar.gz"␤»
07:58 FROGGS m: say "rakudo-2015.04.tar.gz".ords; say "rakudo-2015.03.tar.gz".ords
07:58 camelia rakudo-moar 59f57a: OUTPUT«114 97 107 117 100 111 45 50 48 49 53 46 48 52 46 116 97 114 46 103 122␤114 97 107 117 100 111 45 50 48 49 53 46 48 51 46 116 97 114 46 103 122␤»
07:59 FROGGS so it is not the name
07:59 FROGGS pmichaud: HALP!
08:03 MARTIMM joined #perl6
08:03 moritz FROGGS: what URL do you get a 404 for?
08:04 FROGGS moritz: http://rakudo.org/downloads/nqp/nqp-2015.04.tar.gz
08:04 FROGGS moritz: and http://rakudo.org/downloads/rakudo/rakudo-2015.04.tar.gz
08:05 masak ohayo, #perl6
08:05 FROGGS hi masak
08:05 moritz FROGGS: it's a permission problem on the web server
08:05 moritz FROGGS: the file wasn't world readable
08:06 FROGGS moritz++ # you fixed it
08:06 [ptc] RabidGravy: re: deprecation, yes that was the idea.
08:07 rurban joined #perl6
08:07 masak did we resolve the permissions thing on the tarball yesterday?
08:07 masak I'm not fully backlogged yet.
08:07 [ptc] just now, I think
08:07 FROGGS masak: right now
08:07 jnthn I think moritz++ just did it :)
08:08 masak oh! moritz++
08:08 FROGGS though, we probably need a permanent solution
08:08 [ptc] now it goes!  yay!
08:08 [ptc] moritz++
08:08 moritz fwiw everyone who can scp packages to rakudo.org can also just log in there by ssh
08:08 FROGGS troo
08:08 moritz and run the appropriate chmod a+r command
08:09 [ptc] moritz: or maybe just use 'scp -p'?
08:09 [ptc] then the modes are preserved
08:09 [ptc] assuming, of course, that the locally set modes are correct
08:11 bjz joined #perl6
08:13 bjz joined #perl6
08:15 nine No mention of Inline::Perl5 integration in the ChangeLog :/
08:16 moritz nine: the surest way to get something into ChangeLog is to add it there yourself
08:17 nine moritz: which I'd have done had I known that
08:18 moritz nine: you can still add it, and even add it to the announcement
08:18 moritz nine: that way whoever writes the announcement for the next star release will have an easier time finding it
08:18 pecastro joined #perl6
08:19 dalek nqp: 667a3f7 | paultcochrane++ | tools/build/Makefile-Moar.in:
08:19 dalek nqp: Ensure config.status and plain nqp binary are cleaned in realclean
08:19 dalek nqp: review: https://github.com/perl6/nqp/commit/667a3f75e6
08:22 FROGGS moritz: though there won't be a star release this time most likely
08:23 moritz FROGGS: yes, but a diligent release manager will summarize the changes from all compiler releases since the last star release
08:23 moritz when there's one the next time
08:23 FROGGS ohh yes
08:26 moritz also, why did we say there likely won't be a star release?
08:26 moritz ecosystem still too broken?
08:26 FROGGS moritz: because the current slowdown when modules are installed would make it unusable
08:27 FROGGS you get a >2s startup time on fast machines, and it increases when you install additional stuff
08:29 nine I seem to be lacking a commit bit to rakudo
08:29 moritz eeks.
08:29 moritz nine: have you submitted a CLA to TPF?
08:29 itz joined #perl6
08:30 andreoss` joined #perl6
08:30 moritz this one here http://www.perlfoundation.org/contributor_license_agreement
08:30 andreoss` joined #perl6
08:30 moritz that's a prereq for getting a rakudo commit bit
08:30 moritz [ptc]: ^^ same for you
08:32 nine moritz: I guess not. Can I email this thing?
08:33 FROGGS I sent it as a letter to Walnut, and emailed it in parallel
08:33 nwc10 nine: it has to be signed. I don't know what the relevant bit of the US where TPF is domiciled considers to be acceptable for "signed"
08:34 nine I cannot remember when I sent a plain old letter. Could be a decade :)
08:37 cygx joined #perl6
08:37 cygx o/
08:38 cygx is it documented what you have to do to make your own Positional types work with for?
08:39 moritz I don't think so
08:39 moritz but iirc you need to do Iterable, at least
08:40 [ptc] moritz: I'd already filled one out for Parrot in 2006.  Do I need to do it again?
08:40 dalek rakudo/nom: 9e19470 | (Stefan Seifert)++ | docs/ (2 files):
08:40 dalek rakudo/nom: Mention Inline::Perl5 integration in ChangeLog and release announcement
08:40 dalek rakudo/nom:
08:40 dalek rakudo/nom: Thanks to moritz++ for pointing me there.
08:40 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9e19470a5d
08:40 dalek rakudo/nom: 7bc1a11 | moritz++ | docs/ (2 files):
08:40 dalek rakudo/nom: Merge pull request #416 from niner/nom
08:40 dalek rakudo/nom:
08:40 dalek rakudo/nom: Mention Inline::Perl5 integration in ChangeLog and release announcement
08:40 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7bc1a11570
08:40 espadrine_ joined #perl6
08:40 moritz [ptc]: I'm not sure; Parrot Foundation forked off of TPF at some point
08:41 nine moritz: oh, that's true for me, too.
08:41 cygx moritz: tried that, wasn't smart enough to make it work
08:41 nine moritz: thanks for merging
08:43 moritz nine: you're welcome
08:43 aborazmeh joined #perl6
08:43 aborazmeh joined #perl6
08:47 [ptc] moritz: I think Parrot forked off sometime after I'd signed up.  I'll have to check somehow
08:48 RabidGravy I've just added deprecations to the original branch of https://github.com/rakudo/rakudo/pull/371 and sent a PR there, is that the right thing to do or just make a new PR including the original changes to nom?
08:48 moritz [Coke]: could you please verify if TPF has CLAs for nine (Stefan Seifert) and [ptc] (Paul Cochrane)? Both would be old-ish (~2006). Thanks!
08:49 moritz iirc [Coke]++ has access to the list
08:49 RabidGravy [ptc], you have incoming anyhow :)
08:54 konsolebox joined #perl6
08:57 dakkar joined #perl6
09:06 vendethiel joined #perl6
09:09 dalek nqp: 5b982d7 | jnthn++ | tools/build/MOAR_REVISION:
09:09 dalek nqp: Bump MOAR_REVISION for uniname, spesh fixes.
09:09 dalek nqp: review: https://github.com/perl6/nqp/commit/5b982d769c
09:10 dalek rakudo/nom: de40075 | jnthn++ | tools/build/NQP_REVISION:
09:10 dalek rakudo/nom: Bump NQP_REVISION for various MoarVM fixes.
09:10 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/de40075716
09:10 dalek roast: 35b2288 | jnthn++ | S15-unicode-information/uniname.t:
09:10 dalek roast: Tests for RT #124144 (uniname out of bounds).
09:10 dalek roast: review: https://github.com/perl6/roast/commit/35b2288ec6
09:10 dalek roast: f687502 | jnthn++ | S05-metasyntax/longest-alternative.t:
09:10 dalek roast: Test for RT #124333 (huge alternation SEGV).
09:10 synbot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=124144
09:10 synbot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=124333
09:10 dalek roast: review: https://github.com/perl6/roast/commit/f68750297a
09:13 cygx for now, I'm just doing a method iterator { self };  method reify($) { Parcel.new(gather { take @foo[$_] for ^+@foo }); }
09:13 cygx it's probably all kinds of wrong
09:16 lizmat good *, #operl6!
09:16 lizmat backlogging now
09:16 lizmat cschwenz: re http://irclog.perlgeek.de/perl6/2015-04-23#i_10492165
09:18 lizmat it's the meta info of a *distribution* that states which compunit in that distribution emulate another *compunit*
09:18 lizmat and the meta info is handled by the CompUnitRepo
09:19 lizmat the CompUnitRepo.candidates just returns CompUnit objects
09:19 lizmat if you create your own CompUnit object for a module that is emulated, you can load it directly
09:19 lizmat similar to require in a way, I would think
09:19 aborazmeh joined #perl6
09:19 aborazmeh joined #perl6
09:20 lizmat anyway, that is what *I* think about it
09:20 lizmat OMV   (opinions may vary)
09:21 lizmat and yes, it's still NYI
09:25 bjz joined #perl6
09:29 lizmat Juerd: re http://irclog.perlgeek.de/perl6/2015-04-24#i_10493374 , getting a stream of coordinates, mapping them to line drawing endpoints, would be one
09:34 nine lizmat: that's....a very good use case :)
09:39 dalek rakudo/nom: b34241d | lizmat++ | src/core/List.pm:
09:39 dalek rakudo/nom: Remove unneccesary unboxing
09:39 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b34241d6e3
09:43 RabidGravy right, off to the seaside
09:43 dalek rakudo/nom: b1c3101 | lizmat++ | t/spectest.data:
09:43 dalek rakudo/nom: Maybe it was slow in 2011, it's pretty fast now
09:43 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b1c3101abd
09:43 beastd joined #perl6
09:47 nwc10 RabidGravy: whitstable?
09:47 nwc10 (IIRC, that used to be a value guess)
09:49 * cygx is playing around with NativeCall
09:49 cygx perl6 -I. -Mlibc -e 'my $buf = libc::malloc(1024); my $file = libc::fopen("libc.pm6", "r"); loop { libc::puts(chomp $file.gets($buf) // last) }'
09:49 dalek rakudo/nom: 27dfc5e | jnthn++ | src/core/Uni.pm:
09:49 dalek rakudo/nom: Implement Uni.codes.
09:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/27dfc5e95f
09:49 dalek rakudo/nom: 5615b7d | jnthn++ | src/core/Uni.pm:
09:49 dalek rakudo/nom: Implement array indexing on Uni.
09:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5615b7dbb6
09:49 dalek rakudo/nom: 7c89551 | jnthn++ | src/core/Uni.pm:
09:49 dalek rakudo/nom: Some missing :D on Uni methods.
09:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7c895514e3
10:00 nine cygx: beware: NativeCall's simplicity is highly addictive :)
10:00 vendethiel joined #perl6
10:00 dalek rakudo/nom: c7da6ce | jnthn++ | src/core/Uni.pm:
10:00 dalek rakudo/nom: .gist/.perl/.elems/.Numeric/.Int for Uni
10:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c7da6cea14
10:06 dalek rakudo/nom: 7b5d9a7 | jnthn++ | src/core/Uni.pm:
10:06 dalek rakudo/nom: Implement Uni.Bool.
10:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7b5d9a79f2
10:06 cygx nine: it is
10:06 cygx there are some warts, though
10:06 dalek roast: f4f5735 | jnthn++ | S15-nfg/long-uni.t:
10:06 dalek roast: Test covering non-tiny Uni -> Str handling.
10:06 dalek roast:
10:06 dalek roast: All the other tests so far for NFG look at just a handful of codes;
10:06 dalek roast: this covers dealing with longer strings and Uni buffers.
10:06 dalek roast: review: https://github.com/perl6/roast/commit/f4f57356b0
10:06 dalek roast: 588ebf6 | jnthn++ | S15-string-types/Uni.t:
10:06 dalek roast: Some tests for various methods on Uni.
10:06 dalek roast: review: https://github.com/perl6/roast/commit/588ebf6827
10:07 nine cygx: yes, I'm very much looking forward to being able to pass a Buf from C to Perl 6 for example.
10:07 nine cygx: if you feel the documentation is lacking something, please mention it on the channel. I guess I could contribute a bit there.
10:08 dalek rakudo/nom: f74477c | jnthn++ | t/spectest.data:
10:08 dalek rakudo/nom: Run S15-string-types/Uni.t on MoarVM.
10:08 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f74477c330
10:10 cygx nine: there's documentation ;)
10:10 cygx I just read the source and tests
10:10 nine cygx: http://doc.perl6.org/language/nativecall
10:11 coffee` joined #perl6
10:13 japhb joined #perl6
10:14 anaeem1 joined #perl6
10:14 abraxxa joined #perl6
10:14 nine What does "TBD" stand for?
10:14 nine Found in NativeCall docs
10:15 Timbus to be determined/decided? usually
10:15 masak "to be done"?
10:16 cygx "Too Bad, Dude"
10:16 Timbus heh
10:16 arnsholt To be determined, probably
10:17 * masak .oO( Three Bad Dice )
10:17 [ptc] hrm, doesn't turn up in S99-glossary.pod
10:17 jnthn .oO( Too Bloody Difficult )
10:18 [ptc] .oO( Three Blind Dice )
10:18 masak [ptc]: it's not so p6-specific. but maybe it belongs there anyway.
10:18 nine If it means "to be determined" then there'd be no sense in me trying to document Buffer/Blob handling for NativeCall.
10:19 [ptc] masak: since "epic fail" is described in the glossary, then TBD probably belongs in there :-)
10:19 masak agreed.
10:19 masak now I'm curious: how do you describe "epic fail"? :P
10:20 [ptc] hehe
10:20 [ptc] vim specs/S99-glossary.pod
10:21 cygx anyway, what I was looking for a way to set the size of a CArray
10:21 aborazmeh joined #perl6
10:21 aborazmeh joined #perl6
10:23 dalek rakudo/nom: 5943fea | lizmat++ | src/Perl6/ModuleLoader.nqp:
10:23 dalek rakudo/nom: Make RAKUDO_MODULE_DEBUG output more consistent
10:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5943fea352
10:24 lizmat afk&
10:25 cygx I also found it 'interesting' that nativecast acts as mechanism for dereference and pointer casts both
10:26 FROGGS cygx: if you don't want to deref you can just do: +$pointer
10:27 nine cygx: my $arr = CArray[Pointer].new; $arr[$size] = Pointer; I guess
10:27 vendethiel joined #perl6
10:30 cygx nine: what about arrays that originate on the C side?
10:30 cygx so I wrote my own wrapper and can now do libc::calloc(10, 8).as(num64, :10elems) and get something Iterable
10:31 nine cygx: those are managed by C code and NativeCall neither knows their size, nor can it change the size.
10:32 nine cygx: that's described in the last paragraph of the Arrays section in the NativeCall docs
10:32 FROGGS cygx: even you "know" the size of the array in C, you cannot get this knowledge to Perl 6 without passing it explicitly as another argument
10:32 cygx sure, but if you store the size in case of managed arrays anyway, why not expose a way to set it explicitly to the programmer
10:32 FROGGS that's why you often see: foo* my_function(something, &size)
10:33 cygx because the C APIs in general include that information by necessity
10:34 FROGGS cygx: can you provide a concrete example?
10:38 cygx FROGGS: I wrote a wrapper so I can now do stuff like my @carray := libc::calloc(10, 8).as(num64, :10elems); @carray[$_] = $_ for ^@carray; say [+] @carray;
10:38 [particle] joined #perl6
10:38 cygx it would have been nice if I could just have said @carray.set-size = 10
10:39 FROGGS ahh
10:39 FROGGS we might be able to make `$carray.elems = 42` work
10:43 abraxxa joined #perl6
10:43 cygx what I would have expected is for .new to take a size parameter, and the ability to adjust .elems at your own risk
10:44 cygx the latter perhaps only if .elems has not previously been set
10:45 cygx CArrays with a defined .elems can then be made iterable
10:46 coffee` joined #perl6
10:49 abraxxa joined #perl6
10:52 andreoss` joined #perl6
10:53 andreoss` how do i get "length" of Junction?
10:54 * cygx goes hunting for lunch
10:55 andreoss` also, is there a ruby's .methods analogue?
10:55 FROGGS .^methods
10:57 DrForr jnthn++ # Just read the fix report. Nice to know I was right re: the UnicodeLetter.
11:00 andreoss` m: sub how-many(Junction $x) { elems split /\,/, $x.perl }; say how-many any(1...10);
11:00 camelia rakudo-moar 5943fe: OUTPUT«10␤»
11:05 vendethiel joined #perl6
11:06 jnthn andreoss`: There's no convenient way, 'cus if you want to you're probably menat to be using a set instead...
11:07 jnthn m: sub how-many(Junction $j) { my $a; (-> Any { $a++ })($j); $a }; say how-many(1|2|3) # a robust way
11:07 camelia rakudo-moar 5943fe: OUTPUT«3␤»
11:09 cognominal joined #perl6
11:15 andreoss` it's handy with how-many $s.mathch: any(@words);
11:21 andreoss` m: sub how-many(Junction $j) { my $a; (-> Any { $a++ })($j); $a }; say how-may all();
11:21 camelia rakudo-moar 5943fe: OUTPUT«5===SORRY!5=== Error while compiling /tmp/yZcTGFq8TE␤Undeclared routine:␤    how-may used at line 1. Did you mean 'how-many'?␤␤»
11:21 andreoss` m: sub how-many(Junction $j) { my $a; (-> Any { $a++ })($j); $a }; say how-many all();
11:21 camelia rakudo-moar 5943fe: OUTPUT«(Any)␤»
11:21 andreoss` m: sub how-many(Junction $j) { my $a = 0; (-> Any { $a++ })($j); $a }; say how-many all();
11:21 camelia rakudo-moar 5943fe: OUTPUT«0␤»
11:24 masak re http://irclog.perlgeek.de/perl6/2015-04-24#i_10493553 -- agreed. we should probably disallow 0, too.
11:27 moritz why?
11:27 moritz producing an empty list occasionally doesn't hurt, no?
11:28 moritz m: <a b c>.rotor(1, 0, 1).perl
11:28 camelia rakudo-moar 5943fe: ( no output )
11:28 moritz m: say <a b c>.rotor(1, 0, 1).perl
11:28 camelia rakudo-moar 5943fe: OUTPUT«($("a",), $( ), $("b",), $("c",), $( ))␤»
11:28 vendethiel joined #perl6
11:35 abraxxa joined #perl6
11:37 masak hm, yes. as long as the thing as a whole progresses, I guess.
11:37 Ven joined #perl6
11:37 masak in that case, it could make sense to make negative ints just mean 0, a bit like inverted ranges mean "empty range"... perhaps?
11:45 moritz m: say 4..1
11:45 camelia rakudo-moar 5943fe: OUTPUT«4..1␤»
11:45 moritz might be nice to have that warn "Range will always be empty" at compile time
11:45 moritz or mayabe not
11:53 vendethiel joined #perl6
11:55 dalek roast: 68891de | jnthn++ | S15-nfg/from-buf.t:
11:55 dalek roast: Basic test that buf decode gives NFG string.
11:55 dalek roast: review: https://github.com/perl6/roast/commit/68891deb37
11:55 masak moritz: for constant ranges? yes, definitely.
11:56 moritz masak: yes, only for constant ones
11:56 masak moritz: because someone who writes a range of literals like that will almost certainly have the wrong expectations.
11:58 lizmat joined #perl6
12:08 hoelzro morning #perl6
12:11 hoelzro since 2015.04 is out, is it now safe for me to merge my tab completion branch?
12:11 FROGGS hoelzro: yes it is
12:12 FROGGS hoelzro: I was about to do that after $work
12:12 hoelzro FROGGS: thanks, I'll go ahead and do it
12:15 dalek nqp: a4584d3 | hoelzro++ | / (6 files):
12:15 dalek nqp: Remove references to readlineint_fh
12:15 dalek nqp:
12:15 dalek nqp: This corresponds to recent changes in MoarVM, in the no-moar-linenoise
12:15 dalek nqp: branch.
12:15 dalek nqp:
12:15 dalek nqp: I haven't removed readlineintfh from the Parrot stage 0 stuff, because
12:15 dalek nqp: the tests are currently failing, and I don't want to bork Parrot worse
12:15 dalek nqp: than it already is.
12:15 dalek nqp: review: https://github.com/perl6/nqp/commit/a4584d3ddf
12:15 dalek nqp: e203813 | hoelzro++ | src/HLL/Compiler.nqp:
12:15 dalek nqp: Restore prompt to REPL
12:15 dalek nqp: review: https://github.com/perl6/nqp/commit/e203813025
12:15 dalek nqp: dbe889b | hoelzro++ | src/HLL/Compiler.nqp:
12:15 dalek nqp: Break reading of lines out into a helper method
12:15 dalek nqp: review: https://github.com/perl6/nqp/commit/dbe889bdfa
12:15 dalek nqp: f12e63a | hoelzro++ | tools/build/MOAR_REVISION:
12:15 dalek nqp: Bump MoarVM version
12:15 dalek nqp: review: https://github.com/perl6/nqp/commit/f12e63a566
12:15 dalek nqp: cf14f27 | hoelzro++ | src/HLL/Compiler.nqp:
12:15 dalek nqp: Preserve interactive eval context as an attribute of the compiler
12:15 dalek nqp: review: https://github.com/perl6/nqp/commit/cf14f27d56
12:15 dalek nqp: 4b13834 | hoelzro++ | / (7 files):
12:15 dalek nqp: Merge branch 'no-readlineint'
12:15 dalek nqp: review: https://github.com/perl6/nqp/commit/4b138346a2
12:17 dalek Heuristic branch merge: pushed 19 commits to rakudo/nom by hoelzro
12:25 masak cognominal: no https://github.com/perl6/specs/commit/7068bfb58c7bc4fba3cf34410bce8cdb1af5839f#diff-3cae98b8911ab62fff04718375bcf9a7R977 -- it's a pun on "historical reasons"
12:25 dalek rakudo-star-daily: 65ee33e | coke++ | log/ (2 files):
12:25 dalek rakudo-star-daily: today (automated commit)
12:25 dalek rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/65ee33eefd
12:25 dalek rakudo-star-daily: e1ed816 | coke++ | log/ (2 files):
12:25 dalek rakudo-star-daily: today (automated commit)
12:25 dalek rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/e1ed816274
12:25 dalek perl6-roast-data: 7e037e1 | coke++ | / (9 files):
12:25 dalek perl6-roast-data: today (automated commit)
12:25 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/7e037e194c
12:27 masak TimToady: re https://github.com/perl6/specs/commit/23147dd79d849339b8fac495b7f3cae64d946e05
12:27 masak TimToady: if negative gaps are allowed, isn't it possible for there to be several partial results at the end?
12:29 hoelzro eesh, panda help looks a little funky: https://gist.github.com/hoelzro/a55ce71fae0d42a8ad7d
12:30 Ven "just use perl or awk" yeah, or `cat x | perl6 -ne '.say if $++ ~~ 250..260'`
12:30 hoelzro I'm guesing is this from the compunit changes?
12:30 cognominal masak: oops, I will correct it on my next modifs batch
12:31 cognominal I probably had the femen in mind at that time :(
12:31 hoelzro how does one get panda to install a .so built by your module?
12:32 Ven I can write this as `perl -nE 'say if 250..260'` though – that's using both "if LIT_NUM" and flipflops, hum
12:38 telex joined #perl6
12:40 Ven do we have any "bdd" or "tdd"-style test frameworks in perl6 (yet)? Thing like `expect(3).to-equal(4);`
12:40 [Coke] moritz: I see one for ptc but not nine
12:41 moritz [Coke]: thanks
12:55 molaf joined #perl6
13:00 cygx left #perl6
13:03 hoelzro .tell Ven: no, but I have a name picked out if you want to use it
13:03 yoleaux hoelzro: What kind of a name is "Ven:"?!
13:03 hoelzro .tell Ven no, but I have a name picked out if you want to use it
13:03 yoleaux hoelzro: I'll pass your message to Ven.
13:03 vendethiel joined #perl6
13:04 hoelzro .tell Ven "Speculaas", if you want it
13:04 yoleaux hoelzro: I'll pass your message to Ven.
13:04 literal prima
13:05 * psch .oO( specul as a service )
13:06 * jnthn will soon find out what the initial NQP/Rakudo/spectest of his first attempt at enabling NFG for all strings/IO will be. :)
13:07 * moritz is sure it'll be exciting
13:07 jnthn uh, *impact
13:08 jnthn Well, so far I know: NQP builds and passes all but 2 tests.
13:08 jnthn Rakudo builds and passes sanity tests.
13:08 jnthn Spectests in progress.
13:09 moritz that's already quite impressive
13:09 jnthn Given every single byte coming into Moar is now going through the new normalization code path, this is an encouraging first result. :)
13:09 jnthn Well, every byte that ends up being a string.
13:14 timotimo vendethiel: i saw a module like that
13:15 timotimo https://github.com/supernovus/PSpec/blob/master/t/basic.t
13:15 jnthn 4 spectest files have regressions, 1 has passing TODOs.
13:16 timotimo do we have something like an idea for paths and filenames, btw?
13:16 timotimo because normalizing things there will lead to pain ... lots of pain
13:16 timotimo lots and lots and lots of pain
13:17 arnsholt Yeah, on non-OS X Unix, it's gonna be a massive pain
13:17 arnsholt NTFS and HFS+ don't care
13:18 timotimo IIRC, filesystems on linux basically let you store binary data in the file name as long as it doesn't contain \n or \0 or something like that?
13:18 jnthn The oddest place I see fails is in S32-str/indent.t
13:19 arnsholt Unix filenames are just blobs of bytes. IIRC the exact characters outlawed depend a bit on the specific FS, but in general it's \0 and / and not much else I think
13:19 timotimo ah, /, of course
13:19 jnthn Then, one of the NQP tests that fails is a regex one about \h
13:19 arnsholt \n is fine mostly (I think)
13:19 timotimo well, if we go ahead and try to put that into a Str, we'll end up not so happy
13:19 timotimo and if we just always give the user a Blob, the user will end up not so happy
13:20 timotimo and if we give the user Str except if we can't decode it, in which case we'll give the user a Blob, that'll make them happy until they stumble upon it in which case they'll be furious
13:20 arnsholt Yeah, filenames are gonna be tricky
13:21 arnsholt Especially since our strings are more or less NFC, and Unix filenames tend to be more like NFD (due to how people generally input accented characters)
13:22 psch \0 and / is POSIX, apparently
13:22 cdc timotimo: \n is allowed on Linux (ext4)
13:22 grondilu joined #perl6
13:22 cdc psch: I agree, only \0 and /
13:23 jnthn m: say uniname 0x2000
13:23 camelia rakudo-moar 0914fc: OUTPUT«EN QUAD␤»
13:23 jnthn m: say uniname 0x2001
13:23 camelia rakudo-moar 0914fc: OUTPUT«EM QUAD␤»
13:23 jnthn m: say Uni.new(0x2001)
13:23 camelia rakudo-moar 0914fc: OUTPUT«Uni:0x<2001>␤»
13:23 jnthn m: say Uni.new(0x2001).NFC
13:23 camelia rakudo-moar 0914fc: OUTPUT«NFC:0x<2003>␤»
13:24 jnthn m: say Uni.new(0x2000).NFC
13:24 camelia rakudo-moar 0914fc: OUTPUT«NFC:0x<2002>␤»
13:24 jnthn m: say uniprop 0x2000, 'Decomp_Spec';
13:24 camelia rakudo-moar 0914fc: OUTPUT«2002␤»
13:24 jnthn m: say uniprop 0x2001, 'Decomp_Spec';
13:24 camelia rakudo-moar 0914fc: OUTPUT«2003␤»
13:25 jnthn Innerestin'
13:25 timotimo huh, a single character that decomposes into a different character?
13:25 jnthn timotimo: Yeah, Unicode has various singletons
13:25 jnthn Oh, I get I know where I need to fix it.
13:25 jnthn *bet
13:26 timotimo somewhere we do 1-based count, where we should have 0-based counted?
13:26 jnthn I suspect more that chr(...) does not provude a properly NFG'd string yet
13:32 espadrine_ joined #perl6
13:33 nwc10 Python 3.0 was epic fail on (a) how it coped with filenames that weren't in the encoding it assumed that they would be (b) I/O performance.
13:33 nwc10 3.1 fixec both, as I understand it
13:33 nwc10 curious how both of these topics appear on #perl6 within a few minutes
13:34 arnsholt Yeah, the filename thing is a hard problem I think
13:34 arnsholt (Even though I do thing the HFS+/Windows view is more correct than the more traditional Unix filename position)
13:35 raiph joined #perl6
13:35 moritz yes, Unix just say "here, have a bunch of bytes, as long as there's no \0 in it"
13:35 geekosaur but you can't retrofit it onto existing unixlike systems, so there's no point in trying to pretend
13:36 skids joined #perl6
13:36 geekosaur if you can't push the unicode layer into the filesystem drivers in the kernel, you can't rely on unicode in layers closer to userspace
13:37 arnsholt Yeah, it's a really tricky backcompat problem
13:37 timotimo the first step ought to be that getting a directory listing must give you things that let you get at the file as it is on disc
13:37 timotimo normalization or things like that must not make file sunaccessible
13:40 jnthn It's a bit fiddly, but I suspect we can use synthetics to represent things that we got from the file system that don't fit into our stringy world view, and recover them on encode.
13:40 erdic joined #perl6
13:41 jnthn Down to 1 NQP test regression now after fixing chr
13:41 timotimo that's not a bad idea at all!
13:41 timotimo that'd be something that no other language "can" do
13:41 timotimo language or language implementation
13:42 nwc10 timotimo: which, IIRC, Python 3.0 messed up - files became inaccessible
13:42 nwc10 however, as I understand it, Perl 6 is taking a much simpler world view than Python 3.
13:42 timotimo on the other hand, if we store file names in an NFG string, we'd have to be careful not to actually do normalization along with the synthetics we create for "wtf"-y filename data
13:43 nwc10 Perl 6 is "UTF-8, dammit" on STDIN, STDOUT, STDERR
13:43 nwc10 whereas Python 3 tries to work out what your locale's encoding it
13:43 nwc10 is
13:43 jnthn OK, I'm also down to 2 Perl 6 spectest files with regressions.
13:44 jnthn And both are explicitly Unicode related.
13:44 nwc10 oh, wow
13:44 timotimo python has this super annoying quality where encoding changes based on stdout.isatty
13:44 leedo timotimo: nodejs has the problem and no workaround, it's a bit ridiculous https://github.com/joyent/node/issues/2387
13:44 nwc10 timotimo: oh, I didn't know that. So if you pipe the output of your script to cat, the output changes?
13:45 nwc10 (potentially)
13:45 jnthn S02-literals/quoting-unicode.t somehow runs one test too few, and S05-mass/named-chars.t fails 4 tests
13:45 jnthn The NQP one is a fiddly csae
13:45 jnthn It's about tell
13:46 jnthn And when you're doing NFG, or any normalization really, you need to read some bytes ahead of where you're spitting out chracters you consider normalized, in case the the next thing is a combiner.
13:47 jnthn And we don't attempt to lie about how many bytes we've processed even if some of them didn't lead to you getting a grapheme yet.
13:47 timotimo yes, lieing would be very problematic, especially if you have  a file descriptor that can't seek
13:47 jnthn And I don't know what I want to try implementing said attempt to lie.
13:47 jnthn *that I want
13:48 jnthn Well, if you're doing a byte level thing (tell) and reading at char level, then I think you're probably asking for trouble
13:48 timotimo i say we put that in the faq and not test for tell when reading Str rather than Buf
13:48 jnthn Note that we don't let the fact we have IO buffers leak here
13:49 jnthn It's purely that the *character* decoder can't spit out a grapheme until seeing the next codepoint(s)
13:49 * jnthn analyzes the 2 spectest files
13:51 vendethiel joined #perl6
13:52 Ven joined #perl6
13:53 jnthn hah
13:53 jnthn S02-literals/quoting-unicode.t is a funny one
13:54 jnthn There's a huge hash of opener => closer
13:54 muraiki joined #perl6
13:54 jnthn I think we run one test too few because somewhere in there, we have a singleton decomposition.
13:54 jnthn On an opener (and probably its closer)
13:55 jnthn As a result, the two hash keys become equal NFG strings.
13:55 timotimo ... wat :S
13:55 timotimo the opener and closer become the same character?
13:55 timotimo that seems like madness
13:56 jnthn No
13:56 gfldex joined #perl6
13:56 jnthn Two opener/closer pairs become equal
13:56 timotimo ooooh
13:56 moritz now that's a case where a test plan detected changed behaviors
13:56 jnthn Right :)
13:57 jnthn However, I think in this case the implementation wins :)
13:57 jnthn Thankfully it's easy to fix it for both NFG and non-NFG implementations by doing a list of pairs rather than a hash.
14:01 dalek roast: d62cc3d | jnthn++ | S15-nfg/from-buf.t:
14:01 dalek roast: De-confuse wording of a test.
14:01 dalek roast: review: https://github.com/perl6/roast/commit/d62cc3df58
14:01 dalek roast: 1272df2 | jnthn++ | S02-literals/quoting-unicode.t:
14:01 dalek roast: Make a test robust in the face of NFG.
14:01 dalek roast:
14:01 dalek roast: It had a hash of opener/closer pairs. However, in an implementation
14:01 dalek roast: that does NFG, due to singleton decompositions in Unicode, two of the
14:01 dalek roast: opener/closer pairs ended up equal after normalization, resulting in a
14:01 dalek roast: hash with an element less and thus a test less being run. Use a list
14:01 dalek roast: of pairs instead.
14:01 dalek roast: review: https://github.com/perl6/roast/commit/1272df2231
14:02 jnthn OK, so my flicking the NFG switch is now only blocked by one spectest file (with 4 test fails) and one NQP test. :)
14:03 * skids wonders if the GLR will include a Cat/Seq-ish thing.
14:03 jnthn Cat is pretty certainly post-6.0
14:03 timotimo i heard Cat would be pretty post-.60
14:03 timotimo ...
14:03 moritz it's not that hard to build it a Cat-y type
14:04 moritz but teaching the regex engine to work with it will be hard
14:04 moritz because it assumes all over the place that (1) you match against a str, really and (2) you know the number of chars of the thing you're matching against
14:05 skids Yeah.  But at least now charsets will be solid the next time someone tries.
14:07 timotimo yes, that will be difficult
14:11 timotimo i'm also interested in getting the regex engine working with lists of objects
14:11 timotimo (is that what a Seq is?)
14:12 skids Seq was an old deprecated name for Cat, I think?
14:12 timotimo ah
14:12 skids I rmember it getting purged, at least.
14:13 jnthn hoelzro: Did you test your REPL patches on Windows at al?
14:13 jnthn *all
14:13 hoelzro jnthn: ah crap, no I didn't =/
14:13 hoelzro did I break everything on Windows?
14:13 jnthn hoelzro: ok, but don't panic yet, I have Moar/NQP version skew.
14:14 jnthn hoelzro: I'm not sure, but gimme a moment...
14:14 hoelzro heh
14:14 * hoelzro crosses fingers
14:14 jnthn It could potentially also relate to the NFG bits I'm doing since I've touched I/O...
14:15 vendethiel joined #perl6
14:16 jnthn hoelzro: OK, now it hangs instead but that one may actually be my fault :)
14:16 jnthn The previous failure mode less so
14:17 MARTIMM joined #perl6
14:18 jnthn hoelzro: Yes, that one is mine :)
14:18 jnthn (the hang)
14:18 hoelzro phew
14:18 moritz skids: Seq was a listy thing, iirc (an immutable List, or something like that)
14:18 hoelzro we'll see if it works after you fix that =)
14:18 jnthn Sure
14:18 jnthn I didn't actually push the commits that cause the hang yet, fwiw
14:19 * jnthn is using rebase -i to keep those two back while pushing other fixes that they depend on :))
14:20 hoelzro =)
14:20 hoelzro my big issue with tab completion atm is that panda install doesn't install the shared library that Linenoise.pm depends on =/
14:20 hoelzro I could've sworn that it used to
14:21 timotimo maybe before the magical eleven merge :S
14:23 timotimo froggs would be the one to ask here
14:24 hoelzro also interesting is the change in the output of 'panda help'
14:24 hoelzro https://gist.github.com/hoelzro/a55ce71fae0d42a8ad7d
14:24 hoelzro although I suspect that'll be easy to fix
14:25 timotimo yes, that's annoying
14:25 timotimo it's about $*PROGRAM_NAME iirc
14:25 hoelzro makes sense
14:26 timotimo and the "wrapper script" possibly execs that program? i'm not sure
14:26 andreoss joined #perl6
14:26 hoelzro me neither
14:26 Ven joined #perl6
14:27 andreoss is there spoilers in perl6 pod?
14:27 timotimo well, you can cat $(which panda)
14:27 andreoss *are
14:27 hoelzro ruh roh: http://www.isup.me/rakudo.org
14:27 timotimo andreoss: every lower-case block name is free for you to use. which means you can =begin spoiler ... =end spoiler, but our converters (like the 2html one) won't understand it
14:29 gcole joined #perl6
14:30 andreoss timotimo: it should be adopted here http://examples.perl6.org/categories/euler/prob002-eric256.html
14:30 timotimo for all the euler problems, aye?
14:30 timotimo well, how do you actually output a spoiler to html "properly"?
14:30 andreoss yep
14:31 mst timotimo: rot13
14:31 timotimo do we generate two html files and a link from the first to the next, or do we output a bit of javascript along with the html?
14:32 mst timotimo: rot13, and optionally a javascript snippet to unrot
14:33 timotimo "unrot" %)
14:33 timotimo actually, we should abuse the property of rot13 that forwards is the same as backwards and give a javascript snippet to rot, so people will acknowledge we are smart enough to realize that there's no need for an unrot function
14:34 andreoss .spoiler { background: #000 ; foreground: #000 }
14:34 timotimo so you have to select it to see stuff?
14:35 andreoss yes, no js needed
14:35 abraxxa joined #perl6
14:35 hoelzro oh, I see now
14:36 timotimo perhaps there's pod block attributes that the to html converter turns into html classes or something?
14:36 hoelzro panda has CompUnit::Local::Installation do the installing
14:36 timotimo =begin block :htmlclass<spoiler> or something like that
14:36 hoelzro and that class mangles the names
14:36 hoelzro so the .so is there, it's just not called liblinenoise.so
14:36 timotimo yes, that was an important thing to do
14:36 timotimo make rakudo itself responsible for installing stuff
14:37 timotimo ah, yes, you can have a look at the manifest to find it (or search for it with the CompUnitRepo::*
14:37 hoelzro is the filename mangling necessary?
14:38 hoelzro so we need to either unmangle shared objects' names, or convince the dynamic object loaders to load from the mangled name
14:39 * jnthn now has REPL unbusted with NFG stuff, and the same fix also dealt with the NQP regression.
14:39 timotimo we have to handle fiilenames somehow
14:39 timotimo just giving them numbers isn't optimal
14:39 timotimo but it's the easiest way to make things not conflict
14:40 hoelzro fair enough
14:40 skids jnthn: time for a mic drop, then?
14:40 timotimo i'd prefer the original file names to at least be hinted at
14:40 Ven joined #perl6
14:40 hoelzro same here; I'm used to being able to look at the source for a module easily with P5 or Python
14:41 jnthn skids: I've one Rakudo spectest file still with regressions (4 tests failing) that I didn't investigate yet.
14:41 timotimo we ought to have a commandline tool for that, too
14:41 hoelzro I suppose one could write a small tool to yield filenames given a query, though
14:41 FROGGS timotimo: we already have a solution for that btw
14:41 hoelzro hooray, he's here!
14:41 _mg_ joined #perl6
14:41 FROGGS yes, just busy at $work :o(
14:42 vendethiel joined #perl6
14:44 hoelzro =/
14:46 timotimo i don't know exactly what froggs' "that" refers to
14:48 FROGGS that the installed scripts/modules are just numbered files on disk
14:48 FROGGS this will change
14:48 FROGGS (probably)
14:48 moritz Life, Universe and Everything, I hope :-)
14:48 timotimo ah
14:48 timotimo well, that's the easy-ish part :)
14:49 ugexe seems like authority/modulename/version/module.pm would be feasable if not ugly
14:49 timotimo folders?
14:49 timotimo not so sure about that, tbh
14:49 timotimo hm, though ... having files that belong to the same module in one place would be nice
14:50 ugexe im interested in how you guys end up implemented supercedes, emulates, and friends
14:50 ugexe implementing^
14:51 hoelzro supersede is impl'd?
14:51 _mg_ joined #perl6
14:51 * hoelzro is very out of touch, it seems
14:51 ugexe no
14:51 hoelzro oh, I misread =/
14:56 dalek nqp: 9e2b706 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java:
14:56 dalek nqp: Don't unboxJava if it's not a JavaObjectWrapper.
14:56 dalek nqp:
14:56 dalek nqp: This fixes a ClassCastException leaking to the HLL when we call what() on a
14:56 dalek nqp: TypeObject.
14:56 dalek nqp: review: https://github.com/perl6/nqp/commit/9e2b706d5f
14:57 psch still getting "java.lang.System" or somesuch for WHAT after that
14:57 psch although maybe that's actually fine, because users should be able to see it's a Java object?
15:01 molaf_ joined #perl6
15:02 smannlymann joined #perl6
15:03 psch now maybe i can make all Java classes inherite from Mu, that could help with .DEFINITE and all those other methods we do things with...
15:04 eli-se joined #perl6
15:05 eli-se good mornign!
15:05 RabidGravy joined #perl6
15:05 psch hey eli-se \o
15:05 timotimo mood gorning!
15:13 zeleiadi joined #perl6
15:13 abraxxa joined #perl6
15:15 vendethiel joined #perl6
15:42 FROGGS joined #perl6
15:45 eternaleye joined #perl6
15:47 dalek perl6-examples: 3eb7e9d | paultcochrane++ | t/categories/rosalind.t:
15:47 dalek perl6-examples: Start adding tests for the Rosalind examples
15:47 dalek perl6-examples: review: https://github.com/perl6/perl6-examples/commit/3eb7e9d4b2
15:48 cognominal joined #perl6
15:49 cognominal joined #perl6
15:55 Ven joined #perl6
15:55 vendethiel joined #perl6
15:58 xfix joined #perl6
15:58 xfix joined #perl6
15:59 jnthn Hmm, I don't think this test is gonna work out under NFG:
15:59 jnthn ok("abc\x[5b4]\x[fd55]def" ~~ m/\c[HEBREW POINT HIRIQ,ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM]/, 'Multiple HEBREW POINT HIRIQ,ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM');
15:59 jnthn Because the string ends up with NFG applied and so the two combiners go on the c
16:00 jnthn Giving a synthetic.
16:05 TimToady well, looks like the test is wrong
16:05 TimToady m: say uniprop(0x5b4),' ',uniprop(0xfd55)
16:05 camelia rakudo-moar 0914fc: OUTPUT«Mn Lo␤»
16:06 jnthn TimToady: OK, if we agree on that then I can fix the tests :)
16:06 TimToady the second isn't a combiner though
16:06 jnthn Oh
16:06 jnthn I didn't check, just assumed :)
16:07 jnthn First is enough for bustage
16:07 TimToady are the tests assuming you can tests any component of a combined char?
16:07 TimToady *test
16:08 TimToady rather than just the base char?
16:09 TimToady or is there some arcane rule buried somewhere in a little-read Unicode document that prevents putting Hebrew marks on ASCII chars?
16:10 TimToady and, I assume this is an NFC test, not an NFD test...
16:11 TimToady also I assume this test came from the UC, not hand-rolled
16:12 TimToady I mean, it's acting like it's expecting NFD semantics there
16:14 jnthn TimToady: There's a few tests that assume you can test any component of a combined char, yes.
16:15 jnthn TimToady: So basically, NFD
16:15 jnthn Not sure on the history of the test; it's not one I've added. Guess it was generated though.
16:15 tony-o m: my sub r (int32 $a) { $a.say; }; r(4023233417); my int32 $r = 4023233417; $r.say;
16:15 camelia rakudo-moar 0914fc: OUTPUT«4023233417␤-271733879␤»
16:16 jnthn tony-o: Sized native types only really work out in the context of native call and arrays so far.
16:16 tony-o gotcha, thank you ^
16:17 timotimo i wonder where exactly that needs work
16:20 eli-se joined #perl6
16:21 eli-se hi
16:22 timotimo ohai eli-se
16:28 dalek roast: ecb4684 | jnthn++ | S15-nfg/concatenation.t:
16:28 dalek roast: Tests for NFG closure under concatenation.
16:28 dalek roast: review: https://github.com/perl6/roast/commit/ecb468496b
16:28 dalek roast: f6a47d6 | jnthn++ | S15-nfg/from-file.t:
16:28 dalek roast: Basic tests for I/O and NFG interaction.
16:28 dalek roast: review: https://github.com/perl6/roast/commit/f6a47d6caa
16:28 vendethiel joined #perl6
16:30 dalek roast: e46e945 | jnthn++ | S05-mass/named-chars.t:
16:30 dalek roast: Correct tests for NFG; todo 3 needing more review.
16:30 dalek roast: review: https://github.com/perl6/roast/commit/e46e9455ba
16:31 jnthn Ah, damn, fixing things to be closed under concatenation seems to have had a lot of other fallout.
16:38 jnthn Oh, actually, it's maybe not so awful.
16:38 jnthn It's fixed a lot of TODO'd tests.
16:46 Ven joined #perl6
16:56 vendethiel joined #perl6
16:57 andreoss joined #perl6
16:58 andreoss where i can get URI::Escape? panda doens't know about it.
17:00 psch andreoss: it belongs to URI, apparently, which is listed on modules.perl6.org
17:00 psch my panda locally seems busted, so i can't check if panda finds that
17:00 psch otherwise, https://github.com/perl6-community-modules/uri/
17:01 andreoss do i just copy it somewhere?
17:01 psch you can «git clone» and do «panda install .» inside the git clone
17:02 ssutch joined #perl6
17:13 dalek perl6-examples: 679528f | paultcochrane++ | categories/rosalind/sgra-grondilu.pl:
17:13 dalek perl6-examples: Removed unnecessary List::Utils dependency
17:13 dalek perl6-examples: review: https://github.com/perl6/perl6-examples/commit/679528f9f4
17:15 tony-o tar xvf vim
17:15 tony-o oops
17:18 jnthn TimToady: Should .codes default to the number of codepoints in NFC or NFD?
17:19 TimToady NFC, obviously the other one is .dodes :)
17:20 TimToady or is it .codes and .coces...
17:20 TimToady maybe .codes is a bad name
17:20 jnthn OK, if NFC then I have another test to correct.
17:20 dalek nqp: 26dd621 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
17:20 dalek nqp: Always evaluate char ranges at codepoint level.
17:20 dalek nqp:
17:20 dalek nqp: There are some cases where building them with normalized strings leads
17:20 dalek nqp: to the range being reversed and similar.
17:20 dalek nqp: review: https://github.com/perl6/nqp/commit/26dd62149a
17:21 TimToady well, maybe we should split it into two
17:21 TimToady but up till now we've been biased towards NFC
17:21 dalek roast: 8ebb19c | jnthn++ | S02-types/unicode.t:
17:21 dalek roast: Pick example that really is 2 NFC codes.
17:21 dalek roast: review: https://github.com/perl6/roast/commit/8ebb19c574
17:21 jnthn *nod*
17:21 jnthn We can re-update the test later if needed :)
17:22 TimToady .oO( .coeds and .dudes )
17:23 lizmat fwiw, I find "codes" a poor hufmannized version of codepoints
17:23 andreoss timotimo: it renders using Pod::To::Html, i didn't find a feature for adding HTML classes for POD node
17:23 TimToady .nfcs and .nfds?
17:23 japhb joined #perl6
17:23 lizmat perhas .nfc-cp and .nfd-cp ?
17:23 TimToady cp is opaque
17:24 TimToady and means "copy" to many people
17:24 lizmat ok, then nfcs and nfds make the most sense to me
17:24 lizmat perhaps then also nfgs ?
17:24 TimToady nah, those is chars :)
17:24 lizmat instead of graphs ?
17:24 TimToady I suspect graphs can go away
17:24 jnthn .graphs is in various tests, for these days is an alias for .chars
17:25 jnthn Unless we do anything weird in the future :)
17:25 jnthn Then I guess it stays like that and...yeah, can go :)
17:25 lizmat "Returns the number of graphemes in the string in a language-independent way."
17:25 TimToady that was pre-NFG
17:25 TimToady Unix filenames are encoded in WTP-8
17:25 lizmat I would vote to eliminate chars as well then
17:26 TimToady huh
17:26 lizmat it is as confusing as "length", which we also banned
17:26 TimToady in favor of what?
17:26 lizmat nfgs
17:26 jnthn ...no.
17:26 TimToady they're just characters
17:27 jnthn .chars is at the right abstraction level for "characters"
17:27 yoleaux " a b c e f g h i l n o r s t v
17:27 jnthn :P
17:27 lizmat .ngfs   # just checking
17:27 TimToady see, you can't even speel it wright
17:27 lizmat hehe
17:27 lizmat .nfgs
17:28 lizmat also doesn't work  :-)
17:28 TimToady we need to eat our own botsnacks
17:28 synbot6 om nom nom
17:32 cygx joined #perl6
17:33 labster good morning, *
17:34 * labster was finally excused from jury duty.
17:34 TimToady they let you off lightly, eh?
17:35 domidumont joined #perl6
17:35 dalek rakudo/nom: 224db5e | jnthn++ | src/core/Str.pm:
17:35 dalek rakudo/nom: Fix .codes on Moar, in preparation for NFG.
17:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/224db5ec90
17:35 labster 3 days in jury selection for a pretty minor attempted crime, ugh.
17:37 cygx some Proxy weirdness: https://gist.githubusercontent.com/cygx/998030c5a711ec75daf8/raw/proxy.p6
17:37 cygx is that something that should be fixed, or an unavoidable consequence of how containers are supposed to work?
17:37 jnthn Unavoidable.
17:37 andreoss timotimo: actually i'm wrong, it can get class from node's config
17:38 jnthn Though the 11 is kinda high; I suspect the codepath say goes through will get a looking at some time.
17:39 dalek roast: ad5ec82 | jnthn++ | S05-mass/properties- (4 files):
17:39 dalek roast: Unicode property test updates for NFG.
17:39 dalek roast:
17:39 dalek roast: This updates/eliminates a small number of tests that don't make sense
17:39 dalek roast: under NFG.
17:39 dalek roast: review: https://github.com/perl6/roast/commit/ad5ec82a1d
17:40 labster m: "foo\%\$".quotemeta.say
17:40 camelia rakudo-moar 0914fc: OUTPUT«Method 'quotemeta' not found for invocant of class 'Str'␤  in block <unit> at /tmp/UAMsbvphre:1␤␤»
17:40 * jnthn suspects it's approaching dinner time...
17:42 eli-se Are the static type checking rules of Perl 6 well-specified?
17:43 eli-se Or are they implementation-specific (which would be a programming nightmare).
17:43 jnthn eli-se: It's defined as "runtime at latest, compile time if we can be sure it'll never work at runtime"
17:43 eli-se That's a vague specification.
17:43 jnthn eli-se: Deliberately for now.
17:43 eli-se You can never be sure it'll never work at runtime in the general case
17:44 eli-se that would require finding out whether a function will ever be called.
17:44 eli-se m: sub f(Int $x) { }; sub g { f("a") }
17:44 camelia rakudo-moar 0914fc: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tvS7H6Yeb9␤Calling f(str) will never work with declared signature (Int $x)␤at /tmp/tvS7H6Yeb9:1␤------> 3sub f(Int $x) { }; sub g { 7⏏5f("a") }␤»
17:44 eli-se But it would work at runtime!
17:44 jnthn Yes, and that people like you nit-pick whatever we say is a large part of why we're not going to hurry to define it strongly. :)
17:44 vendethiel joined #perl6
17:45 jnthn We can always mandate more in future versions of the Perl 6 language.
17:45 eli-se Hmmm.
17:45 eli-se Not if you're past 1.0.0.
17:45 eli-se No, that'd break existing code.
17:46 eli-se Without solving the halting problem you can't guarantee the lack of false negatives.
17:46 labster As a programmer, I'd rather catch that earlier rather than later.  Otherwise I'm going to get some other programmer's function causing an error when I use it.
17:47 labster Last thing I want to do is download a module and get a compile time error from it.
17:47 eli-se I wouldn't mind it happening to my own code, since I can fix it. But I can't fix third-party libraries.
17:47 jnthn The "use [language version]" directive can be used to commit more strongly if people worry about that kind of breakage.
17:48 eli-se jnthn: reminds me of this quote:
17:48 eli-se XML files always start [with]  <?xml version=“1.0”?>. This is great. Reading the first line of an XML file is like listening to the opening bars of Rachmaninoff’s third piano concerto. A sublime experience. All praise to the XML designers, hallowed be their names, give these guys some Turing prizes.
17:48 eli-se (from http://joearms.github.io/2013/05/31/a-week-with-elixir.html)
17:48 labster Iä XML ftaghn!
17:49 jnthn eli-se: I said "can be", not "must be"
17:49 eli-se yeah
17:49 labster On another topic: I'm starting to think a metacharacter for quotemeta really should mean a shell metacharacter, because it's no longer useful for regexes.
17:50 dalek roast: c418208 | lizmat++ | S05-mass/named-chars.t:
17:50 dalek roast: Unfudge passing NFG tests
17:50 dalek roast: review: https://github.com/perl6/roast/commit/c418208f22
17:51 lizmat jnthn++
17:51 dalek perl6-roast-data: cc3bf6b | coke++ | / (9 files):
17:51 dalek perl6-roast-data: today (automated commit)
17:51 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/cc3bf6b20f
17:51 jnthn lizmat: Uh...wait...
17:51 jnthn lizmat: I just fudged those ahead of a branch merge.
17:52 jnthn Now they'll be busted post-merge. :)
17:52 jnthn Though I'm too hungry to do the merges now, so...after dinner :)
17:52 labster Go get some food jnthn++
17:53 jnthn btw, once I do merge we do get to unfudge plenty :)
17:53 jnthn bbl &
17:56 labster Shells use a not-quite standard group of metacharacters, but I'm suspect we can get away with backslashing ASCII characters not in 0..9A..Za..z
17:59 TimToady labster: there is no quotemeta in P6
18:00 labster it's still in the specs somewhere.
18:01 labster S32-str/quotemeta.t exists
18:01 TimToady with a note from pm suggesting we kill it :)
18:02 TimToady it's just a holdover from p5 anyway, and we have no decent definition of 'metacharacter'
18:02 TimToady p6 regex don't need quotemeta
18:02 labster Which is why I was suggesting one.
18:02 _mg_ joined #perl6
18:02 labster Shell metacharacter, rather than regex metacharacter.
18:02 TimToady which shell?
18:03 labster .oO (everyone uses bash, right?)
18:03 TimToady I think this is someone else's rathole, not ours
18:03 TimToady and I think quotemeta should be shown the exit
18:04 labster Fair enough.  Though I do use it for shell if there are pipes, etc involved and I need to pass in some arbitrary data. This sounds like a good task for module-space, though.
18:05 labster I'll go ahead and unspec it.
18:05 TimToady well, shell programming is just an injection opportunity in disguise :)
18:05 TimToady basically, *if* quoting metachars is the correct way to handle injections (and I don't think it is), then at minimum every language needs its own quotemeta
18:06 masak yes, it feels odd to keep -- or want to keep -- quotemeta, given that we solved the problem in Perl 6 that caused it to have to exist in Perl 5.
18:07 TimToady and the solution is to know exactly what language you're parsing at every moment, not to pretend that a braid of languages is a single language
18:08 TimToady Perl 6 is not the only braided language, it's just one of the few to admit it is
18:09 TimToady labster: thanks
18:10 labster Yay, I will accomplish a thing today.
18:10 tony-o lol
18:12 TimToady I seem to not be getting any high-level backtraces for bind errors these days for some reason, which is a bit frustrating, given how much work I put into them a week or two ago...
18:16 dalek roast: 50ac023 | labster++ | S32-str/quotemeta.t:
18:16 dalek roast: quotemeta is finished (as was my jury duty)
18:16 dalek roast:
18:16 dalek roast: Unspecced due to the regex metacharacter problem being solved.
18:16 dalek roast: review: https://github.com/perl6/roast/commit/50ac023921
18:16 * masak .oO( 12 angry quotemetas )
18:17 TimToady .oO(convicted of jury injection)
18:23 labster S02 has this section on qq//: If the character is non-alphanumeric, the backslash is silently removed, on the assumption that the string was backslashed using C<quotemeta()> or some such.
18:23 labster tempted to change that to: using https://metacpan.org/pod/Acme::Addslashes
18:24 TimToady "was backslashed in ignorance" maybe :)
18:25 Rounin joined #perl6
18:26 labster ... "on the assumption that the string was backslahed by the cat using your keyboard"
18:28 eli-se joined #perl6
18:28 eli-se .botsnack
18:28 yoleaux :D
18:28 synbot6 om nom nom
18:29 FROGGS hehe
18:32 dalek roast: 2123b88 | lizmat++ | S05-mass/named-chars.t:
18:32 dalek roast: Revert "Unfudge passing NFG tests"
18:32 dalek roast:
18:32 dalek roast: Uh...wait... I just fudged those ahead of a branch merge.
18:32 dalek roast: review: https://github.com/perl6/roast/commit/2123b8821b
18:33 masak I guess that commit message body was meant as a <jnthn> quote?
18:34 lizmat masak: yes
18:34 lizmat I guess I should have quoted that
18:35 PerlJam Good day all.
18:35 yoleaux 23 Apr 2015 22:56Z <TimToady> PerlJam: can you check the permissions on the tarball you uploaded?
18:36 * PerlJam hopes someone got to that ahead of me today
18:36 lizmat PerlJam o/
18:36 masak lizmat: the commit comment makes more sense if you know it's a quote, yes ;)
18:36 PerlJam I've been busy dealing with a sick wife :(
18:36 masak PerlJam: moritz++ fix'd it
18:37 domidumont joined #perl6
18:37 * lizmat wishes curing sick wives was as easy as that
18:37 masak heh.
18:37 FROGGS m: my $foo = 'alpha'; say "bar" ~~ / <::($foo)>+ / # how hard can that one be?
18:37 camelia rakudo-moar 224db5: OUTPUT«===SORRY!===␤cannot stringify this␤»
18:38 PerlJam lizmat: me too.  Mine has been sick for over a week now.  But the Dr thinks he's nailed down what it is and how to fix it.  (3rd time is the charm I hope)
18:38 lizmat ++Dr
18:40 PerlJam masak: ooc, what was wrong with the permissions?
18:40 masak PerlJam: no idea. I've been absent most of the day.
18:40 masak PerlJam: just saw that it got fix'd.
18:42 PerlJam I'd guess they were too restrictive.  I just noticed that my local copy needs more +r
18:43 FROGGS and more cowbell
18:43 masak too restrictive is consistent with the symptoms, yes
18:44 FROGGS world readable was missing
18:52 lizmat .oO( sometimes I wish I could specify an MMD candidate that would be selected on the truthness of a method on the object )
18:52 lizmat use case:
18:53 lizmat multi method pick(where self.infinite) {  fail X::Cannot::Infinite.new(:action<.pick from>) }
18:54 lizmat or can we do that already somehow ?
18:54 lizmat perhaps on the value of an attribute:
18:55 labster m: ("foobar".comb Z "\x0338" .. * ).join.print # Acme::Addslashes as a one-liner
18:55 camelia rakudo-moar 224db5: OUTPUT«f̸o̸o̸b̸a̸r̸»
18:55 lizmat multi method pick($!infinite: ) { fail... }
18:56 lizmat .u \x0338
18:56 yoleaux U+0030 DIGIT ZERO [Nd] (0)
18:56 yoleaux U+0033 DIGIT THREE [Nd] (3)
18:56 yoleaux U+0038 DIGIT EIGHT [Nd] (8)
18:56 lizmat .u x0338
18:56 yoleaux No characters found
18:56 lizmat .u 0338
18:56 yoleaux U+0338 COMBINING LONG SOLIDUS OVERLAY [Mn] (◌̸)
18:58 labster I think it's for arbitrary vulgar fractions
18:58 brrt joined #perl6
18:59 FROGGS m: class Foo { has $.bar; method baz (\SELF: $x where SELF.bar == 42) { } }; Foo.new( :bar(42) ).baz(111)
18:59 camelia rakudo-moar 224db5: ( no output )
18:59 FROGGS m: class Foo { has $.bar; method baz (\SELF: $x where SELF.bar == 42) { } }; Foo.new( :bar(43) ).baz(111)
18:59 camelia rakudo-moar 224db5: OUTPUT«Constraint type check failed for parameter '$x'␤  in method baz at /tmp/6vG4WOTMRX:1␤  in block <unit> at /tmp/6vG4WOTMRX:1␤␤»
18:59 FROGGS though, you need a param...
18:59 FROGGS m: class Foo { has $.bar; method baz (\SELF: *%_ where SELF.bar == 42) { } }; Foo.new( :bar(43) ).baz
18:59 camelia rakudo-moar 224db5: OUTPUT«Constraint type check failed for parameter '%_'␤  in method baz at /tmp/a1Q0bF0RRi:1␤  in block <unit> at /tmp/a1Q0bF0RRi:1␤␤»
18:59 FROGGS m: class Foo { has $.bar; method baz (\SELF: *%_ where SELF.bar == 42) { } }; Foo.new( :bar(42) ).baz
18:59 camelia rakudo-moar 224db5: ( no output )
18:59 FROGGS works
19:01 FROGGS might now be a good idea, but it works
19:01 lizmat that feels like a dirty hack to me  :-)
19:02 lizmat something I might do in my own code, but not in the settings  :-)
19:02 FROGGS aye
19:03 raiph joined #perl6
19:05 dalek specs/newio: 5d2e839 | labster++ | S (3 files):
19:05 dalek specs/newio: unspec quotemeta, fixes #89
19:05 dalek specs/newio: review: https://github.com/perl6/specs/commit/5d2e839219
19:06 labster oh, I was on newio...  hmm.
19:06 lizmat hehe
19:06 labster we going to merge that soon lizmat?
19:06 skids There's nothing at all dirty about constraints on invocants, as long as you were going to test for that at the top of every multi anyway.
19:07 lizmat labster: before Christmas, I would say
19:07 labster hahaha
19:07 masak labster: maybe cherry-pick the commit over to master?
19:08 labster yeah, probably easiest, thanks.
19:08 lizmat skids: completely agree, but the way that FROGGS showed, would be much more CPU intensive than just checking $!inifinite in each candidate
19:09 lizmat actually, it would have to be self.infinite, but yeah
19:09 lizmat $!infinite // self.infinite I guess
19:10 dalek specs: d251a6b | labster++ | S (3 files):
19:10 dalek specs: unspec quotemeta, fixes #89
19:10 dalek specs: review: https://github.com/perl6/specs/commit/d251a6bf3d
19:11 labster wow, github autocloses the issue for you, that's pretty cool.
19:11 masak yup.
19:13 DrForr I'm a little surprised at whitespace behavior in https://gist.github.com/drforr/ae0b25f79928adf43f80 - Given that I'm matching against 'lexer' I wouldn't expect 'lexer ' to appear out of thin air. Changing grammarType to a token and adding explicit whitespace causes the extraneous space to go away, but at the cost of complexity.
19:14 DrForr Prety much my first time playing with actions as well, but it's the grammar I wonder about.
19:19 mr-foobar joined #perl6
19:20 silug joined #perl6
19:21 _mg_ joined #perl6
19:22 telex joined #perl6
19:24 psch m: say "a   " ~~ rule { .$ }; say "a   " ~~ rule { . $ };
19:24 camelia rakudo-moar 224db5: OUTPUT«「 」␤「a   」␤»
19:24 yqt joined #perl6
19:24 psch DrForr: S05:375 roundabout explains it quite well i think
19:24 synbot6 Link: http://design.perl6.org/S05.html#line_375
19:25 DrForr Nod, reading. It just feels as if it's interfering with the matched text.
19:26 psch m: say "lexer grammar" ~~ rule { ('lexer'|'parser')? 'grammar }
19:26 camelia rakudo-moar 224db5: OUTPUT«5===SORRY!5=== Error while compiling /tmp/6OktBMwa1l␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/6OktBMwa1l:1␤------> 3~~ rule { ('lexer'|'parser')? 'grammar }7⏏5<EOL>␤    expecting any of:␤        sing…»
19:26 psch m: say "lexer grammar" ~~ rule { ('lexer'|'parser')? 'grammar' }
19:26 camelia rakudo-moar 224db5: OUTPUT«「lexer grammar」␤ 0 => 「lexer」␤»
19:26 dalek rakudo/nom: 1905fc1 | lizmat++ | src/core/List.pm:
19:26 dalek rakudo/nom: Don't use no bloody intermediate
19:26 dalek rakudo/nom:
19:26 dalek rakudo/nom: The win is in the noise range (about %1), but it simplifies the code, and that
19:26 dalek rakudo/nom: is a good thing, no?
19:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1905fc1f3a
19:27 FROGGS lizmat++
19:28 DrForr Hrm, wonder what I'm doing wrong in my code then, as your line looks like the behavior I'd expect.
19:28 psch DrForr: sigspace :)
19:28 psch m: say "lexer grammar" ~~ rule { ( 'lexer' | 'parser' )? 'grammar' }
19:28 camelia rakudo-moar 224db5: OUTPUT«「lexer grammar」␤ 0 => 「lexer 」␤»
19:29 DrForr Oh, good grief, it's significant in *there* too. /me takes a deep breath.
19:29 * psch mostly treats sigspace as sig *everywhere*, even though that's not quite right
19:29 masak it's significant in most places.
19:30 masak even before things like `+`
19:30 psch even after the opening brace
19:30 psch oh
19:30 psch no
19:30 psch that's wrong i think?
19:30 psch m: say " a" ~~ rule { . }
19:30 camelia rakudo-moar 224db5: OUTPUT«「 」␤»
19:30 psch yeah, it is
19:30 psch phew :P
19:31 DrForr Right, so my formatting decisions are being made for me again.
19:32 psch well, it's a waterbed
19:33 psch i strongly suspect there's good reasons for this particular configuration
19:33 FROGGS I like the way it is
19:34 brrt joined #perl6
19:34 FROGGS I treat rules like sentences and tokens like words... and that's what I usually want
19:34 FROGGS so when I don't want to have whitespace in something, it might be worth putting it into a token
19:37 DrForr I understand the reasoning behind it, it's just that the examples breezily declare that you can put whitespace where you like, then you go to intropect the objects a little more deeply and find the truth of the matter. I somewhat like ANTLR's notion of a separate channel for this, but understand why it's not done.
19:40 brrt lizmat - not related to your change, but that nqp code declares a native i and then assigns (binds) a rand_I bigint, no?
19:40 psch well, FROGGS++ approach could work for you i suppose
19:40 psch e.g. «token GrammarType { 'lexer' | 'parser' }; rule GrammarAndTypeDecl { <GrammarType>? 'grammar' };» or something like that
19:40 lizmat brrt: good catch (i think)
19:40 DrForr I would kind of expect that I'd want to add explicit \s+ in order to capture the whitespace if you want to keep it around, but the decision's been made, probably 10+ years ago, so it's hard to complain now.
19:40 TimToady here's a pretty little program: http://rosettacode.org/wiki/Pascal_matrix_generation#Perl_6
19:41 brrt not sure though :-)
19:42 DrForr psch: Yeah, I know I could do that pretty easily, and it'd probably reator a little bit mre nicely, but Im more of the mindset that explicit declaratin of tokens like that is more for the old lex/yacc separation, and if you're only going to need it for one term may as well throw it inline.
19:42 DrForr *refactor # this keyboard is *way* too mushy.
19:44 DrForr Hell, at that point I'd probably fall back to token LEXER {'lexer'} # &c and ... Eeh, I" just do that.
19:45 DrForr It just feels like my hand is being forced, is all.
19:46 brrt 'your branch is behind orign/nom in 396 commits' :-o
19:47 skids m: my $t = now; class A { has $.bar is rw; multi method f ($self where { $self.bar }:) { }; multi method f ($self:) { } }; for 1..50000 { A.new(:bar($_ % 2)).f }; say now - $t
19:47 DrForr Or just do it in the actions, I suppose.
19:47 camelia rakudo-moar 224db5: OUTPUT«3.17616355␤»
19:47 skids m: my $t = now; class A { has $.bar is rw; multi method f ($self:) { if $self.bar { } }; }; for 1..50000 { A.new(:bar($_ % 2)).f }; say now - $t
19:47 camelia rakudo-moar 224db5: OUTPUT«1.3872013␤»
19:47 skids Not awful.
19:52 brrt you know what is aweful? when you've downloaded some source and they decide to use CMake
19:52 brrt s/aweful/awful/
19:52 TimToady .oO(the CMake is a lie!)
19:52 brrt or any other extramagic make system
19:54 brrt 'make is crossplatform, reliable, and parallel. let's replace it'
19:57 dalek rakudo/nom: 5efcae8 | lizmat++ | src/core/List.pm:
19:57 dalek rakudo/nom: Make List.pick about 3% faster, brrt++
19:57 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5efcae8665
19:57 brrt hah, i was testing the opposite patch, using a native int :-)
19:58 brrt how do you speedtest it?
19:58 lizmat rand_I  returns an Int
19:58 lizmat and it needs a deconted Int
19:59 TimToady make is like C, not really portable, merely ubiquitous.
20:00 brrt yes, but you can use nqp::mod_i(nqp::rand_i(), nqp::decont($elems)) - or at least that's what i'm testing
20:02 brrt well, apparantly that's wrong :-)
20:03 raiph joined #perl6
20:05 itz good timtoady interview in linux voice
20:06 brrt itz: link perchance?
20:06 itz it's a pay publication (although they give money back to open source community)
20:07 itz I believe the material is made open after N months anyway
20:07 brrt ah ,ok, that's fair
20:07 itz N=9
20:08 itz http://www.linuxvoice.com/interview-damian-conway/ is opened now anyway
20:10 brrt portability is a finicky term anyway
20:11 brrt because porting is ultimately work, and thus portability also depends on the amount of work or tuits that can be expended to do porting
20:14 * jnthn back :)
20:14 cognominal jnthn, is :ignoremark affected by NFG? I can't even imagine working without it
20:14 cognominal * it working
20:14 jnthn cognominal: It's never been implemented yet
20:15 eli-se joined #perl6
20:15 jnthn cognominal: But having done all of the NFG work I actually have a good idea how to implement it :)
20:15 cognominal but someday, I guess my unmodified statment will be true.
20:15 cognominal jnthn++
20:16 cognominal christmas everyday with you
20:17 * jnthn read the 'clog from the pub and saw nobody yelped about the upcoming revision bumps for NFG
20:17 jnthn So, let's do it :)
20:17 itz hmm the rakudo annoucement didn't make  http://www.nntp.perl.org/rss/perl.perl6.announce.rdf
20:17 labster yep, do it
20:19 lizmat itz: rakudo compiler releases are not supposed to shoiw up there, noe?
20:19 jnthn .oO( relax, don't do it, when you want to NFC it... )
20:19 dalek rakudo/nom: 7fe6f1b | lizmat++ | src/core/List.pm:
20:19 dalek rakudo/nom: Make List.pick(*) about 7% faster
20:19 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7fe6f1bdde
20:20 itz lizmat: but parrot still does!
20:21 lizmat fwiw, I'm on your side with this, but this is what pmichaud jnthn TimToady decided long ago, afaik
20:21 lizmat item #16 in release guide:
20:21 lizmat To avoid public confusion with Rakudo Star releases, we now publish
20:21 lizmat compiler release announcements ONLY to perl6-compiler@perl.org.
20:21 lizmat (We may restart widespread announcements of compiler releases
20:21 lizmat once they are known, or we may begin publishing a single
20:21 lizmat announcement for both.)
20:22 brrt Internal error: invalid thread ID in GC work pass
20:22 brrt :-o what
20:23 lizmat itz: git blame puts this with pmichaud in 2010
20:23 colomon joined #perl6
20:23 itz is there an rss feed of  perl6-compiler@perl.org?
20:23 lizmat I don't know
20:23 * brrt is going to try this all again
20:26 labster lizmat: can we safely remove nqp::istype(number, Whatever) from line 209 in the other pick candidate?
20:26 lizmat labster: good point, am working on an eager * candidate, will take care of that  :-)
20:34 dalek rakudo/nom: 0a7825f | lizmat++ | src/core/List.pm:
20:34 dalek rakudo/nom: Don't need the Whatever check anymore, labster++
20:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0a7825f547
20:35 dalek nqp: 63f0545 | jnthn++ | tools/build/MOAR_REVISION:
20:35 dalek nqp: Bump MOAR_REVISION for much NFG work.
20:35 dalek nqp: review: https://github.com/perl6/nqp/commit/63f0545cfb
20:38 dalek roast: 907e841 | jnthn++ | S15-nfg/regex.t:
20:38 dalek roast: Todo a (recently added) test we bogusly passed.
20:38 dalek roast: review: https://github.com/perl6/roast/commit/907e8416a3
20:40 itz thats odd I get no hits on google for "Announce: Rakudo Perl 6 compiler, Development Release #87 ("Vladivostok")" and two on duckduckgo
20:40 itz "none dare call it conspiracy" :-)
20:42 lizmat itz: how many hits for 5.21.9 ?
20:42 lizmat perl 5.21.9 that is
20:43 itz that looks ok
20:45 TimToady obviously we're not suffiently mobile friendly
20:46 TimToady *fic
20:46 dalek rakudo/nom: e459701 | jnthn++ | tools/build/NQP_REVISION:
20:46 dalek rakudo/nom: Bump NQP_REVISION for Moar/NQP NFG work.
20:46 dalek rakudo/nom:
20:46 dalek rakudo/nom: With this, NFG is enabled for all Str.
20:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e459701546
20:46 lizmat jnthn++  :-)
20:46 [Coke] jnthn++!
20:47 brrt :-D
20:47 brrt lizmat: fairly sure your last commit breaks rakudo for me
20:48 lizmat ?
20:48 brrt moarkudo that is
20:48 brrt but....
20:48 nine As far as Google is concerned, being mobile friendly seems to be just having a <meta name="viewport" content="width=device-width, initial-scale=1.0" />
20:48 brrt let's experiment a bit further :-)
20:48 lizmat brrt: what do you mean with "break"
20:48 lizmat build ?
20:49 lizmat specific test ?
20:49 brrt building core setting dies with an invalid thread id error
20:49 jnthn lizmat: As just discussed with brrt++ on #moarvm, it's probably a Moar GC issue that got tripped that's likely not related to the content of your patch.
20:49 brrt yes, that is possible too :-)
20:50 dalek roast: ea19778 | jnthn++ | S15-nfg/from-file.t:
20:50 dalek roast: Fudge UTF-16 file/NFG tests.
20:50 dalek roast:
20:50 dalek roast: So we can run the passing UTF-8 ones in "make spectest". The UTF-16
20:50 dalek roast: ones actually run into writing a buf16 to a file being NYI!
20:50 dalek roast: review: https://github.com/perl6/roast/commit/ea19778d1a
20:50 lizmat FWIW, it builds ok for me on OS X
20:50 dalek rakudo/nom: 14f6344 | jnthn++ | t/spectest.data:
20:50 dalek rakudo/nom: Enable a range of new S15-nfg tests on MoarVM.
20:50 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/14f6344aa3
20:51 dalek roast: 2be99bc | jnthn++ | S (5 files):
20:51 dalek roast: Unfudge a bunch of NFG tests for rakudo.moar.
20:51 dalek roast: review: https://github.com/perl6/roast/commit/2be99bc50a
20:52 * [Coke] keeps trying to get a stresstest kicked off and then sees one more commit and stops and tries again. :)
20:52 * lizmat fetches the NFG goodness, builds and spectests
20:53 jnthn lizmat: It builds fine for me too, fwiw. :)
20:54 brrt very latest builds fine for me as well
20:54 brrt bug masked once more
20:54 timotimo going to build it here, too
20:54 cognominal NFG does not stand for "not for good"  unlike in "For I have set my face against this city for harm and not for good, declares the LORD:"
20:57 brrt and commit 7fe6f1bdde8f7f5f2a95d04ce235ec25397a45a5, what about that one?
20:57 [Coke] jnthn: t/spec/S29-conversions/ord_and_chr.rakudo.moar              (Wstat: 0 Tests: 257 Failed: 0) TODO passed:   257
20:57 brrt that fails reliably under make
20:57 dalek roast: 7ab7759 | jnthn++ | S15-string-types/Str.t:
20:57 dalek roast: Correct a .ord test, unfudge on rakudo.moar.
20:57 dalek roast:
20:57 dalek roast: We've decided that we won't leak synthetic codepoints out, since it'll
20:57 dalek roast: prevent us from ever doing any scheme other than process-global if any
20:57 dalek roast: code in the wild comes to rely on them comparing accross strings.
20:57 dalek roast: review: https://github.com/perl6/roast/commit/7ab7759055
20:58 jnthn [Coke]: That's in my review queue; will get to it in a moment
20:58 jnthn [Coke]: I wasn't immediately sure the test was correct.
20:58 brrt fwiw, i do agree that this is a moarvm issue :-)
20:59 lizmat clean test for me + 1 flapper (which I'm working on: t/spec/integration/advent2013-day14.t
20:59 DrForr Just in passing, if anyone's booking for YAPC::NA at this late date, Royal Garden Hotel has a deep discount on b.com.
21:01 dalek roast: 79a7dc0 | jnthn++ | S02-types/unicode.t:
21:01 dalek roast: Toss some tests relying on out-dated design.
21:01 dalek roast:
21:01 dalek roast: Str is always NFG now, and we have Uni and Buf for the other levels.
21:01 dalek roast: Removing the tests as we have others that cover these issues in line
21:01 dalek roast: with current design and more extensively.
21:01 dalek roast: review: https://github.com/perl6/roast/commit/79a7dc0b42
21:01 brrt i'm off for tonight
21:02 brrt sorry for scaring you all
21:02 timotimo cya brrt
21:02 lizmat good night brrt
21:02 lizmat .oO( too late )
21:04 dalek roast: 8b86ef3 | jnthn++ | S29-conversions/ord_and_chr.t:
21:04 dalek roast: Fix test description; unfudge for rakudo.moar.
21:04 dalek roast: review: https://github.com/perl6/roast/commit/8b86ef3d8a
21:04 jnthn [Coke]: Turns out the test was OK but the description was imprecise. :)
21:05 [Coke] .... UGH. now I will always hear "brrt" as ernie from sesame street. "hey, brrt"
21:09 [Coke] t/spec/S32-str/words.t has a #?rakudo 2 skip 'graphemes NYI' that can be unskipped.
21:09 jnthn hm, thought I did that one...
21:10 [Coke] maybe I'm a commit or two behind. whoops.
21:10 jnthn oh no, that was capitalize.t
21:10 jnthn I wonder why I missed it
21:10 jnthn oh, they're skip, not todo.
21:10 [Coke] I just ran autounfudge to find those.
21:11 jnthn :)
21:11 dalek roast: cce24c2 | jnthn++ | S32-str/words.t:
21:11 dalek roast: Unfudge 2 NFG tests on Moar; [Coke]++.
21:11 dalek roast: review: https://github.com/perl6/roast/commit/cce24c283d
21:12 labster jnthn++ finally NFG, [Coke]++ test herding as usual
21:12 timotimo how does autounfudge work, anyway?
21:20 jnthn Time for some rest... Enjoy the graphemes! :) o/
21:22 lizmat jnthn: good night
21:22 rurban joined #perl6
21:22 lizmat conventional wisdom has it that a while {} should be faster than a gather {} ?
21:29 timotimo it should, at the moment
21:29 timotimo after the GLR, something that could "automatically be rewritten" from a gather to a while would also be fast
21:31 lizmat well, I'm trying to create an eager version of List.pick(*) with a while{}, but it's like 4x slower  :-(
21:31 lizmat than the one with gather { take-rw }
21:32 timotimo wow
21:32 lizmat the odd thing is that somehow it's in MMD dispatching
21:32 jdv79 DrForr: are you doing Ryal Garden?
21:32 timotimo o_O
21:32 jdv79 *Royal
21:33 lizmat because when I put the *same* code in the :eager variant, it's *still* 4 x slower
21:33 * psch .oO( R'lyeh Garden )
21:35 RabidGravy joined #perl6
21:35 timotimo srsly, wat?
21:36 lizmat ok, maybe not the same version after all, just double checked that
21:36 PerlJam lizmat: what's the code look like?
21:37 lizmat working on a gist
21:37 lizmat with timing info
21:38 cygx left #perl6
21:39 timotimo thanks
21:39 timotimo i have an eye for performance ... by which i mean i basically only look at performance aspects of things. not necessarily means i'm any good at it
21:41 labster premature optimization is a large part of complier building
21:41 * PerlJam wonders how many eyes timotimo is in possession of.
21:42 lizmat https://gist.github.com/lizmat/943197fa55834eef4c66
21:42 labster in soviet russia the eyes have it for performance
21:42 lizmat the eager version is actually more than 20 times as slow
21:44 timotimo are you sure you want nqp::unbox_i?
21:44 timotimo wait. what am i thinking?
21:44 lizmat yeah, because it is an Int
21:44 timotimo +            nqp::bindpos($picked,nqp::unbox_i($i),nqp::atpos($picked,nqp::unbox
21:44 timotimo here the line got cut off
21:44 * PerlJam wonders how expensive nqp::bindpos is
21:45 timotimo possibly by a pager?
21:45 lizmat gist updated
21:46 lizmat that one is actually the same as in the non-eager version
21:47 PerlJam lizmat: This is List.pick ?
21:47 lizmat yeah
21:47 PerlJam lizmat: in my copy on disk, that second nqp::bindpos isn't there.
21:48 lizmat PerlJam: this is an extra candidate
21:48 lizmat that candidate I didn't push yet
21:48 PerlJam so, it's there in both your eager and non-eager versions?
21:49 lizmat the non-eager Whatever candidate is in nom
21:49 lizmat the eager one is only in the gist
21:50 lizmat the reason I'm chasing this is that I have a theory that async stress flakiness is caused by gather / async interaction
21:50 lizmat since earliest does a @actions.pick(*)
21:51 lizmat I thought I'd try a version that would not use gather to randomize what to do next in earliest
21:51 * eli-se wants parallel AWK
21:51 lizmat and see whether that would reduce / remove the flakiness (purely as a data-point, really)
21:52 timotimo lizmat: did you --profile that yet?
21:52 lizmat good point  :-)
21:54 lizmat way fewer JIT compiled frames
21:55 lizmat 1 garbage collection vs none
21:55 lizmat hmmm... didn't we have a way to profile here >?
21:56 timotimo well, if there were fewer frames all in all, that'd not be an issue
21:56 timotimo we do have it
21:56 timotimo prof-m or something
21:56 lizmat but then I would have to push  :(
21:56 timotimo yes :(
21:57 lizmat in any case, you don't see anything odd about the code, do you ?
21:57 timotimo well, i'd unbox_i one time less
21:57 timotimo for $i and for $elems
21:58 lizmat but they'r Int
21:58 lizmat not int
21:58 timotimo well, yeah
21:58 lizmat elems has to be Int because of nqp::rand_I
21:58 lizmat I mean $i
21:59 timotimo but if you unbox_i them twice, you could just unbox them once and store the unboxed result in a temporary variable
21:59 timotimo mhm
21:59 dalek rakudo-star-daily: b460844 | coke++ | log/ (2 files):
21:59 dalek rakudo-star-daily: today (automated commit)
21:59 dalek rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/b460844044
22:00 [Coke] timotimo: autounfudge takes each fudge marker, and tries to unskip/untodo them. it removes each fudge in isolation, tests the file, and if it works, adds a diff to a patch in progress.
22:00 [Coke] you then need to manually go through the generated diff because somethings are iffy.
22:02 timotimo oh
22:02 timotimo neato
22:03 lizmat timotimo: the unboxing didn't affect the profile significantly
22:04 timotimo OK
22:04 timotimo and you say the inside of the while is almost exactly the same as in the non-eager version?
22:04 lizmat the eager one as deopts (0.83%), the non-eager one none
22:04 lizmat the eager one has 1 garbage collection, the non-eager one none
22:05 lizmat the eager one has 25319 cal frames, the non-eager one 9706
22:05 lizmat that's probably our CPU difference explained
22:06 timotimo ouch
22:06 timotimo how the hell ...
22:06 timotimo the gather/take must be inlined by spesh
22:06 lizmat yeah indeed
22:07 timotimo and for some reason the simpler while loop doesn't
22:07 timotimo perhaps it's something to do with lexicalrefs and such?
22:07 timotimo can you grab a MVM_SPESH_LOG for that and cut out the before/after sections  of the pick method for me?
22:08 lizmat maybe first check what happens with a MVM_SPESH_DISABLE=1 ?
22:08 dalek roast: 33fc3d4 | labster++ | S16-filehandles/io_in_for_loops.t:
22:08 dalek roast: added tests for RT #122963 IO::Handle.lines doesn't properly count .ins
22:08 dalek roast: review: https://github.com/perl6/roast/commit/33fc3d4f01
22:08 synbot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=122963
22:09 timotimo ok
22:10 cognominal joined #perl6
22:10 lizmat with MVM_SPESH_DISABLE=1, the difference in frames is 176614 (eager) vs 10618 (non-eager)
22:11 lizmat so spesh already did its best, it would seem
22:11 lizmat (from 176614 to 25319)
22:11 timotimo wow
22:12 labster O.O
22:13 timotimo hm, so "gather while" is more like a function call into a closure, and the while itself is likely OSR'd and has no closure? but that doesn't mean it ought to be slower
22:14 lizmat forcing a backtrace inside the while does not reveal any reification madness
22:15 timotimo right, while should compile into a simple-ish goto thingie
22:15 labster oh cool, I actually can mark tickets as resolved now.  RT is so arcane, you never know what's going to happen.
22:16 timotimo %)
22:22 lizmat if I just do the rand_I and the elems = elems - 1, it is already slower than the non-eager one
22:23 lizmat so it is definitely not the bindpossing
22:26 espadrine_ joined #perl6
22:27 PerlJam so the looping itself is slower?
22:27 lizmat even if the while loop just has elems = elems - 1, it is slower
22:28 lizmat it feels to me this code is triggering something at a low level
22:34 lizmat running spectest now: if clean, then I'll commit anyway
22:35 lizmat it is only activated with the :eager named param, and nobody is doing that yet
22:35 lizmat it'll give at least people an easier way to look at this strange issue
22:37 lizmat timotimo: an idea: could it be that the while is creating a new (set of) frame(s) for each iteration ??
22:38 yqt joined #perl6
22:38 flussence joined #perl6
22:41 skids joined #perl6
22:44 beastd joined #perl6
22:45 Ben_Goldberg joined #perl6
22:48 dalek rakudo/nom: 40a4241 | lizmat++ | src/core/List.pm:
22:48 dalek rakudo/nom: Make a faster List.pick(*,:eager) version
22:48 dalek rakudo/nom:
22:48 dalek rakudo/nom: Well, that was the idea.  Turns out the eager version is about 20x *slower*.
22:48 dalek rakudo/nom: Added here for further research.
22:48 dalek joined #perl6
22:49 lizmat sorry dalek, the commit: https://github.com/rakudo/rakudo/commit/40a42410d2c9bdc9d2
22:49 lizmat .tell jnthn why is while slower than gather while ???  https://github.com/rakudo/rakudo/commit/40a42410d2c9bdc9d2
22:49 yoleaux lizmat: I'll pass your message to jnthn.
22:51 lizmat and with that, I bid #perl6 a good night
22:59 colomon joined #perl6
23:00 andreoss joined #perl6
23:04 rmgk_ joined #perl6
23:06 timotimo could perhaps be in a branch instead?
23:08 timotimo lizmat: in general, every invocation (even just stepping into a frame that hasn't been inlined) will create a new BOOTCode :(
23:15 timotimo we recently lost a bit of our capability to inline blocks at the QAST stage because suddenly we have lexicalrefs and lexicals
23:16 timotimo but our code gen can't access a lexicalref or localref with "lexical" or "local" scope yet
23:16 timotimo i'm working on that, and i'm part way there, but it seems like jnthn will have to figure out what's needed for the rest of the way to working code
23:16 timotimo then we'll get lexical-to-local-lowering again which will unblock many inlinings
23:17 krakan joined #perl6
23:17 andreoss how to refer closure within itself? &?ROUTINE points to outer sub. http://pastebin.com/eigBA3Pz
23:18 andreoss of course if it's not assigned to variable
23:19 TimToady &?BLOCK
23:21 psch m: { &?BLOCK.perl.say }
23:21 camelia rakudo-moar 40a424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/oI4pfPAsE4␤Undeclared routine:␤    &?BLOCK used at line 1␤␤»
23:21 psch m: -> { &?BLOCK.perl.say }()
23:21 camelia rakudo-moar 40a424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Ji1VrB9HuG␤Undeclared routine:␤    &?BLOCK used at line 1␤␤»
23:21 psch fwiw, i'd have expected it to work as well
23:21 psch std: -> { &?BLOCK.perl.say }()
23:21 camelia std 28329a7: OUTPUT«ok 00:00 141m␤»
23:21 psch apparently NYI
23:23 timotimo yeah, nyi
23:23 timotimo feel free to do something about it ;)
23:23 psch i might take a look tomorrow
23:23 psch not promising anything :P
23:24 timotimo psch: are you interested in writing a test or two for me?
23:24 psch but i've been staring at JavaHOW MOP stuff for a good portion of the last two days and not making any headway
23:24 psch so something different could be nice
23:24 psch timotimo: what kind of test?
23:24 timotimo https://rt.perl.org/Ticket/Display.html?id=124331 ← this  isn't working, but in S03-metaop/hyperop.t there's tests that look almost exactly the same and those do work!
23:24 timotimo actually ...
23:25 psch timotimo: i talked to you about that 2 or 3 days ago
23:25 timotimo it coul dbe related to not sinking the hyperop so it's not doing anything? but hyper is supposed to be hyper, not lazy
23:25 psch timotimo: my understanding is that the RHS doesn't get thunked and thus you're substracting 0
23:25 psch for elems 1 to 3
23:26 psch m: my @sizes = 100, 110, 120, 130; @sizes >>+=>> @sizes[0]; say @sizes # easier to see with +
23:26 camelia rakudo-moar 40a424: OUTPUT«200 310 320 330␤»
23:26 psch m: my @sizes = 100, 110, 120, 130; @sizes >>+=>> @sizes[0]<>; say @sizes # for comparison
23:26 camelia rakudo-moar 40a424: OUTPUT«200 210 220 230␤»
23:26 psch or maybe "doesn't get thunked" is a bit wrong here
23:26 psch the array elem container gets thunked, the contents don't, if that makes sense
23:27 psch (might also have been more than 2 or 3 days ago, i'm not quite sure)
23:28 psch read that as "i can rationalize why it happens like it does", not as "i think it should happen as it does" though :)
23:29 psch i'm not really sure what i think should happen there; on the one hand it makes sense not to have to do anything special, but what if i want to use the container and not the value?
23:29 psch and on the other hand, it's the first actual use for <> (or .decont or zen slice or w/e) aside from Str interpolation that i came across
23:31 psch timotimo: does that make any sense to you?
23:34 Vlavv_ joined #perl6
23:53 timotimo um
23:53 timotimo the right hand side doesn't need to be th... ooooooooh!
23:53 timotimo now i get it!
23:57 timotimo i hadn't read what you wrote "back then"
23:59 psch no worries
23:59 psch i'm mostly glad that i seem to start groking this whole container stuff a bit better :)
23:59 timotimo \o/
23:59 timotimo feel free to write that into the bug report and close it
23:59 psch i don't have bugadmin rights
23:59 psch but i can dump the clog there, sure

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

Perl 6 | Reference Documentation | Rakudo