»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! | feather will shut down permanently on 2015-03-31
Set by jnthn on 28 February 2015.
00:04 vendethiel left 00:15 vendethiel joined 00:28 laouji joined 00:36 vendethiel left
dalek ecs: 23147dd | TimToady++ | S32-setting-library/Containers.pod:
':partial' option for partial final rotor result
00:39
00:39 laouji left
00:39 laouji joined
dalek kudo/nom: ea0b3f0 | TimToady++ | src/core/List.pm:
new rotor implementation to play with
00:40
00:44 laouji left
moritz 12 00:48
00:49 laouji joined 00:55 vendethiel joined 01:01 grettis left 01:18 vendethiel left
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"))␤»
TimToady m: say ('a'..'z').rotor(5 => -1).perl
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"))␤»
TimToady m: say ('a'..'z').rotor(5 => -1, :partial).perl
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"))␤»
TimToady we'll lose those $'s when we GLR, I think 01:24
m: say ('a'..'z').rotor(5 => -1).map(*.<>).perl
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"))␤»
TimToady will look more like that 01:25
m: .say for lol |('a'..'z').rotor(5 => -1).map(*.<>)
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␤»
TimToady probably about time to think about the semantic shift of map etc. for the GLR too 01:26
01:26 dayangkun joined
moritz which semantic shift? 01:27
TimToady .map not flattening, for instance
meeting & 01:28
01:32 Peter_R left
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␤»
moritz m: say <a b c d e f g h>.rotor(3, :partial).join('|')
camelia rakudo-moar ea0b3f: OUTPUT«a b c|d e f|g h␤»
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, aborazmeh left, aborazmeh joined 01:34 Peter_R joined
moritz m: say ('a'..'h').rotor(2 => 1).join('|') 01:35
camelia rakudo-moar ea0b3f: OUTPUT«a b|d e|g h␤»
moritz m: say ('a'..'h').rotor(3 => -1).join('|')
camelia rakudo-moar ea0b3f: OUTPUT«a b c|c d e|e f g␤»
01:36 vendethiel joined, grondilu left
moritz m: say ('a'..'h').rotor(2, 3).join('|') 01:37
camelia rakudo-moar ea0b3f: OUTPUT«a b|c d e|f g␤»
moritz m: say ('a'..'h').rotor(1 => 1, 3).join('|')
camelia rakudo-moar ea0b3f: OUTPUT«a|c d e|f␤»
moritz m: say ('a'..'h').rotor(1 => 1, 3, :partial).join('|') 01:38
camelia rakudo-moar ea0b3f: OUTPUT«a|c d e|f|h␤»
moritz m: say ('a'..'h').rotor(1 => 1, 3 => -1, :partial).join('|')
camelia rakudo-moar ea0b3f: OUTPUT«a|c d e|e|g h␤»
dalek c: 003d721 | moritz++ | / (2 files):
List.rotor
01:39
moritz masak++ # release 01:40
TimToady++ # speculating and implementing the new List.rotor
Juerd What's the real world use case for rotor? 01:42
dtscode thanks raydiak psch 01:47
dalek ast: 46452a1 | moritz++ | S32-list/rotor.t:
List.rotor tests
01:54
kudo/nom: c44c52e | moritz++ | t/spectest.data:
Run List.rotor tests
01:55
moritz should try to sleep again
ugexe n-at-a-time for starters 02:06
colomon or 1 2, 2 3, 3 4, 4 5 # I find this a very common pattern in my code 02:18
02:40 vendethiel left
dtscode i am loving perl 5 02:41
perl 6 even 02:42
02:55 vendethiel joined 02:59 noganex_ joined 03:02 noganex left 03:05 telex left 03:06 telex joined
timotimo 0, 1, 2; 1, 2, 3; 2, 3, 4; ... is perfect for linear cellular automata 03:07
03:08 raiph joined
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:12
03:15 ShimmerFairy left 03:19 ShimmerFairy joined 03:20 Woodi left 03:21 Woodi joined 03:43 Ben_Goldberg left 03:45 vendethiel left 03:48 vendethiel joined
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␤»
skids There are probably a lot of DSP applications using sliding windows.
raydiak waitwait that's not right... 04:02
m: say (^4).rotor(2,0).perl
camelia rakudo-moar c44c52: OUTPUT«($(0, 1), $( ), $(2, 3), $( ))␤»
raydiak '$( )'?
04:02 skids left
TimToady that's 2 => 0 now 04:03
or just 2 04:04
or are you wanting empty slices?
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␤»
raydiak oh right
TimToady we should probably disallow negative integers 04:06
raydiak agreed 04:08
04:10 vendethiel left
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
raydiak am I doing something wrong, or are user-defined traits broken somewhere here? (in Grammar, on Regex, something like that) 04:12
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:33 vendethiel left 04:37 spider-mario left 04:39 spider-mario joined 04:43 vendethiel joined 04:45 mr-foobar joined 04:46 grettis joined, kaare_ joined 04:47 dtscode left 04:50 aindilis left, aindilis joined, grettis left 04:52 nbdsp joined
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... gist.github.com/jnthn/d8c27741c7b0d25f340d
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
there are a number of ways in which rakudo has surpassed STD already
nbdsp Ah, thanks!
.tell jnthn Regarding M.pm6 - very useful and instructive, thanks! 05:03
yoleaux nbdsp: I'll pass your message to jnthn.
05:05 vendethiel left 05:12 aborazmeh left 05:19 vendethiel joined 05:28 Timbus left 05:34 raiph left 05:43 konsolebox joined, konsolebox left 05:45 Psyche^ joined 05:46 konsolebox joined 05:49 Patterner left 06:03 dtscode_ joined, dtscode_ left 06:06 diana_olhovik_ joined, vendethiel left 06:10 ggoebel left 06:17 vendethiel joined, konsolebox left, konsolebox joined, konsolebox left 06:18 konsolebox joined 06:19 konsolebox left 06:22 ggoebel joined 06:26 Timbus joined 06:35 Possum left 06:39 vendethiel left 06:42 gfldex joined, domidumont joined 06:47 domidumont left, RabidGravy joined 06:48 gfldex left, domidumont joined, FROGGS joined 06:49 Ven joined 06:53 rindolf joined 07:00 _mg_ joined 07:01 Rounin joined
dalek p: eec34ed | FROGGS++ | tools/build/MOAR_REVISION:
bump moar frev for cp1252 support
07:01
p: 2dbb0ab | skids++ | / (2 files):
Activate previously existing windows-1252 charset support
07:02
p: 08d257a | FROGGS++ | / (2 files):
Merge pull request #236 from skids/windows-1252

Activate previously existing windows-1252 charset support
kudo/nom: 9f840b7 | FROGGS++ | tools/build/NQP_REVISION:
bump nqp/moar rev for cp1252 support
kudo/nom: 35ea31f | skids++ | src/core/Str.pm:
Hook up windows-1252 charset support. This requires changes
07:03
kudo/nom: 59f57a8 | FROGGS++ | src/core/Str.pm:
Merge pull request #415 from skids/windows-1252

