»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
00:01 xenoterracide joined 00:16 aborazmeh joined
TimToady 'as' is deprecated in any case 00:25
it will eventually be 'has Int(Cool) $bar' 00:26
meaning it accepts a Cool but coerces to Int
but it's NYI 00:28
00:29 itz joined 00:30 raydiak__ is now known as raydiak 00:31 itz_ left
dalek kudo/nom: a3262f6 | TimToady++ | src/core/Whatever.pm:
at least avoid multiple allocs in Whatever.new

This is a stopgap till we figure out how to add constant singletons in the setting.
00:32
TimToady failed to add constant singletons many different ways :/
but it still the case that every darn .gimme(*) or .reify(*) calls Whatever.new 00:36
00:46 leont left
raydiak r: Buf.new(0).subbuf-rw(0).say 00:49
camelia rakudo-{parrot,jvm,moar} fd9238: OUTPUT«No such method 'subbuf-rw' for invocant of type 'Buf'␤ in block <unit> at /tmp/tmpfile:1␤␤»
raydiak ^ isn't this supposed to exist now?
TimToady m: Buf.new(0)[0] = 42; 00:52
camelia ( no output )
TimToady m: my $b := Buf.new(0); $b[0] = 42; say $b.decode
camelia rakudo-moar fd9238: OUTPUT«*␤»
TimToady proving that then answer to Life, the Universe, and Everything is really "whatever". 00:53
raydiak heh
how would I modify more than one value at a time? 00:56
TimToady m: my $b := Buf.new(0,0,0); $b[0,1,2] = 65,66,67; say $b.decode 00:57
camelia rakudo-moar fd9238: OUTPUT«Cannot modify an immutable Int␤ in method STORE at src/gen/m-CORE.setting:7513␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2615␤ in block <unit> at /tmp/QfLkMoqQcJ:1␤␤»
TimToady aww
m: my $b := Buf.new(); $b[0,1,2] = 65,66,67; say $b.decode
camelia rakudo-moar fd9238: OUTPUT«Cannot modify an immutable Int␤ in method STORE at src/gen/m-CORE.setting:7513␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2615␤ in block <unit> at /tmp/ghx6CeCera:1␤␤»
TimToady eh, beats me 00:58
raydiak "subbuf-rw specced and implemented" may have been a tad premature? :)
TimToady m: my $b := Buf.new(0); $b.subbuf-rw(0,1) = 65; say $b.decode 00:59
camelia rakudo-moar fd9238: OUTPUT«No such method 'subbuf-rw' for invocant of type 'Buf'␤ in block <unit> at /tmp/DyTrJcuD4K:1␤␤»
TimToady praps
raydiak very excited though...it's been a blocker for Pray since last year 01:00
01:01 BenGoldberg joined
TimToady m: my $b := buf8.new(0); $b.subbuf-rw(0,1) = 65; say $b.decode 01:01
camelia rakudo-moar fd9238: OUTPUT«No such method 'subbuf-rw' for invocant of type 'Buf[uint8]'␤ in block <unit> at /tmp/suro800_qn:1␤␤»
01:03 itz_ joined 01:05 itz left 01:09 anaeem1 left
timotimo we did have subbuf-rw! 01:12
TimToady m: my $b := buf8.new(0); subbuf-rw($b,0,1) = 65; say $b.decode
camelia rakudo-moar fd9238: OUTPUT«Type check failed in binding $new; expected 'Blob' but got 'Int'␤ in sub at src/gen/m-CORE.setting:5908␤ in block <unit> at /tmp/j2ZYXalpro:1␤␤»
TimToady eh? 01:13
timotimo ah, subbuf-rw is a sub, not a method
TimToady m: my $b := buf8.new(0); subbuf-rw($b,0,1) = buf8.new(65); say $b.decode
camelia rakudo-moar fd9238: OUTPUT«Cannot assign to an immutable value␤ in sub at src/gen/m-CORE.setting:5908␤ in block <unit> at /tmp/B_N4cfluuD:1␤␤»
TimToady huh
timotimo oh?
dalek ast: 469d6a5 | (David Warring [email@hidden.address] | S02-types/whatever.t:
add fudged tests for RT #122708 non-currying: * min 2
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122708
01:14 chenryn joined
TimToady smells dinner, and is suddenly de-incentivized wrt hacking... & 01:15
timotimo something's keeping me from really progressing with the MATCH rewrite :\ 01:19
01:30 chenryn left 01:33 JimmyZ joined 01:42 aborazmeh left 01:47 cognome left
raydiak confirmed that subbuf-rw worked properly in moar 2014.08 as a sub at least...should file a bug, I assume? 01:49
oh, and it works properly as a sub now too...guess it's just not a method like timo said 01:56
01:56 FROGGS_ joined 01:59 Sqirrel left 02:00 Sqirrel joined 02:01 FROGGS left, raiph joined 02:04 itz joined 02:06 itz_ left
masak aloha, #perl6 02:09
BenGoldberg Do all alohas come from hawaii? 02:12
02:15 cognome joined
masak not this one. 02:15
ingy: re irclog.perlgeek.de/perl6/2014-09-05#i_9305944 -- when a language declares by assignment, there's no way to distinguish `my $x = 1; sub { $x = 2 }` from `my $x = 1; sub { my $x = 2 }`, and so the language has to choose (usually the latter). I've seen this decision cause untold head-scratchers, surprise, and hardship in (e.g.) Python and AngularJS. 02:18
Python 3 introduces `nonlocal` as a way to get the former semantics. but then community-suggests that "you don't really want to do that". :/ 02:19
02:22 cooper_ joined 02:31 ren1us left 02:34 davido_ joined 02:39 raiph left 02:48 dwarring left 02:59 noganex joined 03:01 colomon left 03:02 noganex_ left 03:03 colomon joined
ingy masak: I'm not sure I agreee 03:03
or at least that it's going to be a problem
I could make a set of test cases 03:04
And as I said, assignment is just the default decl
ingy tests in CS 03:05
masak oh, you're free to agree or disagree ;) 03:07
I'm just saying I see that semantics causing actual pain in a way explicit declarations don't.
there are plenty of ways to decide that declaration-by-assignment is still the right thing to do. for example, by considering the sum effort involved in declaring lexical variables to be worse than the occasional bug caused by implicitly mis-declaring one. 03:09
ingy nod 03:10
03:10 raiph joined
masak as for me, though, I've come to really really appreciate explicit declarations. they form a beautiful static modek in the program, and they frequently catch thinkos for me which otherwise might have escaped into live code as unintended declarations. 03:11
ingy masak: so CafeScript is syntax and L'Ingy is the (syntaxless) language.
one sec
03:11 MilkmanDan left
colomon just realized it must be morning for masak 03:13
03:13 JimmyZ_ joined 03:14 MilkmanDan joined
masak colomon: it's before noon, yes. 03:14
JimmyZ_ doesn't like the implicit syntax in scala, btw :(
03:15 JimmyZ left, JimmyZ_ is now known as JimmyZ
masak there's some sense in which implicit syntax looks like less work, but it ends up causing trouble when refactoring. 03:15
ingy masak: possibly :) 03:16
masak a bit like having the redundancy of indentation and explicit braces on blocks tends to be a good thing.
ingy masak: github.com/ingydotnet/pig-latin-ac...in.ly.yaml is the raw L'Ingy port
masak looks
ingy that I just made
it is close to the compilation unit (AST) of github.com/ingydotnet/pig-latin-ac...Latin.cafe 03:17
masak *nod*
ingy and all the vars are scoped and typed
so I can swap syntaxen (theoretically) to meet issues
Cafe is admittedly pushing full-on lean 03:18
03:18 cooper_ left
ingy masak: you'll like: gist.github.com/7b86c66589fd5b67feab 03:19
I was reading p6OO doc and started refactoring :)
note line 20 03:20
no comma after "x:
no comma after "x: "
that's because commas are optional following a literal in a list 03:21
[1 2 3 4]
stolen from audreyt's #1 fav lang LiveScript
masak seems a big perverse from a p6 perspective :) 03:22
bit*
(as we typically reserve TTIAR for either special forms or parse errors) 03:23
ingy I have a lightning talk that asserts that , ; ( ) { } have pretty much identical meanings in all modern languages. they should always be supported, and semantically DTRT, and always be optional :)
03:23 lastofthe left
masak reminds me of JS's optional semicolons, for some reason. 03:24
ingy: I also note that you opted for *neither* braces nor indentation to indicate nesting.
ingy perl6 feels perverse from the PoV of porting between other common langs
?
masak everything's at indent level 0. 03:25
ingy you mean I opted both either
oh
masak well, in your example I see neither.
what if I want nested classes?
or nesting of something else?
ingy a 'Module' is Class*
so class ends at next class
masak I figured. that's why you need a class main. 03:26
03:26 itz_ joined
ingy that's one thing from p5 I won't give up 03:26
but still ♥ indentation
open code from before first class is also in main 03:27
er Main
I just didn't want to break the p6 code order
masak ingy: I find this discussion interesting in that it brings out language design preferences I didn't know I had, by looking at what you have and figuring out why I don't like it. ingy++ :) 03:28
03:28 lastofthe joined
ingy It will be pretty cool to see how Cafe beats up on P6 (and vice versa) 03:28
03:29 itz left
ingy backhanded compliment touché :P 03:29
masak not meant as a slight in any way
ingy people like what they are used to
masak at least those who stick with what they like :P
03:30 cognome left
ingy I find CoffeeScript to the most delightful syntax 03:30
masak oh augh :P
03:30 cognome joined
ingy well, until I realized it could be better 03:31
p6 is a fountainhead of great ideas
masak ingy: I think it's weird that your model has `main` as a class, since it has neither attributes, methods, or instances. just mainline code.
ingy masak: to be honest, Cafe's dream is only OO/Class/Module singularity 03:32
one programs in P6
one writes modules in Lingy/Cafe
if one is Acmeist (wants ideas (modules) to go beyond one's tiny language domain) 03:33
so the 'main' thing is not well thought out yet
masak sir, I wish you good luck on your ambitious Acmeist quest.
ingy but it's probably inevitable
masak: it's the lonliest path least traveled, my good friend! 03:34
03:34 cognome left
ingy but it's the only path that calls out to my soul… 03:34
I had all these ideas before coffee. coffee was a huge shot in the arm though. 03:35
03:35 aborazmeh joined
btyler is it possible to use NativeCall with static libs? 03:36
ingy and coffee taught me that the sugar can be richer than the target
and take the best ideas from great langs
masak *nod*
I give you that, CoffeeScript has had a huge influence by example.
ingy including the best of the greats, Perl6
btyler I'm playing around with bindings for discount, the markdown compiler, but nativecall either looks for .dylib, or, when I specify "libmarkdown.a" can't find that
JimmyZ
.oO(someone want ColaScript...)
ingy vendethiel- I believe was/is a huge backer of LiveScript (aka CoffeeScript++; aka FunctionalCoffeeScript) 03:38
vendethiel-: do you hear me, man?! 03:39
03:45 jack_rabbit left
masak should take a closer look at LiveScript 03:50
04:01 xenoterracide left 04:04 JimmyZ_ joined 04:06 JimmyZ left, JimmyZ_ is now known as JimmyZ 04:11 xenoterracide joined 04:13 lastofthe left 04:18 telex left 04:19 davido_ left 04:20 telex joined 04:30 itz joined 04:33 itz_ left 04:43 bjz left, bjz joined 04:46 itz_ joined 04:49 itz left 04:53 raiph left 04:57 itz joined, JimmyZ_ joined 04:59 JimmyZ__ joined, itz_ left 05:01 JimmyZ left, JimmyZ__ is now known as JimmyZ 05:02 JimmyZ__ joined, JimmyZ_ left 05:03 JimmyZ_ joined 05:05 JimmyZ left 05:06 JimmyZ_ is now known as JimmyZ 05:07 JimmyZ__ left 05:08 BenGoldberg left 05:10 anaeem1 joined, itz_ joined 05:12 itz left 05:13 xenoterracide left 05:14 anaeem1 left
dalek kudo/nom: cc1965f | jonathan++ | / (5 files):
Bulid a * and ** during compile, and use them.

This means that we eliminate the method calls to .new in both cases, as well as a bunch of object allocations. This should - at least in the pre-compiled module case where the created object is in gen2, or when the compilation ran long enough to promote it - JIT down to an instruction or two on Moar. Even if it's the less direct lookup, it will still be enormously faster than a method call.
05:14
05:19 tinyblak joined
TimToady \o/ 05:20
05:23 tinyblak left
jnthn lunch & 05:27
yoleaux 5 Sep 2014 21:57Z <lizmat> jnthn: re "my $p; $p = start { await $p }; await $p" deadlock, maybe we should force waiting for a start promise to only be allowed in the originating thread ?
05:29 haroldwu is now known as acgtyrant_, acgtyrant_ is now known as haroldwu 05:32 tinyblak joined
moritz good morning 05:37
05:40 aborazmeh left 05:46 kaare_ joined 05:53 kurahaupo left 05:54 JimmyZ_ joined 05:57 JimmyZ left, JimmyZ_ is now known as JimmyZ 06:00 dolmen joined
lizmat jnthn: re method new() { our $star //= nqp::create(self) }, wouldn't 'method new() { $ //= nqp::create(self) }' be better? 06:01
or even method new() { $ = nqp::create(self) } 06:02
TimToady can probably just be 'method new() { (*) }' now
lizmat and ** for HyperWhatever ? 06:04
TimToady yes, World now already defines those as singleton instances, so there's no point in making more of 'em
JimmyZ m: say *.WHAT; (*).WHAT 06:05
camelia rakudo-moar a3262f: OUTPUT«(Whatever)␤»
JimmyZ m: say *.WHAT; say (*).WHAT
camelia rakudo-moar a3262f: OUTPUT«(Whatever)␤(Whatever)␤»
TimToady not sure if the parens are necessarily, since {*} is an "onlystar" for protos 06:06
m: sub foo() {*}
camelia ( no output )
TimToady m: sub foo() {*}; say foo.WHAT
camelia rakudo-moar a3262f: OUTPUT«(Whatever)␤»
06:06 tinyblak left
TimToady looks safe-ish 06:07
lizmat remember, we're doing this early in the settings
a lot of things don't work yet then... 06:08
testing $ = variant over breakfast&
TimToady what would be the point of assigning to a state var?
lizmat the same as //=, but without the METAOP ?
TimToady doesn't understand what you are trying to do 06:09
we scarcely need the new method at all now
danaj What's a fast way to read numbers from a file (one per line). It seems using "for $in.lines -> $_ { ... }" is extraordinarily slow. 06:10
Timbus -> $_
you can do that?
danaj (sorry for basic question, feel free to point me to better channel for silly questions)
06:13 mr-foobar joined
TimToady danaj: what kind of numbers? 06:13
06:14 tinyblak joined
JimmyZ I thinks somethink like perlmonks.org/?node_id=1099654? 06:14
*something
TimToady you might do better with $in.slurp.words
danaj TimToady: 64-bit integers. It takes many minutes to plow through 32M of them (with an empty loop). Perl 5 takes 5 seconds.
JimmyZ Note 3 ) part ?
TimToady yes, I know that p5 is very fast on input; I cheated all over to make it that way 06:15
we haven't cheated in P6 yet
danaj NP, I don't need P5 speed (yet :)) but this seems awfully boggish. 06:17
Hmm, slurp.words up to 8GB and still going. 06:19
TimToady it's possible that 'for eager $in.lines' will run faster
the other thing that's going on here is that p5 will be using native 64-bit ints internally, while p6 is defaulting to arbitrary bigints 06:21
so finding some way to convert direction to int64 will probably be quite a bit faster 06:22
danaj This is for testing the base-2 strong pseudoprimes, where the goal is to ensure is-prime returns true on each one (obviously the current one will, as only the first 12 bases are needed and we run an extra 88 for good luck)
TimToady *directly
danaj I can always just do the file open/read/loop directly from C and have it call the C routine, but there's something to be said for doing it from the language directly. 06:23
lizmat TimToady: this is about a3262f65704cd4c1ac
TimToady opening the file in binary mode might help
lizmat a. why burden UNIT:: with something 06:24
TimToady lizmat: that's obsolete
lizmat b. why use a METAop
TimToady jnthn++ has already done something better
lizmat so should a3262f65704cd4c1ac be reverted then? 06:25
TimToady no, it should be changed to what I said, just returning *
lizmat commute to venue, will look at it there& 06:26
06:26 lizmat left 06:27 woolfy left
TimToady actually, should just delete new and clone, I think 06:32
dalek kudo/nom: 4a74294 | TimToady++ | src/core/Whatever.pm:
no longer need new and clone in Whatever
06:34
06:48 Salai is now known as Sarid, Sarid is now known as Salai 06:51 lastofthe joined 06:56 darutoko joined 07:08 anaeem1_ joined, gfldex joined 07:09 anaeem1_ left 07:10 anaeem1_ joined 07:13 lizmat joined 07:19 JimmyZ_ joined 07:21 virtualsue joined, JimmyZ left, JimmyZ_ is now known as JimmyZ
Woodi morning #perl6 :) 07:21
lizmat morning Woodi
TimToady: re 4a74294806 : that's one way of solving it :-) 07:22
Woodi TimToady: I'm very interested what are all that places you cheat in p5 to make it fast :) could you share thes ideas ? 07:24
lizmat: I have long standing question to you :) maybe TimToady and masak also :) 07:25
Timbus you should ask leon timmermans about perl IO. he has a lot to say 07:26
Woodi once I was watching 3in1 perl presentation and part 3on3 was you three a bit shyish "allowing" Perl5 community to branch Perl5 :) what was that actually ? :) 07:27
probably this was on same conference as Perl11 idea...
07:32 lastofthe left
lizmat Woodi: would that be on stage at the YAPC::EU 2013 ? 07:34
07:34 tinyblak left, dolmen left
lizmat if so, that was a very weird situation 07:34
the origanizer of the conference wanted a "Perl 7" discussion
but in the end, didn't find anybody to defend the "perl 7" standpoint on stage
Timbus ... thats so weird 07:35
lizmat so it became a weird one sided 45 minutes of my life
07:35 jack_rabbit joined
Woodi probably becouse morphing perl5 code into v7 is hard... and (probably) includes dropping compability with perl5 :) 07:36
lizmat there's that :-) 07:37
Woodi some vendors coalition could do that but unlikely :) and from user perspective perl5 development is quite good :) 07:38
07:39 FROGGS_ is now known as FROGGS 07:55 virtualsue left, anaeem1_ left
dalek ast: a9608c6 | (Elizabeth Mattijsen)++ | S17-lowlevel/thread.t:
Unfudge: this seems stable now, even under load
08:11
kudo/nom: bdf153c | jonathan++ | src/core/control.pm:
Improve take[-rw], proceed, succeed.

