»ö« 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.
tony-o colomon: sorry it took so long to take PR, phone wouldn't let me do it 02:24
.tell brrt i can't duplicate the moar segfault on yosemite, it built 3 times without failure - 02:25
yoleaux tony-o: I'll pass your message to brrt.
tony-o oops - that was for bbkr
.tell bbkr couldn't duplicate moar build segfault on yosemite. was able to reproduce your bug @ rt.perl.org/Public/Bug/Display.html?id=122803 02:27
yoleaux tony-o: I'll pass your message to bbkr.
tony-o .tell brrt sorry, previous message was meant for someone else ^^ 02:27
yoleaux tony-o: I'll pass your message to brrt.
colomon tony-o++ 02:49
dalek osystem: c28dce0 | colomon++ | META.list:
Give IoC back to Jason May.
03:16
tony-o colomon: what OS are you on? the META.info still causes it not to build on on OSX - Pluggable is available in the ecosystem, not sure why Panda won't recognize it 03:29
make VIMRUNTIMEDIR=/usr/share/vim/vim74 03:30
colomon I'm on both OS X and Linux. I'll give it a try. 03:32
Hmmm. I get HTTP::Server::Async test failures building on Linux. 03:33
tony-o i'm getting those too, are you running panda with --nodeps
colomon no? I don't even know what --nodeps is
tony-o i'm trying to fix them but yosemite update broke my vim
panda install --nodeps ignores dependencies in Meta 03:34
colomon Pluggable successfully installed on both of them.
you might need to do panda update?
tony-o i'll give it a shot
colomon I get the same test failures on OS X, too
tony-o hmm..does panda attempt to get Pluggable for you? i removed it and panda install fails for HTTP Server Async 03:38
with the error it can't find Pluggable on the system, with no attempt to download it
tony-o colomon: ^^ 03:45
colomon tony-o: yes, panda successfully installs pluggable.
what rakudo are you using?
tony-o his is perl6 version 2014.09-261-g8bcdfd2 built on MoarVM version 2014.09-54-g03ac9a7 03:46
masak g'm'ng, #perl6 06:28
raydiak \o masak
raydiak g'night #perl6 06:33
moritz tadzik: ping 07:18
tadzik moritz: pong
I didn't oversleep :)
masak oversleep for what?
today is marked as a Perl 6 day in my $work calendar.
I'm going to steal some of it for $work, but I will also make it a goal to blog today.
moritz tadzik: just wanted to make sure you got my email and have all the relevant contact information
tadzik moritz: I think so :)
moritz masak: also, t5 :-)
masak *nod*
moritz++
tadzik ;)
moritz: expect me to do a dry-run for the correctness of the phone number provided :)
sergot hi o/ 07:57
masak hi, sergocie \o
sergot cześć masaku! :) 07:59
brrt tony-o - i can try and make moar segfault on os x yosemite too :-) 09:50
yoleaux 02:25Z <tony-o> brrt: i can't duplicate the moar segfault on yosemite, it built 3 times without failure -
02:27Z <tony-o> brrt: sorry, previous message was meant for someone else ^^
smls How usable is «Buf» these days? 09:57
smls And what's the equivalent of Perl's «unpack» (for parsing binary files?) 09:58
grondilu it is writeable, if that's what you mean (IIRC not so long ago, it wasn't). 10:00
moritz smls: Buf has a method unpack 10:01
smls: not very complete though
grondilu but you cn't use the my Buf $b .= new idiom
moritz smls: take a look at src/core/Buf.pm 10:01
smls ok 10:10
smls What features that are typically associated with functional languages, does Perl 6 have? 10:34
I can think of: 1) Immutable data types, 2) Lazy lists, 3) Simple pattern matching (in the form of multi-dispatch)
What else?
moritz easy ways to create functions/lamdas/callables 10:38
Timbus i was typing that, but i couldnt quite word it 10:39
moritz lexical scoping (as opposed to method lookup semantics)
closures
Timbus .assuming
autothreading w/ hyper operators? 10:40
is that still a thing
masak declarative ways of saying things, as opposed to imperative 10:41
moritz I guess now would be a good time to implement autothreading 10:41
well, auto-concurrency with hypers 10:42
Ven www.reddit.com/r/programming/commen..._atscript/ 10:45
More alt-js languages by google!
Timbus im always both angry and happy that people are constantly writing javascript alternatives. 10:47
moritz well, there seem to be two approaches
the first is to build rather thin layers over javascript
those typically solve some of the syntactic odditites 10:48
or you can build a "full" cross-compiler
then you typically end up with something that's slow, and/or bears no resemblance with JS anymore
which might or might not be a plus :-)
Timbus i just want everything to target asmjs or something similar 10:52
Ven that doesn't make sense. 10:53
You can't "target" asm.js for most of the languages out there.
Dart has no type system, for example
masak Ven: I saw this language show up in slide photos from ngEurope yesterday :) 10:54
Ven eh. I know there's scalaIO going on here (in france) right now, but I can't go :(
masak Ven: it makes sense-in-retrospect that they would go in this direction with Angular and alt-js
Ven definitely. Dart sucks :) 10:55
Ven *g* so early in the morning
sometimes I think I should just make LiveScript target typescript as a backend :-) 10:56
Timbus Ven: im vaguely aware that asmjs is pretty minimal, but i would assume you can build complicated things on top of it? i guess ill settle for 'or something similar' then
Ven Timbus: there are no strings in asm.js 10:57
Timbus aa
Ven we sometimes get people asking us to "target asm.js" on the coffee bugtracker. That doesn't make any sense. We don't have types.
TypeScript is adding untagged union types L( 10:58
:(*
lizmat good *, #perl6! 11:01
Ven o/, lizmat
lizmat \o Ven 11:02
I guess PerlJam is still working on the release, as I have not seen an announcement yet ?
dalek ast: d088d6b | (Elizabeth Mattijsen)++ | S05-mass/properties-general.t:
Fudge failing tests on parrot for release
11:08
ast: 5e77113 | (Elizabeth Mattijsen)++ | S02-names/symbolic-deref.t:
Unfudge now passing test on parrot/jvm for release
11:16
lizmat JVM is now clean for me as well
parrot has some long-standing fails on OS-X that I think survived many release already :-(
Ven nice :-) 11:17
bartolin lizmat: some of the parrot failures (e.g. those from S19-command-line-options/02-dash-e.t) are hopefully gone with the new parrot (6.9.0). 11:19
lizmat so maybe we should bump the PARROT_REVISION?
lizmat will check
bartolin lizmat: I didn't try to build with the new parrot.
lizmat: also I found a test in S02-names-vars/perl.t which sometimes (rarely) fails on JVM. I think it doesn't make sense to fudge it now, but I'm looking at it. 11:21
lizmat is building with 6.9.0 parrot
bartolin m: for 1..1000 { my $a = rand; say $a if $a.chars > 19 } 11:22
camelia rakudo-moar 315ec6: OUTPUT«0.000648212182777552␤»
bartolin j: for 1..1000 { my $a = rand; say $a if $a.chars > 19 }
camelia rakudo-jvm 315ec6: OUTPUT«Can't open perl script "/home/camelia/jvm-rakudo/eval-client.pl": No such file or directory␤»
bartolin hmm. locally I got much more results for JVM -- and the results look different, e.g.: 11:23
0.029514869958183088
0.015189550239314453
0.012097777536452803
m: my %h; %h{rand.chars}++ for 1..1000; say %h
camelia rakudo-moar 315ec6: OUTPUT«"14" => 1, "15" => 8, "16" => 80, "17" => 807, "18" => 92, "19" => 11, "20" => 1␤»
bartolin locally: perl6-j -e 'my %h; %h{rand.chars}++ for 1..1000; say %h' 11:24
"16" => 8, "17" => 65, "18" => 620, "19" => 270, "20" => 37
somehow the numbers generated on JVM look different
m: for 1..500 { my $t1 = rand; my $t2 = EVAL($t1); if $t1 ne $t2 { say "$_: ERROR:\n ", $t1, "\n ", $t2; } 11:28
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/_MzWJq98FL␤Unable to parse expression in block; couldn't find final '}' ␤at /tmp/_MzWJq98FL:1␤------> ay "$_: ERROR:\n ", $t1, "\n ", $t2; }⏏<EOL>␤ expecting any of…»
bartolin m: for 1..500 { my $t1 = rand; my $t2 = EVAL($t1); if $t1 ne $t2 { say "$_: ERROR:\n ", $t1, "\n ", $t2; } }
camelia rakudo-moar 315ec6: OUTPUT«182: ERROR:␤ 0.842760512692125␤ 0.84276051269213␤196: ERROR:␤ 0.385157163275392␤ 0.38515716327539␤302: ERROR:␤ 0.6708292500736␤ 0.670829250074␤»
lizmat ===SORRY!=== 11:30
I'm missing some needed files:
/Users/liz/Github/rakudo.parrot/install/bin/ops2c
(Perhaps you need to 'make install', 'make install-dev',
or install the 'devel' package for NQP or Parrot?)
bartolin maybe thats not the problem in the test file (since that runs fine on moar even when I run it 1000 times or more)
lizmat: when I tried to build with latest parrot earlier this month, I got the same failure. 11:32
lizmat hmm... I didn't pull parrot, maybe that's the problem
bartolin lizmat: this looks like a relevant commit: github.com/parrot/parrot/commit/c28873be67
maybe there are changes needed in rakudo to reflect the changes in parrot? (only guessing) 11:33
lizmat giving up on building rakudo with parrot 690 for now 11:43
dalek kudo/parrot-690: 47644a4 | moritz++ | / (3 files):
ops2c is now called parrot-ops2c
11:46
lizmat tries again :-) 11:48
moritz I'm now testing whether NQP changes are necessary 11:49
(this is a shot in the dark, mind you)
Ven poor dark. 11:52
masak .oO( how do I shot dark ) 11:53
Ven
.oO( next you'll shoot minut )
minus*. sight.
masak sight, indeed.
Ven .oOo( next you'll shoot )
masak: 'tis but my keyboard!
masak verily. 11:58
lizmat moritz: looks like the only other thing needed is a PARROT_REVISION bump in nqp 12:00
OTOH, I'm seeing new spectest failures :-(
would *not* recommend bumping it *before* the release 12:03
of this month's rakudo
Ven www.youtube.com/watch?v=v3XoWi0XbZk c++ is fun! 12:06
(that'd make leont happy :P) 12:07
(leont++, even)
Ven (I admit I sort of miss type arguments on subsets :P) 12:11
PerlJam greetings
Ven subset X of ::T :D.
o/, PerlJam
PerlJam Yes, I'm still working on the release.
bartolin lizmat: in that case someone needs to revert the latest commit to rakudo, or? 12:12
lizmat bartolin: it was in a branch
so no revert necessary 12:13
bartolin oh, overlooked that!
PerlJam I had some family stuff last night that prevented completion and I've got a doctor appointment in a little while. I likely won't get to finish until later this afternoon
PerlJam in any case, there were lots of parrot failures when I ran stresstest. 12:13
leont Ven: thanks, that does sound interesting 12:14
lizmat gist of failures with parrot 6.9.0: gist.github.com/lizmat/05a8462ffe4d6b0a8e52
Ven leont: talk is pre-c++14, but still, metaparse and metamonad are incredible pieces of c++
lizmat PerlJam++ nonetheless!!
leont C++14 is a nice addition, but not nearly as big/important as C++11 12:15
Ven well, constexprs relaxations are nice for metaprogramming :-)
leont True!
They seem to have switched to a regular release schedule, much like perl{5,6}, except that their iteration speed is slower 12:16
PerlJam Here's what I saw for parrot 6.8.0: gist.github.com/perlpilot/85c1d10dedc6e651df66 12:18
and now I have to move some kids around prior to my appointment 12:19
PerlJam bbl & 12:19
lizmat wishes PerlJam a good visit 12:19
moritz lizmat: there are reasons I'm doing that stuff in a branch :-) 12:21
JimmyZ can't open irclog.perlgeek.de :(
lizmat and good ones at that!
lizmat JimmyZ: works ok for me, Great Firewall issues ? 12:22
moritz JimmyZ: I can. What error do you get?
JimmyZ time out, I'm not in china
lizmat JimmyZ: I'm thinking routing issues next, do you have a traceroute ? 12:24
JimmyZ yeah, looks like it is 12:26
brrt hmm... we should have a uwsgi plugin for moarvm 12:30
masak feature request: .classify takes the identity function as a default first argument
masak that way, I can write @things.classify 12:31
moritz and classify objects by their stringification?
masak instead of `sub id { $^the_thing }; @things.classify(&id)`
moritz well, @things.classify(-> $x { $x }) is a bit shorter 12:33
or just @things.classify({ $_ }) 12:34
that said, +1
masak I still think it'd be a nice default.
ok, changing spec.
moritz (and I've long wanted a more concise way to write the identity function)
masak maybe we should provide it in CORE, as `&id` or `id` 12:35
lizmat masak: if identity would be the default, what if it is not a Str ? 12:35
should it create a Typed Hash automagically ?
moritz nope
masak lizmat: .classify doesn't build a Hash, it builds a list of pairs. 12:35
moritz and that's wrong 12:36
moritz it should return a hash 12:36
according to S32::Containers
m: say <aa ab bc>.classify(*.substr(0, 1)).perl
camelia rakudo-moar 315ec6: OUTPUT«("b" => ["bc"], "a" => ["aa", "ab"]).hash␤»
moritz oh, it does return a hash
masak: your mental model needs updating :-) 12:37
masak seemingly.
lizmat fwiw, making it a list of pairs, would neatly circumvent the Typed Hash issue
masak it used to be a list of pairs.
ok, I don't understand the current classify spec.
standing down change, pending my understanding. :)
lizmat well, that could be... and it is very easily changed by adding .pairs internally 12:38
but the underlying implementation would always use a Hash I would think
or do we want to linearly check a list of pairs for its keys when classifying ?
Ven masak: @things.classify({$_}) doesn't sound that bad tho 12:39
lizmat @things.classify(*) would even be better :-) 12:40
moritz masak: well, @things.classify would be identical to @things.classify(*.Str) 12:40
masak: so it would classify things by their stringification. Not very useful very often, but falls out quite naturally 12:41
lizmat moritz: disagree, that falls out of the default implemenattion of hashes naturally
moritz m: say ([1, '2 3'], ['1 2', 3], [4, 5]).classify(*.Str).perl
camelia rakudo-moar 315ec6: OUTPUT«("4 5" => [[4, 5]], "1 2 3" => [[1, "2 3"], ["1 2", 3]]).hash␤»
lizmat m: (now, now, now).classify({$_}).perl.say # feels weird 12:43
camelia rakudo-moar 315ec6: OUTPUT«("Instant:1414154672.027178" => [Instant.new(<1769107494706/1251>)], "Instant:1414154672.016588" => [Instant.new(<596773271591/422>)], "Instant:1414154672.023692" => [Instant.new(<1432538682760/1013>)]).hash␤»
lizmat the key and values don't match ? 12:44
moritz that's what you get with a default hash :-)
lizmat ah, I read the values wrong: they're expressed as Rats :-) 12:45
moritz m: say (now xx 5).classify(*.x.Int).perl
camelia rakudo-moar 315ec6: OUTPUT«("1414154791" => [Instant.new(<489297558001/346>), Instant.new(<1795976585737/1270>), Instant.new(<1093141654156/773>), Instant.new(<1648904487387/1166>), Instant.new(<885260899749/626>)]).hash␤»
moritz m: say (now xx 5).classify(*.x.Int).elems for ^10 12:46
camelia rakudo-moar 315ec6: OUTPUT«2␤1␤1␤1␤1␤1␤1␤1␤1␤1␤»
lizmat that .x is still also very weird to me
moritz say ((now xx 5).classify(*.x.Int).elems xx *).grep(* != 1)[^3] 12:47
lizmat: yes, that should be .seconds or so
m: say ((now xx 5).classify(*.x.Int).elems xx *).grep(* != 1)[^3]
camelia rakudo-moar 315ec6: OUTPUT«2 2 2␤»
lizmat puts it on her cage cleaning list
Ven moritz: lines like that are why I love p6 :P 12:51
Ven m: use MONKEY_TYPING; class Unit{has $.mul;has $.val; method ago {now-$.val*$.mul}}; augment class Num{method seconds{Unit.new(:0mul, :val(self))} }; say 3.seconds.ago; 12:58
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/EWJCMRkNNH␤Undeclared routine:␤ now used at line 1␤␤»
Ven uh?
m: use MONKEY_TYPING; class Unit{has $.mul;has $.val; method ago {now - $.val*$.mul}}; augment class Num{method seconds{Unit.new(:0mul, :val(self))} }; say 3.seconds.ago; 12:59
camelia rakudo-moar 315ec6: OUTPUT«No such method 'seconds' for invocant of type 'Int'␤ in block <unit> at /tmp/7WfC6CIK6_:1␤␤»
Ven m: use MONKEY_TYPING; class Unit{has $.mul;has $.val; method ago {now - $.val*$.mul}}; augment class Int{method seconds{Unit.new(:0mul, :val(self))} }; say 3.seconds.ago;
camelia rakudo-moar 315ec6: OUTPUT«Instant:1414155624.921789␤»
Ven \o/
kids: don't do that at home :P. 13:00
gtodd does a quick comparison of "perlmonks benchmark" perlmonks.org/?node_id=1099617 13:30
perl6 -e 'for lines() { say ~$/ if m/(<<\w**5>>)/}' 150k-lines.txt # used to take ~ 70 seconds on my system 13:31
and 100% cpu ;-)
now ... perl6 -e 'for lines() { say ~$/ if m/(<<\w**5>>)/}' 150k-lines.txt 57.85s user 0.21s system 0% cpu 1:00.18 total
timotimo gtodd: can you try what happens if you for lines(:eager)? 13:32
Ven gtodd: can you try lines(:eager) ?
timotimo %)
Ven dammit timo.
lizmat fwiw, the sub lines() has not yet received optimization treatment afaik
gtodd it doesn't make as big a difference anymore ... is it due to changes in how lists work?
oh ok 13:33
timotimo oh
lizmat it's a complete different code path
(I realised much later)
gtodd one thing I noticed was doing 10k-lines.txt and getting say 4 seconds then 100K would give me 40 seconds .... 13:34
or well 10K would give 4.4 seconds now 10K takes 4 seconds flat and 100K does 35-36 seconds so isomething in there is getting faster ;-) 13:35
lizmat how did you code that ?
10k-lines.txt.IO.lines(:eager) 13:36
gtodd same way ... naively
lizmat might be faster :-)
gtodd ohh will try
perl6 -e 'for lines(:eager) { say ~$/ if m/(<<\w**5>>)/}' 150k-lines.txt 57.60s user 0.25s system 1% cpu 59.750 total
lizmat actually: "10k-lines.txt".IO.lines(:eager)
gtodd eager used to make a bigger difference (~ a month ago)
lizmat well, :eager on ArgFiles is silently ignored 13:37
gtodd perl6 -e 'for "10k-lines.txt".IO.lines(:eager) { say ~$/ if m/(<<\w**5>>)/} 3.80s user 0.10s system 0% cpu 4.016 total 13:39
perl6 -e 'for lines() { say ~$/ if m/(<<\w**5>>)/}' 10k-lines.txt 4.12s user 0.09s system 7% cpu 4.316 total
gtodd so IO.lines(:eager) faster 13:39
NB: I have slow disks :-)
lizmat wonder how big the difference is with a 100K lines file
ah, not much, you're doing more than just reading :-) 13:40
gtodd yeah the relative speed up as the file gets bigger is new but it could be the machine is just less occupied or something ... 13:43
100k-lines.txt".IO.lines(:eager) is 35 seconds 13:44
timotimo doesn't know what "NB:" means and can't find it in the s99
gtodd hehe
nota bene :-) 13:45
timotimo oh
gtodd I have SSDs somewhere but .... not on this machine
timotimo just put it into a ramdisk
gtodd :)
timotimo if your file is popular, it should land in ram anyway 13:45
masak "nota" is the singular imperative of "notāre". 13:47
gtodd yeah the script I had was running it over and over .... this was ZFS on BSD geoms on multiple disks and does lords knows what to caches etc the speed up as the file gets larger is probably OS or FS related I guess
timotimo i've read the wikipedia article on it now :)
well, skimmed it
lizmat goes offline for a bit for some sysadmin work 13:48
[Coke] which rhymes with ♬ Volare!
timotimo [Coke]: oh god no 13:48
masak [Coke]: :D
leont Ven: their approach to strings is awesome though. I might abuse that to implement pack on C++. The world will hold you responsible for this :-p
Ven leont: I'm all for witchcrafting.
(I mean - I'm doing perl6!) 13:53
timotimo craft moar witches 13:54
gtodd it will be cool when perl6 gets faster to the point of being practical for this kind of file/data munging etc (I don't think matching perl5 on this sort of thing is going to happen very soon ! perl5 does it 0.05 seconds!) ... but what is "fast"? if perl6 does something like this in 2 seconds (instead of 5 one hundredths) errm ... 13:55
timotimo gtodd: i think we'll get close enough to allow comfortable use soon 13:57
and the jit is still "stupid"
timotimo do you have a bit of knowledge about assembler-level performance? 13:57
colomon 199 modules passing tests in the latest smoke run.
gtodd oh right jitting is not really done yet
timotimo because we're still loading every argument off the stack, doing the calculation, storing it back onto the stack 13:58
we don't eliminate redundant loads and stores ever
and many optimizations in spesh turn complex operations into just "set the value of this register to the value of that register", which is pretty much exactly a load + store on the heap, rather than a register-level operation
gtodd since the jit option in now the default in the build I always forget jitting is turned on but nowhere near being fullspeed 14:00
I mean didn't the jit just get started this summer?
timotimo that's correct 14:01
gtodd timotimo: so the jit is doing things that are more about testing for future improvement of the jit rather than real speed ups 14:02
timotimo that's not really true either 14:04
timotimo it already gives a nice boost on some workloads 14:04
gtodd :-)
timotimo especially doing stuff with native nums and ints is pretty good 14:04
but there is still a whole lot of improvements possible in the future
colomon FROGGS: ping? looking at Inline... 14:06
Ven trust me timotimo, just overload tan2 ;-) 14:08
timotimo psst
Ven good jit performance!
FROGGS colomon: pong 14:09
colomon FROGGS: just looked at GD to see why it was failing, which lead me to Inline. 14:10
FROGGS colomon: I was able to install Inline yesterday
colomon …. which, confusingly, appears to pass all tests in the smoke, but is failing when I try to install it directly. :\
FROGGS hmmm 14:11
colomon Failed to open file: permission denied
[…]
in method postcircumfix:<( )> at /home/colomon/tools/p6-Inline-C/lib/Inline/C.pm:32
actually, that's not even installed, that's run by hand from the repo
FROGGS ohh, it is trying to create a tempfile... maybe it is just that
==> Successfully installed Inline 14:12
worx on my box :/
colomon oh! 14:14
it's a bug of yours, I think, but very subtle
colomon it's trying to create /tmp/inline_a_plus_b.c, but it cannot, because that file already exists, created by a different user 14:15
namely smoker, the smoke-test user
colomon keeps it separate so that smoke testing builds don't interfere with his normal p6 hacking
FROGGS ohh 14:16
geekosaur fixed temporary file names are arguably a security hole...
colomon … though actuially might be a bug in .e ?
$!libname = $basename ~ 1000.rand.Int while $!libname.IO.e;
I don't understand why that doesn't … oh! 14:17
yeah, that's your bug. :)
FROGGS what exactly?
colomon you check for name collisions with $!libname 14:18
but the actual files you create are inline_a_plus_b.c inline_a_plus_b.o and libinline_a_plus_b.so
FROGGS ohh
colomon (also, should those temp files really be left lying around?)
yeah, if I delete those /tmp files, everything works. 14:22
colomon FROGGS: do you have it, or do you want me to code up a fix? 14:26
FROGGS colomon: I am testing something...
colomon FROGGS++
bartolin m: say 0.005634127707264636e1 == 0.05634127707264636e0 14:28
camelia rakudo-moar 315ec6: OUTPUT«True␤»
bartolin rakudo.jvm doesn't agree here: 14:28
$ perl6-j -e 'say 0.005634127707264636e1 == 0.05634127707264636e0'
False
could that be a bug? 14:29
masak only if you expect big decimal semantics there. 14:30
I'm not sure I do.
bartolin I think it's the reason for a (rarely) failing test in roast on rakudo.jvm 14:30
colomon p6: say 0.005634127707264636e1 - 0.05634127707264636e0 14:31
bartolin that test uses 'rand' and on rakudo.jvm it produces values like 0.005634127707264636e1 sometimes.
camelia rakudo-{parrot,moar} 315ec6: OUTPUT«0␤»
colomon woah, camelia not handling jvm at the moment?
m: say $*VM 14:32
camelia rakudo-moar 315ec6: OUTPUT«moar (2014.9.54.g.3.ac.9.a.7)␤»
bartolin the test is here: github.com/perl6/roast/blob/master...erl.t#L103
colomon m: say $*VM<config>
camelia rakudo-moar 315ec6: OUTPUT«"ar" => "ar", "arflags" => "rcs", "arout" => "", "asm" => ".s", "asmout" => "-o ", "asmswitch" => "-S", "auxclean" => "\@:", "be" => "0", "can_unaligned_int32" => "1", "can_unaligned_int64" => "1", "can_unaligned_num64" => "1", "cancgoto" => "1", "cat" => …»
colomon m: say $*VM<config><load_ext>
camelia rakudo-moar 315ec6: OUTPUT«(Any)␤Saw 1 call to deprecated code during execution.␤================================================================================␤$*VM<config> called at:␤ /tmp/VxVK2_C8Ia, line 1␤Deprecated since v2014.5, will be removed with release v2015.…»
colomon how do we do that today? 14:33
.config, eh
m: say $*VM.config<load_ext>
camelia rakudo-moar 315ec6: OUTPUT«(Any)␤»
colomon m: say $*VM.config
camelia rakudo-moar 315ec6: OUTPUT«"ar" => "ar", "arflags" => "rcs", "arout" => "", "asm" => ".s", "asmout" => "-o ", "asmswitch" => "-S", "auxclean" => "\@:", "be" => "0", "can_unaligned_int32" => "1", "can_unaligned_int64" => "1", "can_unaligned_num64" => "1", "cancgoto" => "1", "cat" => …»
bartolin m: my $a = 5.634127707264636e-02; say $a.perl; say EVAL($a.perl).perl 14:34
camelia rakudo-moar 315ec6: OUTPUT«0.0563412770726464e0␤0.0563412770726464e0␤»
bartolin $ perl6-j -e 'my $a = 5.634127707264636e-02; say $a.perl; say EVAL($a.perl).perl' 14:35
0.056341277072646356e0
0.05634127707264635e0
dalek rlito: 269af47 | (Flavio S. Glock)++ | / (2 files):
Perlito5 - js - tr() tweak
14:36
bartolin well, I'll submit a rakudobug for the failing test
FROGGS colomon: done 14:38
colomon \o/ 14:39
woah, the tests for GD are sort of spectacularly useless. :) 14:40
FROGGS hehe 14:41
colomon basically, it passes if "use GD" doesn't fail
FROGGS well, that is usually the first test I write :o) 14:41
colomon really?
FROGGS sure 14:41
colomon I mean, every test file for a module does that automatically. 14:42
no need for an explicit test
does anyone know mrhdias? 14:43
FROGGS I dunno why but I do that since forever... like my first test in P5 is a use_ok
not personally
[Coke] colomon: it's easier to diagnose explicit test failures than implicit ones. 14:45
but that is pretty basic, aye 14:46
colomon m: use fdsakjfklds
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!===␤Could not find fdsakjfklds in any of: /home/camelia/rakudo-inst-1/languages/perl6/lib, /home/camelia/rakudo-inst-1/languages/perl6␤»
colomon is it really that hard to diagnose that error? :)
okay, mailed mrhdias 14:47
and actually, you're going to get the above error whether or not you put an "alive" test after it. 14:48
timotimo tadzik: can you add a feature to rakudobrew that'd run spectests automatedly and give nice uploadable output? 15:07
colomon github.com/perl6-community-modules/perl6-GD # not official yet, but if I don't hear from mrhdias…. 15:09
BooK are the Perl 6 on MoarVM vs Perl 6 on Parrot vs Perl 5 benchmarks published somewhere? 15:13
lizmat timotimo might know 15:17
timotimo i've had a quick look over my list of benchmarks
timotimo one sec. 15:19
t.h8.lv/p6bench/ - i added a very simple index.html for you 15:20
lizmat masak: wrt to .classify having a default of identity: wouldn't you be served better by a .Bag in such a case ?
BooK timotimo: thanks! 15:24
timotimo i didn't see the one jnthn used in there yet 15:25
lizmat cycling& 15:30
smls m: ([1], { [0, @^a Z+ @^a, 0] } ... *)[^5].perl.say; # Pascal's triangle 15:48
camelia rakudo-moar 315ec6: OUTPUT«([1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1])␤»
smls ^ Will this still work post-GLR? 15:49
[Coke] Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=200m; support was removed in 8.0
smls That is, are both sides of the Z operator considered slurpy lists?
TimToady it's bound to @^a, which is not itemized 15:52
so should still work
TimToady and the X and Z metaops should still be smart about whether their base op is a list infix or not, and flatten accordingly, just as it is now 15:55
most of the semantic shift is in invocants, and operators are really functions, which stay much the same 15:56
smls right 15:57
TimToady this aspect of the GLR can be viewed as clarification of the difference between the OO and FP world views 15:58
TimToady those world views were most confused in the earlier designs, and have subsequently undergone various changes that keep the two worlds from interacting, so it's kind of natural now to give invocants different semantics than ordinary arguments 16:00
masak lizmat: yes, I'd've probably been better served by a .Bag 16:01
masak lizmat: I'm no longer championing for the identity function being the default :) 16:01
TimToady there might be some slight fallout for where we do "method foo (@stuff) is export" 16:01
TimToady that is, for an exported method, the first arg will get invocant semantics even though you are invoking it through the FP interface 16:03
TimToady but that's more or less how it is already, so probably will not be noticed much 16:03
TimToady logs back 16:04
dalek rl6-bench/stress: fa5392f | (Geoffrey Broadwell)++ | timeall:
Add symbolic diagnosis to timeall data

