»ö« 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!
Set by masak on 12 May 2015.
00:03 lea left
Juerd Where is .^attributes implemented? 00:08
gfldex Juerd: i think in src/Perl6/Metamodel/AttributeContainer.nqp 00:11
Juerd Ah, another Metamodel folder :) 00:12
I found src/core/Metamodel but it was almost empty
Thanks :) 00:13
00:14 thou left 00:17 lea joined 00:22 vendethiel left
Juerd What's the nice way to do $object.^attributes[0].get_value($object)? 00:24
(Or, actually, to get a hash of attributes)
00:25 grondilu left 00:28 laouji joined 00:29 sufrostico joined, yqt left
Juerd class Foo { use JSON::Tiny; method json { my %hash; for self.^attributes -> $a { %hash{ $a.Str.substr(2) } = $a.get_value(self).Str }; return to-json %hash; } } 00:30
It works but it feels icky
(Stole from Mu.perl, and something tells me I shouldn't find inspiration in Mu.pm :))
00:39 laouji left, n0tjack joined 00:40 laouji joined, laouji left, laouji joined 00:44 n0tjack left 01:00 rurban joined
colomon Hmmm: Type check failed in binding $s; expected 'Cool' but got 'Enum' 01:01
mind you, there is no $s in my source code.
01:02 kernel joined 01:03 kernel is now known as Guest1897 01:06 noganex joined
colomon spent ten minutes before this bug trying to execute the non-existant output file rather than the program to generate it. 01:08
01:09 noganex_ left
Juerd Chicken-and-egg problems are hard. 01:09
colomon m: say uc(“hello")
camelia rakudo-moar 079d73: OUTPUT«5===SORRY!5=== Error while compiling /tmp/XMNP_e9WDM␤Unable to parse expression in smart double quotes; couldn't find final '”' ␤at /tmp/XMNP_e9WDM:1␤------> 3say uc(“hello")7⏏5<EOL>␤ expecting any of:␤ argument list␤ …»
colomon m: say uc('hello')
camelia rakudo-moar 079d73: OUTPUT«HELLO␤»
Juerd (I'm trying to do recursive data structures) 01:10
That “ is nasty! 01:11
01:11 aeth left 01:13 Khisanth left
colomon Juerd: yeah, my IRC client is hell on typing code out 01:13
Juerd Is there a way to defer object instantiation? I have to serialize objects and store them, get them back later, but depending on the order of reading, things they refer to may not be available yet... :( 01:14
colomon at the SPW hackathon I actually opened up a terminal window back to my Linux box in the States and ran irssi on it so I could try code here
Juerd I'd suggest using irssi all the time anyway, but you probably have reasons for not doing so, or you'd already do it :) 01:15
colomon m: my $s = set <a b c>: $s.list.map{{ say $_ })
camelia rakudo-moar 079d73: OUTPUT«5===SORRY!5=== Error while compiling /tmp/M29sElm0Xo␤Cannot use variable $s in declaration to initialize itself␤at /tmp/M29sElm0Xo:1␤------> 3my $s = set <a b c>: $7⏏5s.list.map{{ say $_ })␤ expecting any of:␤ term␤»
colomon m: my $s = set <a b c>; $s.list.map{{ say $_ })
camelia rakudo-moar 079d73: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tbmFiWY0Gw␤Unable to parse expression in subscript; couldn't find final '}' ␤at /tmp/tbmFiWY0Gw:1␤------> 3$s = set <a b c>; $s.list.map{{ say $_ }7⏏5)␤ expecting any of:␤ statement en…»
colomon m: my $s = set <a b c>; $s.list.map({ say $_ }) 01:16
camelia rakudo-moar 079d73: OUTPUT«a => True␤c => True␤b => True␤»
Juerd pastebin.com/5d0hFtGZ # My first Perl 6. It's hard :(
01:16 rurban left
Juerd I may just have to make sure that cyclic constructs don't take place. I don't really need them anyway. 01:17
01:21 sufrostico left 01:24 grondilu joined
Juerd Type check failed in binding $foo; expected 'Any' but got 'Mu' 01:26
Okay... I give up.
01:26 Khisanth joined
Juerd I'm not good at giving up; adding "Mu" helped, but it still doesn't do what I want 01:31
Can't find a way to use 'self' in a has...where
So it seems I can't use the type mechanism to avoid recursive/cyclic structures :| 01:32
skids gist.github.com/skids/7b099e80ce8d378f0cdd # ShimmerFairy, japhb 01:33
japhb skids: I am confused. Your numbers appear to show that the unpatched version is strictly faster. 01:44
skids Yes, it is, I think because of the unwind, I dunno.
The patch is only for testing Backtrace versus non-Backtrace. 01:45
japhb So why are you proposing the patch in the first place? What problem are you trying to solve?
skids I'm not proposing the patch.
japhb Oh
01:46 ilbot3 joined 01:48 kaare_ joined
skids Incidentally it seems even more expensive to make that backtrace than just looping over Backtrace.new, which take 8.7s for the "10000e3".."29999e3" case, so depth of the Backtrace may even matter. 01:48
01:49 Khisanth left 01:50 telex left 01:52 telex joined 01:54 thou joined 01:56 Khisanth joined 01:59 thou left
ShimmerFairy ding! 02:16
yoleaux 9 Sep 2015 16:17Z <jnthn> ShimmerFairy: Did you run "make test" also? I fear your val work maybe busted t\04-nativecall\12-sizeof.t
ShimmerFairy .tell jnthn no, I neglected to run make test. The good news is that I fixed this error for trait_mod:sym<is> already (just not 'repr', since it's a specially-handled case of 'is' that roast apparently doesn't catch). Unfortunately the same fix I tried before I had to go afk today didn't work, something about the dynamic var. 02:19
yoleaux ShimmerFairy: I'll pass your message to jnthn.
02:26 tokuhiro_ joined 02:30 dayangkun joined 02:31 tokuhiro_ left 02:37 BenGoldberg joined 02:45 rickbike joined
ugexe Juerd: `has Entity $.location is rw where Place = Nowhere;` i dont think this does whatever it is you think it does 02:49
02:50 Khisanth left 02:53 Khisanth joined
ugexe your multiple %cache returns can be replaced by a single return ::($_).new(|%hash) 02:53
Juerd ugexe: What do you think I think it does? :) 02:55
ugexe exactly what your error says
«Invocant requires an instance of type <anon>, but a type object was passed.
Juerd ::($_) is a bit scarier; I want a whitelist of sorts
ugexe as far as what you want i dont know. maybe you want an instance. maybe you are trying to enforce a interface/contract 02:56
Juerd The whole = Nowhere thing works except in method json
skids == surely
Juerd Actually, it works even in .json 02:57
It fails for the Place case, where .location remains unassigned 02:58
skids: No, assignment :)
skids OIC. I should have read the code. 02:59
ugexe does `where Place` allow undefined?
02:59 noganex_ joined
Juerd ugexe: Yes. Actually, that one should just be 'has Place $.location is rw;' 03:00
skids 'where Place' should be same as 'where { $_ ~~ Place }'
Juerd And then it fails with Invocant requires an instance of type Place, but a type object was passed. Did you forget a .new? 03:01
I wonder which Invocant it's referring to
03:02 noganex left
skids try --ll-exception? 03:04
ugexe submethod is private 03:06
submethod Str
Juerd src/gen/m-BOOTSTRAP.nqp:2976 which is nqp::isinvokable(@error[0]) ?? @error[0]() !! nqp::die(@error[0]);
03:06 n0tjack joined
Juerd Oh, wait, that's the error message itself :) 03:07
ugexe i imagine that might have to do with $a.Str inovation error
invocation
::(Nowhere).Str
Juerd It's not $a.Str but $a.get_value(self).Str 03:08
ugexe is there eve a self if you do `class Foo { method bar {self} }; Foo.bar`? 03:09
Juerd No, but do I do that? I'm doing $instance.json, and in there I'm using self. 03:10
I'm not doing Nowhere.json, or something like that
ugexe my $t = Entity.load("foo");
03:11 n0tjack left
ugexe it would be easier if it was golfed down, but that looks like you might have wanted to create a Entity.new first 03:11
Juerd I'll golf down in a query with camelia. Hold on :) 03:12
ugexe maybe $a.get_value($a).Str
dalek kudo/nom: c54773f | ShimmerFairy++ | src/Perl6/Actions.nqp:
Fix the 'is' trait_mod for 'is repr'