Hook up windows-1252 charset support.
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 07:15 bjz joined 07:26 spider-mario left
jnthn morning, #perl6 07:31
yoleaux 05:03Z <nbdsp> jnthn: Regarding M.pm6 - very useful and instructive, thanks!
07:35 vendethiel left 07:44 darutoko joined
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
07:45 cschwenz joined 07:46 vendethiel joined, cschwenz left
[ptc] RabidGravy: no, it was desired to have all names in the Test module to use kebab-case instead of underscores 07:47
07:48 bjz left, zakharyas joined
[ptc] RabidGravy: there's a PR waiting in the wings, but noone has bitten yet... 07:48
RabidGravy: the idea being to have constitent naming in Test.pm 07:49
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:50
[ptc] we just have to convince one of the rakudo devs to apply the patch :-) 07:53
strange, I'm still getting 404 when trying to download the latest nqp and/or rakudo... 07:55
07:55 konsolebox joined, konsolebox left
RabidGravy github.com/rakudo/rakudo/pull/371 for reference 07:55
FROGGS [ptc]: me too :o( 07:56
07:56 konsolebox joined
RabidGravy I think there should be some element of deprecation on the existing subs 07:56
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␤»
FROGGS hmmm, so it is not an invisible char this time
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"␤»
FROGGS m: say "rakudo-2015.04.tar.gz".ords; say "rakudo-2015.03.tar.gz".ords
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␤»
FROGGS so it is not the name 07:59
pmichaud: HALP!
08:03 MARTIMM joined
moritz FROGGS: what URL do you get a 404 for? 08:03
FROGGS moritz: rakudo.org/downloads/nqp/nqp-2015.04.tar.gz 08:04
moritz: and rakudo.org/downloads/rakudo/rakudo-....04.tar.gz
masak ohayo, #perl6 08:05
FROGGS hi masak
moritz FROGGS: it's a permission problem on the web server
FROGGS: the file wasn't world readable
FROGGS moritz++ # you fixed it 08:06
[ptc] RabidGravy: re: deprecation, yes that was the idea.
08:07 rurban joined
masak did we resolve the permissions thing on the tarball yesterday? 08:07
I'm not fully backlogged yet.
[ptc] just now, I think
FROGGS masak: right now
jnthn I think moritz++ just did it :)
masak oh! moritz++ 08:08
FROGGS though, we probably need a permanent solution
[ptc] now it goes! yay!
moritz++
moritz fwiw everyone who can scp packages to rakudo.org can also just log in there by ssh
FROGGS troo
moritz and run the appropriate chmod a+r command
[ptc] moritz: or maybe just use 'scp -p'? 08:09
then the modes are preserved
assuming, of course, that the locally set modes are correct
08:11 bjz joined 08:12 bjz left 08:13 konsolebox left, bjz joined
nine No mention of Inline::Perl5 integration in the ChangeLog :/ 08:15
moritz nine: the surest way to get something into ChangeLog is to add it there yourself 08:16
nine moritz: which I'd have done had I known that 08:17
moritz nine: you can still add it, and even add it to the announcement 08:18
nine: that way whoever writes the announcement for the next star release will have an easier time finding it
08:18 pecastro joined
dalek p: 667a3f7 | paultcochrane++ | tools/build/Makefile-Moar.in:
Ensure config.status and plain nqp binary are cleaned in realclean
08:19
08:19 bjz left
FROGGS moritz: though there won't be a star release this time most likely 08:22
moritz FROGGS: yes, but a diligent release manager will summarize the changes from all compiler releases since the last star release 08:23
when there's one the next time
FROGGS ohh yes
moritz also, why did we say there likely won't be a star release? 08:26
ecosystem still too broken?
FROGGS moritz: because the current slowdown when modules are installed would make it unusable 08:27
you get a >2s startup time on fast machines, and it increases when you install additional stuff
nine I seem to be lacking a commit bit to rakudo 08:29
moritz eeks.
nine: have you submitted a CLA to TPF?
08:29 itz joined 08:30 vendethiel left, andreoss` joined, andreoss` left
moritz this one here www.perlfoundation.org/contributor_..._agreement 08:30
08:30 andreoss` joined
moritz that's a prereq for getting a rakudo commit bit 08:30
[ptc]: ^^ same for you
nine moritz: I guess not. Can I email this thing? 08:32
08:32 itz_ left
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"
nine I cannot remember when I sent a plain old letter. Could be a decade :) 08:34
08:37 cygx joined
cygx o/ 08:37
is it documented what you have to do to make your own Positional types work with for? 08:38
moritz I don't think so 08:39
but iirc you need to do Iterable, at least
[ptc] moritz: I'd already filled one out for Parrot in 2006. Do I need to do it again? 08:40
dalek kudo/nom: 9e19470 | (Stefan Seifert)++ | docs/ (2 files):
Mention Inline::Perl5 integration in ChangeLog and release announcement

Thanks to moritz++ for pointing me there.
kudo/nom: 7bc1a11 | moritz++ | docs/ (2 files):
Merge pull request #416 from niner/nom

Mention Inline::Perl5 integration in ChangeLog and release announcement
08:40 espadrine_ joined
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.
cygx moritz: tried that, wasn't smart enough to make it work
nine moritz: thanks for merging
moritz nine: you're welcome 08:43
08:43 aborazmeh joined, aborazmeh left, aborazmeh joined 08:46 Ven left
[ptc] moritz: I think Parrot forked off sometime after I'd signed up. I'll have to check somehow 08:47
RabidGravy I've just added deprecations to the original branch of 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
iirc [Coke]++ has access to the list
RabidGravy [ptc], you have incoming anyhow :)
08:54 espadrine_ is now known as espadrine, konsolebox joined 08:57 dakkar joined 09:04 coffee` left 09:07 vendethiel joined
dalek p: 5b982d7 | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for uniname, spesh fixes.
09:09
kudo/nom: de40075 | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for various MoarVM fixes.
09:10
ast: 35b2288 | jnthn++ | S15-unicode-information/uniname.t:
Tests for RT #124144 (uniname out of bounds).
ast: f687502 | jnthn++ | S05-metasyntax/longest-alternative.t:
Test for RT #124333 (huge alternation SEGV).
synbot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=124144
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=124333
cygx for now, I'm just doing a method iterator { self }; method reify($) { Parcel.new(gather { take @foo[$_] for ^+@foo }); } 09:13
it's probably all kinds of wrong
lizmat good *, #operl6! 09:16
backlogging now
cschwenz: re irclog.perlgeek.de/perl6/2015-04-23#i_10492165
09:17 aborazmeh left
lizmat it's the meta info of a *distribution* that states which compunit in that distribution emulate another *compunit* 09:18
and the meta info is handled by the CompUnitRepo
the CompUnitRepo.candidates just returns CompUnit objects 09:19
if you create your own CompUnit object for a module that is emulated, you can load it directly
similar to require in a way, I would think
09:19 aborazmeh joined, aborazmeh left, aborazmeh joined
lizmat anyway, that is what *I* think about it 09:20
OMV (opinions may vary)
and yes, it's still NYI 09:21
09:25 bjz joined
lizmat Juerd: re irclog.perlgeek.de/perl6/2015-04-24#i_10493374 , getting a stream of coordinates, mapping them to line drawing endpoints, would be one 09:29
09:30 vendethiel left 09:32 andreoss` left
nine lizmat: that's....a very good use case :) 09:34
dalek kudo/nom: b34241d | lizmat++ | src/core/List.pm:
Remove unneccesary unboxing
09:40
RabidGravy right, off to the seaside 09:43
dalek kudo/nom: b1c3101 | lizmat++ | t/spectest.data:
Maybe it was slow in 2011, it's pretty fast now
09:43 beastd joined
nwc10 RabidGravy: whitstable? 09:47
(IIRC, that used to be a value guess)
09:47 RabidGravy left
cygx is playing around with NativeCall 09:49
perl6 -I. -Mlibc -e 'my $buf = libc::malloc(1024); my $file = libc::fopen("libc.pm6", "r"); loop { libc::puts(chomp $file.gets($buf) // last) }'
dalek kudo/nom: 27dfc5e | jnthn++ | src/core/Uni.pm:
Implement Uni.codes.
kudo/nom: 5615b7d | jnthn++ | src/core/Uni.pm:
Implement array indexing on Uni.
kudo/nom: 7c89551 | jnthn++ | src/core/Uni.pm:
Some missing :D on Uni methods.
nine cygx: beware: NativeCall's simplicity is highly addictive :) 10:00
10:00 vendethiel joined
dalek kudo/nom: c7da6ce | jnthn++ | src/core/Uni.pm:
.gist/.perl/.elems/.Numeric/.Int for Uni
10:00
kudo/nom: 7b5d9a7 | jnthn++ | src/core/Uni.pm:
Implement Uni.Bool.
10:06
cygx nine: it is
there are some warts, though
dalek ast: f4f5735 | jnthn++ | S15-nfg/long-uni.t:
Test covering non-tiny Uni -> Str handling.

All the other tests so far for NFG look at just a handful of codes; this covers dealing with longer strings and Uni buffers.
ast: 588ebf6 | jnthn++ | S15-string-types/Uni.t:
Some tests for various methods on Uni.
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
cygx: if you feel the documentation is lacking something, please mention it on the channel. I guess I could contribute a bit there.
dalek kudo/nom: f74477c | jnthn++ | t/spectest.data:
Run S15-string-types/Uni.t on MoarVM.
10:08
cygx nine: there's documentation ;) 10:10
I just read the source and tests
nine cygx: doc.perl6.org/language/nativecall
10:11 coffee` joined 10:12 abraxxa left 10:13 japhb joined 10:14 anaeem1 joined, abraxxa joined
nine What does "TBD" stand for? 10:14
Found in NativeCall docs
Timbus to be determined/decided? usually 10:15
masak "to be done"?
10:16 anaeem1 left
cygx "Too Bad, Dude" 10:16
Timbus heh
arnsholt To be determined, probably
masak .oO( Three Bad Dice ) 10:17
[ptc] hrm, doesn't turn up in S99-glossary.pod
jnthn
.oO( Too Bloody Difficult )
[ptc]
.oO( Three Blind Dice )
10:18
masak [ptc]: it's not so p6-specific. but maybe it belongs there anyway.
nine If it means "to be determined" then there'd be no sense in me trying to document Buffer/Blob handling for NativeCall.
[ptc] masak: since "epic fail" is described in the glossary, then TBD probably belongs in there :-) 10:19
10:19 coffee` left, aborazmeh left
masak agreed. 10:19
now I'm curious: how do you describe "epic fail"? :P
[ptc] hehe 10:20
vim specs/S99-glossary.pod
cygx anyway, what I was looking for a way to set the size of a CArray 10:21
10:22 aborazmeh joined, aborazmeh left, aborazmeh joined
dalek kudo/nom: 5943fea | lizmat++ | src/Perl6/ModuleLoader.nqp:
Make RAKUDO_MODULE_DEBUG output more consistent
10:23
lizmat afk& 10:24
10:24 vendethiel left
cygx I also found it 'interesting' that nativecast acts as mechanism for dereference and pointer casts both 10:25
FROGGS cygx: if you don't want to deref you can just do: +$pointer 10:26
nine cygx: my $arr = CArray[Pointer].new; $arr[$size] = Pointer; I guess 10:27
10:27 vendethiel joined
cygx nine: what about arrays that originate on the C side? 10:30
so I wrote my own wrapper and can now do libc::calloc(10, 8).as(num64, :10elems) and get something Iterable
nine cygx: those are managed by C code and NativeCall neither knows their size, nor can it change the size. 10:31
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 laouji left
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
FROGGS cygx: can you provide a concrete example? 10:34
10:34 abraxxa left
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
10:38 [particle] joined
cygx it would have been nice if I could just have said @carray.set-size = 10 10:38
10:38 [particle]1 left
FROGGS ahh 10:39
we might be able to make `$carray.elems = 42` work
10:41 dayangkun left 10:43 abraxxa joined, abraxxa left
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
the latter perhaps only if .elems has not previously been set
CArrays with a defined .elems can then be made iterable 10:45
10:45 lizmat left 10:46 coffee` joined 10:49 abraxxa joined, abraxxa left 10:50 vendethiel left 10:52 andreoss` joined
andreoss` how do i get "length" of Junction? 10:53
cygx goes hunting for lunch 10:54
andreoss` also, is there a ruby's .methods analogue? 10:55
FROGGS .^methods
10:56 nbdsp left
DrForr jnthn++ # Just read the fix report. Nice to know I was right re: the UnicodeLetter. 10:57
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:01 aborazmeh left 11:05 vendethiel joined
jnthn andreoss`: There's no convenient way, 'cus if you want to you're probably menat to be using a set instead... 11:06
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
andreoss` it's handy with how-many $s.mathch: any(@words); 11:15
11:17 colomon left
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'?␤␤»
andreoss` m: sub how-many(Junction $j) { my $a; (-> Any { $a++ })($j); $a }; say how-many all();
camelia rakudo-moar 5943fe: OUTPUT«(Any)␤»
andreoss` m: sub how-many(Junction $j) { my $a = 0; (-> Any { $a++ })($j); $a }; say how-many all();
camelia rakudo-moar 5943fe: OUTPUT«0␤»
masak re irclog.perlgeek.de/perl6/2015-04-24#i_10493553 -- agreed. we should probably disallow 0, too. 11:24
11:26 vendethiel left, MARTIMM left
moritz why? 11:27
producing an empty list occasionally doesn't hurt, no?
m: <a b c>.rotor(1, 0, 1).perl 11:28
camelia ( no output )
moritz m: say <a b c>.rotor(1, 0, 1).perl
camelia rakudo-moar 5943fe: OUTPUT«($("a",), $( ), $("b",), $("c",), $( ))␤»
11:28 vendethiel joined 11:35 abraxxa joined
masak hm, yes. as long as the thing as a whole progresses, I guess. 11:37
11:37 Ven joined
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:37
moritz m: say 4..1 11:45
camelia rakudo-moar 5943fe: OUTPUT«4..1␤»
moritz might be nice to have that warn "Range will always be empty" at compile time
or mayabe not
11:51 vendethiel left 11:53 vendethiel joined
dalek ast: 68891de | jnthn++ | S15-nfg/from-buf.t:
Basic test that buf decode gives NFG string.
11:55
masak moritz: for constant ranges? yes, definitely.
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
hoelzro morning #perl6 12:08
since 2015.04 is out, is it now safe for me to merge my tab completion branch? 12:11
FROGGS hoelzro: yes it is
hoelzro: I was about to do that after $work 12:12
hoelzro FROGGS: thanks, I'll go ahead and do it
dalek p: a4584d3 | hoelzro++ | / (6 files):
Remove references to readlineint_fh

This corresponds to recent changes in MoarVM, in the no-moar-linenoise branch.
I haven't removed readlineintfh from the Parrot stage 0 stuff, because the tests are currently failing, and I don't want to bork Parrot worse than it already is.
12:15
p: e203813 | hoelzro++ | src/HLL/Compiler.nqp:
Restore prompt to REPL
p: dbe889b | hoelzro++ | src/HLL/Compiler.nqp:
Break reading of lines out into a helper method
p: f12e63a | hoelzro++ | tools/build/MOAR_REVISION:
Bump MoarVM version
p: cf14f27 | hoelzro++ | src/HLL/Compiler.nqp:
Preserve interactive eval context as an attribute of the compiler
p: 4b13834 | hoelzro++ | / (7 files):
Merge branch 'no-readlineint'
Heuristic branch merge: pushed 19 commits to rakudo/nom by hoelzro 12:17
masak cognominal: no github.com/perl6/specs/commit/7068...bcf9a7R977 -- it's a pun on "historical reasons" 12:25
dalek kudo-star-daily: 65ee33e | coke++ | log/ (2 files):
today (automated commit)
kudo-star-daily: e1ed816 | coke++ | log/ (2 files):
today (automated commit)
rl6-roast-data: 7e037e1 | coke++ | / (9 files):
today (automated commit)
12:26 beastd left
masak TimToady: re github.com/perl6/specs/commit/2314...e64d946e05 12:27
TimToady: if negative gaps are allowed, isn't it possible for there to be several partial results at the end?
hoelzro eesh, panda help looks a little funky: gist.github.com/hoelzro/a55ce71fae0d42a8ad7d 12:29
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?
cognominal masak: oops, I will correct it on my next modifs batch
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?
Ven I can write this as `perl -nE 'say if 250..260'` though – that's using both "if LIT_NUM" and flipflops, hum 12:32
12:37 telex left 12:38 telex joined
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
moritz [Coke]: thanks 12:41
12:54 Ven left 12:55 molaf joined 12:56 vendethiel left 13:00 cygx left
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:"?!
hoelzro .tell Ven no, but I have a name picked out if you want to use it
yoleaux hoelzro: I'll pass your message to Ven.
13:03 vendethiel joined
hoelzro .tell Ven "Speculaas", if you want it 13:04
yoleaux hoelzro: I'll pass your message to Ven.
literal prima
psch .oO( specul as a service ) 13:05
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:06
moritz is sure it'll be exciting 13:07
jnthn uh, *impact
Well, so far I know: NQP builds and passes all but 2 tests. 13:08
Rakudo builds and passes sanity tests.
Spectests in progress.
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. :)
Well, every byte that ends up being a string.
timotimo vendethiel: i saw a module like that 13:14
github.com/supernovus/PSpec/blob/m.../t/basic.t 13:15
jnthn 4 spectest files have regressions, 1 has passing TODOs.
timotimo do we have something like an idea for paths and filenames, btw? 13:16
13:16 andreoss` left
timotimo because normalizing things there will lead to pain ... lots of pain 13:16
lots and lots and lots of pain
arnsholt Yeah, on non-OS X Unix, it's gonna be a massive pain 13:17
NTFS and HFS+ don't care
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
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
jnthn Then, one of the NQP tests that fails is a regex one about \h
arnsholt \n is fine mostly (I think)
timotimo well, if we go ahead and try to put that into a Str, we'll end up not so happy
and if we just always give the user a Blob, the user will end up not so happy
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
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:21
psch \0 and / is POSIX, apparently 13:22
cdc timotimo: \n is allowed on Linux (ext4)
13:22 grondilu joined
cdc psch: I agree, only \0 and / 13:22
jnthn m: say uniname 0x2000 13:23
camelia rakudo-moar 0914fc: OUTPUT«EN QUAD␤»
jnthn m: say uniname 0x2001
camelia rakudo-moar 0914fc: OUTPUT«EM QUAD␤»
jnthn m: say Uni.new(0x2001)
camelia rakudo-moar 0914fc: OUTPUT«Uni:0x<2001>␤»
jnthn m: say Uni.new(0x2001).NFC
camelia rakudo-moar 0914fc: OUTPUT«NFC:0x<2003>␤»
jnthn m: say Uni.new(0x2000).NFC 13:24
camelia rakudo-moar 0914fc: OUTPUT«NFC:0x<2002>␤»
13:24 espadrine left
jnthn m: say uniprop 0x2000, 'Decomp_Spec'; 13:24
camelia rakudo-moar 0914fc: OUTPUT«2002␤»
jnthn m: say uniprop 0x2001, 'Decomp_Spec';
camelia rakudo-moar 0914fc: OUTPUT«2003␤»
jnthn Innerestin' 13:25
timotimo huh, a single character that decomposes into a different character?
jnthn timotimo: Yeah, Unicode has various singletons
Oh, I get I know where I need to fix it.
*bet
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
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
3.1 fixec both, as I understand it
curious how both of these topics appear on #perl6 within a few minutes
arnsholt Yeah, the filename thing is a hard problem I think 13:34
(Even though I do thing the HFS+/Windows view is more correct than the more traditional Unix filename position)
13:35 raiph joined
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
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:36
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
normalization or things like that must not make file sunaccessible
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
13:40 erdic joined
jnthn Down to 1 NQP test regression now after fixing chr 13:41
timotimo that's not a bad idea at all!
that'd be something that no other language "can" do
language or language implementation
nwc10 timotimo: which, IIRC, Python 3.0 messed up - files became inaccessible 13:42
13:42 abraxxa left
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
nwc10 Perl 6 is "UTF-8, dammit" on STDIN, STDOUT, STDERR 13:43
whereas Python 3 tries to work out what your locale's encoding it
is
jnthn OK, I'm also down to 2 Perl 6 spectest files with regressions.
And both are explicitly Unicode related. 13:44
nwc10 oh, wow
timotimo python has this super annoying quality where encoding changes based on stdout.isatty
leedo timotimo: nodejs has the problem and no workaround, it's a bit ridiculous github.com/joyent/node/issues/2387
nwc10 timotimo: oh, I didn't know that. So if you pipe the output of your script to cat, the output changes?
(potentially) 13:45
jnthn S02-literals/quoting-unicode.t somehow runs one test too few, and S05-mass/named-chars.t fails 4 tests
The NQP one is a fiddly csae
It's about tell
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:46
13:47 vendethiel left
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
jnthn And I don't know what I want to try implementing said attempt to lie.
*that I want
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
jnthn Note that we don't let the fact we have IO buffers leak here 13:49
It's purely that the *character* decoder can't spit out a grapheme until seeing the next codepoint(s)
jnthn analyzes the 2 spectest files
13:51 vendethiel joined 13:52 Ven joined
jnthn hah 13:53
S02-literals/quoting-unicode.t is a funny one
There's a huge hash of opener => closer 13:54
13:54 muraiki joined
jnthn I think we run one test too few because somewhere in there, we have a singleton decomposition. 13:54
On an opener (and probably its closer)
As a result, the two hash keys become equal NFG strings. 13:55
timotimo ... wat :S
the opener and closer become the same character?
that seems like madness
jnthn No 13:56
13:56 gfldex joined
jnthn Two opener/closer pairs become equal 13:56
timotimo ooooh
moritz now that's a case where a test plan detected changed behaviors
jnthn Right :)
13:57 rurban left
jnthn However, I think in this case the implementation wins :) 13:57
Thankfully it's easy to fix it for both NFG and non-NFG implementations by doing a list of pairs rather than a hash.
13:58 Rounin left
dalek ast: d62cc3d | jnthn++ | S15-nfg/from-buf.t:
De-confuse wording of a test.
14:01
ast: 1272df2 | jnthn++ | S02-literals/quoting-unicode.t:
Make a test robust in the face of NFG.