First rule of data producers: Don't force consumers to parse human-friendly strings to get the data back out. Thus, add a symbolic diagnosis next to every human-readable failure reason.
16:42
rl6-bench/stress: 4a42954 | (Geoffrey Broadwell)++ | analyze:
Add first-pass analysis for test diagnoses
perl6-bench/stress: f61cfa0 | (Geoffrey Broadwell)++ | analyze:
perl6-bench/stress: Widen text comparison columns to fit diagnoses
nwc10 I checked the logs - has no-one pasted a link to jnthn's APW talk yet? 16:55
www.youtube.com/watch?v=AhCx3CTauBY -- Objects ∩ Concurrency, 16:56
FROGGS nwc10: I did so in #perl6
nwc10 clearly I fail at log parsing
dalek rlito: 55e36b5 | (Flavio S. Glock)++ | / (3 files):
Perlito5 - fix 'use strict' - github.com/fglock/Perlito/issues/25
16:57
TimToady thinks that Instant.x ought to be renamed Instant.cheat or Instant.don't-try-this-at-home 17:49
grondilu does not know about Instant.x 17:50
is that in Temporal?
TimToady m: say now 17:51
camelia rakudo-moar 315ec6: OUTPUT«Instant:1414173124.087981␤»
TimToady m: say now.x
camelia rakudo-moar 315ec6: OUTPUT«1414173128.797084␤»
TimToady it tempts you to cheat on the internal epoch, which Instant is not guaranteed to preserve 17:52
FROGGS m: say and now
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/GZNRYPhQjK␤Undeclared routine:␤ and used at line 1. Did you mean 'end', 'any', 'rand'?␤␤»
TimToady now andthen ... 17:53
m: now andthen ...
camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: Stub code executed␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:13680 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.…»
grondilu std: { say } and now 17:54
camelia std 14ad63b: OUTPUT«===SORRY!===␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/KeCtGV6JoI line 1:␤------> { say⏏ } and now␤Check failed␤FAILED 00:00 139m␤»
PerlJam okay ... working on the release again. Most (if not all) of the parrot test failures appear to be because of unicode characters. moritz++ added a note to the announcement that this is the last release to support parrot without ICU. Is that really true? 17:54
TimToady I believe that was the consensus
it ain't Perl 6 if it don't do unicode... 17:55
PerlJam What should I do about all of the failing tests? Many of them seem to not even compile with rakudo-p because it barfs on some character during the parse.
TimToady install icu? 17:56
well, first verify that the lack of icu is the problem
parrot::has_icu, I guess 17:58
according to perl6-p -V
I'm fine with the tests failing this release for non-icu systems, even though we "support" it 17:59
PerlJam parrot::has_icu=0
TimToady though I suppose we should test at least once with icu 18:00
TimToady seeing if installing icu-devtools helps here 18:02
PerlJam installs libicu-dev
TimToady that makes more sense 18:03
TimToady wishes he had his brane back, but still recovering from whatever it was I have 18:05
TimToady tenses, who needs 'em 18:06
rurban but I just added needed namealiases which were not icu
in icu
TimToady I seem to recall reading that they'd bump the parrot version next release, so maybe that isn't in play 18:07
rurban I'd wish I'd known it earlier, then I could have added more names to the list for —without-icu 18:10
PerlJam no worries. I figure the Nov or Dec release will make more of an impression upon the world as the GLR should have happened :) 18:11
rurban are those t.h8.lv/p6bench/all_backends.html with moar jit already? dont think so 18:13
I see: t.h8.lv/p6bench/2014-10-10-huge_history.html it is 18:14
PerlJam I don't know how those graphs relate, but commit 1eed27d to NQP is from 1 year ago, so I would guess the graphs on t.h8.lv/p6bench/all_backends.html are all pre-JIT 18:22
smash TimToady++ # 5 Programming Languages Everyone Should Know 18:46
psch hi #perl6 o/ 18:50
i figured out my cliparser bug and i can now spectest the branch again \o/ 18:51
turns out the problem was still in the grammar and i didn't build TOP correctly to also work with a cli that only supplies arguments
s/build/write/
regarding the delimited options stuff i don't have any idea yet, but they should at least end up somewhere in Perl6::Compiler and afaiu i can borrow from Inc.pm to get them into perl6-land 18:52
timotimo i'm sorry that the index.html for the benchmark graphs is so useless 19:16
i've wanted to write a more complex index generator or something similar, but i still don't know what it should show and what you should be able to do with it
gtodd I like how perl6 does this: 19:24
m: say "foo" ~~ /fum/ ?? "matched" !! "nope" ;
camelia rakudo-moar 315ec6: OUTPUT«nope␤»
gtodd oops I meant
m: say "foo" =~ /fum/ ?? "matched" !! "nope"
camelia rakudo-moar 315ec6: OUTPUT«===SORRY!=== Error while compiling /tmp/Bl8VVOXdaj␤Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~␤at /tmp/Bl8VVOXdaj:1␤------> say "foo" =~⏏ /fum/ ?? "matched" !! "nope"␤»
timotimo does what exactly?
gtodd "in Perl 6 please use ~~" rox
I want to put error messages like that all over the place :-) 19:25
timotimo aaah
i understand
moritz TimToady++ put a lot of effort into error messages
mauke m: "foo" ~=~ "bar" 19:26
camelia rakudo-moar 315ec6: OUTPUT«Cannot modify an immutable Str␤ in block at src/gen/m-CORE.setting:18918␤ in block <unit> at /tmp/vFGYrZ8V4o:1␤␤»
gtodd yeah ... do they all live in CORE.setting? or I mean 19:27
is that where the catching and exceptions start from?
japhb gtodd: Some are found in the grammar, some in the setting. 19:28
psch some of the throwing starts from nqp
gtodd I wanted to add a simple message for "reverse" when used on a hash "in Perl 6 please use invert"
psch but at least P6Regex should almost only throw from Perl6::Grammar by now i think
gtodd but couldn't figure out a) if it was non trivial b) if there was a better way ... that lead me to nqp :-) 19:29
dalek c: 88bad9d | usev6++ | / (2 files):
Add exception X::Syntax::Term::MissingInitializer
19:33
gtodd It would be cool if there was a way to annotate messages like that even further - or translate them into languages that use all the beautiful unicode support ;-) ... or load a module and then along with those messages you'd get referred to relevant snippets of documentation (the docs are going to be fantastic anyways but ...) and maybe a heirarchy of community generated and/or internal PBP policy style docs that popup 19:35
gtodd little "documentation hooks" 19:36
k2t2 help 19:37
timotimo PBP?
lizmat gtodd: by having exceptions as classes, such an approach would be just a matter of augmenting said classes :-) 19:38
gtodd that way every time someone came up with an idiom they could stick an example in ~/.perl6/docs/hooks/<some ref to the error> ... maybe with URL in it to further examples on rosettacode or perl6.org 19:38
and periodically people could cd ~/.perl6/docs/hooks ; git push
gtodd to some massive repo of perl6 lore ... 19:39
lizmat: good! :-D
timotimo: the classic Perl Best Practices
I really liked that book
like :-)
lizmat thinks Instant.x should be called .tai 19:40
gtodd lizmat: you were fixing some error messages lately and was trying to watch your commits to see how you were doing it ... I wanted to see if I could make %hash.invert more famous 19:41
masak thinks he could live with .tai
gtodd lizmat: .tai++
masak .oO( .太 )
japhb lizmat: Is it actually tai though?
gtodd hehe 19:42
lizmat has Rat $.x;
# A linear count of seconds since 1970-01-01T00:00:00Z, plus
# tai-utc::initial-offset. Thus, $.x matches TAI from 1970
# to the present.
is what the code says
as we know, internal documentation is always right :-)
japhb OK, that's reasonable then.
hehe
I just didn't want to give people an accessor that was not really correct for some reason. 19:43
gtodd will this intimate that perl6 explicitly agrees with DJB about time :-) cr.yp.to/proto/utctai.html 19:44
timotimo i'm just now watching masaks goto statement considered awesome talk 19:48
japhb Hmmm, this does have the problem that we are treating a seconds-since-epoch value as TAI, which is not quite accurate (if the cr.yp.to page is to be believed; I've forgotten the details I learned way back when, except for "UTC for humans, TAI for computers")
timotimo masak: do you feel we could have the slip keyword/functionality without a big amount of changes?
because that does sound pretty awesome to have
masak timotimo: I'm not seriously proposing this keyword in core.
tony-o timotimo: link?
japhb slip? 19:49
masak timotimo: let's just say if we ended up with a mutable-enough language that such a keyword could be added, I wouldn't complain. :)
japhb: `slip` is `next` without losing position and state in the iteration.
timotimo www.youtube.com/watch?v=D32rpo5TeV...freload=10
right, slip causes the iterator to go to the next iteration without leaving the code block
masak japhb: or, put differently `slip` + `redo` == `next` 19:50
japhb Oh now that's an interesting idea
masak and you could do it with labels, iterating an *outer* loop, leaving the inner state intact.
japhb Kinda like the CRLF decomposition, except moderately less likely to cause instant insanity.
masak I find now and then that I am in need of such a construction. 19:51
japhb Oooh, example?
masak parse a line-based format. one line ends with a line continuation marker. I want to go to the next iteration, but keep doing what I was doing. 19:55
masak in a language without `slip`, I have to set flags and stuff. 19:56
lizmat has just been convinced
masak it's the same kind of poverty of language that led C# to async/await.
but for a different problem.
TimToady gtodd: I've been ranting about leap seconds vs POSIX since the turn of the millenium, when we should've thrown out leap seconds and established 2000 as the new epoch 19:58
timotimo masak: i wouldn't mind i fthe slip feature wouldn't actually do the changes to the loop "variables" 20:00
gtodd yeah
masak timotimo: as long as it reads another line of input. 20:01
dalek kudo/nom: 29757fe | duff++ | docs/announce/2014.10.md:
update announcement slightly
gtodd TimToady: milleniums don't come around that often ... :-)
every 3.15569e10 seconds? give or take a few leaps
timotimo masak: if we don't require weird interactions, we could just have something like a dynamic variable to represent the loops we're in (or go via the labels on the loops) and bump the iteration and grab the new value 20:04
lizmat PerlJam++
timotimo my $next_line = slip Label;
lizmat maybe 'slip' implementation should be part of the GLR ? 20:05
timotimo i wouldn't mind if we had that
masak no please don't :)
please focus on real problems
timotimo OK
lizmat masak: so slip *would* call the NEXT phaser, but not the LEAVE phaser ? 20:06
gtodd I like the idea of slip but not the word it looks odd :-D (plus I speak french errm) ... maybe a linguistics expert will come up with something else ;-)
masak no idea.
gtodd: as long as it's four letters long.
gtodd: I kind of like the connotations of "slip", though. the loop iterates under your feet, so to speak.
timotimo yes, the name struck me as very fitting 20:07
travis-ci Rakudo build passed. Jonathan Scott Duff 'update announcement slightly' 20:10
travis-ci.org/rakudo/rakudo/builds/38963173 github.com/rakudo/rakudo/compare/a...757fe46efb
lizmat masak: I think 'slip' would be handy for e.g. a Text::CSV port :-) 20:10
[Tux] looking at my code? 20:11
lizmat [Tux] no, must admit I haven't yet much :-(
timotimo i wonder how easy it is to make slangs composable 20:13
masak we'd better make them composable. 20:16
otherwise, they're no better than source filters. :)
timotimo there's a part that we as the perl6 creators and implementors have to get right
and there's probably parts where users may end up inadvertently making their slang hostile to either embedding others or being embedded in others 20:17
TimToady masak: smile when you say that...oh wait, you did...
timotimo (embedded as in "called from")
masak also, if Angular can make directives composable using *JavaScript* and the DOM as the substrate, I think we should be able to make slangs composable using Perl 6 as the substrate.
timotimo masak: you also handle "lexpads" with your $cont object, right? 20:18
the good thing about "cont" is that it's both the beginning of "context" and "continuation"
tony-o masak: that talk is ++ 20:19
masak cool. thanks.
timotimo: yes :)
timotimo: though Continuations::Kinda remains quite underpowered still.
timotimo that's neat
masak timotimo: but yes, it would do lexpads inside the routine, too.
timotimo it still doesn't have the slang bit to it, yeah?
masak no, that's just a twinkle in my eye yet. 20:20
I write things "long form" right now.
timotimo masak: good job in any case 20:21
masak I have this idea lately that most language feature can be designed in two steps: (a) get the semantics right with just funcations, methods, closures, etc. (b) get the syntax right, sugaring the semantics with macros, slangs and whatnot.
features*
timotimo is now watching "c day is coming" 20:22
lizmat is too afraid to go look herself
timotimo heh
moarvm is faster than rakudo? :) 20:23
lizmat yeah
masak if only we could optimize away that whole "Perl 6" part on top of moarvm... :P
lizmat started that presentation at 6am, so that also meant not enough sleep :(
timotimo sometimes i wish i could just write a piece of code in-line as nqp, but that desire will go away when we get better and better at optimizing perl6 code 20:24
PerlJam masak++ I like "slip" 20:27
timotimo lizmat: you said "i'm sure there's going to be a video of [jnthn's talk about performance advances] very soon"
lizmat: you couldn't have been more wrong ;(
lizmat yeah... :-( 20:28
timotimo not your fault of course
lizmat but but, it is!
masak fun hackathonoid for some weekend: cloning Rakudo, and getting `slip` to work in it. preferably while passing all spectests ;)
lizmat everything is my fault anyway :-)
timotimo many good things are your fault! :) 20:29
woolfy Videos for Austrian Perl Workshop (with a lot of Perl 6) are online now: www.youtube.com/channel/UCB9cjCMJP...YyOw0Wo-oQ 20:30
masak lizmat++ # to blame for many good things
timotimo woolfy: after the fact, it kind of seems to me like it was not really "that much"
masak ooh, APW videos
woolfy++ 20:31
woolfy (I was quite happy to see Larry & Jonathan & Stefan & Nick and to attend the hackathon, it all had a strong Perl 6 feel to me) 20:32
pmichaud good afternoon, #perl6
PerlJam++ # 2014.10 release
PerlJam pmichaud o/
woolfy For the people who didn't know yet, the videos of the main room of YAPC::EU are now online too, including the talks by Lichtkind++ and jnthn++: www.youtube.com/user/yapceu 20:33
pmichaud ooooh, video
pmichaud adds to playlist
masak looks at nine++'s Inline::Perl6 APW talk
PerlJam woolfy++
woolfy pmichaud \o/
lizmat masak: Inline::Perl6 ??? 20:34
woolfy masak: Inline::Perl5?
:-)
PerlJam is watching TimToady talk about what he didn't do this summer
pmichaud Hey, I can write an Inline::Perl6 module!
woolfy pmichaud: even I can do that!
pmichaud I think we should put one into the ecosystem just to see what people do :)
masak ah, Inline::Perl5, of course. 20:35
I guess I'm too used to writing a "6" there...
pmichaud masak: that's not a bad thing to be too used to doing
timotimo lizmat: damn it, the video recordings are up now that planetaria is dead and your talk references that; maybe we can get the yapceu channel owner to put an annotation up or something? 20:36
oh hey pmichaud :)
masak I'd have left here long ago, but I keep writing `/join #perl6` instead of `/join #perl`... :P
woolfy masak: it would feel empty without you here!
masak aww <3 20:37
gtodd I guess in a way the word "slip" implies a kind of short quick less obvious variant of "shift"
timotimo i like having masak around :)
dalek ecs: e4c5b10 | (Elizabeth Mattijsen)++ | S04-control.pod:
Naively spec 'slip'
masak o.O
timotimo masak: also, in your talks you have a very soothing tone and pleasant voice
gtodd timotimo: so true
pmichaud yes, when I need a "Don't panic" talk, masak++ should be the one to give it. :) 20:38
afk for a bit
gtodd masak++ watch the talk feel more calm
masak timotimo: that would explain why I feel so relaxed and at ease all the time. I hear myself speak quite a lot.
gtodd hehe
timotimo oh wow, the video is 30 minutes, your talk was 15 minutes, so there must have been some good Q&A :)
masak: :D
masak surely I spoke for more than 15 minutes...
timotimo masak: refering to liz' talk right now 20:39
lizmat PerlJam++ # for the Octover 2014 release :-)
woolfy just reading masak's lines here calms me down...
timotimo PerlJam++ # release \o/
masak PerlJam++
woolfy PerlJam++ indeed 20:40
masak lizmat: re github.com/perl6/specs/commit/e4c5b10b3b -- I don't believe this belongs in spec. at least not without a big '[CONJECTURAL]' notice next to it. 20:41
timotimo something i notice is that all these links liz put on her slides ... it kinda seem like each one of them has a different domain that hosts it
we might do well to make discoverability easier with a centralized index that's more than just a bunch of links
masak lizmat: it's exactly the kind of "move the goalposts" feature-creeping we *shouldn't* be doing as we aim for stability and completeness... :/
lizmat: also, I need some cool examples of how Perl 6 could be extended with macros, slangs, and language introspection... :) 20:42
dalek ecs: 24850d6 | (Elizabeth Mattijsen)++ | S04-control.pod:
Add CONJECTURAL to slip, and ++ version: masak++
20:43
timotimo it kind of seems like (to me) that the iterator itself has to cooperate for slip to make work
masak yeah, it's a pretty intrusive change.
lizmat hence my suggestion it'd be part of GLR
masak nonono please no
let's focus on real problems for GLR 20:44
timotimo there are only 25 synopses? i thought there were 99! :P
masak there's one way to make GLR hurt, and that's to throw everything and its cat into the blender
lizmat fwiw, if you need to add flags and stuff yourself to make the code do what your want, we're missing a feature 20:45
timotimo hmm, that sounds a bit oversimlified
lizmat ok, anyway, it's now in as CONJECTURAL 20:45
so it's something we might want to keep in the back of our minds while working on the GLR :-) 20:46
timotimo lizmat: during the Q&A part, at one point you say "thank you, lichtkind" into the audience, directly after "my personal project is to go through all the synopses and check what we still have to implement"
what did he say?
gtodd no slippage in GLR?
lizmat timotimo: he didn't say anything :-) 20:47
timotimo did you thank him for not saying anything? :)
lizmat feels embarrassed to really discuss... 20:48
timotimo OK, fair enough
raydiak does Math::Symbolic sound like a reasonable name for an expression/equation parsing/manipulating module? 20:50
awwaiid does to me 20:53
pmichaud lizmat: how would slip work in a while loop?
raydiak then in the absence of objections, I'll name it that :) 20:54
colomon raydiak: +1 20:55
lizmat pmichaud: just like redo, but it *would* call the NEXT phaser
dalek rl6-bench/stress: b932bb0 | (Geoffrey Broadwell)++ | analyze:
Diagnosis 'other' is now 'unknown'; make sure we always have a diagnosis
rl6-bench/stress: 758386d | (Geoffrey Broadwell)++ | analyze:
First pass at showing failures in text summary
rl6-bench/stress: 15222c2 | (Geoffrey Broadwell)++ | analyze:
Make compare and show-failures independent
rl6-bench/stress: 1e28573 | (Geoffrey Broadwell)++ | analyze:
Show test name only once per test, no matter which text summary lines are being shown
pmichaud ummmmmmmmmm....
lizmat actually
I *thought* redo in a while loop would call the NEXT phaser
but it doesn't
hmmm..... 20:56
that wouldn't make sense, indeed... and redo is specced to not be a next iteration
pmichaud slip sounds like it introduces quite a few warts 20:57
lizmat so it's correct that the NEXT phaser isn'r called
masak `redo` is basically a kind of goto instruction.
`slip` is basically a kind of CPS thing.
pmichaud I'm not saying slip isn't useful or warranted, only that there are a lot of edge cases to consider
masak what pmichaud said.
`slip` is about as disruptive as `gather`, and should not be spec'd lightly. 20:58
pmichaud how does 'slip' differ from 'next' ?
lizmat pmichaud: it would not leave the scope
masak pmichaud: `slip` goes on to the next instruction, with all values intact.
pmichaud lizmat: meaning it continues on from where the 'slip' occurred? 20:59
masak yes. 21:00
TimToady slip could just call NEXT if the compiler poked the iterating code and bind into NEXT
pmichaud there's a difference between "not leave the scope" and "returns to the top of the scope"
masak it doesn't leave the scope, at least not from the point of view of the user.
pmichaud because 'next' definitely leaves the scope, as currently defined. 21:01
masak yes.
mauke slip is just a time warp
pmichaud so saying that 'next' is 'slip + redo' is very misleading, if neither slip nor redo leave the scope.
TimToady but NEXT is merely what happens when you do that
masak pmichaud: that's a really good point.
didn't think about that.
mauke redo = CR, slip = LF 21:02
masak hehe
pmichaud what happens to the return value from a slip? is it skipped?
TimToady or, arguably, slip is the abstraction of what happens right after NEXT before re-entering the loop
pmichaud from a performance standpoint, I don't want to be moving the iterator into the NEXT phaser. 21:03
TimToady not suggesting that anymore
but slip could be an inlined function
pmichaud so, slip in a while loop is effectively a no-op? 21:04
other than calling the NEXT phaser
TimToady no, slip tests the condition
I think
pmichaud and exits if false?
weeeeeeird.
mauke wait, that makes it less useful for parsing continuation lines
TimToady not really 21:05
masak I had it as reading the next line, or doing whatever other iteration goes with the loop.
pmichaud wait wait wait wait
you mean:
masak that is, all the state in the loop is the same, except that you're now "in the next iteration".
pmichaud for lines() { slip; .say; } # should rebind $_ to the 2nd line read?!?
TimToady I think so 21:06
masak and 4th, and 6th, and 8th...
pmichaud how exactly does that work if we aren't re-entering the block?
masak by torturing implementors.
pmichaud since for lines() { slip; .say } is really for lines() <-> $_ { slip; .say }
TimToady normal binding has to have already entered the block in some sense, or there's no lexpad
mauke I propose a 'handwave' primitive
pmichaud more directly: 21:07
masak pmichaud: I can think of a mechanism that does this, but that mechanism breaks the code down using a CPS transform.
pmichaud lines().for( -> $x { slip; say $x; } )
TimToady thinks using CPS to goto where I am already is silly :)
masak pmichaud: that's also what Continuations::Kinda does, by the way.
TimToady but I'm all in favor of pessimizing slip vs normal code 21:08
masak +1
pmichaud so, slip has to know what block has been called, and has to re-bind the parameters to the next set of arguments coming from the iterator, all without leaving the scope.
TimToady otoh, we're still trying to avoid overt requirements for continuations
masak I think if I get macros and Qtrees where I want, a sufficiently motivated macro programmer would be able to do CPS transforms on Perl 6 code.
so no need for actual continuations. 21:09
just arduous code tree rewriting.
lizmat sneaks away to get some sleep before setting up the Perl booth at T-Dose (www.t-dose.org)
pmichaud so, let's start with a more basic question: is there a way for a Routine to rebind its parameters from a new set of arguments, short of doing a lot of introspection? 21:10
or, actually, any Block, not just a Routine 21:11
masak doesn't know the answer, but would also like to know :)
pmichaud reminds me somehow of "callsame", but different.
masak pmichaud: my intuition is that it sounds a bit "wrong", or counter to the original intent of blocks/lambda calculus.
TimToady sig ::= args, for some value of sig and args
masak pmichaud: don't know how strong that objection is/should be, though. 21:12
pmichaud masak: well, that's effectively what 'slip' is saying, I think.
masak maybe :)
pmichaud perhaps slip is really a target LABEL
pmichaud saying "when you do the next iteration, skip forward to this point" 21:12
TimToady
.oO(syntax : sugar :: semantics : ratpoison)
pmichaud but that kind of blows the "continuation line" model out of the water, I think. 21:13
masak pmichaud: in my mental model, it's the start of a new "basic block", in moar's meaning of the word.
pmichaud: so yes, a kind of anonymous label.
dalek kudo/nom: 5b716e8 | (Elizabeth Mattijsen)++ | src/core/Array.pm:
Fix .perl for typed arrays