This special case's breakage was only picked up by a sanity test, which since I neglected to run them went unnoticed when fixing 'is' the first time.
03:13
Juerd I'm failing. 03:16
This works :(
m: class Wim { method Str { "wim" } }; class Aap { has $.noot is rw = Wim; method mies { my %hash; for self.^attributes { %hash{ $_.Str } = $_.get_value(self).Str }; say %hash.perl } }; my $aap = Aap.new; $aap.mies
camelia rakudo-moar 079d73: OUTPUT«{"\$!noot" => "wim"}␤»
ugexe you don't use .new in your gist 03:17
no Entity.new
skids ahah. 03:18
03:19 BenGoldberg left
Juerd Argh, I can't even reproduce it anymore 03:20
Oh d'oh. Removing try { } helps :D
ugexe it was all a dream
Juerd I wish. It's 5:20 am here.
s/am/AM/
So it works for $t.json, but it fails for $t.location.json 03:21
Even though $t.json succesfully serialized to { "id" : "foo", "class" : "Person", "location" : "lhq" } 03:22
So it fails for the case with has Place $.location is rw; in class Place 03:23
If I add "= Nowhere" to that, it works as expected.
ugexe method json(Entity:) { } perhaps... im not sure what the default is 03:24
Juerd Ah. The real thing failing is Entity.Str, which uses self, like you suggested.
It's just in a place I didn't expect...
ugexe first do s/submethod/method/
Juerd Already have it as a method in my current version
multi method Str (Entity:D: ) { self.id } 03:25
Fixed it...
Feels wrong because I really don't know what I'm doing. I don't even know the difference between methods and submethods.
ugexe submethod doesnt get inherited. i dont know if that actually happens or not with your code, but it looks like it might 03:26
03:27 tokuhiro_ joined
ugexe Entity:D: means that method is called on an 'D'efined Entity (and not an undefined one) 03:28
Juerd pastebin.com/Qb5vVMwU # does what I want
skids m: class A { my sub ergh($id) is cached { 55.say; $id + 42 }; method ergh2(A: $id) { ergh($id) } }; A.ergh2(1).say; A.ergh2(1).say; # if your caching needs are simple.
camelia rakudo-moar 079d73: OUTPUT«55␤43␤43␤»
Juerd The :D part I knew :)
"is cached"! Really! Nice.
My caching needs are incredibly simple. 03:29
«'is cached' on methods not yet implemented. Sorry.»
Okay, perhaps they're a little less simple than I thought :)
Wrapped in a sub, works now. This is pretty nice. 03:31
03:31 tokuhiro_ left
Juerd Now the only thing I still need is the thing that seems most impossible... make the subtype prevent cyclic structures :) 03:32
But apparently the "refinement" block in 'has ... where' can't access the instance. Or at least, I haven't found how yet. 03:33
ugexe can you do it in a submethod BUILD() { } initialization?
03:33 rickbike left
Juerd No, .location will probably be changed after initialization 03:33
ugexe shouldnt matter 03:34
Juerd The purpose of this program is tracking whereabouts of people and stuff.
03:34 baest_ joined
Juerd And a box can't be put in itself 03:34
ugexe oh the type check to happen again
Juerd I'm using Perl 6 for this because I have a year and a half to finish this project, and it seemed like a good project for testing the object system :) 03:35
ugexe i wonder if a role could enforce it somehow
Juerd I think that non-cyclic subtypes are useful in many cases 03:36
But for now, I'm off to bed. 5:37 AM here, I've already been at it for too long :) 03:37
Thanks for your help, ugexe and skids!
skids np 03:38
03:39 tokuhiro_ joined
ugexe binding a Proxy in BUILD to the attribute might let you do your check too 03:39
03:42 thou joined 03:43 billn joined 03:44 billn left
skids m: class A { has $.a; has $.b = self.foo(); method foo { $.a > 4 ?? $.a !! die } }; A.new(:a(5)).perl.say; A.new(:a(4)); 03:46
camelia rakudo-moar c54773: OUTPUT«A.new(a => 5, b => 5)␤Died␤ in method foo at /tmp/GN5GQuz98o:1␤ in method at /tmp/GN5GQuz98o:1␤ in block <unit> at /tmp/GN5GQuz98o:1␤␤»
03:46 thou left 04:23 darutoko joined 04:26 rmgk is now known as Guest7259, rmgk_ joined, Guest7259 left, rmgk_ is now known as rmgk 04:36 perlawhirl joined 04:50 aborazmeh joined, aborazmeh left, aborazmeh joined, khw left
TimToady m: sub MAIN { my @p = (start { say "A$_"; sleep rand; say "B$_" } for 1..5); await @p; } 05:10
camelia rakudo-moar c54773: OUTPUT«A1␤A2␤A3␤A4␤A5␤»
TimToady m: sub MAIN { my @p = (start { say "A$_"; sleep rand; say "B$_" } for 1..5); sink await @p; }
camelia rakudo-moar c54773: OUTPUT«A1␤A2␤A3␤A4␤A5␤B4␤B3␤B5␤B2␤B1␤»
TimToady needing to sink that await seems like a problem, since main should probably assume --> Sink 05:11
(this prevented RC's Dining Philosophers from running correctly) 05:12
05:15 skids left, Khisanth left 05:17 Khisanth joined 05:18 n0tjack joined 05:22 n0tjack left
TimToady m: my Bool %hash{*;*}; %hash{"a"; "b"} = True; 05:22
camelia rakudo-moar c54773: OUTPUT«Type check failed in assignment to '%hash'; expected 'Bool' but got 'Hash'␤ in block <unit> at /tmp/NWldXMtkgi:1␤␤»
05:24 baest_ is now known as baest 05:30 thou joined 05:33 [Sno] left 05:35 thou left 05:46 domidumont joined 05:47 telex left 05:48 telex joined 05:49 CIAvash joined 05:50 domidumont left 05:51 domidumont joined 05:56 finbarrsaunders joined, finbarrsaunders left 06:06 laouji left
[Tux] test 50000 40.658 40.575 06:07
test-t 50000 43.211 43.127
06:11 laouji joined 06:19 kinslayer left 06:27 baest_ joined, sizur joined
sizur Hi all! 06:27
06:27 cgfbee left
sizur Is there overhead to flip=flop operators or are they simply stranslating to an opcode when in boolean context? 06:28
06:28 Sgeo joined 06:29 cgfbee joined 06:32 baest left 06:34 baest_ is now known as baest
moritz sizur: are you talking about Perl 5 or Perl 6? 06:53
07:00 [Sno] joined 07:03 Ven joined 07:06 azawawi joined
azawawi hi 07:06
is 'panda gen-meta .' broken atm? 07:07
07:11 rindolf joined 07:15 azawawi left 07:18 xfix joined, xfix left, xfix joined, thou joined 07:23 thou left 07:26 rurban joined 07:33 aborazmeh left 07:39 aborazmeh joined, aborazmeh left, aborazmeh joined
Ven \o, #perl6 07:44
07:45 n0tjack joined 07:47 Ven left 07:49 n0tjack left 07:59 Ven joined 08:00 zakharyas joined 08:01 ruoso joined 08:02 bowtie joined, bowtie is now known as Guest15516 08:03 dakkar joined 08:09 perlawhirl left 08:19 aborazmeh left 08:46 FROGGS left 08:48 FROGGS joined 08:50 shmibs joined, lizmat joined, laouji left 08:53 laouji joined
_itz azawawi: I just tried it on 'brew .. no joy .. the star version (without the specify ".") works 08:54
08:55 FROGGS left 09:04 andreoss joined 09:06 thou joined 09:09 FROGGS joined 09:11 thou left 09:14 xinming_ joined, pmurias joined
dalek p/js-merge-wip: 485c280 | (Pawel Murias)++ | src/core/testing.nqp:
Temporarily workaround a .push bug in the js backend.

Fixing the bug requires a refactoring which I will do once the test suit passes.
09:14
p/js-merge-wip: a9d1b34 | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp:
Fix coercion of strings to bool.
p/js-merge-wip: 11eee86 | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp:
Implement rindex and fix index corner case.
09:17 xinming left 09:24 cognominal joined 09:25 Ven left, Akagi201 joined
timotimo o/ 09:28
09:28 nits joined
lizmat timotimo o/ 09:33
09:33 andreoss left 09:37 andreoss joined
timotimo Timo ob a train 09:37
on 09:38
09:38 xinming_ left 09:39 xinming joined, espadrine joined
jnthn morning (just), #perl6 :) 09:43
yoleaux 02:19Z <ShimmerFairy> jnthn: no, I neglected to run make test. The good news is that I fixed this error for trait_mod:sym<is> already (just not 'repr', since it's a specially-handled case of 'is' that roast apparently doesn't catch). Unfortunately the same fix I tried before I had to go afk today didn't work, something about the dynamic var.
andreoss does NativeCall use pkg-config when looking for a library?
nine no
andreoss so it just traverses LD_LIBRARY_PATH? 09:44
nine yes
timotimo pkgconfig is not really for looking for .so files
09:44 pmurias left 09:46 pmurias joined 09:49 espadrine_ joined, espadrine left
dalek kudo/nom: 3f73192 | lizmat++ | src/core/allomorphs.pm:
Simplify allomorphic .gist/.perl representation

It felt a bit like unnecessarily exposing the inner workings of rakudo before. KISS applies here, I think, so I applied it :-)
09:54
lizmat ShimmerFairy++ # for allomorphic work, BTW ! 09:55
09:55 telex left
timotimo wouldn't printing out the Str version always work and be less costly? 09:56
09:56 telex joined, espadrine joined
moritz m: say <a 1 b>[1].^name 09:56
camelia rakudo-moar c54773: OUTPUT«IntStr␤»
moritz m: say <a 1/2 b>[1].^name
camelia rakudo-moar c54773: OUTPUT«RatStr␤»
moritz m: say <a 1e5 b>[1].^name 09:57
camelia rakudo-moar c54773: OUTPUT«NumStr␤»
moritz m: say <a 1e5i b>[1].^name
camelia rakudo-moar c54773: OUTPUT«ComplexStr␤»
timotimo do allomorphic types now prefer to turn into the not-str variant for multiple dispatch? 09:58
09:58 espadrine_ left
andreoss m: use Test; is-deeply [1,2,3], $(1,2,3) 09:59
camelia rakudo-moar c54773: OUTPUT«not ok 1 - ␤␤# Failed test at /tmp/Hevs8d_nWf line 1␤# expected: $(1, 2, 3)␤# got: [1, 2, 3]␤»
andreoss m: use Test; is-deeply [1,2,3], @(1,2,3) 10:00
camelia rakudo-moar c54773: OUTPUT«not ok 1 - ␤␤# Failed test at /tmp/Y79NKefHs6 line 1␤# expected: $(1, 2, 3)␤# got: [1, 2, 3]␤»
jnthn Both correct 10:01
andreoss m: use Test; is-deeply [1,2,3].list, @(1,2,3).list 10:02
camelia rakudo-moar c54773: OUTPUT«not ok 1 - ␤␤# Failed test at /tmp/obqk_khAmS line 1␤# expected: $(1, 2, 3)␤# got: [1, 2, 3]␤»
jnthn m: use Test; is-deeply [1,2,3], (1,2,3).Array
camelia rakudo-moar c54773: OUTPUT«ok 1 - ␤»
jnthn is-deeply needs identical types
nine timotimo: they don't as far as I know
lizmat timotimo: val().Str would not work for .perl
nine m: use Test; is-deeply [1,2,3].List, @(1,2,3).list
camelia rakudo-moar c54773: OUTPUT«ok 1 - ␤»
lizmat timotimo: one could argue that for .gist, one could take the .Str version 10:03
nine .List on Array gives you a downgraded List. .list gives you the Array itself, since Arrays are Lists, too.
timotimo lizmat, i mean putting them between < >
lizmat m: <42>.say 10:04
camelia rakudo-moar c54773: OUTPUT«val("42")␤»
lizmat m: <42>.perl.say
camelia rakudo-moar c54773: OUTPUT«IntStr.new(42, "42")␤»
10:04 xinming_ joined
jnthn I think the .gist should be be .Str on an allomorph 10:05
lizmat $ 6 '<42>.say; <42>.perl.say'
42
<42>
jnthn lizmat: The latest is what you just changed it to?
lizmat it appears to be now
yes
jnthn Uh, what you just wrote I mean
+1
Those two make sense to me
It turns out putting an eqaddr(a.WHAT, b.WHAT) shortcut into the default === impl actually breaks tests :S 10:06
timotimo i was just suggesting a performance improvement
jnthn We should deal with that at some point
.tell hoelzro many-processes-no-close-stdin.t is explodey again on Windows, along with no-runaway-file-limit.t. I think I already fixed those two once... 10:07
yoleaux jnthn: I'll pass your message to hoelzro.
timotimo since we have the str that we originally parsed right there, we don't have to go through stringifying complex or rat or nun
10:08 xinming left
jnthn would hope that allomoprh's .Str method just does nqp::unbox_s or so... 10:08
timotimo num
look at the last commit 10:10
it explicitly pulls out .Rat and .Complex and .Num
jnthn Oh, for .perl though, not for .gist 10:13
lizmat looks at it further :-)
timotimo yes
dalek kudo/nom: 132a733 | jnthn++ | src/core/Any-iterable-methods.pm:
Minor streamlining in sequential-map.
10:14
kudo/nom: 9f8d851 | jnthn++ | src/core/ (2 files):
More dispatch opts, this time to split.
10:14 nits left
lizmat so, you would like me to remove the .Num etc and replace it by a gettattr 10:14
?
FROGGS o/
lizmat FROGGS o/
FROGGS lizmat: you are at home already?
lizmat no, not for another week or so...
FROGGS ewww 10:15
lizmat in Bordeaux at the moment
timotimo i want you to use the .Str there
jnthn lizmat: I think timotimo's point was more that we could just emit the Str form
10:15 sizur left
jnthn lizmat: Since that is what was originally parsed and, thanks to us putting it in <...>, will certainly reproduce the allomorph 10:15
10:15 Ven joined
lizmat gotcha 10:16
timotimo unless someone writes IntStr.new(42, "23")
jnthn That's their problem :P
timotimo i agree
JimmyZ well, IntStr.new(42, "Unicode Num") 10:18
10:20 Angus joined 10:22 dayangkun left
ShimmerFairy just to point out, S02 suggested a one-arg .new for allomorphic types, but it seemed easier to go with two arguments like I did, on the assumption that it's your fault for making a bad IntStr by hand :) (one arg would seem to require splitting val() across a bunch of .new methods) 10:24
FROGGS ShimmerFairy: do not expect that the design docs are always right 10:25
andreoss Array and List have the same data structure and there should be no performance differences between them? 10:28
10:29 cgfbee left
moritz Array forces a container for each element, so it has to do more than List 10:30
10:31 kbenson_ left
andreoss why i can't have @ sigil with List? 10:32
jnthn I dunno, why can't you?
m: my @a := (1, 2, 3); say @a.WHAT 10:33
camelia rakudo-moar 3f7319: OUTPUT«(List)␤»
andreoss m: my List @a; @a[0] = 1; say @a.perl
camelia rakudo-moar 3f7319: OUTPUT«Type check failed in assignment to '@a'; expected 'List' but got 'Int'␤ in block <unit> at /tmp/y0lzscPPyy:1␤␤»
jnthn That means an Array of List
You could in theory write `my @a is List` at some point, though it's rather pointless because List is immutable. 10:34
moritz or my @a := List.new; # which works right now
andreoss m: my @a = List.new ; @a[1] = 1; say @a.perl 10:35
camelia rakudo-moar 3f7319: OUTPUT«[Any, 1]␤»
andreoss it becames array 10:36
FROGGS andreoss: yes, that is what the assignment does if the left hand side is @-sigilled
dalek kudo/nom: 95c85bc | lizmat++ | src/core/allomorphs.pm:
Slightly less KISS, slightly faster .perl
FROGGS andreoss: to say that you don't want that you use binding instead
jnthn m: say 4.91 / 11.87 10:37
camelia rakudo-moar 3f7319: OUTPUT«0.413648␤»
timotimo whoa
FROGGS jnthn: ?
jnthn for lines('one-million-lines'.IO) { } # 11.87 before my patch, 4.91 after 10:38
I think a lot more pre-GLR
10:38 xinming joined
jnthn Certainly a LOT more memory pre-GLR 10:38
FROGGS .oO( sadly these improvements do not make my jvm explode faster... )
jnthn :(
FROGGS jnthn: that's impressive :o)
jnthn FROGGS++ # JVM hacking 10:39
We can get more out of it, but it's a nice improvement for the time being
Ulti jnthn++ xx 9000
FROGGS :D
timotimo is online via the laptop now
ShimmerFairy m: say val(" +42").gist
camelia rakudo-moar 3f7319: OUTPUT« +42␤»
Ulti thats the sort of stuff that suddenly makes dayjob tasks possible in Perl 6 for me
ShimmerFairy hm, do we want the allomorphic .gists to be just their 'Str' variant, with no indication that they're allomorphs? 10:40
10:41 xinming_ left
lizmat jnthn: what patch are we talking about making lines faster ? 10:41
10:42 cgfbee joined
jnthn lizmat: Will push it as soon as my spectest run finishes 10:42
lizmat looking forward to that :-)
jnthn Unfortunately it doesn't seem to help Text::CSV...I was sure it was using lines in its benchmark.
lizmat if it doesn't, it maybe should :-)
timotimo it surely doesn't have a million files in total to read?
lines* 10:43
lizmat CSV spectest has 50K lines, I seem to recall
timotimo oh, that's not bad 10:44
jnthn I wonder what Text::CSV actually does .lines on
lizmat: No, I more mean that I can tell from the profile output it's not hitting my optimized path
lizmat ah... :-( 10:45
jnthn Maybe ArghFiles or whatever it's called will need a similar patch :)
FROGGS Argh!Files
jnthn lol
ArgFiles :)
FROGGS *g*
lizmat ArgFiles needs to be generalized, I think
but yeah... :-)
jnthn Well, if you can performancize it at the same time... :)
lizmat a generalized ArgFiles is a step closer to Cat 10:46
conceptually / experimentally speaking
FWIW, I just tried to make a role for the allomorphic .gist/.perl cases 10:47
duh, doesn't work, because you need a tie-breaker between is Str and is Int, for instance
or should that work ?
timotimo ArgFiles pops up as being problematic every other month :|
lizmat lunch& 10:49
timotimo there's always some sort of way in which it's not sufficiently file-like 10:50
dalek kudo/nom: 7c9911d | jnthn++ | src/core/IO/Handle.pm:
Optimize IO::Handle.lines post-GLR.