It had a hash of opener/closer pairs. However, in an implementation that does NFG, due to singleton decompositions in Unicode, two of the opener/closer pairs ended up equal after normalization, resulting in a hash with an element less and thus a test less being run. Use a list of pairs instead.
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:02
skids wonders if the GLR will include a Cat/Seq-ish thing. 14:03
jnthn Cat is pretty certainly post-6.0
timotimo i heard Cat would be pretty post-.60
...
moritz it's not that hard to build it a Cat-y type
but teaching the regex engine to work with it will be hard 14:04
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
skids Yeah. But at least now charsets will be solid the next time someone tries. 14:05
timotimo yes, that will be difficult 14:07
i'm also interested in getting the regex engine working with lists of objects 14:11
(is that what a Seq is?)
skids Seq was an old deprecated name for Cat, I think? 14:12
timotimo ah
skids I rmember it getting purged, at least.
14:13 vendethiel left
jnthn hoelzro: Did you test your REPL patches on Windows at al? 14:13
*all
hoelzro jnthn: ah crap, no I didn't =/
did I break everything on Windows?
jnthn hoelzro: ok, but don't panic yet, I have Moar/NQP version skew.
hoelzro: I'm not sure, but gimme a moment... 14:14
hoelzro heh
hoelzro crosses fingers
14:14 gcole left
jnthn It could potentially also relate to the NFG bits I'm doing since I've touched I/O... 14:14
14:15 vendethiel joined
jnthn hoelzro: OK, now it hangs instead but that one may actually be my fault :) 14:16
The previous failure mode less so
14:17 MARTIMM joined
jnthn hoelzro: Yes, that one is mine :) 14:18
(the hang)
hoelzro phew
moritz skids: Seq was a listy thing, iirc (an immutable List, or something like that)
hoelzro we'll see if it works after you fix that =)
jnthn Sure
I didn't actually push the commits that cause the hang yet, fwiw
jnthn is using rebase -i to keep those two back while pushing other fixes that they depend on :)) 14:19
14:19 Ven left
hoelzro =) 14:20
my big issue with tab completion atm is that panda install doesn't install the shared library that Linenoise.pm depends on =/
I could've sworn that it used to
timotimo maybe before the magical eleven merge :S 14:21
froggs would be the one to ask here 14:23
hoelzro also interesting is the change in the output of 'panda help' 14:24
gist.github.com/hoelzro/a55ce71fae0d42a8ad7d
although I suspect that'll be easy to fix
timotimo yes, that's annoying 14:25
it's about $*PROGRAM_NAME iirc
hoelzro makes sense
timotimo and the "wrapper script" possibly execs that program? i'm not sure 14:26
14:26 andreoss joined
hoelzro me neither 14:26
14:27 Ven joined
andreoss is there spoilers in perl6 pod? 14:27
timotimo well, you can cat $(which panda)
andreoss *are
14:27 _mg_ left
hoelzro ruh roh: 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:28
14:29 gcole joined
andreoss timotimo: it should be adopted here examples.perl6.org/categories/euler...ic256.html 14:30
timotimo for all the euler problems, aye?
well, how do you actually output a spoiler to html "properly"?
andreoss yep
mst timotimo: rot13 14:32
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?
mst timotimo: rot13, and optionally a javascript snippet to unrot
timotimo "unrot" %) 14:33
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
andreoss .spoiler { background: #000 ; foreground: #000 } 14:34
timotimo so you have to select it to see stuff?
andreoss yes, no js needed 14:35
14:35 abraxxa joined, abraxxa left
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?
hoelzro panda has CompUnit::Local::Installation do the installing
timotimo =begin block :htmlclass<spoiler> or something like that
hoelzro and that class mangles the names
so the .so is there, it's just not called liblinenoise.so
timotimo yes, that was an important thing to do
make rakudo itself responsible for installing stuff
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 vendethiel left
hoelzro so we need to either unmangle shared objects' names, or convince the dynamic object loaders to load from the mangled name 14:38
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
just giving them numbers isn't optimal
but it's the easiest way to make things not conflict
14:39 Ven left
hoelzro fair enough 14:40
skids jnthn: time for a mic drop, then?
timotimo i'd prefer the original file names to at least be hinted at
14:40 Ven joined
hoelzro same here; I'm used to being able to look at the source for a module easily with P5 or Python 14:40
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
hoelzro I suppose one could write a small tool to yield filenames given a query, though
FROGGS timotimo: we already have a solution for that btw
hoelzro hooray, he's here!
14:41 _mg_ joined
FROGGS yes, just busy at $work :o( 14:41
14:42 vendethiel joined 14:44 _mg_ left
hoelzro =/ 14:44
timotimo i don't know exactly what froggs' "that" refers to 14:46
FROGGS that the installed scripts/modules are just numbered files on disk 14:48
this will change
(probably)
moritz Life, Universe and Everything, I hope :-)
timotimo ah
well, that's the easy-ish part :)
ugexe seems like authority/modulename/version/module.pm would be feasable if not ugly 14:49
timotimo folders?
not so sure about that, tbh
hm, though ... having files that belong to the same module in one place would be nice
ugexe im interested in how you guys end up implemented supercedes, emulates, and friends 14:50
implementing^
hoelzro supersede is impl'd? 14:51
14:51 _mg_ joined
hoelzro is very out of touch, it seems 14:51
ugexe no
hoelzro oh, I misread =/
14:53 _mg_ left
dalek p: 9e2b706 | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java:
Don't unboxJava if it's not a JavaObjectWrapper.

This fixes a ClassCastException leaking to the HLL when we call what() on a TypeObject.
14:56
psch still getting "java.lang.System" or somesuch for WHAT after that 14:57
although maybe that's actually fine, because users should be able to see it's a Java object?
14:57 jack_rabbit left 15:01 molaf_ joined 15:02 smannlymann joined
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:03
15:03 vendethiel left, molaf left 15:04 eli-se joined
eli-se good mornign! 15:05
15:05 RabidGravy joined
psch hey eli-se \o 15:05
timotimo mood gorning!
15:10 FROGGS left 15:12 domidumont left 15:13 zeleiadi joined, abraxxa joined 15:15 vendethiel joined 15:23 diana_olhovik_ left 15:27 smannlymann left 15:39 eli-se left 15:40 vendethiel left 15:42 FROGGS joined 15:43 silug left 15:44 eternaleye left 15:45 eternaleye joined
dalek pan style="color: #395be5">perl6-examples: 3eb7e9d | paultcochrane++ | t/categories/rosalind.t:
Start adding tests for the Rosalind examples
15:47
15:47 cognominal left 15:48 cognominal joined 15:49 cognominal left, cognominal joined 15:52 zeleiadi left 15:54 Ven left 15:55 Ven joined, vendethiel joined 15:58 xfix joined, xfix left, xfix joined
jnthn Hmm, I don't think this test is gonna work out under NFG: 15:59
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');
Because the string ends up with NFG applied and so the two combiners go on the c
Giving a synthetic. 16:00
16:01 zakharyas left
TimToady well, looks like the test is wrong 16:05
m: say uniprop(0x5b4),' ',uniprop(0xfd55)
camelia rakudo-moar 0914fc: OUTPUT«Mn Lo␤»
jnthn TimToady: OK, if we agree on that then I can fix the tests :) 16:06
TimToady the second isn't a combiner though
jnthn Oh
I didn't check, just assumed :)
First is enough for bustage 16:07
TimToady are the tests assuming you can tests any component of a combined char?
*test
rather than just the base char? 16:08
or is there some arcane rule buried somewhere in a little-read Unicode document that prevents putting Hebrew marks on ASCII chars? 16:09
and, I assume this is an NFC test, not an NFD test... 16:10
also I assume this test came from the UC, not hand-rolled 16:11
I mean, it's acting like it's expecting NFD semantics there 16:12
jnthn TimToady: There's a few tests that assume you can test any component of a combined char, yes. 16:15
TimToady: So basically, NFD
Not sure on the history of the test; it's not one I've added. Guess it was generated though.
tony-o m: my sub r (int32 $a) { $a.say; }; r(4023233417); my int32 $r = 4023233417; $r.say;
camelia rakudo-moar 0914fc: OUTPUT«4023233417␤-271733879␤»
16:16 andreoss left
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 ^
timotimo i wonder where exactly that needs work 16:17
16:18 vendethiel left 16:20 eli-se joined
eli-se hi 16:21
16:21 konsolebox left
timotimo ohai eli-se 16:22
dalek ast: ecb4684 | jnthn++ | S15-nfg/concatenation.t:
Tests for NFG closure under concatenation.
16:28
ast: f6a47d6 | jnthn++ | S15-nfg/from-file.t:
Basic tests for I/O and NFG interaction.
16:28 vendethiel joined
dalek ast: e46e945 | jnthn++ | S05-mass/named-chars.t:
Correct tests for NFG; todo 3 needing more review.
16:30
jnthn Ah, damn, fixing things to be closed under concatenation seems to have had a lot of other fallout. 16:31
16:35 Ven left
jnthn Oh, actually, it's maybe not so awful. 16:38
It's fixed a lot of TODO'd tests.
16:46 Ven joined 16:49 vendethiel left 16:56 vendethiel joined 16:57 andreoss joined
andreoss where i can get URI::Escape? panda doens't know about it. 16:58
16:59 dakkar left
psch andreoss: it belongs to URI, apparently, which is listed on modules.perl6.org 17:00
my panda locally seems busted, so i can't check if panda finds that
otherwise, github.com/perl6-community-modules/uri/
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 17:04 Ven left, japhb left 17:13 espadrine_ left
dalek pan style="color: #395be5">perl6-examples: 679528f | paultcochrane++ | categories/rosalind/sgra-grondilu.pl:
Removed unnecessary List::Utils dependency
17:13
tony-o tar xvf vim 17:15
oops
jnthn TimToady: Should .codes default to the number of codepoints in NFC or NFD? 17:18
TimToady NFC, obviously the other one is .dodes :) 17:19
17:19 vendethiel left
TimToady or is it .codes and .coces... 17:20
maybe .codes is a bad name
jnthn OK, if NFC then I have another test to correct.
dalek p: 26dd621 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Always evaluate char ranges at codepoint level.