By making them multis, the common cases can avoid a Parcel allocation along with the underlying list construction, as well as a call. This takes around 5% off a "read a million lines" benchmark, and probably is more significant in things that hot-path on gather. The succeed improvement should help all given/when usages.
08:19
jnthn Also brings the common cases within inlining thresholds, I'd imagine. 08:20
08:22 elohmrow joined
elohmrow greetings, from sunny olten! 08:22
Woodi while installing R* 2014.08 with jit configure says my Pentium4 is i586 so no jitting for me... it's strange, I'm pretty sure `uname -a` says i686... 08:24
Timbus danaj, i just tested using $file.lines vs loop{$file.get} and for a 100,000 file line the time goes from 8 seconds to 1
Woodi elohmrow: o/
Timbus if that helps
firefish5000 Is there currently a bash_completion for panda or perl6?
Timbus 100,000 line file* 08:25
08:28 BizarreCake joined
danaj Timbus: Thanks, I'll try that later. I was getting ~6s in binary using $file.lines for first 100k lines of 32M line file, ~11s if I call a nqp routine with the integer that immediately returns. The speedup will be nice, and that should be fine for now. 08:31
Timbus i dont seem to get any speedup for using :bin, almost all of the slowdown is coming from the lazy list code. 08:36
danaj Timbus: That goes to ~1s for first 100k lines for me as well. 12s for first 1M lines, and much better memory using moar.
Timbus cool :) 08:37
FROGGS firefish5000: never heard of one 08:39
firefish5000 In that case, would you guys be intrested in mine, (comes with no warrenty) 08:40
moritz sure 08:42
FROGGS sure! 08:45
shall we but that in the star repo? 08:46
firefish5000 Here it is. pastebin.com/JNKuF4KY
firefish5000 is not responable for any damage nor injures aquired while using perl6 completion 08:47
08:48 virtualsue joined
firefish5000 to use, put it in your bash_completion.d directory and source /etc/profile or source the file itself. 08:49
08:50 anaeem1 joined
elohmrow just starting with perl6 here ... vim user (don't shoot?!) ... and vim syntax goodies for perl6 08:50
firefish5000 I believe vim comes with builtin perl6 support (for highlighting/brace matching/etc). although its a little slow with big files. 08:53
08:55 brrt joined
FROGGS I think some ppl here use vim 08:56
08:56 araujo left
lizmat uses vim but pretty vanilla 08:57
moritz firefish5000 is correct, though iirc it's not reliably autodetected; I put ft=perl6 in my modelines 08:58
elohmrow yeah multi-line comments don't work in what i have 08:59
they work, but the highlighting !works 09:00
firefish5000 notices a echo to file in his bash_completion in _perl6() { ...
oops
dalek kudo/nom: 2132868 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Phase #1 of IO.pm breakup
09:01
kudo/nom: 8b9b6cc | (Elizabeth Mattijsen)++ | src/core/IO.pm:
Phase #2 of IO.pm breakup
kudo/nom: fa8a7df | (Elizabeth Mattijsen)++ | src/core/IO/ (3 files):
Part #3 of IO.pm breakup
kudo/nom: 95876bc | (Elizabeth Mattijsen)++ | src/core/io_operators.pm:
Part #4 of IO.pm breakup
kudo/nom: 888b855 | (Elizabeth Mattijsen)++ | tools/build/ (3 files):
Part #5 of IO.pm breakup
09:03 Salai left, grep0r joined 09:05 akaseki joined, leont joined 09:06 spider-mario joined 09:07 spider-mario left 09:08 vukcrni left 09:09 vukcrni joined, spider-mario joined
lizmat got fed up with the convulution in IO.pm 09:11
*convolution rather 09:15
09:16 virtualsue left 09:22 akaseki is now known as Salai, Rotwang joined
itz_ one thing which would be nice for vim would be perl6 aware tag creation 09:22
either as a simple p6 script or support in etags 09:23
09:23 leont left 09:26 leont joined
Timbus so, if .lines calls .get over and over, does the optimizer know that it doesn't have to test $!PIO and $!isDir every single time? does nqp or moar know to.. 'unroll' safety checks in some way? as i type this it seems less and less likely 09:30
09:35 JimmyZ_ joined
dalek kudo/nom: e0a98ba | (Elizabeth Mattijsen)++ | src/core/io_operators.pm:
Make simple say more atomic in threaded situations
09:35
09:38 anaeem1 left, JimmyZ left, JimmyZ_ is now known as JimmyZ 09:40 kurahaupo joined
nine lizmat: does this make say faster or slower? 09:41
09:44 virtualsue joined
Timbus yes 09:44
lizmat I'm pretty sure for most cases it won't make much difference 10:03
if you're saying a 1M character scalar, it probably will 10:04
in reality, that doesn't happen much
and if it *is* a performance issue, adding a , to the param list, should probably select the candidate that doesn't do the concatenation 10:05
JimmyZ remembered jnthn++ optimized it to avoids ',' :P 10:06
lizmat well, perhaps we need to optimize 'say "foo"' to 'print "foo\n"' at compile time 10:08
10:08 BizarreCake left
lizmat actually, to '$*OUT.print: "foo\n"' 10:09
and then MMD print to have a candidate for Str:D:
perhaps the \x candidate shouldn't be optimized like that 10:10
otoh, calling .gist on something probably means a lot of concatenation already
I felt the atomicity of say in that case, would be more important 10:11
10:13 itz joined
JimmyZ wonders what about 'say "$foo"' 10:15
JimmyZ was asked by someone before
10:16 itz_ left
nine lizmat: but it is not atomic. 10:21
jnthn Timbus: No, those are done each time; factoring them out is one of my todos for later on today 10:22
lizmat JimmyZ: "$foo" will foo.Str
JimmyZ: say $foo will $foo.gist
nine lizmat: Nothing whatsoever prevents mixed lines in output if mutltiple threads say at the same time. You just reduced the chance of this happening thereby making potential race conditions harder to reproduce.
lizmat nine: are you saying race conditions on $*OUT.say are a problem ? 10:24
if so, we need to fix this 10:25
nine lizmat: I say you are obviously seeing them as a problem, otherwise why try to fix it?. But your fix is not a real fix. You just reduced the chance of the problem manifesting.
lizmat true... it's all about priorities 10:26
Timbus jnthn, i see. i was more interested from an automatic optimizer perspective, but after thinking about it, it seemed.. difficult.
lizmat when trying to debug multi threaded apps, I take any semblance of atomicity on say as a help
meanwhile, I'm trying to make @*INC and %*CUSTOM_LIB lazy 10:27
vendethiel- o/, #perl6
nine And I might even argue that by reducing the chance, we make it harder for people to find such race conditions in their code.
lizmat $ time perl6 -e1
real0m0.165s
user0m0.132s
sys0m0.031s
that would be nice, eh?
Timbus jnthn, anyway that said, removing the checks does speed up a 100k line iteration by 120 milliseconds or so. yay profiler
lizmat although wrt to spectesting, it wouldn't make a difference
nine Works fine on first glance but may still fail when larger strings are printed and the OS preempts in the middle.
lizmat as any "use" will cause @*INC and %*CUSTOM_LIB to be populated 10:28
and any test starts with "use Test"
elohmrow they work, but the highlighting !works 10:29
lizmat nine: this is *only* for sub say { ... }
elohmrow oopsie, looks like i somehow accidentally re-posted that :)
lizmat and yes, I realize that as soon as the string exceeds the size of the IO buffering of the OS, we may seem "breakage" 10:30
*see
10:30 virtualsue left, mr-foobar left 10:32 brrt left
Woodi <stdio.h> is generally thread-safe now, could we use that somehow in ? in some shortcut way maybe... 10:41
grr... forget about all that VMs :)
lizmat Woodi: IO is handled by libuv, afaik
Woodi on j-nqp too ? 10:42
lizmat sorry, I meant on -m
Woodi still we can invent some new and powerfull threaded apps debuging tool :) 10:43
with printf ;)
leont isn't sure what printf would buy you
Yes, it uses locks to guarantee every printf call is consistent, it's not that hard to write that honestly 10:44
Woodi leont: I just realized that we talk about stdout and my proposed powerfull tool is just adapter for printf :) 10:45
jnthn In the case of MoarVM, in a multi-threaded program the VM takes a lock on its internal handle data structures, since libuv IO and event loop data structures ain't threadsafe.
On the JVM, we lock as needed also
10:47 JimmyZ_ joined, jack_rabbit left
lizmat is surprised to learn that libuv isn't threadsafe in that respect 10:48
10:49 JimmyZ left, JimmyZ_ is now known as JimmyZ
jnthn lizmat: It was built initially for Node.js, so it ain't so surprising. :) 10:49
lizmat jnthn: we don't have a standard way of making a proxy like object for arrays and hashes, do we? 10:50
jnthn No, though a lazy array is, well, just a lazy list... :) 10:51
nwc10 is this also why it's quite happy to change its API but only bump the most minor part of the version number? 10:52
10:52 PersonX joined, PersonX left
jnthn nwc10: Well, I more meant that if you're building something that centers around huge amounts of overlapped IO on a single thread, you won't need to worry about thread safety of handles. 10:53
nwc10 yes, sorry, I realised that. It makes sense
it was more that I was feeling the need question why they are 0.11.lots rather than 0.12.smaller given that the API changes 10:54
jnthn Yes. The latter thing, not so much sense, though...
10:55 pmurias joined
pmurias is there anyone still supporting the Perl 7 renaming? 10:55
vendethiel- trolls? 10:56
10:56 vendethiel- is now known as vendethiel
lizmat vendethiel: :-) 10:56
pmurias noticed the irc log mentioned yapc 2013 not 2014 ;)
vendethiel yeah, the c-day-is-coming talk was apparently rather well received 10:57
Woodi jnthn: is libuv planned to be eventually replaced ? 10:58
lizmat wasn't burnt at the stake :-) 10:59
leont Woodi: do you have anything better?
10:59 PersonX joined
jnthn Woodi: I've no such plans. 10:59
Just because it's not perfect doesn't mean there's a better option. 11:00
lizmat jnthn: in Metamodel/BOOTSTRAP, I see a lit of repeated .HOW calls to a type object
jnthn lizmat: .HOW is rather cheap....
lizmat would it make sense to do the .HOW once, store it and then call methods on that ?
jnthn lizmat: It's not actually a method call, even.
11:00 PersonX left
lizmat ok 11:00
what I wanted to know
leont Woodi: keep in mind that cross-platform async is hard. There are only a handful viable low-level implementations. 11:01
boost.async is kind of neat, but moar is in C not in C++
jnthn for one does not want to design/implement a cross-platform async IO thingy :)
vendethiel I wonder why :D
boost guys really are crazy (awesome). 11:02
lizmat jnthn: so if I wanted to do a lazy @*INC, I would create a ListIter with a .nextiter set to the code to run, and $!list set to PROCESS:::<@INC> ? 11:05
leont jnthn: why wouldn't you want to port such a project to, say, OpenVMS? ;-) 11:06
pmurias what are the reason for replacing libuv?
Woodi leont: *VMS users should do that ;)
vendethiel thread safety
lizmat pmurias: because we found something better ?
but we didn't find it yet (afaik) 11:07
Woodi pmurias: primery is NIH :)
leont Woodi: sarcasm ;-)
jnthn lizmat: Actually I think you'd just create an array, and then .plan(gather { blah blabh set up stuff; take entry })
lizmat is .plan actually functional now? 11:08
jnthn lizmat: I thought TimToady implemented it the other day...
leont: The only thing I know about VMS is what I've learned from Perl folks. And that boils down to, "porting stuff to VMS is HORRIBLE" :) 11:09
leont There is a POSIXy compatibility layer, but IPC in general is weird. perl5 still doesn't have a working IPC::Open2 for VMS for example :-/. 11:10
lizmat jnthn: maybe, but 'ack '\.plan' t/spec' doesn't show any hits, so it is at least untested 11:11
pmurias lizmat: have we found something better?
jnthn m: my @a; @a.plan(gather { say 'dugong'; take 1; }); say 'manatee'; say @a[0]
camelia rakudo-moar 4a7429: OUTPUT«(timeout)manatee␤» 11:12
jnthn um...
lizmat that doesn't feel right :-)
jnthn TimToady: Oh the hue manatee! ^^
leont I'm observing the done callback on a Supply (from Proc::Async) being called more than once, is that expected?
jnthn Um, no... o.O 11:13
more will be
done should happen once
11:13 elohmrow left
pmurias lizmat: sorry didn't reed 11:14
jnthn If I managed to mess that up, please toss a bug report in RT
leont That's what I expected 11:15
I'll try to come up with a minimal example
jnthn Thanks 11:16
lizmat in any case, the initialization of %*CUSTOM_LIB and @*INC is heavily intertwined
so any access to %*CUSTOM_LIB would also need @*INC to be filled 11:17
and we don't have a lazy hash filler, do we ?
jnthn Oh, somebody asked earlier about:
await my $p = start { await $p }
This is actually nothing to do with threading per se, just about setting up a situation where you wait for something to happen on a code-path to making it happen 11:18
my $p = Promise.new; await $p; $p.keep(1) # exactly the same, with a single thread 11:19
firefish5000 Perl6 bash-completion v2 pastebin.com/ZGkKgZ3c , now runs on other systems! (now uses @*INC to find projects.json, basic support for rakudobrew) 11:20
jnthn And, to be clear:
my $a = False; until $a { }; $a = True # exactly the same, without a Promise :)
lizmat: (lazy hash) no
lizmat well, this was related to #122709
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122709
lizmat lunch& 11:21
11:21 lastofthe joined
jnthn lizmat: Ah, that involves multiple promises... 11:22
lizmat: So it's not quite such a simple case :)
But yeah it shouldn't behave as it does.
jnthn leaves it open in a browser tab for later examination
For now, I think it's dinner time :)
11:23 daxim left 11:24 PersonX joined 11:25 PersonX left, brrt joined
firefish5000 inst sure if he should blame pastebin or terminal cp/paste for $'r' on line 12.. 11:31
11:31 BizarreCake joined 11:37 mr-foobar joined, daxim joined 11:47 yeahnoob joined
leont m: my $proc = Proc::Async.new(:path("echo"), :args([<Hello World>])); my $in = $proc.stdout_chars(); $in.tap(-> $data { }, :done({ say "Done called" })); await $proc.start 11:48
camelia rakudo-moar 4a7429: OUTPUT«Done called␤Done called␤»
11:49 nbrown___ joined, lastofthe left 11:51 PersonX joined 11:56 pmurias left
tadzik hah 11:57
11:57 pmurias joined
tadzik m: my $proc = Proc::Async.new(:path("echo"), :args([<Hello World>])); my $in = $proc.stdout_chars(); $in.tap(-> $data { say "got something}, :done({ say "Done called" })); await $proc.start 11:57
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/iPnYJX0xDX␤Unable to parse expression in double quotes; couldn't find final '"' ␤at /tmp/iPnYJX0xDX:1␤------> say "Done called" })); await $proc.start⏏<EOL>␤ expectin…»
tadzik grr
m: my $proc = Proc::Async.new(:path("echo"), :args([<Hello World>])); my $in = $proc.stdout_chars(); $in.tap(-> $data { say "got something" }, :done({ say "Done called" })); await $proc.start
camelia rakudo-moar 4a7429: OUTPUT«got something␤Done called␤Done called␤»
firefish5000 if anyone is still interested. perl6/panda/rakudo completion github.com/firefish5000/Mod6 . done right with git this time. 12:00
12:00 elohmrow joined, nbrown___ left 12:01 PersonX left
tadzik nice :) 12:03
firefish5000++
firefish5000 if anyone else trys it and finds it doesn't work... tell me (I spent too much time on it to be satisfied with just my system) 12:04
tadzik, thanks :)
12:04 yeahnoob left
firefish5000 leaves to take his (very late) nighttime shower 12:07
12:07 zakharyas joined 12:15 PersonX joined 12:16 yeahnoob joined
lizmat jnthn: in Proc::Async, the first done is at line 110, the second is from line 95 12:17
moritz firefish5000++ 12:19
12:19 PersonX left, nbrown___ joined 12:22 robinsmidsrod left
dalek kudo/nom: 6ff79a9 | (Elizabeth Mattijsen)++ | src/core/Proc/Async.pm:
Naive fix for double "done"
12:22
lizmat jnthn: ^^^ as there are no tests, not sure if this changes behaviour or not 12:23
12:24 robinsmidsrod joined
moritz firefish5000: found the first bug, see github.com/firefish5000/Mod6/issues/1 12:28
12:32 Ven joined 12:34 raiph joined
leont lizmat: yeah, that's what I suspect too, but I'm only have understanding the nqp there. I guess the one on line 110 should be left out. 12:35
lizmat leont: that's what my naive patch did 12:36
12:37 jerrycheung joined 12:40 woolfy joined
leont m: my @l = 1, 2, 3; my $t = start { @l.map(* + 10) }; await $t; say $t.result.perl 12:42
camelia rakudo-moar 4a7429: OUTPUT«().list␤»
leont Why is that an empty list? Why do I have to put square brackets around that map to make it DWIM?
Is that a bug or a feature I don't understand? 12:43
moritz without knowing much about threads, I'd naively say it's a bug 12:44
12:44 dolmen joined
leont too, but half of the time I'm thinking that I'm just not grokking the language 12:48
12:49 Sqirrel left 12:54 PersonX joined
dalek kudo/nom: 28f3066 | moritz++ | src/core/Str.pm:
remove return value annotation from unbase