This is really fixing a symptom rather than the cause, because the real problem is that the iterator on the typed array is returning the wrong thing. Since this gets me into gimme and reify land, I opted for this solution, so that at least .perl roundtrips for typed arrays.
pmichaud I think I want to see a few code examples using 'slip' first. 21:16
masak I have no idea how we ended up discussing the inclusion of `slip` into Perl 6 this seriously :/
TimToady what, we were serious?!? 21:17
masak that was not really ever my intent. at least I don't remember it being so :)
pmichaud well, it got added to S04, which instantly impacts my GLR thinking. :-/
masak pmichaud: I'm sorry it got added to S04.
pmichaud: I'll be happy to remove it, if that makes your life easier.
TimToady well, apparently it's marked conjectural 21:18
pmichaud it only makes my life easier if someone doesn't come back and add it back later :)
masak I remember at many times wishing I could *add* `slip` through sufficiently flexible Perl 6 extension mechanisms.
masak goes ahead and removes `slip` from S04
I don't want to impact pmichaud's thinking.
pmichaud at the moment it feels to me like one of those things that feels nice at first blush but really needs real code examples to figure out what it should do and how it should work 21:19
masak *nod*
dalek ecs: 3be145c | masak++ | S04-control.pod:
Revert addition of 'slip' to S04

  'slip' may (or may not) be a nice+useful feature, but we're not ready to