There are some cases where building them with normalized strings leads to the range being reversed and similar.
TimToady well, maybe we should split it into two
but up till now we've been biased towards NFC
dalek ast: 8ebb19c | jnthn++ | S02-types/unicode.t:
Pick example that really is 2 NFC codes.
jnthn *nod*
We can re-update the test later if needed :)
TimToady
.oO( .coeds and .dudes )
17:22
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
TimToady .nfcs and .nfds?
17:23 japhb joined
lizmat perhas .nfc-cp and .nfd-cp ? 17:23
TimToady cp is opaque
and means "copy" to many people 17:24
lizmat ok, then nfcs and nfds make the most sense to me
perhaps then also nfgs ?
TimToady nah, those is chars :)
lizmat instead of graphs ?
TimToady I suspect graphs can go away
jnthn .graphs is in various tests, for these days is an alias for .chars
Unless we do anything weird in the future :) 17:25
Then I guess it stays like that and...yeah, can go :)
lizmat "Returns the number of graphemes in the string in a language-independent way."
TimToady that was pre-NFG
Unix filenames are encoded in WTP-8
lizmat I would vote to eliminate chars as well then
TimToady huh 17:26
lizmat it is as confusing as "length", which we also banned
TimToady in favor of what?
lizmat nfgs
jnthn ...no.
TimToady they're just characters
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
jnthn :P
lizmat .ngfs # just checking
TimToady see, you can't even speel it wright
lizmat hehe
.nfgs
also doesn't work :-) 17:28
TimToady we need to eat our own botsnacks
synbot6 om nom nom
17:32 cygx joined
labster good morning, * 17:33
labster was finally excused from jury duty. 17:34
TimToady they let you off lightly, eh?
17:35 domidumont joined
dalek kudo/nom: 224db5e | jnthn++ | src/core/Str.pm:
Fix .codes on Moar, in preparation for NFG.
17:35
labster 3 days in jury selection for a pretty minor attempted crime, ugh.
cygx some Proxy weirdness: gist.githubusercontent.com/cygx/99...w/proxy.p6 17:37
is that something that should be fixed, or an unavoidable consequence of how containers are supposed to work?
jnthn Unavoidable.
andreoss timotimo: actually i'm wrong, it can get class from node's config
jnthn Though the 11 is kinda high; I suspect the codepath say goes through will get a looking at some time. 17:38
dalek ast: ad5ec82 | jnthn++ | S05-mass/properties- (4 files):
Unicode property test updates for NFG.