unbase is used for :8(...) and the like, but it can also return a Failure when the argument is not in a numeric format. The Numeric:D return type then makes it throw an exception, hiding the actual problem
12:54
kudo/nom: 27a5c13 | moritz++ | src/core/IO.pm:
Avoid EVAL in IO.umask

For interpreting a string as an octal number, :8(...) should be much faster, and it is not prone to injection attacks.
12:57 xenoterracide joined 13:00 PersonX left
moritz leont: when I run your code locally, I get "Unhandled exception in code scheduled on thread 140335676462848 Cannot assign to an immutable value in method break at src/gen/m-CORE.setting:18938" 13:01
13:01 cognome joined 13:03 yeahnoob left
JimmyZ I got '().list' locally 13:03
vendethiel moritz: run it again ;D 13:05
13:07 JimmyZ_ joined
JimmyZ_ r: IO.umask 13:09
camelia rakudo-jvm 4a7429: OUTPUT«(timeout)»
( no output )
FROGGS m: say IO.umask
camelia rakudo-moar 4a7429: OUTPUT«2␤»
13:09 brrt left, JimmyZ left 13:10 JimmyZ_ is now known as JimmyZ
JimmyZ perl6 -e 'say IO.umask' hangs locally with lastest commit 13:10
13:11 zakharyas left
moritz JimmyZ: what does perl6 -e 'say qx/umask/.perl' print for you? 13:12
JimmyZ perl6 -e 'qx/umask/' hangs ...
m: qx/umask/
camelia rakudo-moar 4a7429: OUTPUT«qx, qqx is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:1␤ in sub QX at src/RESTRICTED.setting:9␤ in block <unit> at /tmp/jXTaU4uU7E:1␤␤»
moritz JimmyZ: then it hung before the latest commit too 13:13
JimmyZ lastest libuv issue? spwan bug?
moritz maybe 13:14
JimmyZ I'm with ubuntu 14.04
moritz so am I (I think)
leont: oh, Array.map is lazy; maybe the code that generates the list is scheduled on the thread that's already gone when you call .result 13:16
if so, await() should be eager, IMHO
or start blocks
or whatever the right abstraction is
leont That sounds like an explanation 13:17
JimmyZ yeah, libuv update-ish bug, I revert updating libuv and rebuild moarvm , qx// works
13:18 PersonX joined 13:20 yeahnoob joined
moritz m: my $x = start { die "42" }; await $x; 13:22
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!===␤42␤»
moritz m: my $x = start { die "42" }; Promise.allof($x); 13:23
camelia ( no output )
moritz m: my $x = start { die "42" }; Promise.allof($x); say $x.result.^name
13:23 PersonX left
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!===␤42␤» 13:23
dalek ast: 9f5b221 | moritz++ | S17-promise/start.t:
test returning lazy lists from start