Just implemnet a special iterator directly for it. It ain't much code and it pulls its weight for the fast path. Toss the :eager variant as it's likely marginal now, and if it ain't then the better way is to implement push-exactly in the iterators.
10:51
nine jnthn: a little benchmarking I did on .lines post GLR showed that :eager was actually a little slower 10:52
timotimo haha
jnthn Wow :)
10:53 pmurias left
nine Which really is as it should be :) 10:53
jnthn for lines('foo'.IO) { } gets really cheap GC runs these days 10:54
10:54 pmurias joined
jnthn Of course if you build up something meaty inside the loop you'll end up with survivors 10:55
10:55 thou joined
jnthn Is 10:57
open my $fh, '<', 'data'; while (my $_ = <$fh>) { chomp; }
Acceptable Perl 5?
As in, equivalent to
for lines('data'.IO) { }
?
I guess the "my" maybe can go :) 10:58
nine The my should go. And you can write that as while (<$fh>) { chomp; } 10:59
Ulti this is just the list handling right, will the newio branch have something to offer too?
10:59 thou left
jnthn nine: Thanks 10:59
timecmd perl -e "open my $fh, '<', 'data'; while (<$fh>) { chomp; }" 11:00
command took 0:0:2.60 (2.60s total)
timecmd perl6-m -e "for lines('data'.IO) { }"
command took 0:0:4.90 (4.90s total)
m: say 2.6 / 4.9
camelia rakudo-moar 95c85b: OUTPUT«0.530612␤»
nine That's not bad at all :)
jnthn Some work to go :P
FROGGS jnthn: that's not bad, not bad at all :o)
Ulti jnthn given how much extra you are getting in P6 even just on a string thats cool 11:01
jnthn Yes, you're getting an NFG string in Perl 6 :)
Ulti like not worrying about encoding etc
11:01 TEttinger left
jnthn Anyway, we've a good amount of room for improvement yet :) 11:06
As timotimo++ just pointed out on #moarvm, our iterator code is getting compiled into something LTA in places 11:07
timotimo whihc branch of panda do i want now? master or glr? 11:11
looks like master works
jnthn I think the glr branch got merged already
lunch, then $other-work for some hours... :)
timotimo ah, ok
guten appetit! und viel erfolg! :) 11:12
nine Yes, panda master works on all rakudos 11:15
11:21 Loren_ joined
Loren_ evening, perl6 11:23
11:23 xinming_ joined 11:25 Angus left 11:26 xinming left
psch hi #perl6 o/ 11:32
11:34 domidumont left 11:35 domidumont joined, andreoss left 11:36 domidumont left 11:38 domidumont joined, Loren_ left 11:40 Loren_ joined
cdc m: .say for set(1) 11:41
camelia rakudo-moar 7c9911: OUTPUT«1 => True␤»
cdc it used to return just 1 instead of a Pair, if I understand perl6-bench/perl6/send-more-money-subs 11:42
11:42 Ven left
cdc correctly. So is this change expected? 11:42
hello #perl6, by the way :) 11:43
jnthn cdc: afaik it was an intentional rather than accidental change, but I wasn't there when it was discussed so don't know any more 11:44
BooK crazy idea: given that unicode has a bunch of "APL FUNCTIONAL SYMBOL ..." and that Perl 6 lets one define most unicode characters as operators, how hard would it be to make an APL interpreter in Perl 6?
jnthn I think lizmat was...
dalek p/js-merge-wip: 4619c4f | (Pawel Murias)++ | src/vm/js/ (2 files):
Update the signature of nqp::shell and add a bunch of constants.
p/js-merge-wip: 3e91607 | (Pawel Murias)++ | src/vm/js/nqp-runtime/deserialization.js:
Reenable setting of codeObj.
psch BooK: i imagine you mostly have to be intimate with APL and its parsing rulse 11:45
BooK alas, I am not
psch BooK: and Perl 6 Grammars too, i guess :)
|Tux| jnthn++ 11:46
time perl -e'chomp(my @foo = <>)' data
1.364u 0.547s 0:01.91 99.4% 0+0k 0+0io 0pf+0w
time perl6 -e'my@foo="data".IO.lines'
50.117u 0.545s 0:51.35 98.6% 0+0k 43760+0io 174pf+0w
time perl6 -e'my@foo="data".IO.lines'
31.570u 0.471s 0:32.02 100.0% 0+0k 0+0io 0pf+0w
top = perl5.22, middle is perl6 from this morning, bottom is perl6 from git checkout 5 minutes ago
BooK |Tux|: it's not doing exactly the same thing, though, is it? 11:48
|Tux| isn't it?
11:48 CIAvash left
pink_mist cdc: there was some discussion about that stuff on irclog.perlgeek.de/perl6/2015-09-07 ... I'd link you exact lines, but the discussion seems to be too disjointed for me to do that reliably; it starts off at first on a related topic, but then goes into why they're associative after a while, and then a bit of discussion about that a bit later 11:48
BooK I never remember how chomp @array works in perl exactly 11:49
11:49 Loren_ left
pink_mist in perl5 it chomps each element 11:49
BooK yes, so the array is modified
|Tux| «If you chomp a list, each element is chomped, and the total number of characters removed is returned.» 11:50
BooK yes, sorry, got it wrong
cdc jnthn, pink_mist: thanks for the information!
|Tux| test 50000 40.010 39.930 11:51
test-t 50000 40.941 40.860
pink_mist cdc: see especially ShimmerFairy and ab5tract's lines
timotimo [Tux]: i pointed jnthn at two issues that unnecessarily increase the amount of stuff allocated and - once fixed - will reduce the total number of GC runs noticably across the board 11:54
11:55 Ven joined
FROGGS hi psch o/ 11:57
timotimo but jnthn'll work on $main_job until the evening, so we won't see too much of that at first
FROGGS timotimo: except when we do it :o)
jnthn Heh, it's actually a job that gets less time than Perl 6 :)
psch hey FROGGS o/
FROGGS jnthn: that's because they don't sell stickers or badges :o) 11:58
psch FROGGS: a clean build of the Unbreak* branch throws the SOE in the last statement in from-slurpy-flat here
timotimo :D
ok, so just #other_job
er ... sigil fail
FROGGS psch: probably because of the misbehaving flat() in EXPORT_SYMBOL 11:59
jnthn Anyways, yeah, I'll need to concentrate on it for a few hours :)
psch FROGGS: that's the troublesome thing though, i can't reproduce that kind of &flat misbehavior
FROGGS: it seems to exclusively happen with a NQPArray that gets hllized and fed into flat (i.e. into @-context) 12:00
12:00 laouji left
psch FROGGS: and i have no idea how to get an NQPArray in Perl 6 land... 12:00
dalek p/js-merge-wip: 2a10357 | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp:
Fix bug in qastnode.
psch (that aside, i'm pretty sure the final-statement-as-return shouldn't even &sink...?) 12:01
so i guess i must be somewhat off there :)
12:02 laouji joined
FROGGS m: use nqp; say nqp::gethllsym("nqp", "nqplist")(1, 2, 3) # psch 12:04
camelia rakudo-moar 7c9911: OUTPUT«(1 2 3)␤»
12:04 Loren_ joined, pat_js joined
psch FROGGS: aah. from the NQP hll, not curhll... :) 12:04
FROGGS m: use nqp; say nqp::gethllsym("nqp", "nqplist")().^name
camelia rakudo-moar 7c9911: OUTPUT«NQPArray␤»
FROGGS psch: I just remembered that... I needed/added this symbol for v5 12:05
12:06 sufrostico joined
psch FROGGS: yeah, i found the sub in world, but braino'd with getcurhllsym instead of gethllsym... 12:06
FROGGS psch: me too right now :o)
psch $ ./perl6-j -e'use nqp; my \a = nqp::gethllsym("nqp", "nqplist")(1,2); say flat nqp::hllize(a)' 12:07
(1 2)
psch shrugs
ah, but the @ is missing
nope, still works o.o 12:08
FROGGS psch: yes, things are different in the setting somehow... 12:09
like, in the setting Attribute.new works, but not outside of it
psch ooh
hmm 12:10
12:10 YouthEnter2 joined
psch maybe not, i'm getting a bit unfocused i think 12:10
12:11 itz left 12:12 sno joined 12:16 [Sno] left 12:19 itz joined
itz afternoon * 12:19
12:20 pierrot left, pierrot joined
rindolf itz: hi. 12:28
itz: sup?
itz trying to understand and fix GLR changes in perl6-examples 12:29
12:30 xinming joined
colomon HTTP::Server::Threaded is causing massive problems in the smoker. :\ 12:30
jnthn colomon: Maybe it misses GLR updates... 12:32
timotimo could be
what does massive failures mean?
er
problems
does it make the snooker crash? 12:33
12:33 xinming_ left
colomon jnthn: it passed all tests on Tuesday 12:33
hahainternet jnthn: page 51 of jnthn.net/papers/2015-spw-perl6-course.pdf .. the ^5 example needs attention .. mentioned a few days ago but as you're around i thought i'd mention again :)
colomon timotimo: no, it just hangs on multiple tests
jnthn hahainternet: What kind of attention? 12:34
hahainternet jnthn: it reads "^5 # 0, 1, 1, 2, 4 (short for 0..^5)"
so, just a minor correction as to not confuse people
jnthn oh
haha
I didn't even spot that
hahainternet o/
colomon hahainternet++
hahainternet i did't notice any other errors but i didn't have time to read thoroughly 12:35
jnthn Despite looking carefully at that :)
Yeah, somebody emailed me another error too, will fix the two later
hahainternet i read all you put up in that directory when i have time, it's the least i can do to help
i've been trying to read up on unicode to try and help with that bug raiph/i mentioned a week or two ago, but impossible to find time
jnthn I've read up a little more on that too, and have a rough idea of the way forward 12:36
I agree it wants fixing before 6.christmas
ShimmerFairy what bug was that, ooc? The NFG-not-always-G issue?
jnthn ShimmerFairy: Definition of G, really :)
hahainternet rt.perl.org/Public/Bug/Display.html?id=125927
this bug specifically
happen to have it in my quick list
jnthn Basically, "no, CCC is not good enough"
Or "you can't get away with simply defining NFG as an NFC extension" 12:37
hahainternet indeed, but it wasn't remotely clear why it's not good enough based on my readings
i think the idea of a negative codepoint is still legitimate
jnthn Oh, it's not a deep flaw
12:37 rurban left
jnthn The only thing that will change is the bit of code that decides where a grapheme ends 12:37
So the patch will be very isolated 12:38
hahainternet rgr, i wish i could be more help sorry
ShimmerFairy jnthn: do you know if CCC definition errors on Unicode's part is to blame, or if it's how we've decided to make NFG happen? (I've not read enough of the right auxiliary docs to guess myself)
In other words, is it Unicode's mistake on that specific bug report? :P (Because I do know that devanagari grapheme is given as an example of a grapheme. I sure didn't come up with it myself when I used it in S15.) 12:39
hahainternet ShimmerFairy: oh so you're the one responsible for my confusion then ;)
i spent forever trying to understand why i got 2 from chars :p
12:40 rurban joined
jnthn ShimmerFairy: I don't think the Unicode consortium are to blame as such 12:40
ShimmerFairy: I read the formal definition on NFC, which *is* defiend in terms of the CCC, and it seemed most natural to use it to define NFG too 12:41
ShimmerFairy jnhtn: like I said, I don't know enough yet to know if CCC is supposed to be sufficient for extended grapheme clusters.
jnthn It's convenient because normalization is well optimized for
ShimmerFairy: I suspect they didn't expect somebody to come along and try to use CCC for that is all 12:42
ShimmerFairy: But it's one of those things you have to discover the hard way (e.g. by trying :))
FROGGS and it is also one of those things were we (Perl 6) can shine
ShimmerFairy jnthn: "Dear Unicode, you're slipping. Sincerely, Perl 6" :P
|Tux| is a regex optimized for duplicates? «"foo" ~~ rx{ "a" | "b" | Str | "a" | "b" }» → «"foo" ~~ rx{ "a" | "b" }» and if not, would that help? 12:43
12:43 thou joined
jnthn |Tux|: Not afaik, but in your case you are interpolating strings 12:43
|Tux|: And recall that this works *very* differently in Perl 5 vs. Perl 6. 12:44
|Tux| just had an idea. looking to see if that would help ...
jnthn :)
Did you try removing that .flat I said seemed surplus to requirements? :)
|Tux| I know, I know. left to right priority and all of that: makes me happy
no, I want to create the regex as simple as possible. in 95% of all cases, $quo and $esc are the same 12:45
ShimmerFairy jnthn: The solution should be obvious, they give you a shiny regex right in UAX#29 ! :P 12:46
12:47 JimmyZ left, thou left, JimmyZ joined
jnthn |Tux|: You may well find it's actually faster in your case to use || instead of | 12:48
pmurias hoelzro: have you looked into what adding bit operations on negative numbers to bignum would take? 12:50
|Tux| jnthn, does || have the same precedence rules as | ? 12:54
jnthn |Tux|: As in ordering? 12:55
|| is the same semantics as Perl 5's |
A | in Perl 6 makes an NFA and does LTM, but because you are interpolating variables there's no declarative prefix at all
So it ends up with an empty NFA 12:56
|Tux| in rx{ $a | $b | $c } $b is guaranteed to match even if $c is part of $b
jnthn So /$a | $b | $c/ is just a more costly way to write /$a || $b || $c/
|Tux|: With || that is guaranteed 12:57
By left-to-right ordering
But what I'm trying to say is that | has left-to-right ordering when you are just interpolating variables too
|Tux| is checking … 12:58
ShimmerFairy jnthn: btw, I'll hopefully be able to help out more with strings soon. I've still got my S32::Str rewrite to dust off and finish, on that front :) 12:59
hahainternet speaking of strings, i can't remember if someone gave me an authoritative answer on this
but it seems that doing $str[index] would be viable
ShimmerFairy "A | in Perl 6 makes an NFA" -- does this mean P6 regexes don't always use an NFA? Or is it just that | starts to put the N in NFA?
13:00 kinslayer joined, kinslayer left 13:01 kinslayer joined, Ven left
ShimmerFairy hahainternet: I personally think that looks a bit too array-ish for a string, but it certainly should be safer than it would be in other languages (unless I'm mistaken), where you could grab the middle of a grapheme, or worse the middle of a codepoint's underlying encoding. 13:03
jnthn ShimmerFairy: I really meant "has LTM semantics" 13:04
ShimmerFairy ah
hahainternet ShimmerFairy: indeed it is a bit of a conflict, but strings have list representations, although i have found no nice way to read up on post-GLR list stuff in p6, so 13:06
dalek kudo/nom: 81de8d7 | TimToady++ | src/core/Mu.pm:
eqv should default to snapshot, not identity

Effectively, with this implementation we do still get identity semantics for non-serializable objects that happen to include .WHERE inside .perl output. Other serialization techniques might produce slightly different semantics, but this one can at least delegate to any type that defines a .perl method, which seems like a good thing.
hahainternet i don't want to demand or even request anything, i just want to learn :D
jnthn hahainternet: Do you want authoritative as in "no" or as in "no, because" :)
Ah, then "because"
hahainternet jnthn: the latter )
i've been told because, but i'd like to know why, there's no rush or pressure or anything
it just seems odd to have so many succinct mechanisms, then .substr is an ugly wart imo, but maybe i'm just ignorant, that's fine too :D
jnthn If you want it to replace substr the problem is that [...] slicing gives back a List of things. 13:08
Always, predictably.
So you'd end up with a list of 1-char Str
*Strs
hahainternet so $str[0] would be a 1 element list
right
jnthn Well, no, that'd be a one-char Str
ShimmerFairy Also, I would imagine that [] would open the door to many more questions about handling strings in an array-ish way 13:09
jnthn m: my @a = 1..10; say @a[0].WHAT; say @a[0,1].WHAT; say @a[2..5].WHAT;
camelia rakudo-moar 7c9911: OUTPUT«(Int)␤(List)␤(List)␤»
13:09 thou joined
jnthn Any form that wants more than a single element hands back a List 13:09
hahainternet ah i see
13:11 rurban left
dalek kudo/nom: 9e5e902 | TimToady++ | src/Perl6/Grammar.nqp:
don't use LTM alternation when a cclass will do
13:11
13:14 cognominal left
dalek p/js-merge-wip: f54ee27 | (Pawel Murias)++ | t/nqp/60-bigint.t:
Skip the bit and on negative integers untill we extend the bignum library to support that.
13:14
p/js-merge-wip: ad67a7d | (Pawel Murias)++ | src/vm/js/nqp-runtime/bignum.js:
Avoid leading zeros in base_I for negative numbers.
|Tux| | → || is within noise 39.984 → 39.387 13:15
jnthn m: say 39.387 / 39.984 13:16
camelia rakudo-moar 81de8d: OUTPUT«0.985069␤»
jnthn I usually take 1.5% as measurable :)
But yeah, you'd probably have to cachegrind it or do many measurements to be confident :) 13:17
pmurias hoelzro: js-merge-wip is now passing it's tests
13:18 virtualsue joined, virtualsue left
hoelzro o/ #perl6 13:20
yoleaux 10:07Z <jnthn> hoelzro: many-processes-no-close-stdin.t is explodey again on Windows, along with no-runaway-file-limit.t. I think I already fixed those two once...
hoelzro jnthn: I changed those tests to use 'type NUL' instead of 'ping /tmp/test-file'; [Coke] was a little cocerned about using a network command and a non-existent file
jnthn hoelzro: I'd rather have them concerning and passing than unconcerning and failing :S 13:21
hoelzro pmurias: I haven't looked into adding negative bitwise ops to node-bignum yet; I've been trying to figure out how to fix this bug that interferes with the MoarVM optimization
pmurias: re: the tests, great!
jnthn: I thought that 'type NUL' would be equivalent to 'cat /dev/null' on Windows; do you have an unconcerning but passing alternative? 13:22
13:25 hernanGOA joined 13:27 mullagainn joined
pmurias hoelzro: \o 13:28
jnthn hoelzro: It may be that type isn't a program, but a shell thing?
hoelzro jnthn: ah, that would make sense
pmurias hoelzro: re bug isn't it the case that the ast for the moarvm doesn't contain a string heap (as it's stored elsewhere in the bytecode) and the js backend needs that strings? 13:29
hoelzro pmurias: jnthn understands its full nature, but it's something like that 13:30
jnthn hoelzro: I think I picked ping as it was a readily available program :) 13:31
13:32 tokuhiro_ left
TimToady a bug spotted by rosettacode.org/wiki/Equilibrium_index#Perl_6 13:34
m: say <a b c>.classify: { ~($ ~= $_); }
camelia rakudo-moar 81de8d: OUTPUT«aa => [a], aab => [b], aabc => [c]␤»
TimToady seems .classify is assuming no side effects
13:37 Ven joined
TimToady (RT'd it) 13:39
pmurias hoelzro: so what we need is a if statement so that we can disable the optimalization while cross compiling
FROGGS TimToady++ 13:40
pmurias I think I got confused
at this point how MoarVM compiles the string heap it's just that my "avoid serializing twice hack" got turned off 13:41
hoelzro: how did you disable jnthn's optimalization?
hoelzro pmurias: I put the $sh_ast back in in deserialization_code 13:42
sufrostico morning 13:48
is there a way to disable rakudo colors on error messages ?
not playing well with vim's makeprg 13:49
jnthn There's an env var for it
TimToady RAKUDO_ERROR_COLOR 13:50
sufrostico TimToady, thanks 13:51
13:51 aborazmeh joined, aborazmeh left, aborazmeh joined
FROGGS .oO( WHY_ARE_YOU_SCREAMING? ) 13:52
ShimmerFairy m: gist.github.com/ShimmerFairy/392d0...a5e7aa4287
camelia rakudo-moar 9e5e90: OUTPUT«Legacy Grapheme Cluster: 2␤Extended Grapheme Cluster: 1␤»
ShimmerFairy jnthn: ^^^ that may be of interest to you, though I doubt you could put that in MVM's code :P
jnthn FROGGS: People are always screaming about the environment :P
FROGGS hehe
[Coke] rt slooow 13:53
[Coke] adds the CCC ticket to the 2015 blockers based on backlog.
jnthn Darn, you squish two acronyms out of 3 and a third pops up... :) 13:55
[Coke] almost got in trouble in work for an ALL CAPS chat yesterday. good times. 13:56
ShimmerFairy jnthn: waterbed acronyms, clearly :)
moritz waterbedronyms 13:57
jnthn WBAs, duh
[Coke]: CALM DOWN, MAN!
[Coke] backs away from the keyboard... and tries to find some Coke Zero. 13:58
TimToady m: enum FOO (A => 0, BAR => "BAZ");
camelia rakudo-moar 9e5e90: OUTPUT«5===SORRY!5=== Error while compiling /tmp/LIpuA0I61k␤Type error in enum. Got 'Str' Expected: 'Int'␤at /tmp/LIpuA0I61k:1␤------> 3enum FOO (A => 0, BAR => "BAZ")7⏏5;␤»
TimToady is that one known? 13:59
[Coke] RT: 1,040; GLR - 14; testneeded - 11
jnthn TimToady: That one is by design.
TimToady: An enum's base type is inferred from the type of the first item, if not specified.
[Coke] m: enum Str Foo (1,2,3); 14:00
camelia rakudo-moar 9e5e90: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3Egn4q8tXE␤Two terms in a row␤at /tmp/3Egn4q8tXE:1␤------> 3enum Str7⏏5 Foo (1,2,3);␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ …»
TimToady m: enum Foo of Any (a => 0, bar => "baz"); 14:01
camelia rakudo-moar 9e5e90: OUTPUT«5===SORRY!5=== Error while compiling /tmp/kqxHoQV1qy␤Method 'set_of' not found for invocant of class 'Perl6::Metamodel::EnumHOW'␤at /tmp/kqxHoQV1qy:1␤»
jnthn m: our Str enum Foo <a b c>; 14:02
camelia rakudo-moar 9e5e90: OUTPUT«===SORRY!===␤Incompatible MROs in P6opaque rebless␤»
jnthn Hmm
m: our enum Foo <a b c>;
camelia ( no output )
TimToady m: my Any enum Foo (a => 0, bar => "baz");
camelia rakudo-moar 9e5e90: OUTPUT«===SORRY!===␤Incompatible MROs in P6opaque rebless␤»
jnthn m: our Int enum Foo <a b c>;
camelia ( no output )
jnthn Not sure we can easily do much about this. 14:03
[Coke] I sense more bugs coming. :)
jnthn Well, any that are like "make enums even funkier by allowing mixed types" I'm just going to declare post-6.christmas, so... :) 14:04
TimToady well, there's RC code that has it :P 14:05
jnthn I'm not sure how it ever worked.
Unless it was from a time when enums failed to work in plenty of other ways...
TimToady perhaps it worked in niecza 14:06
jnthn Maybe
I can't imagine it having worked in Rakudo since nom
And before nom all I remember was people saying enums didn't really work right :) 14:07
TimToady the specs define the list to be evaluated at compile time, so it's not like one couldn't inspect all the values
jnthn (Early versions of the enum design were more of a wish list than a design...)
TimToady and nothing in the specs actual mandates 1st arg priority
jnthn Yeah, but then what is the enum type?
TimToady (that I saw, offhand)
jnthn Any enum type works as a subtype of the base type 14:08
*an
TimToady well, we should at least allow explicit declaration of the base type
jnthn *nod*
Yeah, that should work
Though the values for now need to be strictly of that type 14:09
14:09 cognominal joined
TimToady but it's not hard to find the common parent 14:09
jnthn Finding the common parent is easy. It's just "what do we do next"
m: enum Foo <a b c>; say Foo.^mro
camelia rakudo-moar 9e5e90: OUTPUT«((Foo) (Int) (Cool) (Any) (Mu))␤»
TimToady what does "strictly" mean here? 14:10
dalek p/js-merge-wip: 9772e45 | (Pawel Murias)++ | src/vm/moar/QAST/QASTCompilerMAST.nqp:
Optimize out the string heap when we are not cross compiling.
jnthn [===] @values>>.WHAT
[Coke] hurls gist.github.com/coke/38a589cec239409a4212 - what else is on the list for christmas?
pmurias hoelzro: I just disabled that optimalization when cross compiling
jnthn TimToady: Basically enums work by creating a subtype of the base type which carries the enum key and various other bits of the expected semantics, and then we rebless the values to that subtype 14:11
TimToady: That's why .WHAT on enum values comes out as the type of the enum 14:12
TimToady: If you want to allow mixed values in there we have to break that, which is a fairly sizable re-work, which is *sigh*.
TimToady it's not that important
jnthn Well, yeah, I think there's probably better ways we can spend multiple days of my time than re-doing enums again :) 14:13
[Coke] jnthn: should I (at least to start) put any tickets marked [GLR] as 2015 blockers?
jnthn [Coke]: I need to look through those yet
[Coke] yup, just trying to give you one list to look through, if that helps. 14:14
jnthn *nod* 14:15
HOw many are there?
[Coke] 14
Juerd Is there a way to access the instance in the refinement block if you use "has Foo $.foo where { ... }"? I want to make cyclic structures impossible.
spacebat hi, I recently installed rakudobrew and panda, but panda fails trying to load module metadata
[Coke] might be more buried in there, those are the ones I found going through rts in .ch
14:16 aborazmeh left
dakkar grrr. another case of "I want to add to a multi, globally" 14:16
Juerd spacebat: I probably can't help, but how does it fail?
dakkar multi to-json(My::Type) { ... }
[Coke] spacebat: can you gist the error?
spacebat I was able to narrow it down to the point it tries to send a get request, which I can reproduce: gist.github.com/spacebat/f57e2572cb0b42ebe6da
itz Cannot find method 'Range' <=- is this expected with GLR?
Juerd dakkar: class My::Type { method to-json { ... } }?
dakkar Juerd: I'm pretty sure it won't be called by JSON::Fast::to-json 14:17
nine itz: with what code?
dakkar tries anyway
[Coke] spacebat: what does perl6 --version say?
dakkar Juerd: yep, not called
spacebat This is perl6 version 2015.07.2 built on MoarVM version 2015.07
itz nine: examples.perl6.org/categories/99-pr...hebus.html
psch dakkar: you could wrap the CORE sub and redispatch to the non-wrapped when you don't hit your logic 14:18
[Coke] spacebat: I think that predates the glr merge back.
dakkar psch: eeewww
(also, no CORE involved here, that I can see)
nine itz: do you have an exact line?
[Coke] you might need a newer perl6
itz Cannot find method 'Range'
in sub totient_phi at ./categories/99-problems/P34-rhebus.pl:52
psch dakkar: ...right, JSON:Fast it was
itz in block <unit> at ./categories/99-problems/P34-rhebus.pl:55
14:19 n0tjack joined
spacebat [Coke]: right; I installed rakudobrew and list-available gives a longish list of versions 14:19
nine itz: ok, it's what I suspected. HYPER tries to cast the result into the same type as the input which is no good idea if the input is a Range
spacebat many are named by date, that one was the latest
nine itz: I thought, I had changed that already to only cast to subtypes of List, but may have missed a spot 14:20
spacebat many others are named by place, I have no idea which of those are any good
nine HYPER and META
spacebat am I using rakudobrew improperly, or is there something better than rakudobrew to get started?
nine itz: found the spot(s) 14:22
spacebat I must admit to some curiosity as to the "drinkers" version 14:24
FROGGS spacebat: rakudobrew lists all tags/releases 14:25
itz yay!
jnthn spacebat: I think if you just "rakudobrew build moar" it'll give you latest automatically
FROGGS spacebat: and for every release, we tag it by month *and* berl mongers city name
jnthn And "rakudobrew build-panda" 14:26
spacebat right, but the latest month appears to be 2015.07.2 14:27
itz BTW there is a Pull Request to "change glr target to pre-glr" on rakudobrew .. which I've been finding very useful :)
spacebat I'll try build moar
14:28 khw joined
spacebat building now, but its bed time - thanks for the advice 14:28
[Coke] spacebat: yes, there was no 2015.08 release - you want bleeding edge for now.
things will be more stable post-2015.09, apologies.
14:30 perl6_newbee joined 14:32 xinming_ joined 14:33 tokuhiro_ joined
mullagainn Is there a movement to start porting modules over to perl6? 14:34
itz mullagainn: modules.perl6.org
14:35 xinming left
FROGGS mullagainn: dunno if there is a 'movement', but it is probably the best way to get into Perl 6 14:36
mullagainn: besides the fact that it serves a purpose for others as well 14:37
14:37 tokuhiro_ left, Ven left
dalek kudo/nom: b5d8ced | (Stefan Seifert)++ | src/core/metaops.pm:
Don't try to coerce arrays to Range in HYPER