This updates/eliminates a small number of tests that don't make sense under NFG.
17:39
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␤␤»
jnthn suspects it's approaching dinner time...
eli-se Are the static type checking rules of Perl 6 well-specified? 17:42
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"
eli-se That's a vague specification.
jnthn eli-se: Deliberately for now.
eli-se You can never be sure it'll never work at runtime in the general case
that would require finding out whether a function will ever be called. 17:44
m: sub f(Int $x) { }; sub g { f("a") }
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") }␤»
eli-se But it would work at runtime!
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
jnthn We can always mandate more in future versions of the Perl 6 language. 17:45
eli-se Hmmm.
Not if you're past 1.0.0.
No, that'd break existing code.
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.
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.
jnthn The "use [language version]" directive can be used to commit more strongly if people worry about that kind of breakage.
17:48 andreoss left
eli-se jnthn: reminds me of this quote: 17:48
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.
(from joearms.github.io/2013/05/31/a-week...ixir.html)
labster Iä XML ftaghn!
jnthn eli-se: I said "can be", not "must be" 17:49
eli-se yeah
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.
dalek ast: c418208 | lizmat++ | S05-mass/named-chars.t:
Unfudge passing NFG tests
17:50
lizmat jnthn++ 17:51
dalek rl6-roast-data: cc3bf6b | coke++ | / (9 files):
today (automated commit)
jnthn lizmat: Uh...wait...
lizmat: I just fudged those ahead of a branch merge.
Now they'll be busted post-merge. :) 17:52
Though I'm too hungry to do the merges now, so...after dinner :)
labster Go get some food jnthn++
jnthn btw, once I do merge we do get to unfudge plenty :) 17:53
bbl &
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:56
TimToady labster: there is no quotemeta in P6 17:59
labster it's still in the specs somewhere. 18:00
S32-str/quotemeta.t exists 18:01
TimToady with a note from pm suggesting we kill it :)
it's just a holdover from p5 anyway, and we have no decent definition of 'metacharacter' 18:02
p6 regex don't need quotemeta
labster Which is why I was suggesting one.
18:02 _mg_ joined
labster Shell metacharacter, rather than regex metacharacter. 18:02
TimToady which shell?
labster .oO (everyone uses bash, right?) 18:03
TimToady I think this is someone else's rathole, not ours
and I think quotemeta should be shown the exit
18:03 eli-se left
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:04
I'll go ahead and unspec it. 18:05
TimToady well, shell programming is just an injection opportunity in disguise :)
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
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:06
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:07
Perl 6 is not the only braided language, it's just one of the few to admit it is 18:08
labster: thanks 18:09
18:09 _mg_ left
labster Yay, I will accomplish a thing today. 18:10
tony-o lol
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:12
dalek ast: 50ac023 | labster++ | S32-str/quotemeta.t:
quotemeta is finished (as was my jury duty)