failing on rakudo-moar, fudged. leont++
13:26
13:26 PersonX joined
moritz m: my @outer = 0..3; await my $x = start { eager @outer.map: *+1 }; say $x.result.perl 13:26
camelia rakudo-moar 4a7429: OUTPUT«(1, 2, 3, 4).list␤»
moritz m: my @outer = 0..3; await my $x = start { @outer.map: *+1 }; say $x.result.perl
camelia rakudo-moar 4a7429: OUTPUT«().list␤»
colomon j: my @outer = 0..3; await my $x = start { @outer.map: *+1 }; say $x.result.perl 13:27
camelia rakudo-jvm 4a7429: OUTPUT«().list␤»
moritz j: my @outer = 0..3; await my $x = start { @outer.map: *+1 }; say $x.result.perl 13:28
camelia rakudo-jvm 4a7429: OUTPUT«().list␤»
moritz j: my @outer = 0..3; await my $x = start { eager @outer.map: *+1 }; say $x.result.perl
camelia rakudo-jvm 4a7429: OUTPUT«(1, 2, 3, 4).list␤»
moritz submits rakudobug
13:30 PersonX left 13:33 nbrown___ left
leont m: Proc::Async.new(:path("echo")).start.result.perl.say 13:34
camelia rakudo-moar 4a7429: OUTPUT«␤Proc::Status.new(exit => 0, pid => Any, signal => Any)␤»
leont I'd guess that pid attribute should be defined, right? Not that it's particularly useful… 13:35
FROGGS leont: it should, yes
but it isnt wired up yet
13:37 Ven left 13:39 brrt joined
lizmat can we have a MMD selection on str versus Str ? 13:45
13:46 PersonX joined
FROGGS m: multi foo (Str) { say 1 }; multi foo (str) { }; foo("abc") 13:47
camelia ( no output )
FROGGS m: multi foo (Str) { say 1 }; multi foo (str) { say 2 }; foo("abc")
camelia rakudo-moar 4a7429: OUTPUT«1␤»
FROGGS O.o
m: multi foo (Str) { say 1 }; multi foo (str) { say 2 }; foo(nqp::unbox_s("abc"))
camelia rakudo-moar 4a7429: OUTPUT«2␤»
FROGGS lizmat: we have that... except for the case #1 where it does not say anything 13:48
13:49 PersonX left 13:50 lastofthe joined
lizmat can we actually return an unboxed string from a Perl 6 sub ? 13:50
13:54 PersonX joined 13:55 PersonX left
moritz lizmat: with 'returns str' maybe? 13:55
lizmat m: sub a ( --> str) { "Foo" }; say a #apparently not ? 13:57
camelia rakudo-moar 4a7429: OUTPUT«Foo␤»
FROGGS lizmat: you can say a str 13:58
lizmat that will just autobox it, afaik
FROGGS m: sub a ( --> str) { "Foo" }; say nqp::isstr(a)
camelia rakudo-moar 4a7429: OUTPUT«0␤»
FROGGS m: sub a ( --> str) { nqp::unbox_s("Foo") }; say nqp::isstr(a)
lizmat I was thinking on adding a MMD candidate for chomp()
camelia rakudo-moar 4a7429: OUTPUT«0␤»
lizmat that would take / return str rather than Str
FROGGS IIRC the return value gets hllized
lizmat yes, feared so as well
FROGGS that is why I had to use findmethod(...)(...) somewhere in v5 13:59
14:01 PersonX joined 14:03 aborazmeh joined 14:04 nbrown___ joined 14:07 lastofthe left 14:09 lastofthe joined 14:11 PersonX left
dalek ast: f59399e | moritz++ | S17-promise/start.t:
add ticket number
14:11
14:14 virtualsue joined 14:15 nbrown___ left 14:16 PersonX joined
pmurias if I relocate the star directory I have to run Configure.PL/make install again? 14:16
moritz first clean, then reconfigure 14:17
14:17 JimmyZ left 14:22 aborazmeh left
pmurias there is a rakudobrew? 14:24
pmurias found it 14:25
does it build star?
leont No it builds from git 14:28
14:28 jerrycheung left
FROGGS but is also has a build-panda command, which is the most important bit of star :o) 14:30
14:31 pmurias left
lizmat if we're ever want to get closer to p5 wrt reading text files, we will need an nqp::readlinefhchomp($!PIO) 14:34
doing this in P6 space is just a waste
wheres nqp could just make the returned string a little shorter
instead of having to copy
FROGGS lizmat: we can pass down a flag to chomp, like we pass a flag to sayfh to append a newline 14:35
lizmat we have sayfh ?
FROGGS m: nqp::sayfh 14:36
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!===␤Arg count 0 doesn't equal required operand count 3 for op 'say_fhs'␤»
FROGGS yes :o)
leont agrees with lizmat, this is something you kind of need to do low-level 14:37
lizmat the current situation with IO::Handle.get / getc is that for *each* call
it checks whether there's a handle
it checks whether it is a directory
and it checks whether we're at end of file *before* doing anything at all 14:38
14:38 pmurias joined
lizmat guess what IO::Handle.lines is using... 14:38
FROGGS .get
btw, `perl6 -n -e '1' bigfile.txt` spends 35% in ListIter.reify 14:39
so at least in this case it isnt just .lines or .get to blame
tadzik pmurias: you can install Task::Star after it's there 14:41
14:42 PersonX left
dalek kudo/nom: 72c02db | (Elizabeth Mattijsen)++ | src/core/Str.pm:
Make Str.chomp a bit smarter

1. don't change anything if there's nothing to chomp
   doing 1M chomps on a short string: 1.534 -> 1.138
2. reduce number of checks and characters checked
   1M x Foo\n: 1.749 -> 1.717
   1M x Foo\r\n: 1.842 -> 1.721
14:44
14:47 PersonX joined
lizmat m: gather { last } # is this kosher ??? 14:47
camelia rakudo-moar 4a7429: OUTPUT«(timeout)» 14:48
FROGGS no
vendethiel broke it 14:49
lizmat m: gather { .take for ^10; last } # not kosher either
vendethiel haha
camelia rakudo-moar 4a7429: OUTPUT«(signal )»
14:49 nbrown___ joined
dalek kudo/nom: 1bebd3d | (Tobias Leich)++ | src/Perl6/Grammar.nqp:
fix Label.gist for short source codes
14:50
pmurias nine: ping
14:50 PersonX left
lizmat FROGGS: I *should* be able to last out of a gather { } ??? 14:51
14:51 kst left 14:53 kst joined, glumm joined 14:54 nbrown___ left, PersonX joined
FROGGS lizmat: is a gather a loop? 14:55
masak m: for 1, 2 { .say; my @a = gather { last; take 42 } }; say "alive"
camelia rakudo-moar 4a7429: OUTPUT«(timeout)1␤» 14:56
masak o.O
p6: for 1, 2 { .say; my @a = gather { last; take 42 } }; say "alive"
camelia niecza v24-109-g48a8de3: OUTPUT«Potential difficulties:␤ @a is declared but not used at /tmp/tmpfile line 1:␤------> for 1, 2 { .say; my ⏏@a = gather { last; take 42 } }; say "al␤␤1␤alive␤»
..rakudo-{jvm,moar} 4a7429: OUTPUT«(timeout)1␤»
..rakudo-parrot 4a7429: OUTPUT«1␤Cannot resume dead coroutine.␤ in method reify at gen/parrot/CORE.setting:8094␤ in method reify at gen/parrot/CORE.setting:7804␤ in method reify at gen/parrot/CORE.setting:7804␤ in method gimme at gen/parrot/CORE.setting:8273␤ in metho…»
lizmat I guess gather is insufficiently tested :-( 14:57
masak p6: for 1, 2 { .say; my @a = gather { last; take 42 }; 1 }; say "alive"
gather is... weird.
camelia rakudo-{jvm,moar} 4a7429: OUTPUT«(timeout)1␤»
..niecza v24-109-g48a8de3: OUTPUT«Potential difficulties:␤ @a is declared but not used at /tmp/tmpfile line 1:␤------> for 1, 2 { .say; my ⏏@a = gather { last; take 42 }; 1 }; say ␤␤1␤alive␤»
..rakudo-parrot 4a7429: OUTPUT«1␤Cannot resume dead coroutine.␤ in method reify at gen/parrot/CORE.setting:8094␤ in method reify at gen/parrot/CORE.setting:7804␤ in method reify at gen/parrot/CORE.setting:7804␤ in method gimme at gen/parrot/CORE.setting:8273␤ in metho…»
masak I don't use it a lot. I wouldn't go so far as saying I mistrust it, but... maybe I do a little.
also, Parrot probably should avoid using the word "dead" in its error messages :P 14:58
fwiw, I see nothing wrong with the code I wrote, and I'm sorely tempted to submit a rakudobug on it. 14:59
actually, my main goal was to provide a "no" answer to FROGGS++'s question.
a gather is not a loop. in the "does it bind next/redo/last" sense. had my code worked, it'd've shown that. 15:00
15:07 xinming_ is now known as xinming
lizmat takes this as not being able to last out of a gather {} 15:08
15:13 rindolf joined
rindolf Hi all. 15:13
What's up?
FROGGS rindolf: a lot actually :o) 15:14
rindolf Can I be honest and share my thoughts about Perl 6?
FROGGS: hi.
FROGGS: what?
FROGGS libuv update troubles that seem to vanish, async hacking and much much more :o)
rindolf FROGGS: ah.
FROGGS: don't know what those are.
FROGGS rindolf: of course you can share your thoughts
rindolf My thought is that Perl 6 as it currently stands is ran too perfectionistically and will never be ready. 15:15
tadzik you used the R word
;)
pmurias does perl6-m support automatic compilation of modules? 15:16
moritz we're happy to prove you wrong, eventually
tadzik pmurias: nope
FROGGS pmurias: just must invoke it explicitly
moritz pmurias: it compiles modules that aren't compiled yet, but it doesn't save the bytecode
FROGGS rindolf: I don't think so... we have three missing features on our list before we call it ready, that does not sound perfectionistic 15:17
rindolf I realise that the Perl 6 effort has proved of a lot of inspiration to perl 5, Perl 5, CPAN, and other languages, but is utility is over. I suggest rethinking the strategy. And I also suggest that Perl 6 people open up to more inspiration than just programming - Sci Fi/Fantasy/literature/etc. , television/cinema, psychology, philosophy, history, etc. - see www.shlomifish.org/humour/fortunes/...ruth-is-go 15:18
ds-truh
pmurias is there a list of those missing things?
moritz pmurias: mostly docs/ROADMAP in rakudo, and a bit in the feature matrix 15:19
tadzik what happened to our brainstorm with "list of things before 6.0" recetly?
FROGGS pmurias: lizmat++ said it at the YAPC::EU.... it is about NFG, shared array/hashes, and perhaps the list refactor, maybe I forgot something
tadzik yes, that
(FROGGS's memory)++ 15:20
FROGGS rindolf: I don't share that opinion, I think the current goal is reachable, and reading more scifi books won't help us there
masak I have put together a list, with the goal of turning it into a status page on perl6.org
dunno if I am ready to share it just yet. 15:21
FROGGS masak: share early share often :o)
masak FROGGS: ...I'll have another look at it, and then consider it.
nwc10 FROGGS: I was suspicious that it might be four - DESTROY isn't on the list
FROGGS nwc10: because DESTROY isnt that important (to me) 15:22
japhb lizmat: I love that 72c02dbd8a13f1620bcec3189f84f2df39eceff5 has details of the performance numbers from your improvement. Care to make that into a perl6-bench microbenchmark? :-)
masak rindolf: "its utility is over" -- this tells me you're not a Perl 6 user. you should try the language -- it's pretty great!
lizmat japhb: not right now, but soon 15:23
nwc10 FROGGS: fair enough, but it is to nine and the Perl 5 stuff
lizmat the while IO::* need a real performance haul over...
japhb lizmat: I'll buy that. :-)
yeah
FROGGS btw, I tried C# likee two weeks ago... and no, I stick to Perl 6 :o) - it is way nicer to write
15:23 dolmen left
rindolf FROGGS: how partial are the implementations of Perl 6 so far? 15:23
masak: I tried it several times in the past - it was slow and buggy and incomplete. 15:24
FROGGS rindolf: the only implementation that matters is rakudo and it is not partial, it is able to clarify bits of the spec, or sometimes is the reason to extend the spec...
masak rindolf: it was. speed has much improved, though. there are still bugs, but fewer and fewer. as to incomplete -- Perl 5 is "incomplete". 15:25
FROGGS bbi1h
masak rindolf: also, you may appreciate my view that "I tried it several times in the past" is not a goodenuf answer if you want to argue about whether Perl 6 is relevant *today*. 15:26
rindolf masak: well, I tried it across many years. 15:27
masak those years had smaller numbers than 2014, though.
rindolf masak: and many times.
masak right.
I get that.
you're very patient.
have you tried it *recently*?
rindolf masak: I tried it about a year ago. 15:28
masak then... you might be in for a pleasant surprise.
Rakudo on Moar got a JIT since then, and a number of other performance improvements.
and stability (which was decent already a year ago) has improved further. 15:29
nwc10 rakudo startup time is now comparable with Moose startup time
masak so I would strongly suggest that you update your view on Perl 6's utility on a *recent* Rakudo.
nwc10 rakudo concurrency makes ithreads look like, well, the ugly hack that it always was 15:30
15:31 elohmrow left
masak rindolf: basically, back in 2012 I wouldn't have been able to come back with anything stronger than "just you wait; Perl 6 will get there". last year I felt the pivot happening. this year, I can be assertive: Perl 6 is getting an edge or two over Perl 5. 15:32
well, besides the feature-related ones it's had for years.
woolfy masak++ 15:33
rindolf BTW, I can recommend the recent en.wikipedia.org/wiki/Teenage_Muta...14_film%29 - it's a great film on so many levels, here's my review - www.reddit.com/r/TMNT/comments/2d9f..._2/ck2yiti
15:34 zakharyas joined, BizarreCake left
itz what do people recommend for parsing XML? 15:34
15:35 vendethiel left
lizmat FROGGS was working on a libxml NativeCall interface? 15:35
masak rindolf: oh, here I was hoping you'd stay on topic. :/ I felt we were getting somewhere. 15:36
itz I liked the look of XML::Parser::Tiny but it doesn't seem to work anymore :\
masak rindolf: if you don't mind me saying so, your mentioning your (probably excellent) TMNT review just like that, while we are talking, feels slightly disrespectful and out of tune.
itz oh it works in the last * :) 15:37
rindolf masak: well, back on topic - it seems like Perl 6 is too much like "The Boy Who Cried Wolf" for me. Too much promise and keep being disappointed times and times again.
masak: anyway, I want to leave to the dogs+dog owners assembly-in-the-park soon 15:38
masak rindolf: agreed -- where Perl in general sucks at marketing, Perl 6 double-sucks at marketing.
rindolf: we fail so hard that we disappoint many of the people in the Perl community!
rindolf: (and for good reason. some may have expected 1 year, or 2, or 5, or maybe even 10. but 14 years is... a lot. and most of them don't have the overview of the current status we do.) 15:39
tadzik when Rakudo Star was released, it was said "it's not a final, feature-complete thing" 15:40
15:40 denis_boyun joined
nine pmurias: pong 15:40
tadzik people want something that'll have the Seal of Approval saying "this is it, this is what you've been waiting for"
masak rindolf: tell you what, though. last year I went to YAPC::EU with a sinking feeling that the whole Perl 7 thing would blow up and fracture the whole community into irreparable shards.
tadzik if it doesn't have the entire spec in it, no problem
dalek kudo/nom: 7b2852d | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm:
Make IO.lines faster

Reading /usr/share/dict/words from 5.770s -> 3.941s (32% improvement)
tadzik as long as they can do their stuff
lizmat++!
flussence
.oO( I'm still waiting for CSS 3 )
tadzik I'm still waiting for C99 15:41
masak rindolf: what happened instead was that the p7 people turned out to be a disorganized scattering of individuals who mostly just wanted someone to talk to.
moritz is still waiting for CSS 6
flussence :)
15:42 vendethiel joined
masak rindolf: *this* YAPC::EU, people came up to us and said "you know, I used to be against Perl 6, but this year I am starting to pay attention" 15:42
vendethiel also, we saw people coming here, and blog posts, and ... :-)
glumm masak: the last few days I used perl6 for real for the first time. And I like it. I miss the excellent documentation of perl5, and there are some bugs (or I just don't understand enough, hard to tell because of the missing docs), but I can live with that 15:45
masak glumm++ # you'll get the money we agreed on later
moritz glumm: please take notes one what docs you are missing in particular 15:46
masak oh, and what moritz said.
dangit, I should be informative/useful first, and try to be funny second :P
15:47 woolfy1 joined, woolfy left, woolfy1 left
vendethiel masak: definitely keep being funny first :P 15:48
the masak/moritz duo works.
vendethiel will get back to his learnXinY after some scala
moritz m: say nqp::chomp("foo\n") 15:49
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!===␤No registered operation handler for 'chomp'␤» 15:50
15:50 nbrown___ joined
flussence How hard is it to add content to doc.perl6.org? I find myself falling back to the specs a lot when trying to get stuff done, so if it's possible, I may as well take useful notes while I'm there. 15:50
moritz flussence: you just have to write pod6 to add content :-) 15:51
nine Trying out Perl 6 for the first that first time had the feeling of Star Trek The Motion Picture. It's like when they first walk through the new Enterprise with people still busily working everywhere to finish it up. Yes, when they first took her for a spin, they encountered some limitations and problems but boy did we get an impression of what this ship was able to do. Rough edges nonwithstanding certainly worthy of being the new flagship!
moritz flussence: it's all in the perl6/doc repo; you should have a commit bit already
flussence oh, I'll take a look tonight then :)
[Coke] I am not a fan of removing return type annotations so we can return Failure instead of the type. 15:52
15:52 Arc joined
flussence +1 15:52
moritz [Coke]: it would be much nicer to be able to say returns Numeric:D | Failure
15:52 Arc is now known as Guest60624
vendethiel moritz: "well volunteered"? 15:52
that's specced :P
moritz it is?
vendethiel | and & on types are specced, yes.
They won't make it into 6.0 at least (pretty certain of that) 15:53
moritz: abusing types is something I like doing, so I payed close attention WRT that while reading the spec.
vendethiel is still thinking on how to encode church's number in P6 types
15:54 Guest60624 left
masak ooh 15:54
15:54 nbrown___ left
moritz vendethiel: ah, my mental model of Perl 6 excludes anything that is marked as "after 6.0" 15:55
15:57 dolmen joined, guru joined
vendethiel masak: wanna try :P ? 15:57
15:57 guru is now known as Guest97763
vendethiel moritz: right. at least, you can do `subset Foo where Int|Str`, but that's for different reasons (namely any() and smart matching) 15:57
15:58 Guest97763 is now known as ajr_
vendethiel also, probably won't get you compile-time errors 15:58
moritz and won't help the optimizer at all
vendethiel ;-)
tadzik nine: that's a nice comparison :)
15:58 brrt left
vendethiel moritz: I have this little dream of mine of being able to constant-fold or compile time-check some `where`s, but I'm not sure that's worth it. 15:58
Provability is undecidable in general
moritz profiling IO.lines shows that about 50% of the exclusive time is spent in method reify 15:59
vendethiel m: role Foo[Int $n] { our const $b = $n; }; say $Foo[5]::n; 16:00
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!===␤Type 'const' is not declared␤at /tmp/uaFZBFDHrl:1␤------> role Foo[Int $n] { our const⏏ $b = $n; }; say $Foo[5]::n;␤Malformed our␤at /tmp/uaFZBFDHrl:1␤------> role Foo[Int $n] { our …»
moritz 'constant'
vendethiel m: role Foo[Int $n] { our constant $b = $n; }; say $Foo[5]::n;
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/r8bVbmw_70␤Variable '$Foo' is not declared␤at /tmp/r8bVbmw_70:1␤------> ] { our constant $b = $n; }; say $Foo[5]⏏::n;␤ expecting any of:␤ postfix␤ s…»
vendethiel m: role Foo[Int $n] { our constant $b = $n; }; say Foo[5]::$n; 16:01
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/1GSEyOQwVx␤Two terms in a row␤at /tmp/1GSEyOQwVx:1␤------> n] { our constant $b = $n; }; say Foo[5]⏏::$n;␤ expecting any of:␤ postfix␤ infix stopper…»
vendethiel eh.
jnthn lizmat: readlinefhchomp is something I've been pondering; especially since we simply can do it just by dropping those pieces off the end before doing bytes => string.
vendethiel moritz: not sure what's the syntax for that...
.oO( oh boi, we have template constexprs already )
lizmat jnthn: yes, indeed :-)
moritz vendethiel: I don't think there is one
vendethiel m: role Foo[Int $n] { our sub b { $n } }; say Foo[5]::n; 16:02
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/BlCfVHllbE␤Two terms in a row␤at /tmp/BlCfVHllbE:1␤------> Int $n] { our sub b { $n } }; say Foo[5]⏏::n;␤ expecting any of:␤ postfix␤ infix stopper…»
dalek kudo/nom: ecebe3c | moritz++ | src/core/IO/Handle.pm:
speed up IO.lines another 4%