add it to core just now. In GLR we have more pressing concerns.
This reverts commit 24850d6b665913be797067a5c80e8d3fdfc03c1b. This reverts commit e4c5b10b3bed23d270f50208b9e4c621c18dacba.
21:22
masak phew. 21:24
TimToady but it's still in the history, so we're Not Safe 21:25
:)
PerlJam cry havoc and let slip ... be reverted
colomon more pressing concerns++
raydiak
.oO( slippery slope )
21:26
pmichaud r: say (1,2,3,Nil,4).flat.perl 21:26
camelia rakudo-{parrot,moar} 315ec6: OUTPUT«(1, 2, 3, 4).list␤»
pmichaud am I correct in believing that in the current spec Nil should not be removed from that list? 21:27
TimToady that's what current spec says, but nobody's been able to fix it 21:27
pmichaud okay, I think I'm going to attempt that first. 21:27
(next week)
it feels like a useful ledge, plus we need to figure out how much will break as a result. 21:28
TimToady maybe we need $Nil and @Nil :)
pmichaud s/ledge/plateau/ # or some other thing that means "intermediate step"
it seems to me that fixing Nil ought to be something that can be done w/o full GLR 21:29
TimToady yeah, it seemed that way to several of us before... 21:29
pmichaud and if it can't, then it's vitally important to know why
TimToady yup
at one point I tried putting in an Empty that meant (), and then started changing Nil to Empty where it wanted () semantics, but that broke pretty quick, don't remember where 21:31
might even have been in niecza
pmichaud adding an Empty is probably the wrong way to go
TimToady I just wanted to detangle the concepts, wasn't intending to make Empty visible to the user
but a lot of places treat Nil as nominal 21:32
and () ain't too nomianl
*inal
again, may be remember niecza here...
pmichaud well, Nil has had a number of meanings added to it since its original () days
TimToady and at least in niecza, there were lots of places where the parser relied heavily on Nil meaning () 21:34
afair, to be fair 21:35
TimToady but to be sure, I also tried to fix it in rakudo, and was terribly successful :) 21:40
but mostly due to lack of familiarity with internals, which doesn't apply in the current situation :) 21:41
pmichaud indeed. :)
anyway, that'll be my Sunday or Monday activity, I think.
pmichaud gotta make sure my name keeps showing up in the release announcement credits. :) 21:43
gamo Can a sub be passed as a parameter to another sub in perl6?
TimToady absolutely
pmichaud gamo: yes.
TimToady we love higher-order programming 21:44
gamo as a reference?
pmichaud r: my xyz($x) { say $x; }; (1,5,10).map(&xyz)
camelia rakudo-{parrot,moar} 315ec6: OUTPUT«===SORRY!===␤Type 'xyz' is not declared␤at /tmp/tmpfile:1␤------> my xyz⏏($x) { say $x; }; (1,5,10).map(&xyz)␤Malformed my␤at /tmp/tmpfile:1␤------> my ⏏xyz($x) { say $x; }; (…»
TimToady everything is a reference, to the first approximation
pmichaud errr
r: sub xyz($x) { say $x; }; (1,5,10).map(&xyz)
camelia rakudo-{parrot,moar} 315ec6: OUTPUT«1␤5␤10␤»
pmichaud or, if you prefer something more perl 5-ish: 21:45
r: sub xyz($x) { say $x; }; map &xyz, 1, 5, 10;
camelia rakudo-{parrot,moar} 315ec6: OUTPUT«1␤5␤10␤»
FROGGS m: sub foo($a, $b) {}; say &foo; say &foo.arity
camelia rakudo-moar 315ec6: OUTPUT«sub foo (Any $a, Any $b) { #`(Sub|67371904) ... }␤2␤»
gamo It's ok, very good.
TimToady m: my $xyz = { .say }; (1, 5, 10).map($xyz) 21:46
camelia rakudo-moar 315ec6: OUTPUT«1␤5␤10␤»
TimToady m: my $xyz = *.say; (1, 5, 10).map($xyz)
camelia rakudo-moar 315ec6: OUTPUT«1␤5␤10␤»
FROGGS gamo: every operator in Perl 6 is a subroutine
TimToady m: say 1, 1, &infix:<+> ... *
camelia rakudo-moar 315ec6: OUTPUT«1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 70140873…»
FROGGS (most a multi subs btw)
are* 21:48
gamo ok, and what VM is better: parrot or moar in terms of speed? 21:50
TimToady these days, moar wins
gamo by a little or...? 21:51
TimToady r: my $start = now; for 1..1000000 {}; say now - $start
camelia rakudo-parrot 315ec6: OUTPUT«3.03667792␤»
..rakudo-moar 315ec6: OUTPUT«0.39324787␤»
TimToady well, not quite an order of magnitude in that case 21:52
of course, it depends on what you are doing
gamo a lot of rand use 21:53
TimToady r: my $start = now; for 1..1000000 { rand }; say now - $start
camelia rakudo-parrot 315ec6: OUTPUT«3.41162567␤»
..rakudo-moar 315ec6: OUTPUT«0.5773421␤»
gamo ok, I need to recompile, then 21:54
gamo thank you! 21:54
TimToady don't mention it :) 21:55
raydiak is mildly surprised that an empty loop iterating over a constant list of constants gets executed at all 21:58
TimToady well, obviously the *intent* is a timing loop, so maybe it's out-smarted you :) 22:01
raydiak heh, indeed, it does do that more than never :) 22:03
avuserow .oO( All C++ does is improve C's reputation ) 22:03
FROGGS sooo, now panda can create test reports ala gist.github.com/FROGGS/5b25776e1ce3f297cb05 22:28
who fancies writing a service that receives such reports and displays it nicely?
tadzik a builtin emmentaler? Nice! 22:29
I can write a server that gathers these :)
but for the displaying part a frontend wizard is necessary 22:30
dylanwh What sort of frontend would be required? How fancy we talkin' here? :)
FROGGS just something bootstrappy and it will be awesome :o) 22:31
tadzik I've no idea, but my frontend is now going to sleep :)
FROGGS *g*
gnight tadzik
dylanwh I could do something bootsrappy. 22:32
FROGGS would be interesting to see a matrix like in here: static.cpantesters.org/distro/S/SDL.html 22:35
though, we also have three backends, and I don't know what is more important, operating system or vm
(or both or nothing or a mix or...)
dylanwh perhaps two different cuts? 22:36
FROGGS probably, yeah
dylanwh "by VM" and "by OS", whichever one you're on has tabs/etc to the others
that is, on the by VM view, you can switch OS
FROGGS yeah
"Perl version" might be "rakudo compiler release version" for now 22:37
I push my stuff to branches now, perhaps somebody likes to try 22:38
though, it only works on moar atm... parrot and jvm need a new op called nqp::closefhi
dylanwh I'll see if I can through together a fun prototype over the weekend. Sounds like fun. :) 22:38
FROGGS bootstrap is fun.. at least for me :o) 22:39
dylanwh (and something I can actually contribute to perl6 :-D)
FROGGS *g*
dylanwh++
raydiak might also work to have VM & OS lumped together in one series like 'linux/moar', 'win/moar', 'linux/jvm', etc 22:40
dylanwh that may look nicer, a *3 multiplier isn't horrible
raydiak and well-volunteered, dylanwh++ :) 22:41
and tadzik++ 22:42
dalek p/closefhi: 9f2b16d | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
map nqp::closefhi on moar (parrot and jvm are TODO)
22:47
kudo/closefhi: 3999da8 | (Tobias Leich)++ | src/core/IO/Handle.pm:
implement IO::Handle.close-pipe, which returns the exit code
22:48
dalek nda/reporter: 98ea6ec | (Tobias Leich)++ | / (7 files):
implement Panda::Reporter, which saves reports to disk for now

This is WIP. It will create a test report file once a dist installation is attempted. See this example of a FAIL: gist.github.com/FROGGS/5b25776e1ce3f297cb05 Next step is to submit these reports for review to a web service. We also need to ask the user for permission to generate and send these reports.
22:53
FROGGS .tell leont Would it be of any interest for you TAP::Harness that you can now read from a pipe and also get the exit code? 22:58
yoleaux FROGGS: I'll pass your message to leont.
FROGGS gnight #perl6 23:01
raydiak good night FROGGS
timotimo FROGGS: cpantesters.org is cool, but ... all of the data on a single page 23:52
Tekk_ timotimo: that's nice imo 23:53
lets you use ctrl+f 23:54
all on one page with bookmarks to div is the best way to do it
timotimo hmm. 23:55
it's good that the json button and the rss and yaml buttons are right at the top there
actually i'd find it interesting to have a little angular app like our profiler pages 23:56
because you can't just crunch that data in your browser
i'd also suggest using actual text instead of little images to have 90 degrees rotated headings for tables :P 23:58