Unspecced due to the regex metacharacter problem being solved.
18:16
masak .oO( 12 angry quotemetas )
TimToady
.oO(convicted of jury injection)
18:17
18:17 abraxxa left
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
tempted to change that to: using metacpan.org/pod/Acme::Addslashes
TimToady "was backslashed in ignorance" maybe :) 18:24
18:25 mr-foobar left, Rounin joined
labster ... "on the assumption that the string was backslahed by the cat using your keyboard" 18:26
18:28 eli-se joined
eli-se .botsnack 18:28
yoleaux :D
synbot6 om nom nom
FROGGS hehe 18:29
dalek ast: 2123b88 | lizmat++ | S05-mass/named-chars.t:
Revert "Unfudge passing NFG tests"

Uh...wait... I just fudged those ahead of a branch merge.
18:32
masak I guess that commit message body was meant as a <jnthn> quote? 18:33
lizmat masak: yes 18:34
I guess I should have quoted that
PerlJam Good day all. 18:35
yoleaux 23 Apr 2015 22:56Z <TimToady> PerlJam: can you check the permissions on the tarball you uploaded?
PerlJam hopes someone got to that ahead of me today 18:36
lizmat PerlJam o/
masak lizmat: the commit comment makes more sense if you know it's a quote, yes ;)
PerlJam I've been busy dealing with a sick wife :(
18:36 domidumont left
masak PerlJam: moritz++ fix'd it 18:36
18:37 domidumont joined, rindolf left
lizmat wishes curing sick wives was as easy as that 18:37
masak heh.
FROGGS m: my $foo = 'alpha'; say "bar" ~~ / <::($foo)>+ / # how hard can that one be?
camelia rakudo-moar 224db5: OUTPUT«===SORRY!===␤cannot stringify this␤»
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
PerlJam masak: ooc, what was wrong with the permissions? 18:40
masak PerlJam: no idea. I've been absent most of the day.
PerlJam: just saw that it got fix'd.
PerlJam I'd guess they were too restrictive. I just noticed that my local copy needs more +r 18:42
FROGGS and more cowbell 18:43
masak too restrictive is consistent with the symptoms, yes
FROGGS world readable was missing 18:44
18:50 domidumont left
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
use case:
multi method pick(where self.infinite) { fail X::Cannot::Infinite.new(:action<.pick from>) } 18:53
or can we do that already somehow ? 18:54
perhaps on the value of an attribute:
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̸»
lizmat multi method pick($!infinite: ) { fail... }
18:55 raiph left
lizmat .u \x0338 18:56
yoleaux U+0030 DIGIT ZERO [Nd] (0)
U+0033 DIGIT THREE [Nd] (3)
U+0038 DIGIT EIGHT [Nd] (8)
lizmat .u x0338
yoleaux No characters found
lizmat .u 0338
yoleaux U+0338 COMBINING LONG SOLIDUS OVERLAY [Mn] (◌̸)
labster I think it's for arbitrary vulgar fractions 18:58
18:58 brrt joined
FROGGS m: class Foo { has $.bar; method baz (\SELF: $x where SELF.bar == 42) { } }; Foo.new( :bar(42) ).baz(111) 18:59
camelia ( no output )
FROGGS m: class Foo { has $.bar; method baz (\SELF: $x where SELF.bar == 42) { } }; Foo.new( :bar(43) ).baz(111)
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␤␤»
FROGGS though, you need a param...
m: class Foo { has $.bar; method baz (\SELF: *%_ where SELF.bar == 42) { } }; Foo.new( :bar(43) ).baz
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␤␤»
FROGGS m: class Foo { has $.bar; method baz (\SELF: *%_ where SELF.bar == 42) { } }; Foo.new( :bar(42) ).baz
camelia ( no output )
FROGGS works
might now be a good idea, but it works 19:01
lizmat that feels like a dirty hack to me :-)
something I might do in my own code, but not in the settings :-) 19:02
FROGGS aye
19:03 raiph joined
dalek ecs/newio: 5d2e839 | labster++ | S (3 files):
unspec quotemeta, fixes #89
19:05
labster oh, I was on newio... hmm. 19:06
lizmat hehe
labster we going to merge that soon lizmat?
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.
lizmat labster: before Christmas, I would say 19:07
labster hahaha
masak labster: maybe cherry-pick the commit over to master?
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 eli-se left
lizmat actually, it would have to be self.infinite, but yeah 19:09
$!infinite // self.infinite I guess
dalek ecs: d251a6b | labster++ | S (3 files):
unspec quotemeta, fixes #89
19:10
labster wow, github autocloses the issue for you, that's pretty cool. 19:11
masak yup.
DrForr I'm a little surprised at whitespace behavior in 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:13
Prety much my first time playing with actions as well, but it's the grammar I wonder about. 19:14
19:19 mr-foobar joined 19:20 silug joined 19:21 telex left, _mg_ joined 19:22 telex joined
psch m: say "a " ~~ rule { .$ }; say "a " ~~ rule { . $ }; 19:24
camelia rakudo-moar 224db5: OUTPUT«「 」␤「a 」␤»
19:24 yqt joined
psch DrForr: S05:375 roundabout explains it quite well i think 19:24
synbot6 Link: design.perl6.org/S05.html#line_375
DrForr Nod, reading. It just feels as if it's interfering with the matched text. 19:25
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…»
psch m: say "lexer grammar" ~~ rule { ('lexer'|'parser')? 'grammar' }
camelia rakudo-moar 224db5: OUTPUT«「lexer grammar」␤ 0 => 「lexer」␤»
dalek kudo/nom: 1905fc1 | lizmat++ | src/core/List.pm:
Don't use no bloody intermediate