by caching $.chomp into a lexical variable
vendethiel m: role Foo[Int $n] { our sub b { $n } }; say (Foo[5])::n; # :(
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/H89KMMqcXr␤Two terms in a row␤at /tmp/H89KMMqcXr:1␤------> t $n] { our sub b { $n } }; say (Foo[5])⏏::n; # :(␤ expecting any of:␤ postfix␤ infix sto…»
moritz vendethiel: I think you you must use a method
vendethiel moritz: then I need an instance
lizmat hopes that rindolf is finally looking at the *current* state of things
moritz: your change is going to be incompatible with another opt I'm doing right now 16:03
masak as someone who is into Sci-Fi, he should have a vested interest in staying current with the version closest to the future :) 16:04
moritz lizmat: :(
lizmat so it will disappear
moritz lizmat: :-)
lizmat the result will be better :-)
vendethiel moritz: actually, I don't think I can encode type-level SKI into P6's types
because I'd need to have in-role templated type aliases
moritz lizmat: if that brings us more than the 4%, go ahead
vendethiel template<class T> using ...;, or type T[F] = ... 16:05
masak vendethiel: and ::T is not enough?
vendethiel masak: where?
m: class F[::T] {}; # :(
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/dkYJogXBsy␤Unable to parse class definition␤at /tmp/dkYJogXBsy:1␤------> class F⏏[::T] {}; # :(␤ expecting any of:␤ statement list␤ prefix or term…»
moritz role 16:06
vendethiel I know, but it's why I'm sad
why only roles?
lizmat moritz: again 11%
masak vendethiel: that has occurred to me a couple of times recently too.
moritz lizmat++
masak vendethiel: but you can essentially ignore classes and just use roles. that should work.
vendethiel masak: yeah; 'guess so :) 16:07
16:07 Ven joined
jnthn lizmat: If you want to remove another allocation per line: $!ins could be a native int. 16:07
masak m: role R[$] { method foo { say "one" } }; role R[$, $] { method foo { say "two" } }; say R["OH"]; say R["OH", "HAI"] 16:08
camelia rakudo-moar 4a7429: OUTPUT«(R[Str])␤(R[Str,Str])␤»
masak m: role R[$] { method foo { say "one" } }; role R[$, $] { method foo { say "two" } }; say R["OH"].foo; say R["OH", "HAI"].foo
camelia rakudo-moar 4a7429: OUTPUT«one␤True␤two␤True␤»
masak m: role R[$] { method foo { say "one" } }; role R[$, $] { method foo { say "two" } }; R["OH"].foo; R["OH", "HAI"].foo
camelia rakudo-moar 4a7429: OUTPUT«one␤two␤»
lizmat jnthn: tried that, it breaks building
will look at that later 16:09
Ven m: role Foo[::T] {}; subset Bar of Foo[Int];
camelia ( no output )
Ven hmm mmh
m: role Foo; role Bar[Foo | Str] {}; # probably will blow up 16:10
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/fRRfGYNz_h␤Unable to parse expression in generic role; couldn't find final ']' ␤at /tmp/fRRfGYNz_h:1␤------> role Foo; role Bar[Foo | ⏏Str] {}; # probably will blow up␤ …»
jnthn lizmat: OK. Or I can take a peek, but reviewing/working on timotimo++'s gen2 GC tuning patch first.
TimToady you can't use | or & in signatures, it already means something else
Ven TimToady: what does it mean, then? 16:11
TimToady |c is a capture, &foo is a routine
and we don't enforce ttiar inside sigs
Ven ooh, actually, I just encoded them :D. 16:12
well, I *kinda* cheated.
TimToady so there aren't really operators in signatures
Ven masak, moritz: gist.github.com/Nami-Doc/5c4c622e2613b96bfad7
masak vendethiel: you can probably use `where` clauses for what you want. 16:13
masak looks
Ven this correctly prints "3"
dalek kudo/nom: 4d55aa5 | moritz++ | src/core/ListIter.pm:
save two containers in ListIter.reify
kudo/nom: aa7c060 | moritz++ | src/core/MapIter.pm:
Save a few more allocations in MapIter.reify
moritz oh dammit, I didn't want to push the last commit
I haven't tested it yet
masak Ven: I think you can do without .new there
moritz be doubly impressed if it works anyway
16:13 brrt joined
TimToady and .plan is known to be broken on subscripting 16:14
masak Ven: that's a cute use of subset that I think you're the first one to do.
Ven am I ? Yay :).
masak Ven: did you try `constant`, though?
should work, too.
TimToady m: my @a = 1,2,3; @a.plan: 4..100; say @a
Ven masak: I did, earlier in the backlog. Did not find the syntax to access it
camelia rakudo-moar 4a7429: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 8…»
TimToady that part works
16:14 zakharyas left
Ven masak: indeed - works without the new!! 16:14
TimToady but it hangs in the while loop in reify if you try to subscript 16:15
moritz sorry, my last commit broke setting compilations
s/s$//
Ven if I can get constant working, I'd be happy to say I'm the first to demonstrate p6 types are (not really) turing-complete
moritz I'm testing a fix now; if it doesn't work, I'll revert
m: say Int.Int
camelia rakudo-moar 4a7429: OUTPUT«(Int)␤»
Ven Oooh, I got a segfault! 16:16
dalek kudo/nom: 815b034 | moritz++ | src/core/MapIter.pm:
Revert "Save a few more allocations in MapIter.reify"

This reverts commit aa7c060894dafbbf266df31742db02284e019122.
Ven gist.github.com/Nami-Doc/f0232a94cec52f0ec14c <- this segfaults here :)
and this `REPR:null`s: gist.github.com/Nami-Doc/63603a232733db06df8d 16:17
Free bugs for everybody \o/
masak there's probably something submittable in there, but it doesn't look golf'd. 16:18
segfault reproduced. golfing.
Ven ah, thanks :)
Ven proceeds with equality now ...
dalek kudo/nom: c53772d | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm:
Optimize IO.lines a bit more

