»ö« 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_e9WDMUnable 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/M29sElm0XoCannot use variable $s in declaration to initialize itselfat /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/tbmFiWY0GwUnable 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 => Truec => Trueb => 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«554343» | ||
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«A1A2A3A4A5» | ||
TimToady | m: sub MAIN { my @p = (start { say "A$_"; sleep rand; say "B$_" } for 1..5); sink await @p; } | ||
camelia | rakudo-moar c54773: OUTPUT«A1A2A3A4A5B4B3B5B2B1» | ||
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: 2Extended 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/LIpuA0I61kType 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/3Egn4q8tXETwo terms in a rowat /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/kqxHoQV1qyMethod '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 regexat /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«TrueFalse» | ||
[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/GKQ8Dc2YQlCannot declare a numeric variableat /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.sayMalformed myat /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 |