Fixes an error in P34-rhebus.pl
14:38
nine itz: ^^^
itz great
nine++
timotimo having strictly the same types for enum values gets a bit tricky for our allomorphic types, as you may have "foo", "bar" and "000" for example, right?
TimToady something like to-json should really be a method 14:39
then it doesn't have to be imported
14:42 laouji left
timotimo so you'd have people monkeypatch .to-json for lists, arrays, strings, stuff like that? :) 14:43
jnthn I'd probably have it as it is for the built-in types but then in the fallback multi candidate look for a .to-json method or something 14:45
moritz likes that it's a multi sub
14:48 Ven joined
[Coke] .perl, .json, .yaml 14:53
moritz .xml
.sna
FROGGS .xls -.- 14:54
timotimo .xslt
.latex
hoelzro pmurias: sounds good; I would really like to get the JS cross compiler to work without having to patch the MAST compiler
timotimo .sna1
moritz .svg
hoelzro ideally, I would like the diffstat to only include src/vm/js, documentation, and build tools 14:55
TimToady .slavik
hoelzro jnthn: do you have any ideas of another command we could use on Windows that would work?
nine .mkv # because really, who doesn't want his objects to be turned into action movies?
FROGGS hoelzro: what type of command do you need?
hoelzro FROGGS: just a command we can run via run/shell that's not something odd like ping 14:56
something like Unix cat would be...purrfect.
14:59 sufrostico left, rurban joined 15:00 inokenty joined
[Coke] what's wrong with TYPE ? 15:01
FROGGS hoelzro: what about: findstr "text" file
hoelzro [Coke]: apparently, we can't use shell() to invoke it
FROGGS: that sounds good
[Coke] hoelzro: "TIME /T" ? 15:02
hoelzro [Coke]: I don't know TIME, but as long as we can invoke it via shell(), sure!
could a Windows user make and test the change? I have a bad habit of breaking things on that OS =S 15:03
FROGGS [Coke]: time is also a shell built-in, not a real program
[Coke] FROGGS++
FROGGS hoelzro: what change/test ooc?
hoelzro checks
S17-procasync/no-runaway-file-limit.t 15:04
S17-procasync/many-processes-no-close-stdin.t
↑ those two
JimmyZ shell('tree')
15:04 mprelude joined
FROGGS C:\MoarVM>perl6 -e "my $fh = run 'tree', 'src', :out; say $fh.out.slurp-rest; say $fh.out.close" 15:04
Malformed UTF-8
[Coke] it's probably winblahblah graphics chars, aye. 15:06
FROGGS aye, nice lines and such
lol: 15:07
C:\MoarVM>perl6 -e "my $fh = run 'tree', 'src', :out; say $fh.out.encoding('ASCII'); say $fh.out.slurp-rest; say $fh.out.close"
ascii
MVM_nfg_get_synthetic_info called with out-of-range synthetic
jnthn: ^^ # what happens here on your beloved os? :P
ShimmerFairy 'time' is a shell built-in on bash, and only recently did I install the GNU program version :)
pmurias hoelzro: re without patching the moar compiler, we could do this with monkey patching and copy & pasting chunks of code
FROGGS hoelzro / pmurias: can't you put a QAST::VM node in there? 15:08
... to not pessimize moar?
jnthn FROGGS: Bah, same...wtf
FROGGS .D
yoleaux Look up a word in the Oxford Dictionary of English (not to be confused with the Oxford English Dictionary)
FROGGS err, :D
[Coke] .D monkey
yoleaux monkey (/ˈmʌŋki/): n. (monkeys) 1. A small to medium-sized primate that typically has a long tail, most kinds of which live in trees in tropical countries; 2. A sum of £500; v. (monkeys, monkeying, monkeyed) 1. Behave in a silly or playful way; 2. Ape; mimic — is.gd/ZzC2MX 15:09
[Coke] ... huh.
FROGGS hehe
hoelzro FROGGS: I think that would work
pmurias FROGGS: we avoid pessimizing moar by having an if statement
FROGGS pmurias: I like if statements *g*
hoelzro pmurias: true
[Coke] wait, a monkey is 500 pounds? wtf? 15:10
jnthn .D impignorate
yoleaux Sorry, I couldn't find a definition for 'impignorate'.
jnthn bah :)
itz .D gruntling
yoleaux Sorry, I couldn't find a definition for 'gruntling'.
itz my physical OED has that :P
15:10 domidumont left
ShimmerFairy itz: "not to be confused with the Oxford English Dictionary [OED]" :P 15:11
JimmyZ FROGGS: re tree on windows ,the output needs to be changed to unicode,and then utf8,like get env hash on windwos 15:13
jnthn Anything out of Oxford is overrated... :P
itz yeah and they have too many commas :P
15:13 Ven left
JimmyZ so why windows doesn't like using utf8 ;) 15:14
itz probably because its older than utf8 15:15
JimmyZ but it does like unicode
Loren_ m: grammar URL{ token byte { (\d**1..3) <? { $0 < 256 } >} } 15:16
camelia rakudo-moar b5d8ce: OUTPUT«5===SORRY!5===␤Unrecognized regex metacharacter < (must be quoted to match literally)␤at /tmp/9a84do2P41:1␤------> 3grammar URL{ token byte { (\d**1..3) <?7⏏5 { $0 < 256 } >} }␤Malformed regex␤at /tmp/9a84do2P41:1␤------> 3grammar UR…»
perl6_newbee hi all
Loren_ Where i went wrong ?
nine Couldn't we just ship a small, maybe useless shell program for Windows so we can rely on it in the tests? 15:17
moritz Loren_: should be <?{ (without space)
Loren_ m: grammar URL{ token byte { (\d**1..3) <?{$0 < 256}> } }
camelia ( no output )
moritz JimmyZ: Windows doesn't like UTF-8 because in the early days of Unicode, people thought that UTF-16/UCS-2 would give them a fixed-width encoding, and UTF-8 was needlessly complex
Loren_ moritz, thks very much.. 15:18
15:21 lichtkind joined
lichtkind all 3 rewfactors are now completed? 15:21
15:22 Ven joined
JimmyZ the problem is that windows doesn't use unicode directly, like the output. one has to change it to unicode and then utf8, if you want utf8.. 15:23
perl6_newbee Probably a silly question, but why does this code causes the moar process to eats up cpu and memory?
my $a = "<4"; $a = $a ~~ /\<(\d+)/
$a ~~ /\<(\d+)/ does not give $0 back, as I thought. 15:24
dalek ast: c86855e | FROGGS++ | S17-procasync/ (2 files):
fix Proc::Async tests for Microsoft Windows™
15:25
FROGGS hoelzro: ^^ 15:26
hoelzro FROGGS++
ugexe 'my $a = "4"; $a = $a ~~ /\d+/;' alone causes the problem 15:27
FROGGS perl6_newbee: no idea why it does that, but I can reproduce it
perl6_newbee froggs: :-) 15:28
FROGGS perl6_newbee: can you please rekudobug it?
mprelude What's moarvm performance like?
ShimmerFairy doesn't hang for me
FROGGS ShimmerFairy: append a 'say $a' 15:29
ShimmerFairy oh, now it does, it needs a "say $a" afterward for me
FROGGS :o)
perl6_newbee I encountered the problem on Windows 10 first.
Loren_ yeah , it does, won't end
perl6_newbee froggs: OK 15:30
ShimmerFairy /.ACCEPTS($str) hangs, but $str.match(//) works, so it seems an issue with ACCEPTS
er, //.ACCEPTS($str) I meant :)
timotimo um, // is null regex ... 15:31
ShimmerFairy timotimo: using // as a stand-in, of course
perl6_newbee What would be the expected behaviour? $a == $0 ? or True?
timotimo ah 15:32
ShimmerFairy m: my $a = "4"; $a = $a.match(/(\d+)/); say $a
camelia rakudo-moar b5d8ce: OUTPUT«「4」␤ 0 => 「4」␤»
ShimmerFairy perl6_newbee: that's what's expected. Not $0, but $/ is put in $a 15:33
lichtkind timotimo: saw your squirrel based tut
perl6_newbee THX ShimmerFair
y
lichtkind FROGGS: do you know if all 3 major refactors are now done?
timotimo zostay: yo 15:34
lichtkind: horrible, isn't it? :)
lichtkind no actually i enjoyed it
unfortunately my perl 6 talk form last week wasnt taped
timotimo .tell zostay paul evans on twitter was complaining that p6sgi is "as disappointing as the perl5 one" and lacks support for streaming of input data and response backpressure and "..."
yoleaux timotimo: I'll pass your message to zostay.
timotimo lichtkind: damn, someone should have called .tap on it! 15:35
FROGGS lichtkind: all of them are at 75% to 98% I think :o)
itz *groan*
lichtkind i mean some things could be explained more to the point and with less repetition but that true for most of my talks too
timotimo: they had camera there just choose to tape the leading talks 15:36
but slides are elaborate - 140 at least
i just mention because if your pythonista the whole functional thing could interest you
15:37 FROGGS left
perl6_newbee @FROGGS I filed a bug report via email 15:37
15:38 skids joined 15:39 thou left
timotimo i should do a bit of python on the side again 15:39
15:40 inokenty left
nine -msg lichtkind 15:40
masak evening, #perl6 15:42
Ulti time perl6 -e 'for lines() {}' 8.225s vs time perl -e 'while (<>) {}' 0.178s 15:48
pmurias evening masak
Ulti am I missing latest moarvm for the rest of the speedup?
timotimo it's mostly rakudo for speedups i think 15:49
jnthn It's a Rakudo one and also I didn't do it for $*ARGFILES yet, which lines() uses
Also, the perl benchmark misses a chomp, which Rakudo is doing for you :) 15:50
timotimo right
jnthn for $*IN.lines() {} might be worth a try
Ulti ahh okedoke 15:51
jnthn Maybe somebody will find time to port my improvement to argfiles :)
(before I get to it :))
lichtkind nin: i dont quite get it 15:52
jnthn: me upřime blahopřaní 15:53
nine: i mean this message thing
jnthn lichtkind: diky moc! :) 15:54
15:56 nits joined
Ulti whoa 8.225 down to 2.284s 15:56
15:56 domidumont joined, nits is now known as Guest25831
jnthn Ulti: There's more to come yet too :) 15:57
15:57 rurban left
Ulti Ruby takes 0.450 doing a lazy chomp all lines 16:01
pink_mist how many lines are we talking about? 16:02
jnthn So basically we need another factor of 4 improvement to match :)
pink_mist: My earlier benchmark was with a million lines 16:03
pink_mist I also wonder how much of those times are startup
ah, that's a lot of lines :P
16:04 FROGGS joined
ugexe startup time shouldn't be too bad with just that. `time perl6 -e '1'` 16:06
16:07 Guest25831 left 16:10 zakharyas left
Ulti pink_mist: 100,000 for the one I'm doing 16:10
Python is 0.319s
a bit lame Perl being slick at IO isn't talked about a bit more 16:11
I could minus off startup time and normalise for lines 16:12
jnthn Ulti: fwiw, my numbers were from a file rather than STDIN
Ulti these are from a file
jnthn OK :)
Ulti basically the exact same code
I can gist them up
jnthn Could be interesting
I wonder if Perl 5's I/O is less competitive on Windows, given that I was getting Rakudo being within a factor of 2
Then, I've observed that Rakudo on MoarVM is very generally better against Perl 5 on Windows than on Linux. 16:13
flussence «Stage parse : 79.646» <-- this jumped a lot lately; it was 55 pre-GLR and 72 post-GLR. I'm curious where the other 10% came from... 16:14
jnthn allomorphic stuff
flussence oh, ok :)
jnthn And yeah, we could do with getting it down some again.
flussence (was worried for a moment that the new quote stuff had adverse side effects)
ShimmerFairy I recall not seeing the parse jump up when I introduced allomorphic stuff, so I'd be interested if that was in fact the case :) 16:15
jnthn ShimmerFairy: It's not a huge jump (about 1s-2s more for me), but it was when I rebased my local changes after pulling down your allomorph merge. 16:16
ShimmerFairy: It's possible another commit sneaked in and did it, but I don't recall seeing a candidate in the git lot 16:17
FROGGS it is weird.... when I skip NativeCall in jvm's makefile, 01-sanity passes...
ShimmerFairy jnthn: All I recall is that the time was never significantly different from pre-allomorph, pre-GLR parse time for me
16:17 duncan_dmg joined
Ulti chomp some lines gist.github.com/MattOates/24fe1f212be1ad09fd96 16:17
afaik those all use lazy lists and/or line by line IO 16:18
FROGGS psch: I'm spectesting jvm now... perhaps we spot then something odd we can chase
16:19 dwarring left
FROGGS psch: still stuff about attributes is showing up 16:20
psch FROGGS: nice. i take it there's lots of "this other way compiles at least" though? 16:21
FROGGS jnthn: were there any changes about attribute handling during the glr period?
psch: aye
psch: we have a bunch of passing tests
psch: feels like 50/50 so far
dalek pan style="color: #395be5">perl6-examples: 5b8bc61 | (Steve Mynott)++ | / (21 files):
fix half the 99 problems tests failing due to GLR
16:22
[Coke] m: say .023 / .142 # bare -e 1 on 5.16 vs. latest 6 16:26
camelia rakudo-moar b5d8ce: OUTPUT«0.161972␤»
cdc [Coke] (or anyone else), maybe RT #125978 deserves to be tagged [GLR], but I'm not able to change it... (and I'm not sure if this can be reproduced without .hyper/.race, but with await/start for instance) 16:27
lichtkind sorry for acting stupid but why exactly parcel became unnecessary?
timotimo List is now immutable, which replaces what Parcel was for 16:29
and in the old code there were coercions to list all over the code
that was unnecessary and costly
unfortunately, we don't currently really have a value-type like Parcel was
lichtkind so what no list with an iterator callback? 16:30
16:30 xfix left
lichtkind i mean now not no 16:30
jnthn FROGGS: Attribute handling? Not really...I mean, the internal structure of List changed, for example
timotimo lists are still lazy
so it has iterators at its base
AFK
jnthn [Coke]: Note that -e "0" may give a sink warning 16:31
[Coke]: So -e "" is probably a better test
[Coke] jnthn: mostly equivalent. 16:32
varies from .144 to maybe a low of .128
m: say .023 / .128 # bare -e 1 on 5.16 vs. latest 6
camelia rakudo-moar b5d8ce: OUTPUT«0.179688␤»
lichtkind but can lists hold named parameter like parcel could do?
nine lichtkind: parcel couldn't. Capture does
[Coke] m: say .128/.021
camelia rakudo-moar b5d8ce: OUTPUT«6.095238␤»
[Coke] there, still about 6. it's an older 5, though. 16:33
nine lichtkind: really it's not Parcel that has left but the old List. And Parcel got renamed to List after that.
FROGGS jnthn: and should cover this, right? github.com/rakudo/rakudo/commit/e0...e9c32876f3
jnthn: because $!why moved from routine to block... but we do not access attributes of List AFAIK 16:34
jnthn FROGGS: Yeah, the Java-implemented ops to do with List went away iirc
tadzik That's silly. Block has no.need for.why
lichtkind so he new list can do the parcel trick of holding positionals and named? 16:35
s/he/the/
FROGGS jnthn: I'll try to fix this and see what changes... "optional array param NYI after GLR"
16:35 telex left
FROGGS tadzik: is it? 16:35
psch github.com/rakudo/rakudo/commit/83...a8b4219fc3 is the original commit 16:36
i think the reason is sound
where "original" = "the one that moved $!why"
japhb ShimmerFairy: Whatever happened with our community guidelines? What's the current status?
16:36 telex joined
tadzik FROGGS: I don't recall Block being documentable, and I.can't think of a reason why it should be 16:36
nine lichtkind: you're still confusing Parcel with Capture.
lichtkind: Parcel just was an immutable list. No nameds there.
FROGGS tadzik: look at psch's linky
tadzik looks 16:37
flussence huh, force-pushing a branch over an existing one on github that's referenced by a pull request causes data corruption, that's nasty. Good thing it only lost a 4 char diff...
japhb .seen ShimmerFairy
yoleaux I saw ShimmerFairy 16:17Z in #perl6: <ShimmerFairy> jnthn: All I recall is that the time was never significantly different from pre-allomorph, pre-GLR parse time for me
tadzik Hmmm 16:38
Okay, that makes sense
lichtkind nine++ your right i forgot that i already understood that,
nine lichtkind: a regression so to speak ;)
tadzik I'm inclined to stand on a why-not rather that why-side:)
psch tadzik: so "why not allow doc'ing Block?" instead of "why allow doc'ing Block?" :) 16:39
16:39 pmurias left
lichtkind or braino 16:40
psch i suppose it should be read more in "why change it" instead of "why not leave it" way
FROGGS it is always good when a discussion is going on... any discussion :o)
psch (the line before was with humours intent, no offense intended)
*humorous 16:41
16:41 dakkar left
jnthn Time to cook dinner; back later :) 16:46
16:49 itz left 16:50 baest_ joined 16:52 baest left 16:54 xfix joined, xfix left, xfix joined
dalek kudo/UnbreakJVMBuildFactory: f1ce993 | FROGGS++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
handle optional array params in binder on jvm
16:55
16:56 espadrine left
FROGGS jnthn: can you tell why? 17:00
src/Perl6/Metamodel/BOOTSTRAP.nqp:408: nqp::die('replace this Array is copy logic');
17:00 mohij joined 17:01 Ven left
dalek rl6-roast-data: 00c12e3 | coke++ | / (9 files):
today (automated commit)
17:04
17:08 inokenty joined, mprelude left 17:12 sufrostico joined 17:13 sufrostico left 17:14 Ven joined 17:16 n0tjack left 17:21 bbkr_ left 17:22 bbkr joined, pat_js left
ugexe perl6 -e "my $cmd = 'say 1'; say 'Proc'; my $p1 = run($*EXECUTABLE, '-e', $cmd, :out); .say for $p1.out.lines; $p1.out.close; say 'Proc::Async'; my $p2 = Proc::Async.new($*EXECUTABLE, '-e', '\"' ~ $cmd ~ '\"'); $p2.stdout.act: {.say}; await $p2.start;" 17:22
17:23 duncan_dmg left
ugexe on windows you can't just pass $cmd for Proc and Proc::Async. Proc::Async needs more quoting stuff around its $cmd for some reason 17:23
17:23 n0tjack joined
ugexe i should say you cant just pass $cmd the same way to both Proc and Proc::Async. You *can* just pass $cmd to Proc as shown in the example 17:27
TimToady m: my @array = lazy gather for 1..* { take $_ }; say @array[10]; say @array[^10] 17:32
camelia rakudo-moar b5d8ce: OUTPUT«(timeout)11␤» 17:33
TimToady m: my @array = lazy gather for 1..* { take $_ }; say @array[10]; say @array[0...^10]
camelia rakudo-moar b5d8ce: OUTPUT«11␤(1 2 3 4 5 6 7 8 9 10)␤»
TimToady this seems buggy 17:34
nine m: my @array = (gather for 1..* { take $_ }).lazy; say @array[10]; say @array[^10]
mohij How can I format a DateTime according to a given format?
camelia rakudo-moar b5d8ce: OUTPUT«(timeout)11␤»
nine m: my @array = (gather for 1..* { take $_ }).lazy; say @array[10]; 17:35
camelia rakudo-moar b5d8ce: OUTPUT«11␤»
TimToady m: my (@array) ::= lazy gather for 1..* { take $_ }; say @array[10]; say @array[^10] 17:37
camelia rakudo-moar b5d8ce: OUTPUT«Too few positionals passed; expected 1 argument but got 0␤ in block <unit> at /tmp/tJEaAl9ZOb:1␤␤»
TimToady m: my (@array) ::= \(lazy gather for 1..* { take $_ }); say @array[10]; say @array[^10] 17:38
camelia rakudo-moar b5d8ce: OUTPUT«(timeout)11␤»
TimToady m: my @array = (lazy gather for 1..* { take $_ }).list; say @array[10]; say @array[0...^10] 17:39
camelia rakudo-moar b5d8ce: OUTPUT«11␤(1 2 3 4 5 6 7 8 9 10)␤»
TimToady the @ doesn't seem to be implying .list with either assignment or ::=
m: my @array = (lazy gather for 1..* { take $_ }).list; say @array[10]; say @array[^10] 17:40
camelia rakudo-moar b5d8ce: OUTPUT«11␤(1 2 3 4 5 6 7 8 9 10)␤»
TimToady but then why does the 0...^10 slice work, when the ^10 one doesn't?
timotimo timo@schmetterling ~> perl6 -e 'say default-formatter(DateTime.now)' 17:41
2015-09-10T19:41:20+02:00
TimToady well, .[0...^10] is probably dispatching to a different routine than .[^10] is
timotimo i don't actually see a datetime formatting thing anywhere 17:42
TimToady that's for modules
17:42 spider-mario joined
TimToady it's too cultural to bake in 17:42
timotimo mhm 17:43
ah, yes
DateTime::Format, with ::LikeGo, and ::W3CDTF
nine TimToady: we do have a POSITIONS candidate for Range 17:45
mohij so there is no DateTime.strftime("%Y%m%d%H%M%S") :-(
timotimo mohij: actually, DateTime has a new candidate
oh 17:46
that's only for ISO 8601
mohij docs don't state how that should look and it feels wrong to bake the format into my object just to retrieve that format once... 17:47
nine m: my @array = (gather for 1..* { take $_ }).lazy; say @array[^10];
camelia rakudo-moar b5d8ce: OUTPUT«(1 2 3 4 5 6 7 8 9 10)␤»
17:47 muraiki joined
nine Now that's weird! It starts to hang once we access a single item before trying the range?! 17:47
TimToady yup 17:48
nine my @a = lazy gather for 1..* { take $_ }; say @a[10]; @a.EXISTS-POS(0);' 17:49
11
m: my @a = lazy gather for 1..* { take $_ }; say @a[10]; @a.EXISTS-POS(0);
The EXISTS-POS is where it hangs
camelia rakudo-moar b5d8ce: OUTPUT«(timeout)11␤»
mohij DateTime::Format Module \o/ 17:50
17:54 thou joined
tadzik psch: exactly :) 17:57
dalek pan style="color: #395be5">perl6-examples: 7817733 | (Steve Mynott)++ | categories/ (10 files):
more GLR fixes
17:59
18:00 Ven left
dalek kudo/nom: b81aff1 | (Stefan Seifert)++ | src/core/Seq.pm:
Fix endless loop on re-accessing array populated by lazy gather