The win is in the noise range (about %1), but it simplifies the code, and that is a good thing, no?
FROGGS lizmat++ 19:27
DrForr Hrm, wonder what I'm doing wrong in my code then, as your line looks like the behavior I'd expect. 19:28
19:28 brrt left
psch DrForr: sigspace :) 19:28
m: say "lexer grammar" ~~ rule { ( 'lexer' | 'parser' )? 'grammar' }
camelia rakudo-moar 224db5: OUTPUT«「lexer grammar」␤ 0 => 「lexer 」␤»
19:29 raiph left
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
masak it's significant in most places.
even before things like `+` 19:30
psch even after the opening brace
oh
no
that's wrong i think?
m: say " a" ~~ rule { . }
camelia rakudo-moar 224db5: OUTPUT«「 」␤»
psch yeah, it is
phew :P
DrForr Right, so my formatting decisions are being made for me again. 19:31
psch well, it's a waterbed 19:32
i strongly suspect there's good reasons for this particular configuration 19:33
FROGGS I like the way it is
19:34 brrt joined
FROGGS I treat rules like sentences and tokens like words... and that's what I usually want 19:34
so when I don't want to have whitespace in something, it might be worth putting it into a token
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:37
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
e.g. «token GrammarType { 'lexer' | 'parser' }; rule GrammarAndTypeDecl { <GrammarType>? 'grammar' };» or something like that
lizmat brrt: good catch (i think)
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.
TimToady here's a pretty little program: rosettacode.org/wiki/Pascal_matrix_...ion#Perl_6
brrt not sure though :-) 19:41
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
*refactor # this keyboard is *way* too mushy.
19:44 FROGGS left
DrForr Hell, at that point I'd probably fall back to token LEXER {'lexer'} # &c and ... Eeh, I" just do that. 19:44
It just feels like my hand is being forced, is all. 19:45
19:46 _mg_ left
brrt 'your branch is behind orign/nom in 396 commits' :-o 19:46
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.
camelia rakudo-moar 224db5: OUTPUT«3.17616355␤»
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
camelia rakudo-moar 224db5: OUTPUT«1.3872013␤»
skids Not awful.
brrt you know what is aweful? when you've downloaded some source and they decide to use CMake 19:52
s/aweful/awful/
TimToady
.oO(the CMake is a lie!)
brrt or any other extramagic make system
'make is crossplatform, reliable, and parallel. let's replace it' 19:54
dalek kudo/nom: 5efcae8 | lizmat++ | src/core/List.pm:
Make List.pick about 3% faster, brrt++
19:57
brrt hah, i was testing the opposite patch, using a native int :-)
how do you speedtest it? 19:58
lizmat rand_I returns an Int
and it needs a deconted Int
TimToady make is like C, not really portable, merely ubiquitous. 19:59
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:00
well, apparantly that's wrong :-) 20:02
20:03 raiph joined
itz good timtoady interview in linux voice 20:05
brrt itz: link perchance? 20:06
itz it's a pay publication (although they give money back to open source community)
I believe the material is made open after N months anyway 20:07
brrt ah ,ok, that's fair
itz N=9
www.linuxvoice.com/interview-damian-conway/ is opened now anyway 20:08
brrt portability is a finicky term anyway 20:10
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:11
jnthn back :) 20:14
cognominal jnthn, is :ignoremark affected by NFG? I can't even imagine working without it
* it working
jnthn cognominal: It's never been implemented yet
20:15 eli-se joined
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.
jnthn++
christmas everyday with you 20:16
20:16 darutoko left
jnthn read the 'clog from the pub and saw nobody yelped about the upcoming revision bumps for NFG 20:17
So, let's do it :)
itz hmm the rakudo annoucement didn't make www.nntp.perl.org/rss/perl.perl6.announce.rdf
labster yep, do it
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... )
dalek kudo/nom: 7fe6f1b | lizmat++ | src/core/List.pm:
Make List.pick(*) about 7% faster
itz lizmat: but parrot still does! 20:20
lizmat fwiw, I'm on your side with this, but this is what pmichaud jnthn TimToady decided long ago, afaik 20:21
item #16 in release guide:
To avoid public confusion with Rakudo Star releases, we now publish
compiler release announcements ONLY to [email@hidden.address]
(We may restart widespread announcements of compiler releases
once they are known, or we may begin publishing a single
announcement for both.)
brrt Internal error: invalid thread ID in GC work pass 20:22
:-o what
lizmat itz: git blame puts this with pmichaud in 2010 20:23
20:23 colomon joined
itz is there an rss feed of [email@hidden.address] 20:23
lizmat I don't know
brrt is going to try this all again
20:24 xfix left
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:33 mr-foobar left
dalek kudo/nom: 0a7825f | lizmat++ | src/core/List.pm:
Don't need the Whatever check anymore, labster++
20:34
p: 63f0545 | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for much NFG work.
20:35
20:36 muraiki left
dalek ast: 907e841 | jnthn++ | S15-nfg/regex.t:
Todo a (recently added) test we bogusly passed.
20:38
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
"none dare call it conspiracy" :-)
lizmat itz: how many hits for 5.21.9 ? 20:42
perl 5.21.9 that is
itz that looks ok 20:43
TimToady obviously we're not suffiently mobile friendly 20:45
*fic 20:46
dalek kudo/nom: e459701 | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for Moar/NQP NFG work.

With this, NFG is enabled for all Str.
lizmat jnthn++ :-)
[Coke] jnthn++!
brrt :-D 20:47
lizmat: fairly sure your last commit breaks rakudo for me
lizmat ? 20:48
brrt moarkudo that is
but....
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" />
brrt let's experiment a bit further :-)
lizmat brrt: what do you mean with "break"
build ?
specific test ? 20:49
brrt building core setting dies with an invalid thread id error
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.
brrt yes, that is possible too :-)
dalek ast: ea19778 | jnthn++ | S15-nfg/from-file.t:
Fudge UTF-16 file/NFG tests.

So we can run the passing UTF-8 ones in "make spectest". The UTF-16 ones actually run into writing a buf16 to a file being NYI!
20:50
lizmat FWIW, it builds ok for me on OS X
dalek kudo/nom: 14f6344 | jnthn++ | t/spectest.data:
Enable a range of new S15-nfg tests on MoarVM.
20:50 Alina-malina left
dalek ast: 2be99bc | jnthn++ | S (5 files):
Unfudge a bunch of NFG tests for rakudo.moar.
20:51
[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
jnthn lizmat: It builds fine for me too, fwiw. :) 20:53
brrt very latest builds fine for me as well 20:54
bug masked once more
timotimo going to build it here, too
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:"
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
brrt that fails reliably under make
dalek ast: 7ab7759 | jnthn++ | S15-string-types/Str.t:
Correct a .ord test, unfudge on rakudo.moar.

We've decided that we won't leak synthetic codepoints out, since it'll prevent us from ever doing any scheme other than process-global if any code in the wild comes to rely on them comparing accross strings.
jnthn [Coke]: That's in my review queue; will get to it in a moment 20:58
[Coke]: I wasn't immediately sure the test was correct.
brrt fwiw, i do agree that this is a moarvm issue :-)
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.
dalek ast: 79a7dc0 | jnthn++ | S02-types/unicode.t:
Toss some tests relying on out-dated design.