Reading /usr/share/dict/words: 3.941s -> 3.468s (12%)
16:19
Ven well, I won't prove commutivity or w/e tho :P 16:21
masak m: role S[::N] { N::x } 16:22
camelia rakudo-moar 4a7429: OUTPUT«(signal )»
masak submits rakudobug
16:22 anaeem1 joined, dolmen left
masak m: sub foo(::N) { N::x } 16:22
camelia rakudo-moar 4a7429: OUTPUT«(signal )» 16:23
Ven masak++ # golfing while I'm having fun
16:23 timotimo left
masak m: my (::N); N::x 16:23
moritz could imagine that masak++ is also having fun
camelia rakudo-moar 4a7429: OUTPUT«(signal )»
masak definitely having fun :)
Ven well then, that's nice :d.
moritz m: (my ::N)::x
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!===␤Type 'N' is not declared␤at /tmp/kBVLYH4p7d:1␤------> (my ::N⏏)::x␤Malformed my␤at /tmp/kBVLYH4p7d:1␤------> (my ::N⏏)::x␤ expecting any of:␤ scoped declarat…»
moritz m: (my (::N))::x 16:24
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/b3ASLhGiCt␤Two terms in a row␤at /tmp/b3ASLhGiCt:1␤------> (my (::N))⏏::x␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix…»
lizmat jnthn: the reason I could not make $!ins a native int:
16:24 kaare__ joined
lizmat m: class A { has int $.a = 42 }; say A.new 16:24
camelia rakudo-moar 4a7429: OUTPUT«Cannot modify an immutable int␤ in block at src/gen/m-CORE.setting:957␤ in method BUILDALL at src/gen/m-CORE.setting:912␤ in method bless at src/gen/m-CORE.setting:901␤ in method new at src/gen/m-CORE.setting:885␤ in block <unit> at /tmp/Hl…»
16:24 anaeem1 left
jnthn lizmat: Why do we need to assign to it there? 16:24
Doesin't it start at zero? :) 16:25
lizmat ah, good point
Ven well, p6 is powerful, right.
FROGGS itz / lizmat: aye, sergot and me are working on a XML::LibXML port, and after that on a. XML::Compile port
Ven encoding GADTs with roles is fun :DDDD
btyler hi all. two NativeCall questions: 1) should it work with static libs? it seems it only search for the shared lib object name for the platform (.so or .dylib on osx), and when I specified "libmarkdown.a" it still could not locate. lib is in the path, compiling as a shared lib got NativeCall to find it
moritz btyler: I don't see how it could work 16:27
btyler: after a static library has to be compiled into an executable
btyler: whereas nativecall loads library dynamically (it's not a C linker)
btyler 2) libmarkdown performs most of its work on **char buffers that get passed to functions. life would be simple and lovely if I could pass it a reference to a p6 string, but I haven't been able to make that happen, so I tried giving it a reference to a CArray[int8], but the lib can't seem to fill it with anything (still ends up with null values)
16:28 kaare_ left
btyler moritz: ok, cool, makes sense. my C is pretty much limited to reading source, so I didn't know if that was a reasonable expectation or not 16:28
masak Ven: I cannot reproduce your `REPR:Null` error from gist.github.com/Nami-Doc/63603a232733db06df8d , though: I get "No such method 'count' for invocant of type 'N'"
Ven masak: do you? maybe I'm a little bit outdated then
moritz btyler: as a workaround, a CArray[Str] gives you a pointer to a string
Ven m: role Zero { constant count = 0; }; role Suc[::N] { constant count = 1 + N.count };
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!===␤No such method 'count' for invocant of type 'N'␤»
geekosaur btyler, the only architecture that can reasonably load static libraries that way is PowerPC 16:29
Ven m: role Zero { constant count = 0; }; role Suc[::N] { constant count = 1 + N.count }; say "alive" # wtf?
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!===␤No such method 'count' for invocant of type 'N'␤»
Ven ooh.
m: constant foo = ...; 1
camelia rakudo-moar 4a7429: OUTPUT«(signal )»
Ven :D
masak submits rakudobug 16:30
Ven this seems to be my "lucky day". But not quite the implementor's...
btyler moritz, geekosaur: excellent, now I know :) I tried CArray[Str] but the array was still full of null values (well, the (Str) type object) at the end of things. I'll gist my code and then start throwing printfs into discount to see where things are choking
masak Ven: bug discoveries/reports are good for everyone, including the implementors. 16:31
Ven well, I'll go back to a method in the meantime 16:32
jnthn The pattern here seems to be "BEGIN time thing throws"...
Ven indeed 16:33
16:33 telex left
dalek kudo/nom: ff31e66 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm:
Save some more allocations with IO.lines