The Iterator gather {} returns did not cope with being asked to push a negative number of elements. Thus when used to populate a lazy array and already reified elements where accessed twice, we would hang reifieing forever.
18:01
nine TimToady: fixed ^^^
18:04 darutoko left
TimToady \o/ 18:05
nine++ has fixed Floyd's Triangle :)
18:05 AlexDaniel joined 18:07 Loren_ left
masak rosettacode.org/wiki/Floyd%27s_triangle#Perl_6 ? 18:11
TimToady just checked in the new version 18:12
so refresh :)
nine The beauty of programming: you can fix things without having the slightest idea of what they are...
masak woot
yeah, that's much nicer. 18:13
TimToady you can tell how far I am through my RC pass, since I'm visiting the buggy ones in alphabetic orde 18:14
order, even
masak so you're on "Fl"? :P
TimToady next up, Fractran
my list is just the ones that overtly misbehaved in the first minute or so till I ^C'd the ones taking too long 18:15
so there could be some loopers I'm not working on
actually, looks like fractran has fixed itself already 18:17
masak TimToady++ # ecosystem spelunking
timotimo so ... let's see how much shaped arrays actually exists already 18:19
ah, hehe, "Shaped arrays not yet implemented. Sorry." 18:20
hm, "with initial values" NYI and can't assign full rows or cols with [0;*] yet 18:21
TimToady thinks .list is misnamed, should be .cache or .save or .keep 18:24
timotimo hmm. an AoA where i can't assign to fields
apparently that comes from >>.clone 18:25
TimToady see also #126030 18:26
timotimo but with .map: *.clone i can change elems just fine
hm, synopsebot is asleep
mhm
nine .tell jnthn I experimented with making gather lazy by default. The spec test fallout was....sobering 18:27
yoleaux nine: I'll pass your message to jnthn.
18:28 hernanGOA left 18:30 arnsholt left, arnsholt joined, ambs left, nowan left 18:31 sjn joined, nowan joined, ambs joined 18:36 Skarsnik joined, sufrostico joined 18:38 perl6_newbee left 18:43 mprelude joined, sno left
TimToady m: my $b = bag <a b c a b a>; say $b.list.WHAT 18:43
camelia rakudo-moar b81aff: OUTPUT«(Seq)␤»
TimToady m: my $b = bag <a b c a b a>; say $b.list.list.WHAT
camelia rakudo-moar b81aff: OUTPUT«(List)␤»
TimToady jnthn: ^^^ clearly shows the bad overloading we still have on .list 18:44
18:46 vendethiel joined
TimToady I also don't like that Capture has overloads it to access a @.list attribute 18:46
jnthn FROGGS: (Array is copy) because what was there before dealt in ListIter and other gone-away things; the solution will be whatever it is we do in Moar's binder, but I think call .STORE
yoleaux 18:27Z <nine> jnthn: I experimented with making gather lazy by default. The spec test fallout was....sobering
FROGGS jnthn: we die() in moar 18:47
jnthn: I also dont know how to hit that code path
jnthn TimToady: .list should *never* return a Seq 18:50
TimToady so I suspect we should leave .list for pulling lists out of things, and rename Seq.list to Seq.cache or some such, because in addition to the .list overloading, it's going to be really hard to teach .list vs .List
it's confusing
jnthn Well, what do you want .list on a Seq to do?
What .List does now? 18:51
TimToady it makes sense from the implementors point of view, but not so much from the user's
18:51 bartolin joined
TimToady well, if we do decide to rename it, there'll have to be a transition 18:51
or keep .list as an alias
jnthn Bag.list returning a Seq is just wrong
And Capture.list feels...right, it's getting the List nature of the Capture, no? 18:52
But .list not being the same as .List in Seq is easily fixable if we want; it's fine for the binder to call a different method on failover 18:54
TimToady m: say signal(SIGINT).list.WHAT
camelia rakudo-moar b81aff: OUTPUT«(Seq)␤»
jnthn That's also wrong
TimToady m: say Channel.new.list.WHAT
camelia rakudo-moar b81aff: OUTPUT«(Seq)␤»
TimToady there's just vast confusion
jnthn More like, there's just been a big change of underlying model, and we did the work needed to make spectests pass 18:55
And didn't do the work they didn't pick up on
nine There's just some .list calls missing
TimToady what does it mean to say that .List doesn't cache? 18:56
how can a List not cache?
if I find this confusing, fershure others will too
jnthn TimToady: It's not the result that doesn't cache, it's the call 18:57
But sure, we can rename the method the binder calls to force memoization
TimToady o_O
jnthn m: my $s = gather { for ^10 { .take } }; $s.list xx 2
camelia ( no output )
jnthn m: my $s = gather { for ^10 { .take } }; $s.List xx 2 18:58
camelia rakudo-moar b81aff: OUTPUT«===SORRY!===␤This Seq has already been iterated, and its values consumed␤»
jnthn What on earth happened to error reporting...that shouldn't be a SORRY
TimToady constant folding?
jnthn Oh, maybe :)
But $s isn't a constant 18:59
So I really hope not
Anyway, if you want .list to do the same as .List does now, and then we call what .list does now .save or something...
...I'm fine with that.
Maybe even it's a good thing
TimToady summons the bikeshedders
jnthn Because .list on a Supply will tap and so consume
dalek kudo/nom: b70ba13 | (Stefan Seifert)++ | src/core/QuantHash.pm:
Have QuantHash's and decsendants' .list return a List instead of Seq