Str is always NFG now, and we have Uni and Buf for the other levels. Removing the tests as we have others that cover these issues in line with current design and more extensively.
21:01
brrt i'm off for tonight
sorry for scaring you all 21:02
timotimo cya brrt
21:02 brrt left
lizmat good night brrt 21:02
.oO( too late )
dalek ast: 8b86ef3 | jnthn++ | S29-conversions/ord_and_chr.t:
Fix test description; unfudge for rakudo.moar.
21:04
jnthn [Coke]: Turns out the test was OK but the description was imprecise. :)
21:04 MARTIMM left 21:05 skids left
[Coke] .... UGH. now I will always hear "brrt" as ernie from sesame street. "hey, brrt" 21:05
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...
[Coke] maybe I'm a commit or two behind. whoops. 21:10
jnthn oh no, that was capitalize.t
I wonder why I missed it
oh, they're skip, not todo.
[Coke] I just ran autounfudge to find those.
jnthn :) 21:11
dalek ast: cce24c2 | jnthn++ | S32-str/words.t:
Unfudge 2 NFG tests on Moar; [Coke]++.
labster jnthn++ finally NFG, [Coke]++ test herding as usual 21:12
timotimo how does autounfudge work, anyway?
jnthn Time for some rest... Enjoy the graphemes! :) o/ 21:20
lizmat jnthn: good night 21:22
21:22 rurban joined
lizmat conventional wisdom has it that a while {} should be faster than a gather {} ? 21:22
21:23 RabidGravy left 21:26 grondilu left 21:29 flussence left
timotimo it should, at the moment 21:29
after the GLR, something that could "automatically be rewritten" from a gather to a while would also be fast
lizmat well, I'm trying to create an eager version of List.pick(*) with a while{}, but it's like 4x slower :-( 21:31
than the one with gather { take-rw }
timotimo wow 21:32
lizmat the odd thing is that somehow it's in MMD dispatching
21:32 raiph left
jdv79 DrForr: are you doing Ryal Garden? 21:32
timotimo o_O
jdv79 *Royal
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
timotimo srsly, wat? 21:35
lizmat ok, maybe not the same version after all, just double checked that 21:36
PerlJam lizmat: what's the code look like?
lizmat working on a gist 21:37
with timing info
21:38 cygx left
timotimo thanks 21:39
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
labster premature optimization is a large part of complier building 21:41
PerlJam wonders how many eyes timotimo is in possession of.
lizmat gist.github.com/lizmat/943197fa55834eef4c66 21:42
labster in soviet russia the eyes have it for performance
lizmat the eager version is actually more than 20 times as slow
timotimo are you sure you want nqp::unbox_i? 21:44
wait. what am i thinking?
lizmat yeah, because it is an Int
timotimo + nqp::bindpos($picked,nqp::unbox_i($i),nqp::atpos($picked,nqp::unbox
here the line got cut off
PerlJam wonders how expensive nqp::bindpos is
timotimo possibly by a pager? 21:45
lizmat gist updated 21:46
that one is actually the same as in the non-eager version
PerlJam lizmat: This is List.pick ? 21:47
lizmat yeah
PerlJam lizmat: in my copy on disk, that second nqp::bindpos isn't there.
lizmat PerlJam: this is an extra candidate 21:48
that candidate I didn't push yet
PerlJam so, it's there in both your eager and non-eager versions?
lizmat the non-eager Whatever candidate is in nom 21:49
the eager one is only in the gist
the reason I'm chasing this is that I have a theory that async stress flakiness is caused by gather / async interaction 21:50
since earliest does a @actions.pick(*)
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
lizmat and see whether that would reduce / remove the flakiness (purely as a data-point, really)
21:51 colomon left, eli-se left
timotimo lizmat: did you --profile that yet? 21:52
lizmat good point :-)
way fewer JIT compiled frames 21:54
1 garbage collection vs none 21:55
hmmm... didn't we have a way to profile here >?
timotimo well, if there were fewer frames all in all, that'd not be an issue 21:56
we do have it
prof-m or something
lizmat but then I would have to push :(
timotimo yes :(
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
for $i and for $elems
lizmat but they'r Int 21:58
not int
timotimo well, yeah
lizmat elems has to be Int because of nqp::rand_I
I mean $i
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
mhm
dalek kudo-star-daily: b460844 | coke++ | log/ (2 files):
today (automated commit)
[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
you then need to manually go through the generated diff because somethings are iffy.
22:02 yqt left
timotimo oh 22:02
neato
22:03 molaf_ left
lizmat timotimo: the unboxing didn't affect the profile significantly 22:03
timotimo OK 22:04
and you say the inside of the while is almost exactly the same as in the non-eager version?
lizmat the eager one as deopts (0.83%), the non-eager one none
the eager one has 1 garbage collection, the non-eager one none
the eager one has 25319 cal frames, the non-eager one 9706 22:05
that's probably our CPU difference explained
timotimo ouch 22:06
how the hell ...
the gather/take must be inlined by spesh
lizmat yeah indeed
timotimo and for some reason the simpler while loop doesn't 22:07
perhaps it's something to do with lexicalrefs and such?
can you grab a MVM_SPESH_LOG for that and cut out the before/after sections of the pick method for me?
lizmat maybe first check what happens with a MVM_SPESH_DISABLE=1 ? 22:08
dalek ast: 33fc3d4 | labster++ | S16-filehandles/io_in_for_loops.t:
added tests for RT #122963 IO::Handle.lines doesn't properly count .ins
synbot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122963
timotimo ok 22:09
22:09 cognominal left 22:10 cognominal joined, cognominal left
lizmat with MVM_SPESH_DISABLE=1, the difference in frames is 176614 (eager) vs 10618 (non-eager) 22:10
so spesh already did its best, it would seem 22:11
(from 176614 to 25319)
timotimo wow
labster O.O 22:12
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:13
lizmat forcing a backtrace inside the while does not reveal any reification madness 22:14
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.
timotimo %) 22:16
lizmat if I just do the rand_I and the elems = elems - 1, it is already slower than the non-eager one 22:22
so it is definitely not the bindpossing 22:23
22:26 espadrine_ joined
PerlJam so the looping itself is slower? 22:27
22:27 RabidGravy left
lizmat even if the while loop just has elems = elems - 1, it is slower 22:27
it feels to me this code is triggering something at a low level 22:28
running spectest now: if clean, then I'll commit anyway 22:34
it is only activated with the :eager named param, and nobody is doing that yet 22:35
it'll give at least people an easier way to look at this strange issue
timotimo: an idea: could it be that the while is creating a new (set of) frame(s) for each iteration ?? 22:37
22:38 yqt joined, flussence joined 22:40 espadrine_ left 22:41 skids joined 22:44 beastd joined 22:45 Ben_Goldberg joined
dalek rakudo/nom: 40a4241 | lizmat++ | src/core/List.pm: 22:48
rakudo/nom: Make a faster List.pick(*,:eager) version
rakudo/nom:
rakudo/nom: Well, that was the idea. Turns out the eager version is about 20x *slower*.
rakudo/nom: Added here for further research.
22:48 dalek left, dalek joined, ChanServ sets mode: +v dalek, yqt left
lizmat sorry dalek, the commit: github.com/rakudo/rakudo/commit/40...d2c9bdc9d2 22:49
.tell jnthn why is while slower than gather while ??? github.com/rakudo/rakudo/commit/40...d2c9bdc9d2
yoleaux lizmat: I'll pass your message to jnthn.
lizmat and with that, I bid #perl6 a good night 22:51
22:57 Ben_Goldberg left 22:59 colomon joined 23:00 andreoss joined 23:04 rmgk is now known as Guest98033, rmgk_ joined, Guest98033 left, rmgk_ is now known as rmgk
timotimo could perhaps be in a branch instead? 23:06
23:08 lizmat left
timotimo lizmat: in general, every invocation (even just stepping into a frame that hasn't been inlined) will create a new BOOTCode :( 23:08
23:15 krakan left
timotimo we recently lost a bit of our capability to inline blocks at the QAST stage because suddenly we have lexicalrefs and lexicals 23:15
but our code gen can't access a lexicalref or localref with "lexical" or "local" scope yet 23:16
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
then we'll get lexical-to-local-lowering again which will unblock many inlinings
23:17 krakan joined
andreoss how to refer closure within itself? &?ROUTINE points to outer sub. pastebin.com/eigBA3Pz 23:17
of course if it's not assigned to variable 23:18
23:19 kaare_ left
TimToady &?BLOCK 23:19
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␤␤»
psch m: -> { &?BLOCK.perl.say }()
camelia rakudo-moar 40a424: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Ji1VrB9HuG␤Undeclared routine:␤ &?BLOCK used at line 1␤␤»
psch fwiw, i'd have expected it to work as well
std: -> { &?BLOCK.perl.say }()
camelia std 28329a7: OUTPUT«ok 00:00 141m␤»
psch apparently NYI
23:22 Vlavv_ left
timotimo yeah, nyi 23:23
feel free to do something about it ;)
psch i might take a look tomorrow
not promising anything :P
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
so something different could be nice
timotimo: what kind of test?
timotimo 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!
actually ...
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
psch timotimo: my understanding is that the RHS doesn't get thunked and thus you're substracting 0
for elems 1 to 3
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␤»
psch m: my @sizes = 100, 110, 120, 130; @sizes >>+=>> @sizes[0]<>; say @sizes # for comparison
camelia rakudo-moar 40a424: OUTPUT«200 210 220 230␤»
psch or maybe "doesn't get thunked" is a bit wrong here
the array elem container gets thunked, the contents don't, if that makes sense
(might also have been more than 2 or 3 days ago, i'm not quite sure) 23:27
read that as "i can rationalize why it happens like it does", not as "i think it should happen as it does" though :) 23:28
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
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:30 Rounin left
psch timotimo: does that make any sense to you? 23:31
23:34 Vlavv_ joined
timotimo um 23:53
the right hand side doesn't need to be th... ooooooooh!
now i get it!
i hadn't read what you wrote "back then" 23:57
psch no worries 23:59
i'm mostly glad that i seem to start groking this whole container stuff a bit better :)
timotimo \o/
feel free to write that into the bug report and close it
psch i don't have bugadmin rights
but i can dump the clog there, sure