Reading "/usr/share/dict/words": 3.468 -> 3.344 (3%)
16:33
Ven m: role F { ... }; role A does F {}; role B[::T] does F {}; 16:34
camelia rakudo-moar 4a7429: OUTPUT«Unhandled exception: Could not instantiate role 'B':␤Not enough positional parameters passed; got 1 but expected 2␤ at <unknown>:1 (/home/p6eval/rakudo-inst-2/languages/nqp/lib/Perl6/Metamodel.moarvm:specialize:4294967295)␤ from src/gen/m-Metamode…»
lizmat jnthn++ for encouragement in that area
Ven m: role F { ... }; role A does F {}; role B[::T] {};
camelia rakudo-moar 4a7429: OUTPUT«Unhandled exception: Could not instantiate role 'B':␤Not enough positional parameters passed; got 1 but expected 2␤ at <unknown>:1 (/home/p6eval/rakudo-inst-2/languages/nqp/lib/Perl6/Metamodel.moarvm:specialize:4294967295)␤ from src/gen/m-Metamode…»
16:34 telex joined
Ven m: role F { ... }; role A does F {}; role B[::T] does F {}; say "alive"; 16:34
camelia rakudo-moar 4a7429: OUTPUT«alive␤»
Ven it ... works in the repl, but crashes in my file. duh 16:35
masak Ven: sometimes I feel I should write an "automated feature combination bug suggestion generator", that spits out "what happens if you use <X> and <Y> together in Rakudo". sometimes I find I would've found some bug sooner if I had had one and it'd given me inspiration. today <X> is "type capture parameters" and <Y> is "package namespace lookup". 16:36
Ven indeed
okay, now I'm really puzzled.
why does it crashes in my fail but not in my repl
16:37 yeahnoob left
Ven masak: gist.github.com/Nami-Doc/e781f62e46e3a530c8ab do you see any reason for the REPL to work 16:38
and for the script file to crash here?
oh-uh. Adding a `1` at the end of the file ... fixes it?? 16:39
dalek kudo/nom: a436ebe | moritz++ | src/core/MapIter.pm:
Avoid a few more containers in MapIter.reify
firefish5000 moritz: Thanks for the bug report! padre-completion fixed now. 16:41
moritz firefish5000: s/padre/panda/ I hope :-)
firefish5000 ...yes, padre is not supported... 16:42
Ven masak: I abandoned the idea of using a super-role to encode GADTs. just doesn't work :
=(
firefish5000 needs some coffee
leont How do I deal with «Unhandled exception in code scheduled on thread 140243200333568\nNo exception handler located for warn»? 16:45
Ven encoded + 16:46
TimToady leont: warn the developers! :)
moritz firefish5000: now I don't get any suggestions at all anymore when typing 'panda install Math::' and then hitting tab :(
TimToady if you have control of the warning, maybe try 'note' instead 16:47
if you don't, a CONTROL block might or might not be a workaround
I think more thought has gone into threading 'die' than into 'warn' though
it would be nice if such meta handlers would do a better job of printing out the subsidiary warning/failure 16:48
firefish5000 moritz, ensure you re-sourced it. It's working for me still. 16:49
Ven masak: I haz the ADD nao
moritz firefish5000: I did
16:49 Salai left
Ven doing the TIMES ... 16:49
firefish5000 ... what shelll are you on? (prehaps I borked other shells) 16:50
16:50 timotimo joined
moritz firefish5000: after 'panda install '<tab> it suggests --nodeps and --notests, but no module names 16:50
firefish5000: bash 4.3
Ven TimToady: thanks for type capture and type capture constraining :D.
16:51 nbrown___ joined
Ven masak: Okay, TIMES work. 16:51
TimToady Ven: If a language can't easily be abused, it can't easily be used. 16:52
16:52 M_o_C joined
Ven TimToady: and I like you for these words ;-) 16:52
firefish5000 moritz: the old version should have had that problem.. could you try the Development branch prehaps (should be the same as master though). 16:53
dalek kudo-star-daily: 753c9b6 | coke++ | log/ (14 files):
today (automated commit)
rl6-roast-data: 94227cf | coke++ | / (6 files):
today (automated commit)
Ven masak: gist.github.com/Nami-Doc/5c4c622e2613b96bfad7
masak looks
Ven Note that I'm cheating because I'm not (YET) providing operations on the type-level.
I'm afraid I can't do that right now, since there's no way to access a role's type parameter (AFAIK?)
moritz you can make it accessible 16:54
Ven m: role F[::T] {}; say F[Int].T;
camelia rakudo-moar 4a7429: OUTPUT«No such method 'T' for invocant of type 'F[Int]'␤ in block <unit> at /tmp/iRpI01zqNQ:1␤␤»
Ven moritz: can I :)?
moritz role Foo[::T] { method of() { T } }
Ven true that :p
moritz m: role Foo[::T] { method of() { T } ; say Foo[42].of
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/tdiaiev0LS␤Unable to parse expression in block; couldn't find final '}' ␤at /tmp/tdiaiev0LS:1␤------> :T] { method of() { T } ; say Foo[42].of⏏<EOL>␤ expecting any of…»
lizmat SPW shutting down &
16:54 lizmat left
moritz m: role Foo[::T] { method of() { T } } ; say Foo[42].of 16:54
camelia rakudo-moar 4a7429: OUTPUT«(Int)␤»
moritz m: role Foo[$x] { method of() { $x } } ; say Foo[42].of 16:55
camelia rakudo-moar 4a7429: OUTPUT«42␤»
[Coke] massive failures on the JVM today.
rakudo.moar down to a single failure.
parrot still failing the same tests since TimToady's divby0 change.
Ven can I make a role ... invocable ? ie Role[F, T]()
16:55 nbrown___ left
masak Ven: I was surprised at lines 33 and 45. aren't you supposed to define those in terms of Suc and Add, respectively? 16:56
moritz Ven: try giving it a method postcircumfix:<( )>(|c) { }
TimToady [Coke]: but there's an #if parrot in there that restores the fail on parrot, so I don't see how that can be the cause
firefish5000 moritz, just opened a new shell, ran git clone, sourced, and it workd. could you run _panda_modules and see if it outputes anything 16:57
moritz firefish5000: it doesn't
[Coke] TimToady: I agree that should have resolved the issue. 16:59
16:59 glumm left
[Coke] well, avoided the issue. 16:59
firefish5000 just to be sure, you havn't upgraded rakudo/moarvm etc which would change perl6's inst dir to a new and clean one have you?
moritz firefish5000: I upgraded rakudo, and rebootstrapped panda. Install dir is stil the same as before. 17:00
[Coke] TimToady: I'll see if I can dig deeper once I unbust jvm.
moritz firefish5000: and yes, I pulled and started a fresh shell
firefish5000 moritz, could you give me the output of perl6 -e 'for @*INC { say $_.Str if $_.^name === "CompUnitRepo::Local::Installation" ;}', (feel free to change your homedir) 17:01
17:02 SamuraiJack_ joined
firefish5000 I havn't used rakudobrew so I havn't tested it yet. 17:02
17:04 tinyblak joined
timotimo i'm glad to see all these performance tunings in the backlog 17:05
Ven masak: yes, indeed! 17:06
masak: that's why it's still called "cheating"
timotimo The List Refactor might end up blowing us all away with the improvement it brings to performance everywhere ...
Ven masak: I need to deconstruct it, etc, and return a type.
But I guess I'll head out tonight as well, not in the mood for the computer
masak: (also, those 0s should be ZEROes) 17:07
moritz firefish5000: /home/moritz/p6/rakudo/install/languages/perl6 17:08
/home/moritz/p6/rakudo/install/languages/perl6/site
17:08 tinyblak_ joined
[Coke] I'm getting this building rakudo.jvm: ===SORRY!=== 17:09
control operator crossed continuation barrier
let me try a -j1 build.
17:11 tinyblak left
vendethiel masak: heading out right now. I'll finish that later :-). 17:12
I still believe that my code has the potential to find a few new segfaults haha
m: role infix:<***>[::T1, ::T2] { method Str { "{T1}|{T2}" } }; say (Str *** Int)
camelia rakudo-moar 4a7429: OUTPUT«===SORRY!=== Error while compiling /tmp/kIWNrnfivl␤Two terms in a row␤at /tmp/kIWNrnfivl:1␤------> hod Str { "{T1}|{T2}" } }; say (Str *** ⏏Int)␤ expecting any of:␤ postfix␤ infix stopper…»
vendethiel ha; too bad :D. 17:13
vendethiel really likes agda's parsing, which is quite powerful: `if_then_else_` for example, which you can then implement as `if cond then res1 else 2
vendethiel ` (or `if_then_else cond res1 res`) 17:14
masak ooh
17:15 Ven left
firefish5000 moritz, I have changed two lines that would affect panda install, but _panda_modules is completly unchanged and should output a list of modules. 17:16
vendethiel m: role _Mult_Impl[::T1, ::T2] { method Str { "{T1}|{T2}" } }; sub infix:<***>(::T, ::T2) { _Mult_Impl[T, T2].Str }; say Int *** Str 17:17
camelia rakudo-moar 4a7429: OUTPUT«No such method 'Stringy' for invocant of type 'T'␤ in method Str at /tmp/KJ6lrdHaxq:1␤ in any at src/gen/m-Metamodel.nqp:1440␤ in sub infix:<***> at /tmp/KJ6lrdHaxq:1␤ in block <unit> at /tmp/KJ6lrdHaxq:1␤␤»
vendethiel m: role _Mult_Impl[::T1, ::T2] { method Str { "{T1.gist}|{T2.gist}" } }; sub infix:<***>(::T, ::T2) { _Mult_Impl[T, T2].Str }; say Int *** Str
camelia rakudo-moar 4a7429: OUTPUT«No such method 'gist' for invocant of type 'T'␤ in method Str at /tmp/cqTzv_20d4:1␤ in any at src/gen/m-Metamodel.nqp:1440␤ in sub infix:<***> at /tmp/cqTzv_20d4:1␤ in block <unit> at /tmp/cqTzv_20d4:1␤␤»
17:18 BizarreCake joined, M_o_C left
firefish5000 moritz, I have to go, but ill stay online and read anything highlighted when I come back (~6hr), 17:18
17:18 M_o_C joined
firefish5000 prehaps try executing a panda command (if you havn't already) and maybey it will generate a new projects.json, or check if a a /panda/projects.json exists in any of the inst: locations (if so, it should be detected) else, I borked it somehow..(I blame exhaustion) 17:22
moritz firefish5000: I'll play with it a 'tod;t n 17:29
that was supposed to be "a bit" at the end :-) 17:31
17:31 denis_boyun left
pmurias nine: inline_perl5.pl is the Inline-Perl5 repo is outdated 17:32
17:34 brrt left, akaseki joined 17:42 molaf joined 17:43 tinyblak_ left 17:45 Akagi201 joined 17:46 tinyblak joined
moritz eeks, I get lots of NativeCall test failures 17:50
expected 'OpaquePointer' but got 'Whatever'
seems to be the common theme
17:51 nbrown___ joined
moritz maybe related to Whatever changes in rakudo today or yesterday 17:53
timotimo sounds likely 17:54
17:55 leont left, leont joined
leont And then I crashed my computer using perl6 (death-by-swap 17:56
colomon NativeCall passed for me ~14 hours ago in the smoke test
leont )
17:56 nbrown___ left
timotimo leont: luckily, we're fast at allocating stuff ;) 17:56
colomon: i believe the whatever changes are at most 12 hours old 17:57
colomon looking at the commit log in github, it looks like there was a batch 17 hours ago and a batch 11 hours ago
timotimo oh
i believed wrong, then
17:57 zakharyas joined
leont It seems I made the grammar engine go recursive 17:58
TimToady is NativeCall using * for something idiosyncratic?
leont Still, that should fail more gracefully
TimToady leont: that's not difficult, if you try to do left recursion; we're not trying to be LL(*)
itz LWP::Simple doesn't decode the Buf if the web server doesn't supply a charset (which seems common) 17:59
leont It was a typo, not a parsing cheat
TimToady well, $* is known to be a very short infinite loop :) 18:00
m: '' ~~ /$*/
camelia rakudo-moar 4a7429: OUTPUT«(signal )»
TimToady ooh, signal before timeout 18:01
18:01 brrt joined
TimToady sure would be nice if it would say *which* signal... 18:01
timotimo it says so right between "signal " and ")"
jnthn Aye. I guess it mighta been OOM-killed 'cus it built up a huge set of backtracking points... 18:02
TimToady wait, lemme write a regex to parse that
colomon moritz: yup, duplicated your fail
sub Argless() is native('./01-argless') { * } 18:05
Could that be the troubling Whatever?
errr, no, because that one works 18:06
nine pmurias: thanks, good catch!
colomon I don't see any sign this is actually related to Whatever?
nine will fix that once I can sneak away from the family gathering 18:09
colomon okay, NativeCall still worked as of a3262f65704cd4c1ac26c5ceb82dae22aac92657 18:12
18:12 akaseki left, SamuraiJack_ left 18:14 molaf_ joined, teodozjan joined
dalek kudo/nom: 244026e | jonathan++ | src/core/control.pm:
Optimizations to exception throw, returning.

Make the functions more inliner-friendly and avoid some boxing.
18:15
kudo/nom: 4896509 | jonathan++ | src/core/Str.pm:
Further optimize chomp.

This avoids a couple of string allocations.
TimToady does that help with $x .= chomp? 18:16
flussence every time I've looked in here today something's been made faster :D
jnthn TimToady: Yes
18:17 molaf left
jnthn TimToady: It means the only allocation that happens now in chomp is for the result, nothing intermediate. 18:17
18:17 akaseki joined
TimToady would be nice to figure out you can steal it, and do it in place 18:17
18:17 akaseki is now known as Salai 18:18 zakharyas left
jnthn That's Really Hard. 18:18
colomon NativeCall fails with 6ff79a9a293aaee5051a34d5184fe7f3d161f1ed
afk # time to read aloud
18:19 teodozjan left
jnthn (Basically, needs escape analysis) 18:20
masak sounds more like borrowed pointers. 18:22
but maybe they overlap somewhat.
18:22 FROGGS left
TimToady well, hopefully IO can just precalculate the chomp without copying, in any case 18:22
jnthn TimToady: Yes, that's the goal for IO
TimToady: Doesn't hurt to have a faster chomp for any other use cases folks have for chomp, mind.
TimToady well, as was mentioned, ropes should let you just return a shorter strand 18:23
jnthn That's already happening here, afaik
TimToady okay 18:24
jnthn Though for short lines it's not always so wise
TimToady yes, large k
jnthn That is, the strand data structure can be bigger than the storage we'd need for the substring
I've not dealt with that yet. Will get to it soonish 18:25
btyler managed to get my buffer back out of discount :) github.com/kanatohodets/p6-text-ma...n-discount
moritz: thanks for the help, here's what I ended up doing (feels like cheating, but messing with CArray[Str] kept resulting in an uninitialized array): github.com/kanatohodets/p6-text-ma...ount.pm#L8 18:27
jnthn Think I'll get to some sleep for now, though :)
'night o/
18:30 spider-mario left, FROGGS joined, kaare__ left
FROGGS m: sub foo returns Str { * }; foo 18:30
camelia rakudo-moar 4a7429: OUTPUT«Type check failed for return value; expected 'Str' but got 'Whatever'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:646␤ in block <unit> at /tmp/NKtMJVOL5Y:1␤␤»
leont I'm trying to parse with arguments: one token passes an indent string to the next (for consistent unindenting). Is this sensible? 18:31
TimToady so why are we putting a * in native calls? wouldn't a simple {} do?
FROGGS TimToady: it should look like an empty proto 18:32
TimToady but it's not a proto, and who says it "should"
feels more like cargo culting to me
FROGGS leont: you just have to be careful that this does not have side effects, in case you use it as a look ahead
TimToady: s/should/was meant/ # germish 18:33
moritz but shouldn't the "is native" replace the routine anyway?
TimToady but surely the...what moritz sez
FROGGS yes, the body should never be run
leont FROGGS: I think I found a less "smart" way to work around, may be a better idea anyway
TimToady then it shouldn't matter what's in it 18:34
flussence the stuff I wrote with nativecall has { ... }, it kinda makes more sense to me
FROGGS leont: you can use a dynamic variable though, that should work
TimToady unless it really is calling the body and inserting the native call where * is
in which case it is a sort of proto
albeit with a different dispatcher
and apparently not detecting "onlystar" correctly, if * breaks it 18:35
FROGGS TimToady: no, NativeCall does its own magic by providing a postcircumfix:<( )> by the is native trait
TimToady does writing the body with {} change the buggy Whatever behavior? 18:36
since that's the only obvious Whatever I can see
is something trying to do analysis on the body even though it will be replaced maybe? 18:37
try with ... instead of * praps?
leont Great. The YAML module doesn't implement .load :-/
tadzik which one? I think we have at least two :) 18:38
FROGGS TimToady: ... works, an empty body doesnt
tadzik oh, we don't
TimToady so you just need a parser that pays attention to indentation :)
FROGGS because it statically checks the return type somehow 18:39
tadzik perhaps it should be renamed to YAML::Dumper
leont ingy: your TestML thingie is warning due to deprecated constructs you're using
FROGGS TimToady: that's why I cannot but a 'returns' trait on Inline::C subs, since the body contains just a string (to be compiled) 18:40
sbut/put/
grrr
s/but/put/
so... do I push the changes I made to NativeCall? 18:49
or do we roll back?
there are many modules that are broken now 18:50
moritz what change actually triggered the error?
leont I want to use a previous match value to substitute in another value, is that possible without a temporary? 18:51
FROGGS moritz: I dunno 18:52
though, I can bisect it easily
TimToady leont: not easily; use a temp
leont I'm not doing «.subst(/ ^^ <$indent>/, '', :g)», but I can't pass it $<indent> instead, right?
s/not/now/
TimToady well, by normal lexical scoping, sure 18:53
but not for each application
not if $<indent> comes from a previous $/ 18:54
we traded that binding for cleaning up the \1 backref fiasco
so $0 now is the current match on both sides of s/// 18:55
and also for the ability to match any var literally
dalek volaj/stub_instead: 3592f0e | (Tobias Leich)++ | / (11 files):
replace { * } by { ... }
TimToady I'll note that a literal match of indent is going to fail with mixed tabs/spaces
leont I'll interpret the spec I'm working with as "must be consistent" 18:56
Surely, adding extra indenting to YAML was a good idea…
FROGGS uhh 19:00
moritz: we have a problem 19:01
brrt hmm... quick question. anybody here ever did a CS class, had to do a project, and found a library that claimed it implements 90% of your project
tadzik heheh hmm
brrt what would be the chances of that being OK with any given professor
tadzik I had a project to parse mbox once
moritz FROGGS: hm?
FROGGS moritz: when I change a source file or rakudo, the make file does not detect this, because the single files are not dependencies anymore
brrt mbox is the mail box in a file format 19:02
tadzik in that case chances would be close to 0, becuse the point was to teach people to write a parser
brrt rirc
iirc
tadzik correct
FROGGS moritz: so `make install` just copies over stuff, but does not recompile
brrt hmm
this is for distributed systems
moritz FROGGS: which file did you change?
brrt best way to figure out is to ask
FROGGS moritz: src/core/IO/Handle.pm
tadzik indeed
FROGGS moritz: I did `git checkout HEAD^` a few times 19:03
moritz FROGGS: well
19:03 lastofthe left
moritz FROGGS: src/core/IO/Handle.pm is pretty new 19:03
FROGGS: if you configured on a commit where it didn't exist, Makefile can't know about it
FROGGS huh 19:04
19:04 nick___ joined, rindolf left
nick___ yellow 19:04
moritz FROGGS: there's no way around reconfiguring when something in the build system changes
FROGGS moritz++ # you seem to be right
tadzik hello nick___
nick___ how is everyone doing 19:05
FROGGS I'm fine :o)
moritz I can't speak for everyone
19:07 raiph left
FROGGS .oO( Und? Dir geht's gut Heinrich? ) 19:07
nick___ well i was think of making web framework for perl, but for jvm platform. i notice in job a lot of company and corp use jvm env . should i focus on the jvm or parrot vm?
FROGGS wow, stage parse here was 32s right now... I've not yet seen something <34s
moritz nick___: either on the JVM or on MoarVM
nick___: parrot isn't developed all that much anymore 19:08
TimToady
.oO(must...not...make...monty...python...sketch...references...)
19:09
19:09 nick___ left
FROGGS nick___: when you develop in pure Perl 6, it will very likely work on JVM, MoarVM and Parrot at the same time 19:09
tadzik another satisfied customer
FROGGS TimToady: *g*
19:09 nick___ joined
FROGGS nick___: when you develop in pure Perl 6, it will very likely work on JVM, MoarVM and Parrot at the same time 19:09
TimToady you can say that again 19:10
19:10 xinming_ joined
FROGGS no, I'm sitting in a room of kids that are supposed to be asleep :o) 19:10
19:11 nbrown___ joined, darutoko left
leont nick___: if you are going to write such a framework, better make it an interesting one :-) 19:11
19:11 BizarreCake_ joined, xinming left, BizarreCake left
leont A Dancer port is a nice proof of concept, but perl6 has a much better chance of shining in an asynchronous framework 19:12
brrt of course we can use said library as a researchable example
FROGGS ... with an interesting name ...maybe a shout ...three letters should do
brrt can we do Mojo::Six
or maybe
MJ6
TimToady SIX!
FROGGS CGI!
TimToady MST! 19:13
brrt (like MI6 but with a J)
nick___ also rakudo is the only offical complier ?
brrt madness standard time
mst TimToady: WHAT
brrt no way man
rakudo is the official compiler of rakudo perl 6
FROGGS nick___: no, there is no official compiler... but rakudo is the best (feature wise)
brrt perl6 doesn't have a official compiler
any more than rakudo has an official target vm 19:14
moritz well, we can change that :-)
pmurias but rakudo is currently the most actively developed compiler
tadzik moritz: maybe we should
brrt hmm yeah, but we should be careful in differentiating between community overlap and technical goal overlap
tadzik or maybe it should be the reference compiler? :) 19:15
brrt no that would imply that the compiler would be the spec
and the roles are reversed
tadzik hmm, would it now?
well, sort of yes
brrt yes. no point in calling something reference if it isn't authoritive
i could live with recommended :-) 19:16
moritz recommends rakudo-m right now
FROGGS yeah
19:16 vendethiel left, MilkmanDan left, jdv79 left, xiaomiao left, muraiki left
TimToady if something passes roast, and doesn't match the behavior of some other "reference" compiler, it's still officially Perl 6, by current spec 19:16
moritz there you have it, a recommended compiler from somebody who has patched the spec now and then :-) 19:17
tadzik :D
TimToady so start writing more tests to bias roast in favor of rakudo :)
brrt lol
nick___ well , the rakudo lic says a person can redistrub the rakudo compiler the way he want with whatever logo or other name
moritz the last tests I wrote actually fail on rakudo :-)
FROGGS hopefully not for long :o) 19:18
moritz nick___: that's not quite what it says
nick___ do this mean someone redist it has to include the butterfly logo :P
brrt that's ok. bugs we can fix :-)
nick___ i am being more general
moritz nick___: if you redistributed rakudo as "Microsoft Word", you'd be in trouble
:-)
nick___ i know that 19:19
lol
TimToady nick___: if you fork, we'd prefer that you do so in a way that doesn't confuse people, is all
brrt speaking of forks
moritz fork bomb!
brrt i heard scala 'forked' today
or
the scala compiler did
TimToady I would note, however, that the butterfly is marked with a ™ 19:20
brrt which i think is uh.. unhappy for them
pmurias what's the recommended way of precompiling a module under mokudo
FROGGS pmurias: using panda
moritz pmurias: 'panda install .'
FROGGS I'd say
tadzik what a brand :)
moritz pmurias: though ufo && make might also work
FROGGS pmurias: provides you provide a META.info
provided*
nick___ why do we use a butterfly anyway?
19:21 lastofthe joined
TimToady because otters are out this year 19:21
FROGGS nick___: that is the logo of the language, not the compiler
hehe
nick___ true
moritz because that fat penguin already has other connotations
nick___ i miss the camel, it had more meaning
pmurias why is panda so slow?
TimToady we don't want Perl 6 known for being ugly
FROGGS pmurias: it isnt... at least not on moar 19:22
tadzik it's pretty fast on moar
moritz pmurias: cause it reads the json list of all packages
tadzik nick___: camel is actually an oreilly's trademark
timotimo moritz: is that really the reason?
pmurias 'panda help' takes 2.5s
nick___ so we cover it up with a butterfly?
timotimo oh ... that's true ;(
TimToady and, in fact, the butterfly is more meaningful than the camel
otters don't represent metamorphosis 19:23
pmurias is a 2.5s starup for panda expected
leont Can someone add raw.githubusercontent.com/Leont/ta.../META.info to the modules list for me?
FROGGS nick___: raw.githubusercontent.com/perl6/mu...amelia.txt 19:24
nick___ perl language is cool as it is, it has a lot depends. using a butterfly seem odd
brrt butterflys on the other hand do not represent resilience or long life
i think the thing with perl5 is mostly that it worked really well in a time that was in many respects simpler than today's 19:25
tadzik leont: on it
nick___ yea, but the project has a long history so does perl, we should use a animal that has more meaning, butterfly dont last long
brrt animals don't have any meaning per se
19:25 nbrown___ left
dalek osystem: 2e7b671 | (Tobias Leich)++ | META.list:
add TAP::Harness6 leont++
19:26
FROGGS tadzik: ha!
tadzik FROGGS: PFFTBT
nick___ if that was true no one would a animal for a logo
brrt it is humans who give meaning - or maybe other animals that communicate in a similar manner
timotimo pmurias: yeah, panda starts up quite slow indeed ;(
FROGGS brrt: cats! do not forget of cats!
colomon o/ # finished book, now need to prep noms for later
brrt do cats give meaning to other animals? maybe they do, but how would they communicate it? 19:27
FROGGS brrt: I think so by how they look at me
nick___ enlightenment how would butterfly would communicate with perl or people
TimToady by smiling
moritz meaningful wing flapping
FROGGS "you are disgusting, servant" 19:28
brrt causing hurricanes clearly
i'm very much of the opinion that a great deal of the animal kingdom is concious
i'm not so sure about sentient because i frankly have no idea what that means
moritz causing hurricanes that cause cosmic rays to alter bits in your PC's memory
TimToady you should also realize that a butterfly with a 3-meter wingspan has a correspondingly longer lifespan too
nick___ so being eating by a frog or cameleon 19:29
brrt but most animals are not so good at communication
19:29 vendethiel joined, MilkmanDan joined, jdv79 joined, xiaomiao joined, muraiki joined
brrt i doubt the physics of a 3-meter wingspan butterfly 19:29
given that butterfly wings are but two cell layers thick
moritz magically reinforced, of course
brrt although i have heard of 1-meter wingspan dragonfly's 19:30
TimToady well, she might be an ET that just looks like a butterfly
pmurias so if I want to play around with Inline-Perl5 I should write a META.info for that and install it with panda?
TimToady never said where he got the picture :)
nick___ ??Q?
leont dragonfly's are awesome
FROGGS pmurias: you could bug nine about the usage
leont flies
FROGGS moritz: the bad commit is: cc1965f... Bulid a * and ** during compile, and use them 19:31
brrt flies yeah
nick___ |'''| =^._.^= kitty
19:31 raiph joined
TimToady use of Unicode is encouraged here 19:31
ASCII is so...20th century 19:32
brrt what i'm wondering about is, are there any more moar-specific breakages for me to research
nick___ lol
brrt oh wait, i recall
hmm
i can do the force_gc thingy 19:33
TimToady
.oO(löl)
pmurias nine: how should I install Inline-Perl5?
nick___ \xF0\x9F\x98\xB8
nine I actually have no idea what would be needed to install Inline::Perl5. After all I'm an absolute Perl 6 n00b ;)
FROGGS m: say "\xF0\x9F\x98\xB8" 19:34
camelia rakudo-moar 4a7429: OUTPUT«ð¸␤»
nick___ U+1F638
if perf unicode lol 19:35
leont TimToady: 😸
FROGGS m: say chr(0x1F638)
camelia rakudo-moar 4a7429: OUTPUT«😸␤»
TimToady .u 😸
yoleaux U+1F638 GRINNING CAT FACE WITH SMILING EYES [So] (😸)
nick___ so back to the subject why are we using a butterfly
FROGGS m: say "\c[GRINNING CAT FACE WITH SMILING EYES]"
camelia rakudo-moar 4a7429: OUTPUT«😸␤»
FROGGS m: say "\c[GRINNING CAT FACE WITH SMILING EYES]".ord 19:36
camelia rakudo-moar 4a7429: OUTPUT«128568␤»
FROGGS m: say "\c[GRINNING CAT FACE WITH SMILING EYES]".ord.fmt('%#x')
camelia rakudo-moar 4a7429: OUTPUT«0x1f638␤»
nine But I'd appreciate any help or someone experimenting
pmurias I'm also a Perl 6 n00b :/
moritz nine: I know that one can write a Build.pm or so and panda will pick it up 19:37
nine You could just try and see how it goes :)
moritz nine: ... and that's about all I remember :(
can anybody remember a p6 module that uses that mechanism?
timotimo moritz: when did you last see if SVG::Plot works properly? :)
tadzik nine: I can help you with that
moritz ++tadzik
nine is only typing on his phone at a family gathering 19:38
nick___ ok, back to snakes
19:38 nick___ left
tadzik nine: I think your best shot is to compile things in Build.pm and compute the path to .so relatively to Inline/Perl5.pm 19:38
FROGGS .tell jnthn You've killed NativeCall! (rakudo/cc1965f makes it able to check the return type of { * }. There is a stub_instead NativeCall branch if that is the way to go)
yoleaux FROGGS: I'll pass your message to jnthn.
tadzik panda will install the .so somewhere alongside it 19:39
FROGGS nine: look at sergot/OpenSSL as a pattern
tadzik oh yes, that's a good one 19:40
moritz FROGGS: so the difference is that the * is now created at compile time, and thus the type known at compile time, and thus the error, somehow?
FROGGS moritz: yes
nine I'm already loading the .so from the dir where Perl5.pm6 is located
19:40 PersonX left
FROGGS nine: but you have to be careful, don't apply the `is native` trait directly 19:41
nine: because that would happen at compile time, which happens in a temp directory
nine FROGGS: ok, thanks 19:43
FROGGS lol: thedailywtf.com/Articles/Accuracy-i...hing!.aspx
pmurias tadzik: any ideas what is causing the 'panda help' slowness? 19:44
colomon so, dunno if someone figured this out along the way or not, but cc1965fba794c28ee80273ad5198674ff3be9082 seems to be what is causing the problems in NativeCall
tadzik pmurias: probably the loads of code it has
pmurias: but it might be parsing the json and not lazily building Ecosystem 19:45
pmurias loads of code? it's <726 lines
well =726 lines ;) 19:46
tadzik heh
it feels big alright :P
FROGGS colomon: look at what I '.tell'd jnthn :o) 19:47
TimToady how many stone is that?
pmurias stone?
FROGGS it is at least 23.4456 cups
tadzik that's less than a koku
FROGGS what's a koku?
tadzik it's the amount of rice to feed an adult man for a year 19:48
FROGGS :D
TimToady how hungry is he?
tadzik en.wikipedia.org/wiki/Koku
so yeah, koku is about 23-24 stone :) 19:49
colomon FROGGS: are you sure that's the exact problem? there seemed to be some successes and some failures in the NativeCall tests if you prove --verbose
tadzik oh, it was actually for a generic person, not neceserily a male
however you write neceserily
FROGGS colomon: all passes at the commit before that 19:50
pmurias reading the .json project file is a slow part for sure
colomon FROGGS: … maybe a better way of saying this is does your NativeCall branch pass all tests? 19:52
FROGGS colomon: yes, my branch passes all tests at rakudo/HEAD 19:53
there are tests that do not have a 'returns' trait, these pass anyway 19:54
colomon FROGGS++ 19:56
19:57 lastofthe left 20:01 Salai left, akaseki joined, akaseki is now known as Salai 20:04 BizarreCake_ left, glumm joined 20:11 brrt left 20:17 lastofthe joined, Sqirrel joined
timotimo m: my @series := 1, 1, *.rand + *.rand ... *; my @data = @series[^100]; 20:25
camelia ( no output )
timotimo m: my @series := 1, 1, *.rand + *.rand ... *; my @data = @series[^100]; say @data;
camelia rakudo-moar 4a7429: OUTPUT«1 1 0.990956539530755 1.14596832130274 0.594032977212282 1.22437501862986 0.469724590512463 1.43381736696177 1.66513142467329 1.39218025168342 2.53376430317992 2.28981422567561 2.42785688234683 1.11403423682945 2.78958838847796 2.93708793726731 3.013136638…»
timotimo huh.
Cannot call 'postcircumfix:<[ ]>'; none of these signatures match: ← this is what i get on my local REPL
but in non-repl it works 20:27
20:32 lizmat joined, Sqirrel left 20:36 lastofthe left 20:38 woolfy joined, tinyblak left
timotimo moritz: i'm apparently using your SVG::Plot wrong ... 20:40
perl6-m -e 'use SVG; use SVG::Plot; my @series := 1, 1, *.rand + *.rand ... *; my $plot = SVG::Plot.new(:width(800), :height(600), :plot-height(550), :data(@series[^100]), :x(^100)).plot(:lines)'
first it gives use of uninitialized value of type Any in numeric context in method plot at lib/SVG/Plot.pm:329 and then it gives Cannot coerce Inf or NaN to an Int originating from the * in in method y-ticks at lib/SVG/Plot.pm:382
TimToady sounds like another * that has to turn into ... 20:42
timotimo oh, no this is a multiplication * 20:48
20:50 lastofthe joined
timotimo plotting that series didn't turn out as fun as i hoped 20:51
20:51 ajr_ left
timotimo the one example in svg-plot that doesn't need a file from somewhere throws an exception 21:02
but the tests succeed ... so test coverage needs some improvements :) 21:03
hm, nothing's happening any more? :\ 21:09
21:10 raiph left 21:15 raiph joined 21:20 xenoterracide left
vendethiel 's back 21:36
21:36 nbrown___ joined 21:39 jack_rabbit joined
vendethiel github.com/rakudo/rakudo/commit/48...be8cac3R87 - maybe this warrants a comment? 21:40
not sure everybody knows the ASCII table by heart :-)
21:42 xenoterracide joined 21:44 BenGoldberg joined
lizmat vendethiel: was on my list of things to do... 21:46
vendethiel lizmat++ # teaching us ASCII
lizmat BTW, that optimization made my benchmark file load in 2.759s
so, that means we went from 5.8 to 2.8 seconds today
vendethiel wow :-). (people)++ 21:47
lizmat that's more than 2 times as fast
anyway, Str.lines will need a similar treatment
will do that sometime after I'm home again
for now, sleep&
vendethiel g'night :) 21:48
21:54 nbrown___ left 21:59 raiph left 22:01 lastofthe left 22:02 gfldex left 22:06 glumm left 22:12 gibbysan joined
vendethiel retupmoca++ 22:12
timotimo huh? 22:13
22:13 raiph joined 22:14 virtualsue left, gibbysan left
vendethiel timotimo: made my module panda-installable 22:15
also made it work with case-sensitive filesystems
he's doing it again: github.com/afiskon/p6-xml-parser-tiny/pull/4 :-) 22:16
retupmoca vendethiel: I like green checkmarks on the smoke tester :)
vendethiel retupmoca: I can guarantee you that my module passes locally :P
retupmoca yeah, the tests failed because I'm on linux (case sensitive) 22:17
and the file that didn't build looked like your tests may not have hit it
so only panda tried to compile it
timotimo sweet 22:18
vendethiel yes, either that or I didn't re-push after fixing the typo locally
retupmoca or that
dalek ast: 4ef1028 | coke++ | S17-promise/start.t:
use std. RT #xx format
22:27 xenoterracide left 22:31 Psyche^ joined 22:32 raiph left 22:35 Psyche^_ left
retupmoca m: role Foo { method bar { ... } }; say 1 22:40
camelia rakudo-moar 4a7429: OUTPUT«1␤»
retupmoca that seems to die on my local machine 22:41
with master/master/nom
I get "Unhandled exception: Method 'bar' must be implemented by Foo because it is required by a role" 22:42
22:47 pmurias left
leont I just saw that error 10 minutes ago, but moved on instead of figuring out what was wrong, assuming I had screwed up 22:52
22:55 nebuchadnezzar left, nebuchadnezzar joined, raiph joined
retupmoca ... and Game::Crypt passes tests with prove, but fails tests with panda :( 22:58
tadzik precomp issue probably
retupmoca oh right, I didn't test precomp 22:59
[Coke] looks like jnthn++ busted rakudo-jvm with bdf153c23d893e0b6da1f5ee9d03d2f7c91f7b1d 23:00
23:05 colomon left 23:12 xragnar_ joined, xragnar is now known as Guest8160, Guest8160 left, xragnar_ is now known as xragnar 23:13 raiph left
vendethiel .tell ingy I started a scala port of your stuff, and ended up fighting its regexps for around 3hours :d. they're so much better in 6 ;) 23:14
yoleaux vendethiel: I'll pass your message to ingy.
retupmoca gist.github.com/retupmoca/6def9837388382a054b9 23:21
^ can someone duplicate this as well? Just to make sure
I suppose I should learn how to bisect, as well... 23:23
TimToady is still learning how to monosect... 23:28
kurahaupo hand TimToady a monopole magnet 23:40
TimToady finds himself drawn toward the East Pole 23:41
leont «Invocant requires an instance, but a type object was passed» this is not a very useful error without any further information 23:47
diakopter TimToady: not the inner pole? 23:50
TimToady leont: indeed, we call that LTA (Less Than Awesome) 23:52
and people who make error messages awesome are held in high regard around here 23:53
23:55 colomon joined