20:50 < jnthn> TimToady: .list should *never* return a Seq 20:51 < jnthn> Bag.list returning a Seq is just wrong
18:59 Peter_R left
jnthn Mabye don't call it Seq.keep though, we used that word on Promise :) 19:00
Seq.save isn't bad
TimToady .cache might be clearer
jnthn Seq.remember also
TimToady .memoize is too long
so is .remember :P
jnthn I...don't think this needs to be short? 19:01
I don't expect people to write it much
I mean, I really *hope* we won't end up with it.
.cache is maybe better than save 'cus it puns as "cache this" and "get the cached this", which the method is both of
TimToady indeed 19:02
TimToady likes things that work as both verbs and nouns
jnthn Anyway, I'm fine with the change.
But thing .list should probably better not be returning Seq also 19:03
19:03 joaof joined, joaof is now known as joaof__
TimToady do you have a choice on something like Channel? 19:03
nine Why do we need to rename it again? .list gives you a List. The only difference to .List is that is will always give you the same List. If anything we should have .List be a synonym for .list
19:03 joaof__ is now known as an, an is now known as an_observer
TimToady that "only difference" is huge 19:04
to big to ride on a case distinction
*too
19:04 an_observer is now known as an_observer2, an_observer2 is now known as an_observer
nine I don't even see the point of .List as it is now. You can only call it once. 19:05
Why do we need a method with this restriction?
19:05 test_perl6 joined
TimToady beats me, maybe jnthn++ has a use case? 19:06
maybe when you *want* to exhaust the Seq and throw it away? 19:07
rather than keeping both the Seq and the cache
but then it should be called .drain or some such 19:08
nine If you throw the Seq away, keeping the reference to the list in the Seq won't hurt.
TimToady it's just this .list vs .List nonsense that is very non-user-friendly, in my estimation; I wouldn't mind if both methods went away in favor of .drain and .cache 19:09
though .drain sound too much like sink, bikeshedwise
jnthn And what would .list do then? Throw a "no you can't" exception?
nine We can .list so many things. Would be weird to not be able to do this with a sequence of items. 19:10
19:11 hernanGOA joined, an_observer left
nine Really if the case distinction is the problem, just make .List an alias for .list. 19:11
TimToady or .list an alias for .List, and add .cache 19:12
jnthn Yeah, it'd be odd for .list not to work
Yeah, it's really deciding that the semantics of .list are 19:13
19:14 test_perl6 left
mprelude Is there a Twitter lib for perl6? 19:15
19:16 dha joined, brrt joined
TimToady it's the Seq nature to be read-once, while it's the List nature to be read-many, but so arguably a method that mutates the Seq is more in the the Seq domain, and should probably be .cache for that reason 19:16
nine mprelude: I don't think so. You can either write one or use one of these: metacpan.org/search?q=twitter&...pe=modules
mprelude Writing one would be a good way to learn the language :P
Hmm
Are the underlying crypto functions available? 19:17
TimToady and a coercion to list/List should not be telling the Seq how to behave
nine m: say 1.list, "1".list, (1..10).list, (1...10).list; 19:18
camelia rakudo-moar b70ba1: OUTPUT«(1)(1)(1 2 3 4 5 6 7 8 9 10)(1 2 3 4 5 6 7 8 9 10)␤»
nine TimToady: ^^^ consistency
TimToady and it would still work if it drained the Seq
you just can't redrain it without a .cache 19:19
nine mprelude: maybe. If you find it on modules.perl6.org/
mprelude nine: Will take a look, I can implement OAuth but I'm not implementing SHA1 or HMAC ;) 19:20
19:20 pippo joined
FROGGS mprelude: we have Digest::SHA and HMAC already 19:20
pippo o/ #perl6
mprelude OK, should be able to do OAuth pretty easily 19:21
ugexe i dont think Digest works
FROGGS ugexe: you are right, it be adopted to work with GLR
brrt \o pippo 19:22
mprelude FROGGS: So I can't use Digest?
FROGGS mprelude: little patches are needed to make it pass its tests 19:23
shouldn't be too hard
pippo One question. My prog crates a big hash out of a text file. Then I use that has to get data out. How can I do to save the big hash to disk for later reuse? I used spurt to write the hash to disk and the slurp and EVAL to get it back but it is slower then reconstructing the hash from the beginning. Any suggestions? 19:24
The file with the hash saved to disk is about 5 megs.
FROGGS jnthn: what exactly implements bind_attribute_native on jvm?
dha Yeah, Digest::MD5 is failing tests. Unfortunately, that seems to make a panda install of Task::Star bail. 19:25
FROGGS pippo: should the saved hash survive a compiler rebuild?
mprelude I'm definitely not wanting to touch crypto :P 19:26
Not my area of expertise
19:26 tokuhiro_ joined
pippo FROGGS: Nope. I'll accept not surviving if there is a quick way to get that done. :-) 19:27
19:27 yqt joined 19:29 domidumont left
FROGGS pippo: test that: gist.github.com/FROGGS/f77c3bf35a7b1d53fea9 19:30
19:30 test_perl6 joined, brrt left
jnthn pippo: Then you can write a module like just `sub get-hash() is export { BEGIN { my %h; ...; %h } }` 19:30
pippo: Where ... is the code to populate %h from the file 19:31
And when you pre-comp the file it will cache the hash
19:31 tokuhiro_ left
pippo FROGGS: Thank you very much. 19:31
jnthn Bah, the "we take pointless closures" bug worked out silly 19:32
timotimo++ for noticing
FROGGS O.o
19:34 test_perl6 left
masak .oO( point-free closures ) 19:34
pippo jnthn: here it is: gist.github.com/anonymous/059bd2164593536fc7f6
jnthn That's another 6 GC runs knocked off Text::CSV 19:35
19:35 rurban joined
timotimo oh, nice 19:35
jnthn figures he'd better spectest
m: say 54 / 60
camelia rakudo-moar b70ba1: OUTPUT«0.9␤»
jnthn 10% less GC runs 19:36
Too bad our GC is fairly fast or it'd be more of a speed win :P
FROGGS *g*
pippo jnthn: sorry I realize you did not ask for the code :-)
[Tux] do I wait for dalek to rebuild? 19:38
19:38 Peter_R joined
jnthn [Tux]: For? :) 19:38
dalek kudo/nom: 7564b4c | TimToady++ | src/core/Seq.pm:
add a Seq.cache method to start plaing with
19:39
jnthn [Tux]: I didn't puch my patch yet, if you're wondering about my latest little improvement.
TimToady someone forgot to cache my 'y'
19:39 rurban left
TimToady interesting point, apparently the DEPRECATE function depends on Seq.list somewhere... 19:40
mprelude Whats a GC?
jnthn mprelude: Garbage Collection 19:41
mprelude Ah, ofcourse
pippo jnthn: how do I precompile? 19:42
jnthn Something like `perl6 --target=mbc --output=lib/Foo.moarvm lib/Foo.pm` 19:44
19:44 lichtkind_ joined
jnthn uh, --output=lib/Foo.pm.moarvm these days :) 19:44
FROGGS perl6 --target=mbc --output=lib/Foo.pm.moarvm lib/Foo.pm # this
aye
pippo jnthn: FROGGS: tahnk you very much!
dalek p: 85db8f9 | jnthn++ | src/vm/moar/QAST/QASTCompilerMAST.nqp:
Fix thinko that caused unneeded takeclosure ops.

Will greatly cut down on allocations in programs making heavy use of iteration post-GLR.
19:46 leont joined, lichtkind left
[Coke] m: enum X <a b c>; say a ~~ Int; say True ~~ Int # RT #72580, someone related to TimToady's earlier send. 19:47
camelia rakudo-moar b70ba1: OUTPUT«True␤False␤»
[Coke] m: say False ~~ Int
camelia rakudo-moar b70ba1: OUTPUT«False␤»
dalek kudo/nom: 8911bc9 | jnthn++ | src/core/List.pm:
No, .infinite did not survive the GLR.
[Coke] Bool isn't a "real" enum, though, right?
TimToady sometimes the circularity saw cuts Bool right in two 19:49
[Coke] masak, jnthn, moritz: RT #72820 - it looks like maybe this is not a bug based on the last chat?
jnthn [Coke]: &1? 19:59
m: &1 20:00
camelia ( no output )
jnthn I bet it compiles for the same reason $1, @1, and %1 do :)
I'm not sure what exactly to do about it :)
moritz well, if Match does both Positional and Associative, both %1 and @1 make sense 20:02
&1, not so much
jnthn Aye 20:03
moritz ... unless TimToady finds a good use case for a Callable Match :-)
.oO( a Match, when invoked with a Str argument, returns the original string with the Match replaced by the argument
20:04
). 20:05
'abcd' ~~ /b/ and say $/('x'); # axcd
kinslayer Hi perl6.
FROGGS hi kinslayer 20:06
kinslayer I found a library that lets me schedule a function to be called at a specific time, is there any thing like this in perl6
20:07 Ven joined
masak m: my &1 = sub foo { say "OH HAI" }; &1() 20:07
camelia rakudo-moar b70ba1: OUTPUT«5===SORRY!5=== Error while compiling /tmp/GKQ8Dc2YQl␤Cannot declare a numeric variable␤at /tmp/GKQ8Dc2YQl:1␤------> 3my &17⏏5 = sub foo { say "OH HAI" }; &1()␤»
masak m: &1 = sub foo { say "OH HAI" }; &1()
camelia rakudo-moar b70ba1: OUTPUT«Attempted to ASSIGN-POS to Nil.␤ in block <unit> at /tmp/PvccSIGA6O:1␤␤»
masak hehehe.
kinslayer to be clear I have not found any thing like this in perl6 20:09
jnthn m: say 4189 / 4349
camelia rakudo-moar b70ba1: OUTPUT«0.963210␤»
kinslayer so I was wondering if anybody else knows of such a library in perl6
jnthn kinslayer: Just in memory, or persisting the subscription? 20:10
m: Promise.in(2).then({ say 'hi!' }); sleep;
camelia rakudo-moar 8911bc: OUTPUT«(timeout)hi!␤»
kinslayer hmm that seems nice, but can I use a time as on the clock
such as on every wednesday at 2:15 run this function 20:11
FROGGS why don't you use cron? 20:12
jnthn If it's that kind of scheduling you probably do need a library that remembers the subscriptions
kinslayer jnthn: okay how can I use something like this ? 20:13
jnthn I mean, $*SCHEDULER.cue({ ...code... }, at => $datetime) works (you pass it a DateTime object)
kinslayer jnthn: okay I will look at that.
20:13 lichtkind_ left
jnthn And you can even pass every => ... to specify the interval between calls 20:14
I'm not aware of any higher level library
kinslayer well that is pretty awesome :D
moritz m: await Promise.in(2).then({ say 'hi!' })
camelia rakudo-moar 8911bc: OUTPUT«hi!␤»
moritz # no timeout 20:15
kinslayer moritz: nice
dalek kudo/nom: 2af8cb4 | jnthn++ | src/Perl6/Optimizer.nqp:
Make optimizer aware of types of nqp:: ops.

Means that we can generate much better code in various situations and avoid making some lexicalrefs when we don't need to.
20:19
kudo/nom: 93bb1ae | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for code-gen improvement.
TimToady m: sleep-until(now + 2); say "ha" 20:20
camelia rakudo-moar 8911bc: OUTPUT«ha␤»
TimToady if you're not interesting in doing anything in the meanwhile
jnthn [Tux]: Hopefully another bit knocked off Text::CSV 20:21
And off iteration in general.
20:22 kaare_ left
jnthn m: say 2.57 / 4.52 20:22
camelia rakudo-moar 8911bc: OUTPUT«0.568584␤»
jnthn And an iota better on the lines thing from earlier. 20:23
m: say 4.52 / 4.9 20:24
camelia rakudo-moar 8911bc: OUTPUT«0.922449␤»
jnthn 8% better, even.
jnthn was kinda meant to do grant admin stuffs tonight like blog, but ended up making things faster instead... 20:28
Ah well... :)
TimToady You have to take care of those you love, as well as those who love you. :) 20:29
jnthn :) 20:30
20:30 test_perl6 joined
jnthn Yes, talking of which, enough computer time for today...will do the admin tomorrow :) 20:31
jnthn is enjoying doing some performance work again, now the GLR is in place :)
timotimo good rest, jnthn!
[Coke] jnthn++
jnthn TimToady: If it's not already on your mental stack: shaped arrays are kinda blocking on deciding the semantics of list assignment, .map (and all other iteration-y things), .rotate (forbid?), .reverse (forbid?), .keys/.values... :) 20:32
dha Huh. Github apparently doesn't alert me when someone comments on one of my gists. 20:33
jnthn (I mean, sure, I can wire up the declaration syntax, and then look at natives shaped arrays, but I kinda need to know what we're doing on those bits to make good decisions on things :))
timotimo jnthn: i'd like list assignment to work if you assign a LoL or AoA, that's how i'd initialize the world for a cellular automaton, for example
20:33 silasmariner joined
silasmariner hello perl6 20:34
jnthn timotimo: Feel free to sketch out what you want in a gist :)
silasmariner your language is pretty cool
timotimo @foo = (^10).roll(10) xx 10
jnthn Anyways, goodnight o/
masak 'night, jnthn
timotimo my current code does that exact thing, but shaping it could lead to better things (also using the multi-dimensional slice syntax might give a performance benefit)
oh, another thing: currently i'm accessing the neighbours of a given field independent of whether i'm at the border or not, so i have code like my @neighbours = @grid[$px,$py] // Inf, @grid[$x,$py] // Inf, ... 20:35
silasmariner Is there a way of producing big decimals from a ration with a specific accuracy (e.g. 100 sig figs)? 20:36
timotimo if there'd be some way to react to an out-of-bounds access after turning this array into a shaped array, that'd be interesting
silasmariner *from a ratio
timotimo our rationals are already "big"
er, not quite
but we have a FatRat type that's "big"
silasmariner yeah, but if I want to sum a lot of them, I don't want massive integers
as the denominator and numerator 20:37
timotimo huh.
silasmariner I saw fat rat... I meant just a decimal repr
sorry if I'm being stupid
I guess actually
arnsholt As long as you don't overflow, Rat operations should get GCDed as you go along
silasmariner fatrat subsumes decimal, with a 10^n denominator
arnsholt They should get GCDed anyways, actually
timotimo i'll be AFK for a bit 20:38
arnsholt A FatRat is just a Rat with bigints instead of ints
silasmariner OK, this has been very helpful, thankyou
yeah. I just didn't think that decimal repr was a subset of fatrat 20:39
20:39 sufrostico left
silasmariner because I am not a clever man 20:39
20:39 xfix left
dha Edited my proposed documentation for C<for>, including proposals from [Coke] and raiph. 20:42
gist.github.com/dha/d8ab9b8cf852d358bfaf
Any other suggestions or complaints before I commit? 20:43
20:44 silasmariner left
[Coke] dha;spare use on line 26? 20:44
+1, looks fine. 20:45
dha ah. yeah, don't know how that got in there.
20:45 garryBarlowsLeft joined
[Coke] dha: I don't know that it will make you feel better, but I have docs on the list at gist.github.com/coke/38a589cec239409a4212 20:50
20:51 rurban joined
dha \o/ 20:52
20:53 atta joined
dalek c: af677c4 | (David H. Adler)++ | lib/Language/control.pod:
Added docs for C<for> in lib/Language/control.pod
20:56
jdv79 dha o/
dha Now to look at C<state> 20:57
muraiki how would I specify that a parameter must be a Set of Str? if I do "set <foo>.WHAT" I get back set((Str)) but that doesn't work
20:58 skids left
geekosaur m: my Set{Str} %x; %x.WHAT.say 20:59
camelia rakudo-moar 93bb1a: OUTPUT«5===SORRY!5===␤Type 'Set' is not declared. Did you mean 'Seq'?␤at /tmp/jPS4RWoZLr:1␤------> 3my Set7⏏5{Str} %x; %x.WHAT.say␤Malformed my␤at /tmp/jPS4RWoZLr:1␤------> 3my Set7⏏5{Str} %x; %x.WHAT.say␤␤»
geekosaur hm
jdv79 dha: have you been doing state for 3 weeks now? 21:00
dha I've been *complaining* about state for 3 weeks, I think. the actual *work* has been much less. 21:01
:0)
jdv79 that's a bit better than my metacpan speed
ah
21:02 rurban left
muraiki also, is there a better way to write "%words{$_}:delete if %words{$_} < $threshhold for keys %words;" as that's what I did but it seems pretty perl5-ish :) 21:02
21:03 brrt joined
jdv79 brrt: i meant to ask you at yapc - why is nobody else working on jit? 21:04
geekosaur thinks he just tripped over an LTA
brrt oh hai jdv79
geekosaur "Type 'set' is not declared. Did you mean 'Set'?" ... "Type 'Set' is not declared. Did you mean 'Seq'?" 21:05
brrt well partially, it's my job to work on the JIT currently, or should i say, it was my job and it's been somewhat extended
geekosaur can guess what happened there, but it's still a bit LTA
brrt secondly, people have worked on the JIT in the past, like JimmyZ++ and timotimo++ (and jnthn++ of course)
finally, it's probably also because the next gen JIT is still in design flux 21:06
dalek kudo/nom: 75665e3 | FROGGS++ | src/core/Variable.pm:
flatten export trait list, like we do for Routines
21:10
kudo/nom: 0ea1338 | FROGGS++ | src/core/Inc.pm:
box -I string, we'll .split it later
kudo/nom: f254e1f | FROGGS++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
psch++, align JVM's slurp/slurp-flat code to moar's
kudo/nom: 4db99fb | FROGGS++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
port Seq->List conversion in binder to JVM

This ports the missing bit from 211740be84f0.
kudo/nom: 5b55618 | FROGGS++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java:
toss unused attribute position hints
kudo/nom: 940eacf | FROGGS++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java:
handle optional array params in binder on jvm
jdv79 k
muraiki night perl6
21:10 muraiki left
FROGGS psch / jnthn: I figured it can't hurt to merge the jvm fixes into nom, as it doesnt not build anyway... and this way we get a little bit further 21:11
21:11 test_perl6 left
dalek kudo/nom: c6a50ff | FROGGS++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
fix copy&pasto in binder flags

It did not hurt before for some reason, besides not being used at all.
21:13
brrt jdv79: it is very much my intention to have more people work on it :-) 21:14
21:15 cognominal left
timotimo m: my str @foo; 21:17
camelia rakudo-moar 93bb1a: OUTPUT«===SORRY!===␤NYI␤»
timotimo star-m: my str @foo;
camelia star-m 2015.03: OUTPUT«===SORRY!===␤NYI␤»
FROGGS timotimo: lowercase str needs some love probably 21:18
timotimo mhm
21:19 n0tjack left 21:23 dha left 21:28 tokuhiro_ joined 21:30 hernanGOA left, rindolf left 21:32 tokuhiro_ left 21:34 n0tjack joined 21:35 rindolf joined 21:36 Ven left 21:39 n0tjack left 21:44 n0tjack joined 21:45 kjs_ joined
FROGGS .tell jnthn here is the current state of perl6-j, if you are curious: gist.github.com/FROGGS/3598992b921b34a1c6d5 21:45
yoleaux FROGGS: I'll pass your message to jnthn.
21:45 brrt left
lizmat messages ? 21:46
guess not :-)
FROGGS :o)
21:46 espadrine joined
lizmat FROGGS o/ 21:47
FROGGS hi lizmat
lizmat hmmm... I just pulled, built and see quite a lot of spectest breakage? 21:49
21:49 n0tjack left
FROGGS O.o 21:49
lizmat When invoking cuid_3534_1441921390.28184 'new', provided outer frame 0x7fd06a332c40 (cuid_3534_1441921390.28184 'new') does not match expected static frame 0x7fd06a332b20 (cuid_3540_1441921390.28184 '') 21:50
FROGGS huh
lizmat t/spec/S15-nfg/many-threads.t
FROGGS lizmat: you might need to update nqp 21:51
21:51 mullagainn left
lizmat shouldn't a configure take care of that? 21:51
FROGGS lizmat: it should... the version was bumped
lizmat hmmm... 21:52
FROGGS $ nqp-m --version
This is nqp version 2015.07.2-46-g85db8f9 built on MoarVM version 2015.08-15-g4b427ed
I'll rebuild my perl6-m without debugging stuff and run a spectest too
lizmat This is nqp version 2015.07.2-46-g85db8f9 built on MoarVM version 2015.08-15-g4b427ed 21:53
FROGGS k
lizmat looks the same to me... :-(
m: await do for ^4 { start (Uni.new((800..850).pick(5)) xx 2000)>>.Str } 21:57
camelia rakudo-moar c6a50f: OUTPUT«(signal SEGV)*** Error in `/home/camelia/rakudo-inst-2/bin/moar': double free or corruption (top): 0x00007f576c39fc90 ***␤»
psch FROGGS: i gather the Unbreak* branch is retired now?
FROGGS psch: it is gone
psch: I made it because I intended to commit hacks... but since I don't, we can work on nom 21:58
psch FROGGS: right, that's sensible. that also means you didn't glean any insight from the hackishly running spectest?
FROGGS psch: correct 21:59
psch: that's still my status: gist.github.com/FROGGS/3598992b921b34a1c6d5
lizmat m: await do for ^4 { start <a b c>>>.Str }
camelia ( no output )
lizmat m: await do for ^4 { start <a b c>>>.Str }
camelia ( no output )
lizmat m: await do for ^4 { start <a b c>>>.Str }
camelia ( no output )
lizmat hmmm... that segfaults for me 22:00
FROGGS psch: do you know where bind_attribute_native is implemented?
psch FROGGS: at compile time, by each P6opaque
FROGGS lizmat: works reliable here
lizmat m: await do for ^4 { start (^4)>>.Str }
camelia rakudo-moar c6a50f: OUTPUT«When invoking cuid_7864_1441921174.01322 'pull-one', provided outer frame 0x2e52dd0 (cuid_3435_1441921174.01322 'iterator') does not match expected static frame 0x2db21b0 (cuid_7865_1441921174.01322 '')␤ in block <unit> at /tmp/muluci0J4v:1␤␤»
lizmat seems like a combination of >> inside a start triggers it 22:01
FROGGS psch: I don't get it
lizmat but only if the start is a statememt, not a block
psch FROGGS: P6Opaque.java:622 has a commented line to dump the generated byte code
lizmat m: await do for ^4 { start { (^4)>>.Str } }
camelia rakudo-moar c6a50f: OUTPUT«When invoking cuid_7864_1441921174.01322 'pull-one', provided outer frame 0x2a40580 (cuid_7864_1441921174.01322 'pull-one') does not match expected static frame 0x2a401f0 (cuid_7865_1441921174.01322 '')␤ in block <unit> at /tmp/k7vTbpYHBl:1␤␤»
lizmat hmmm... guess not
psch FROGGS: the byte code gen is what generates the bind_* and get_* methods
FROGGS ohh 22:02
lizmat: t/spec/S15-nfg/many-threads.t fails her too, with the error message you posted
lizmat: four files fail in total 22:03
psch FROGGS: "javap -p -c -constants" is your friend :)
FROGGS aha
lizmat I had 7 fails, some are flappers
FROGGS psch: do I need to import FileOutputStream? 22:04
psch FROGGS: yeah, and i think File and one more thing
22:05 espadrine left
psch FROGGS: IOException 22:05
lizmat $ 6 'for ^4 { start { (^5)>>.Str } }; sleep 5'
Trying to unwind from wrong handler
psch that's java.io.File and java.io.IOException
FROGGS psch: thanks
22:05 n0tjack joined
lizmat so my conclusion: start and >> interact in interesting ways 22:06
FROGGS hmmm, now I have more than a hundred .class files
lizmat and on that thought, I wll call it a day
FROGGS lizmat: gnight 22:07
22:07 mohij left, lizmat left, [Sno] joined 22:10 n0tjack left 22:14 TEttinger joined 22:19 skids joined 22:26 Skarsnik_ joined 22:29 tokuhiro_ joined, Skarsnik left 22:33 tokuhiro_ left 22:35 kjs_ left 22:37 n0tjack joined 22:39 Ashimema joined 22:40 Ashimema left 22:44 leont left 22:50 telex left 22:52 telex joined 22:53 n0tjack left, kjs_ joined 22:57 kjs_ left 23:00 Skarsnik_ left, cognominal joined 23:10 n0tjack joined 23:14 n0tjack left 23:21 yqt left
masak 'nigth, #perl6 23:23
night*
23:25 rindolf left
hahainternet nn masak 23:26
awwaiid hello
I have a string in a var. I want to send it to an external program (stdin) and get the result (stdout). There a good way to do this? 23:27
(specifically, I'm taking source code and running it through a script that uses vim to convert it to colorized-html)
hahainternet jnthn had a talk similar to that at some point 23:30
jnthn.net/papers/2014-nlpw-reactive.pdf
it might have been updated since
but there's a section about running code there with all the pitfalls that come with things
i'm not exactly up on the current state of things, but thought you deserved a response despite it being quiet
i'm off to bed now though, nn
psch awwaiid: doc.perl6.org/type/Proc is probably where you want to look 23:31
awwaiid thanks psch
thanks hahainternet
23:32 BenGoldberg joined 23:36 spider-mario left 23:40 mprelude left, tokuhiro_ joined 23:42 n0tjack joined 23:46 n0tjack left 23:48 pippo left
ShimmerFairy m: say :{1 => 4}.perl; my %h = :{1 => 4}; say %h.perl 23:52
camelia rakudo-moar c6a50f: OUTPUT«:{1 => 4}␤{"1" => 4}␤»
ShimmerFairy m: say :{1 => 4}.perl; my %h; %h{1} = 4; say %h.perl
camelia rakudo-moar c6a50f: OUTPUT«:{1 => 4}␤{"1" => 4}␤»
ShimmerFairy Are these results expected? How do I get an object hash?
japhb ShimmerFairy: Whatever happened with our community guidelines? What's the current status? 23:59