»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by diakopter on 6 April 2013.
dalek osystem: cb9d862 | (Brent Laabs)++ | META.list:
+File::Spec::Case (case-tolerant split from File::Spec)
01:05
BenGoldberg labster: File::Spec::Case contains a race condition. 02:49
If two perl6 processes both run at the same time and in the same directory, they both might create a filespec.tmp file. 02:50
BenGoldberg Even ignoring that one process might die()... 02:52
BenGoldberg Also possible for one process to unlink the file created by the other process... which could result in one getting a wrong answer from the .tolerant method 02:52
lard perl6: class foo { multi method bar(:$baz) { say ">",$baz,"<"}}; foo.new.bar(:baz<works>);foo...rp('rakudo runs method even though nothing matches sig')); 03:12
p6eval niecza v24-37-gf9c8fc2: OUTPUT«>works<␤Unhandled exception: Cannot call bar; none of these signatures match:␤ foo, Any :$baz␤ at /tmp/W2hmEFv_In line 1 (mainline @ 9) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4299 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4300…
..rakudo b5bdbe: OUTPUT«>works<␤>(Any)<␤»
lard oh and same result without multi 03:13
sent bug report 03:33
colomon lard++ 03:34
labster .tell BenGoldberg I am aware that File::Spec::Case sucks, but compared to the Perl 5 version which is always wrong on my computer, it's still an improvement. One of the main reasons I wanted to yank it out of File::Spec is because it's little-used and broken. 04:02
yoleaux labster: I'll pass your message to BenGoldberg.
labster just now realizes that Perl6 will never run on OSes that only support 8.3 filesystems anyway (CORE.setting) 04:20
sorear s/Perl6/rakudo/ 04:33
although practically speaking perl 6 will probably never be efficient enough to run on bare DOS 04:34
diakopter why does it need more efficiency there? 04:39
(or, s/on bare DOS/)
sorear very tight memory limits 04:40
diakopter /
sorear waves hands and vanishes 04:41
labster does jazz hands 04:59
diakopter looks at my entries in the evalbot log and rotfl 05:37
out of 6502 entries in the log, I made 2587 05:42
er. 6981 entries in the log.
n: say (2587/6502*10000).Int 05:43
p6eval niecza v24-37-gf9c8fc2: OUTPUT«3978␤»
diakopter 39.78%
moritz \o 05:47
diakopter morning
sorear what's camelia? 05:48
diakopter oh good you're here 05:49
was going to ask your permission to swap p6eval's nick for that
sorear i would defer to moritz and/or TimToady
diakopter oki
moritz: :) 05:50
moritz diakopter: I don't care much either way
so, no objections here
diakopter anyone know what #rosettacode is? 05:51
sorear rosettacode.org 05:52
diakopter I mean, I know what the site is, but what's the channel for
moritz a channel discussing rosettacode?
sorear diakopter: the channel is about the site
diakopter ok; I was asking b/c p6eval is in there
diakopter oops, maybe I shouldn't have given it a password 05:55
moritz I'm pretty sure it's possible to add the password to the code somehow
sorear diakopter: yes, they (mostly TimToady) use perl 6 in there and so they have a p6eval 05:58
You're just giving the bot a new account, not rewriting it or anything like that?
diakopter correct 06:01
diakopter /o\ fail 06:10
diakopter r: 'yo' 06:10
oh heh.
diakopter tries again 06:11
camelia rakudo b5bdbe: ( no output )
diakopter wat.
sorear diakopter: It's just waiting for a chance to speak
that PRIVMSG holding the reply was queued up behind a bunch of JOINs 06:12
diakopter n: "I'm here too"
camelia niecza v24-37-gf9c8fc2: ( no output )
diakopter ah, good to know.
now to actually get it to identify
apparently I didn't realize that $bot->run() was blocking :S
well actually it might be identified; not sure 06:15
rn: .say 06:17
camelia rakudo b5bdbe, niecza v24-37-gf9c8fc2: OUTPUT«(Any)␤»
diakopter pugs: 'ahoy'.say
camelia pugs: OUTPUT«ahoy␤»
diakopter p6eval: yo
camelia: yo
sorear diakopter: camelia isn't identified 06:18
you can tell this by /whois camelia /whois sorear
sorear one has 'account : sorear', the other has nothing 06:19
diakopter ah ok; thx 06:20
moritz diakopter: please make sure to push changes to github 06:21
diakopter I'll muddle through it
ops to fix the topic in a sec
moritz ++diakopter
the topic looks fine to me :-)
diakopter /msg p6eval 06:22
eh I'll just override ->join that's close enough 06:24
er, chanjoin 06:25
superfluous messages to nickserv shouldn't be a problem. ;)
wait. connected is what I want 06:26
here goes nothing 06:31
diakopter r: 1 06:32
n: ;
camelia rakudo b5bdbe: ( no output )
niecza v24-37-gf9c8fc2: ( no output )
diakopter *sigh* 06:33
sub connected { my $bot = shift; $bot->say(name=>'nickserv',channel=>'msg',body=>"identify $bot->{__nickpass}") if exists $bot->{__nickpass}; } 06:36
$bot->{__nickpass} = $conf{pass} if exists $conf{pass};
probably got param to say wrong
argh. 06:37
name -> who
diakopter r: ; 06:38
camelia rakudo b5bdbe: ( no output )
diakopter success.
\o/ 06:39
»ö« 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! 06:39
diakopter opos 06:40
.. now to +V it
diakopter urp 06:41
wth did I do
oh. nothing.
ergh; apparently I don't have perms to /msg chanserv flags #perl6 camelia +V 06:43
moritz or sorear?
(would you do it plz)
diakopter OOPS. fixing 06:47
diakopter argh. fail... sorry everyone 06:48
should be okay now
PM me if not..
r: 2345.2 2 2 06:49
camelia rakudo b5bdbe: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/VFBSEzoN9k:1␤------> 2345.2 ⏏2 2␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ statement modifier␤ statement …
diakopter camelia: hi
p6eval: help
camelia diakopter: Usage: <(nqp-jvm|star|pugs|nqp|std|niecza|rakudo|b|nom|npr|n|r|perl6|prn|rn|p|rnp|nrp|pnr|rpn|p6|nr)(?^::\s) $perl6_program>
diakopter heh
diakopter test 06:49
labster rn: "\c61\c41" #hi camelia 06:50
camelia rakudo b5bdbe, niecza v24-37-gf9c8fc2: ( no output )
labster rn: say "\c61\c41" # still not a repl, of course 06:51
camelia rakudo b5bdbe, niecza v24-37-gf9c8fc2: OUTPUT«=)␤»
diakopter .ask sorear would you please /msg chanserv flags #perl6 camelia +V unless moritz_ beat you to it 06:53
yoleaux diakopter: I'll pass your message to sorear.
FROGGS_ diakopter: must be an accident but camelia is not showing 'v5' in the help msg :P 07:03
labster FROGGS: o/ 07:06
diakopter hunh. 07:07
FROGGS hi labster
.a hunh
diakopter v5: ;
diakopter FROGGS: oh. you were kidding. 07:08
FROGGS *g*
a bit
diakopter there are plenty of rakudo checkouts there, what's one more...
labster I cut about 250 lines from File::Spec in the past 3 days -- only 75 of which came from moving case-tolerant to another module -- the rest was refactoring. 07:10
FROGGS diakopter: well, I can change something in the v5-repo, so that an additional rakudo won't be needed 07:13
diakopter o_O 07:14
FROGGS v5 just needs to be checked out, made, and the commands from 'v5' must be in its redo directory
v5 is just a module
not pandaable yet though 07:15
FROGGS diakopter: I'll fix up v5 later, and give you a batch, okay? 07:15
diakopter: basically it would be cool if 'r:' would be executed in v5's repository root-dir 07:18
because only if you do 'use v5' it would do anything at all
diakopter ah.' 07:19
FROGGS labster++
labster I'm starting to think that if IO.pm will depend on File::Spec, it's going to have to be a core module. Unless it's possible to "use File::Spec;" in CORE.setting? 07:22
moritz diakopter: done 07:26
.msg sorear I beat you to it :-)
yoleaux moritz: Sorry, this command is admin-only.
moritz .tell sorear I beat you to it :-)
yoleaux moritz: I'll pass your message to sorear.
diakopter moritz: I seem to need a git hand-holding 07:38
moritz diakopter: what do you need? 07:38
diakopter told what to type? 07:39
moritz first, commit all your changes 07:39
then
git fetch
git format-patch origin/master 07:40
that generates a bunch of 000\d-\S+.patch files
copy them over to your local machine
diakopter O)O
moritz there do a git am -s 000*
and then push
diakopter hrm, probably shouldn't push the password 07:43
moritz probably not :-) 07:44
diakopter ah well, someone else probably will later anyway 07:46
timotimo in the optimizer, would i have to find_lexical("Signature") to access the $!params of a Signature? i would assume if Signature was redeclared lexically, i'd still get the Signature from core there, right? but just writing Signature instead doesn't seem to work. 07:51
sorear if you do find_lexical("Signature"), make sure you start the search from the correct place so you get CORE::Signature and not COMPILING::Signature 07:53
yoleaux 06:53Z <diakopter> sorear: would you please /msg chanserv flags #perl6 camelia +V unless moritz_ beat you to it
07:26Z <moritz> sorear: I beat you to it :-)
sorear we've hit many versions of that bug across 2(+?) compilers
timotimo hehe :) 07:55
at least this time the compilation pulls through
isn't that something.
labster which seems more idiomatic: ~self, self.Str, or $.Str ? 07:56
sorear ~self
dukeleto votes ~self too 07:57
timotimo $.Str isn't correct most of the time, no?
dalek albot: d31c208 | diakopter++ | evalbot.pl:
nqp-jvm target

Signed-off-by: diakopter [email@hidden.address]
07:59
albot: 692b905 | (Perl 6 Evalbot)++ | / (2 files):
use camelia account instead

Signed-off-by: diakopter [email@hidden.address]
diakopter meh
diakopter hunh. where'd that first commit come from 07:59
diakopter argh. 08:00
timotimo hehe
labster even the evalbot is excited about the jvm, committing to it.
timotimo :D 08:02
diakopter moritz: where do I commit the build-script 08:03
or does that just live there
timotimo i wonder if rakudo would benefit from an optimizer in nqp? 08:05
moritz diakopter: there's a subdir for build scripts in the p6eval repo 08:10
cognominal timotimo: or the plan is maybe to eventually compile rakudo in rakudo?
s/in/with/ 08:11
timotimo i'm not sure how to start my search at the CORE block; the previous code to see if some lexical comes from the core is just to look if there's a !CORE_MARKER in it ...
oh, i suppose i can just walk the block chain for a !CORE_MARKER to exist
and then just save that away
moritz timotimo: rakudo would benefit from an nqp-level optimizer 08:22
for build times, and also because Actions, Grammar and World are written in NQP 08:23
and the meta model
timotimo mhm 08:29
especially all those negative numbers having to be make-int + negate-int :P
moritz wwwhat?
timotimo is the prefix:<-> operator already inlined for nqp? 08:30
moritz a -1 in nqp produces a QAST::IVal.new(:value(-1)) 08:31
so no separate call to nqp::neg_i or so
timotimo ah, that's nice. 08:33
i seem to recall in rakudo it used to be non-inlined, but that must be because you can override - in rakudo but not in nqp?
moritz iirc jnthn++ improved the codegen a bit when he introduced PIRT 08:34
timotimo: probably
timotimo what is PIRT?
moritz the stage after QAST 08:35
$ ./perl6 --target=optimize -e 'say -1' > optimized 08:36
$ ./perl6 --target=ast -e 'say -1' > naive
$ diff -u naive optimized
moritz shows that the call is constant-folded, but that we lose the polymorphism of the integer literal 08:37
moritz if somebody is looking for a fun little project in the optimizer, that would be a nice thing to fix 08:38
timotimo oh, i know it by the name "optimizer" ;) 08:39
hm, what's the use in getting that back?
moritz if you write code like my int $x = 42; my int $y = -1 * $x 08:40
then since the -1 is currently not an int, but rather an Int, it'll used the infix:<*>(Int, Int) candidate instead of infix:<*>(int, int)
the latter would be more efficient 08:41
timotimo oh, so it doesn't create a Want node?
moritz correct
it just creates a bare QAST::WVal node 08:42
timotimo so if the optimizer creates a WVal with an Int in it, it could then optionally/optimally create an int from that Int, and turn that WVal into a Want 08:43
does the Want contain a WVal for the Int still?
moritz yes 08:45
timotimo just looks by themself
oh. neat. so the WVal node can still be reused
can the same thing be done with strings? is there a Str vs str?
moritz it should trans form the QAST::WVal(Int) into a QAST::Want(QAst::WVal(Int), 'Ii', QAST::Ival(unboxed Int))
yes, Int, Str and Num
timotimo unboxing ints works how? i thought p6decont would do that, but it seems that op isn't available in Optimizer.pm, so maybe only in the Setting? 08:47
sorear nqp::unbox_{ins} mayb 08:48
moritz nqp::unbox_i($value)
timotimo: containers and boxing are mostly orthogonal
timotimo ah, i think i can implement this now :)
moritz ++timotimo
sorear if you have a (pseudocode) Scalar[Int[int]], p6decont gives you the Int, unbox_i gives you the int
timotimo ah, so the container thing is $i vs \i, the boxing is Int vs int, is that about accurate?
sorear rooooooughly 08:49
moritz the problem is that \i doesn't remove the container, it just preserve it
whereas unboxing always removes the box
timotimo ah, ok. 08:50
sorear Every value you can touch in perl 6 logically has a container
timotimo i'll have to fix my junction fail first, which is kind of a back-and-forth with not really knowing how nqp does things and taking 3 minutes to compile and getting distracted
sorear in nqp, you get to choose between bare values and containers, and can use p6decont to switch between them
(this is complicated by an optimization: when perl 6 sees a bare value, it imagines a read-only container. this lets us avoid allocating well over half of the containers that are logically needed) 08:51
moritz sorear: does a literal "logically" have a container? 08:52
sorear moritz: i would say so
moritz sorear: why?
sorear because you can do "foo".flip and the literal's container needs to be passed to the string method 08:53
timotimo ah, that's a good point 08:54
moritz a method call doesn't need a container
at least not in my world view 08:55
sorear your world view made no sense until I learned to understand it as an internalized optimization of mine
moritz one could say that "everything has a container, but they can often be optimized away" is roughly equivalent to "not everything has a container, but certain operations vivify them"
sorear yes, there are two possible ontologies there 08:56
and since they are observationally equivalent I am going to avoid any possible useless debate and sleep& 08:57
GlitchMr std: sub double { my $val = shift; $val * 2 } 08:58
camelia std 86b102f: OUTPUT«ok 00:00 44m␤»
GlitchMr rn: sub double { my $val = shift; $val * 2 }
camelia niecza v24-37-gf9c8fc2: OUTPUT«Potential difficulties:␤ &double is declared but not used at /tmp/f5ETy32uyi line 1:␤------> sub double ⏏{ my $val = shift; $val * 2 }␤␤»
..rakudo b5bdbe: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling proto of 'shift' will never work with no arguments (line 1)␤ Expected: :()␤»
timotimo good night sorear :)
GlitchMr rn: sub double { my $val = shift; $val * 2 }; say double 42
camelia niecza v24-37-gf9c8fc2: OUTPUT«Unhandled exception: No value for parameter '@array' in 'shift'␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (shift @ 1) ␤ at /tmp/X8fBhvM8G5 line 1 (double @ 4) ␤ at /tmp/X8fBhvM8G5 line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting li…
..rakudo b5bdbe: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling proto of 'shift' will never work with no arguments (line 1)␤ Expected: :()␤Calling 'double' will never work with argument types (int) (lines 1, 1)␤ Expected: :()␤»
timotimo oh, so shift is specced to use CALLER::@_ if it has no arguments? 08:59
moritz you mean in p5? 09:00
lizmat in p5, a bare shift operates on @ARGV in main::, no? 09:01
moritz lizmat: outside of any functions (which isn't quite the same as in main::) 09:01
*function
lizmat ack
wasn't sure what the conditional was 09:02
timotimo i *think* my optimization code is now ready to be pushed, but i'll add some spectests and run a full spectest run in the mean time. 09:03
actually, i should start up my beefy desktop for this now.
"inspecting &infix:<ne> for junction optimization" "a parameter doesn't accept Any" sounds promising already :) 09:04
jnthn r: perl6: class foo { multi method bar(:$baz) { say ">",$baz,"<"}}; foo.new.bar(:baz<works>);foo...rp('rakudo runs method even though nothing matches sig')); 09:05
camelia rakudo b5bdbe: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/c5NcsfjbbJ:1␤------> perl6⏏: class foo { multi method bar(:$baz) { ␤ expecting any of:␤ argument list␤ postfix␤ infix stopper␤ infix or meta-infix␤ st…
jnthn perl6: class foo { multi method bar(:$baz) { say ">",$baz,"<"}}; foo.new.bar(:baz<works>);foo...rp('rakudo runs method even though nothing matches sig'));
camelia niecza v24-37-gf9c8fc2: OUTPUT«>works<␤Unhandled exception: Cannot call bar; none of these signatures match:␤ foo, Any :$baz␤ at /tmp/b1IH8bi9y2 line 1 (mainline @ 9) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4299 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4300…
..rakudo b5bdbe: OUTPUT«>works<␤>(Any)<␤»
jnthn Rakduo is correct here. 09:06
See S12, interface consistency.
moritz jnthn: I've already rejected the ticket, with a link to S12/Interface Consistency/ :-)
jnthn Oh, that's why I can't find the RT ticket :)
moritz++ 09:07
My next question was going to be "where was it filed" ;)
moritz jnthn: if you read the mail, you have the ticket number, which you can just paste into the rt search box -> instant search victory :-)
jnthn Yes, I didn't see it in my email either, for some reason. 09:08
moritz now that you mention it: me neither 09:09
dalek ast: 81449cb | (Timo Paulssen)++ | S03-junctions/boolean-context.t:
tests for RT #117579.
09:15
timotimo spectests
moritz .u ಠ
yoleaux U+0CA0 KANNADA LETTER TTHA [Lo] (ಠ)
moritz .u ಠ 09:16
yoleaux U+0CA0 KANNADA LETTER TTHA [Lo] (ಠ)
GlitchMr > PRE ; 09:20
Segmentation fault
That was strange
No idea what causes it, but I could upload entire REPL session I had
gist.github.com/GlitchMr/5382064
Sorry for large session, but I don't know why it happens. 09:21
timotimo pull requested. 09:22
GlitchMr It couldn't reproduce it 09:23
Strange...
moritz timotimo: spectesting your pull request 09:26
timotimo thank you :)
moritz: how much do you think will the optimization to turn WVal into Want in the optimizer give in performance? surely it could give a bit of a boost in long arithmetic expressions? 09:28
moritz timotimo: it'll only help where native types are used in tight loops
and there are operators with native types to dispatch to 09:29
jnthn Need to be careful about optimizations with natives also.
Two things that fit into an int being multiplied together or added, for example, can easily give something in big int range that must be an Int. 09:30
So with literals we have to be careful. We used to have bugs where 123456 * 123456 or so would come out negative 'cus it used int * int
masak good forenoon, #perl6 09:31
moritz good UGT morning, masak
jnthn The current state is that there should be at least one non-literal thing that is known to be an int, iirc. I'm pretty sure there's a comment somewhere in Optimizer.pm that explains it... :)
good omg-you-got-up-before-afternoon, masak
moritz *g*
diakopter jnthn: are you saying that two variables declared as ints don't do int32/64 arithmetic? 09:32
moritz jnthn: I don't think that problem is immediately relevant to the thing timotimo and I are trying to do
jnthn diakopter: Two *variables* will 09:33
moritz hm, or maybe it is
jnthn diakopter: The rule is about literals.
diakopter oh.
jnthn moritz: It was a comment from reading backlog. :)
moritz jnthn: yes, I figured :-)
diakopter so.. just put your literal into a variable.... :P
diakopter ducks
timotimo jnthn: github.com/rakudo/rakudo/blob/nom/...er.pm#L341 - i think i'm looking at the right spot here?
jnthn timotimo: The bit I was talking about is at github.com/rakudo/rakudo/blob/nom/...er.pm#L537 09:34
moritz timotimo: that was the part I was talking about, yes 09:35
timotimo i'm not exactly sure how those interplay
moritz probably not much 09:35
timotimo right. but i will still have to check that the Int would actually fit into an int, yes? is there something in nqp already that does that? 09:36
moritz nqp::isbig iirc
nqp::isbig_I
jnthn I thought for literals we were already emitting a QAST::Want when the thing isn't big.
timotimo maybe for literals, but not for compile-time-evaluated things
moritz jnthn: yes, but not for the result of constant folding stuff
jnthn Oh! 09:37
OK, I see :)
timotimo we're talking about things like -5 and friends
jnthn Ah, which we ain't folding today?
moritz we are
timotimo it's folding all right
but not into a Want
moritz but the result is just a QAST::WVal
jnthn OK.
moritz not a QAST::Want(WVal, 'Ii', IVal)
jnthn *nod*
timotimo do you think it's worth investing in, jnthn? 09:38
jnthn Well, need to be careful, - can apply to many things.
So need to check the type of the exact value
timotimo: Yes, almost certainly
timotimo yes, i was going to see if the return value is an Int and if it's not nqp::isbig_I, i'll create an int from it using nqp::unbox_I 09:38
jnthn timotimo: Just like all things optimizer, tread carefully; it's easy to get wronger as well as faster :)
timotimo unbox_i actually 09:39
jnthn timotimo: unbox_i, but yes.
timotimo: You could also check if it's a Num, fwiw.
Those can become a Want with an NVal too
timotimo sure, but i wanted to start small ;)
jnthn
.oO( a small task...involving nqp::isbig :P )
Have any of the folks here going to YAPC::EU made travel plans, ooc? 09:40
timotimo nqp::isa($return_val, Int), will that work? or will i have to use $!SETTING.symbol("Int")<value>?
jnthn nqp::istype
Oh, you'll need to look up Int
jnthn probably won't be able to stay and hack *after* YAPC::EU. 09:41
Before, however, is do-able. I'll certainly be at the Perl 6 hackathon, especially as it has my name of it :) 09:42
lizmat how much before?
fwiw,. we still haven't decided to either drive or fly
moritz isn't sure he'll make it to YAPC::EU at all
my wife just got a new aortic valve, and I won't be able to travel before her complete recovery 09:43
though if I'll make it, my employer will pay for it :-)
jnthn lizmat: Well, the hackathon is the Sunday before YAPC::EU. If there's a reason to, I can be about on the Saturday also, for example.
timotimo moritz: she's a cyborg! :D 09:44
jnthn moritz: Best wishes for the recovery.
lizmat best wishes, moritz!
moritz thanks jnthn, lizmat
timotimo best wishes from me, too :) 09:45
masak fourthed. 09:46
best wishes.
moritz timotimo: she is, but not because of the valve (that's "tissue engineered" from a human aortic valve, which means that the cells were removed to reduce the risk of rejection)
thanks timotimo, masak
timotimo oooh, that's even cooler 09:47
(but not cool in the way that it had to be done ... er) 09:48
moritz yes, it's the best option that exists today, and still experimental, and thus only done in one hospital in .de
(afaict)
timotimo wow. I hope it'll turn out good! both for your wife and everyone in the future to need a similar procedure 09:49
moritz her blood pressure, which was notoriously low, is quite normal, which is a good sign 09:50
masak \o/ 09:57
timotimo hm. i think the speed benefit of the Int -> Want optimization would be visible by comparing code that uses negative numbers and code that uses positive numbers, does that sound accurate?
moritz masak: how's the t2 review coming along? :-) 10:01
timotimo: well, you could just compare before and after
timotimo i surely could.
but i'll have to wait until i come up with a working solution ;)
at the moment it seems my code is being called in a position where the block chain doesn't reach the SETTING or something. 10:02
which makes sense, given that it occurs during compiling the setting :D
diakopter masak: watch 10:04
rn: "hi I'm Camelia!".say
camelia rakudo b5bdbe, niecza v24-37-gf9c8fc2: OUTPUT«hi I'm Camelia!␤»
timotimo if you're currently working on the evalbot, could you perhaps teach it to mention the nickname of the person who asked for the eval? 10:05
(maybe only if two requests by different people have been sent in close proximity?)
timotimo huh. it doesn't seem like prefix:<-> is even inlined normally?! 10:09
timotimo oh, it won't be if i set --target=ast 10:11
dalek p/jvm-support: 4c7ee83 | jnthn++ | / (19 files):
Move stage0 into src/parrot/vm/.

The stage0 is inherently platform specific, since it's generated code.
10:13
p/jvm-support: 9f25f51 | jnthn++ | t (16 files):
Segregate Parrot-specific tests.
timotimo is SETTING the right place to look for Int? 10:20
nwc10 breaks on my machine: 10:24
Stage start : 0.000get_pmc_keyed() not implemented in class 'Sub'
diakopter nwc10: I think I saw that in a bug report a couple weeks ago
jnthn nwc10: What breaks, exactly? 10:25
nwc10: Rakudo with...?
nwc10 Rakudo with nqp at origin/master 10:26
jnthn ah
nwc10 nqp at d46b46539aa380b933e6a38c4813ec9d6a7b3f05
jnthn Will look in a bit, but not a big deal since NQP_REVISION points to a working thing. 10:27
nwc10 rakudo at b5bdbe459f2f3a2570979340faf6fa71d18e711a
ah OK
I'll test at NQP_REVISION now
timotimo forgot to call .new on QAST::Want ... m( 10:28
timotimo paste.ee/p/SfdoH - what could i have done wrong? this confuses me. 10:38
jnthn timotimo: Probably got something that's not a QAST node inside a QAST node. 10:39
Did you forget to put an integer inside a QAST::IVal for example?
timotimo oh, i forgot to create an IVal around the integer i created!
timotimo great. now it works! do i give IVal a :named or something so that the right number shows up in the qast dump? right now it says "IVal(0) - -5" 10:48
moritz: does the spectest of my branch really take hours on your machine? poor you! ;) 10:50
jnthn Sounds like just a dumping issue
dalek p-jvm-prep: f073947 | jnthn++ | / (3 files):
Package NQP runtime into a JAR.

Preferable to having dozens of .class files to load.
timotimo i think i used the IVal constructor wrong 10:51
jnthn QAST::IVal.new( :value(5) )
timotimo yes, i passed 5 as the first positional 10:51
timotimo it's compiling the fixed version now 10:51
great. it even bails out correctly if the int is too big 10:54
FROGGS[mobile] timotimo: what are you up to? 10:58
timotimo FROGGS[mobile]: when an inlined thing (like -5) returns an Int, the optimizer will now create a Want for it with an unboxed int in it as well as the WVal Int 10:59
next thing i'll do is the same thing with Num, and then with Str.
FROGGS[mobile] and that is good? 11:03
timotimo it will hopefully cause more operations in tight loops and such to run with native values instead of boxed values 11:04
tadzik the release is to be in 4 days, do we have a volunteer? 11:05
FROGGS[mobile] timotimo: so ideally this would only run for loops? 11:06
timotimo no, it will always run. there's no big overhead 11:07
(at least that's what i guess!)
timotimo it's just a little thing, i don't see where it makes a big difference in performance yet, but moritz suggested it and it seemed simple enough to do 11:08
FROGGS[mobile] cool
jnthn tadzik: not yet, afaik 11:09
tadzik looks around
timotimo if nobody speaks up, i may try 11:10
FROGGS[mobile] there is somebody 11:11
was it gtodd?
the ir-clogs will tell
timotimo unfortunately my changes seem to lead to spectest failures 11:12
heh, what a silly mistake 11:17
FROGGS timotimo: do you run benchmarks? 11:25
timotimo spectests first ;)
i didn't come up with benchmarks for this yet
FROGGS would be cool if [Coke]++ 's toolchain would track performance over time too
timotimo it would :) 11:26
FROGGS hmmm, but benchmarking the changing test files is not the best idea... 11:27
there was a p5/p6 benchmarking repo somewhere...
nwc10 jnthn: Rakudo head passes tests with its NQP_REVISION 11:28
(this network is low)
dalek kudo/nom: 452a072 | jnthn++ | / (3 files):
Updates to run on latest NQP.
jnthn ...what timing :) 11:29
FROGGS jnthn: do you know if this is intended to work? require "plan-script-that-declares-sub-x.pl"; x(42)
jnthn: since x() is looked up before runtime...
jnthn FROGGS: That won't (shouldn't) work.
FROGGS good
nwc10 OK, I'll test that now... :-) 11:30
jnthn You'll get a CHECK time error saying x aint' declared.
moritz but require $path <&x>; x() should work
FROGGS right, just wanted to know if it is by spec
jnthn realized that NQP JVM has been hobbling along without a multi-dispatch cache all this time...
FROGGS because you can do that in p5
dalek kudo/nom: 5122e2e | (Timo Paulssen)++ | src/Perl6/Optimizer.pm:
no longer compile-time-autothread operators that take Mu args.

This caused problems with the ne and !== operators, which handle junctions manually, but also with any user-defined operator that takes a Mu argument.
moritz timotimo: sorry, I thought I had pushed earlier 11:31
timotimo no problem :)
nwc10 jnthn: will adding that make some things faster, or many things faster?
moritz multi dispatches, I think :-) 11:32
timotimo paste.ee/p/RnYLj # ...the hell? 11:33
moritz timotimo: the BUILD call looks all wrong to me 11:34
jnthn nwc10: It'll make multi-dispatches faster
moritz timotimo: BUILD is only called with named args, normally
jnthn nwc10: But since QAST compilation is LOADS of multi-dispatches (one per QAST node) it'll speed those up.
moritz (by bless, that is)
timotimo moritz: how come it only fails when my optimization is turned on and otherwise never noticed?!
oh, there's a custom BUILD there, too 11:35
it takes positional args
moritz huh.
timotimo: what code triggers it? 11:36
timotimo oh, i forgot to paste it
the code is just my %h = a => 1, b => -2, c => 5; or something similar
is it because i fail to move the SpecialArg thing outwards into the Want? 11:37
(i don't even know what that is)
moritz what about just my $ = (a => $b) ?
does that also fail?
arnsholt jnthn: Right. So NQP/JVM without cache was faster than Parrot with cache? That's promising =) 11:38
timotimo moritz: no, that works (when i set my $b = -5 for example)
moritz timotimo: seems that SpecialArg is related to named arguments
timotimo: you have to do something like
if $original_op.named { $new_op.named($original_op.named) } or something along the lines 11:39
arnsholt Unrelated, I sort of wish mrhdias would drop by here for help
timotimo ah, that's what that is for!
arnsholt Some of his bug reports aren't really bug reports
moritz because we represent named arguments not by pairs, but by a .named or .name or so property in the QAST nodes that represent the arguments
moritz afk 11:40
timotimo do i need to remove the $wval.named if i create a Want from it?
dalek p-jvm-prep: 1dbb570 | jnthn++ | src/org/perl6/nqp/ (6 files):
Implement multi-dispatch cache.

While selftest is dominated by startup time, this does shave around 8% off the time to run it.
11:50
p-jvm-prep: 7a47938 | jnthn++ | .gitignore:
Update .gitignore.
nwc10 jnthn: Rakudo works on my machine again 11:51
jnthn \o/
nwc10 I see the that the gooalposts just moved again
jnthn arnsholt: Yeah, but startup time is pretty high. 11:52
arnsholt Yeah, that's always gonna be a problem on the JVM, I guess 11:54
jnthn: Did you see Zavolaj #25, BTW? 11:56
(Which isn't really a bug)
jnthn arnsholt: Yeah. Without looking further, I don't know exactly where the bottleneck lies 11:57
arnsholt I suspect it's just expecting an iteration over all the pixels in an image, using Perl 6, to be fast 11:58
timotimo :( 11:59
jnthn arnsholt: Which, with Rakudo at present, it won't be 12:00
arnsholt Exactly
I'm gonna suggest that he uses perl6 --profile to see where the bottleneck is
timotimo i wonder if he would get better performance with native ints? 12:01
if the process takes 14 minutes, every bit of improvement in the tight loop would be a nice improvement i bet!
arnsholt Yeah, that's not a bad idea actually 12:02
timotimo doesn't have the necessary tuit right now 12:03
timotimo i'm getting "get_boxed_ref could not unbox for the given representation" and i don't really know what's going wrong 12:10
jnthn Sounds like some kind of Int mess-up 12:14
Or potentially a NativeCall thing since I think it also uses that
timotimo might not be int; i added NVal and SVal, too
jnthn Yeah, but only the bigint ops use get_boxed_ref to unpack the libtommath big integer out of the P6opaque Int. 12:15
timotimo oh, ok
jnthn You may have got an Int where an Int ain't meant to be or something
FROGGS jnthn: there is still seomthing missing when doing require PATH: GLOBALish:: tells me there is a key 'InnerModule', but I cant access GLOBALish::InnerModule:: and not ::('InnerModule')
timotimo this happens in the minmax.rakudo test
jnthn FROGGS: It should be GLOBAL::InnerModule 12:16
timotimo indeed, it's int that is at fault.
strange!
jnthn Maybe int/Int confusion? 12:17
FROGGS jnthn: okay, that tells me these is an EXPORT in it... but I can't access a sub declared in that module... I'll paste something in a bit 12:18
jnthn FROGGS: Did you make the sub "our"? 12:19
FROGGS: Or "is export" it?
timotimo oh. should i put an optimization level limit on the WVal -> Want thing?
FROGGS jnthn: is exportr 12:22
-r
timotimo jnthn: say 1 min 2; will cause this problem to crop up; i'm out of ideas now. want to see the current code?
jnthn FROGGS: Then it will be in EXPORT DEFAULT 12:23
(Inside of your module)
timotimo github.com/timo/rakudo/compare/wval_to_want 12:24
i'll be afk for ~30 minutes 12:25
dalek p/jvm-support: 811d92c | jnthn++ | / (3 files):
We'll need a Makefile per backend.
p/jvm-support: 7c34883 | jnthn++ | / (2 files):
Stub ConfigureJVM.pl and Makefile-JVM.in.
colomon moritz: ping? 12:26
jnthn timotimo: I wonder if isbig_I doesn't decontainerize...to check, try !nqp::isbig_I(nqp::decont($ret_value)) 12:32
arnsholt bigint_I doesn't decontainerize. It calls get_bigint directly on its operand 12:34
jnthn ah, then that may be it. 12:35
gtodd what sorts of machine are most people using while developing rakudo / parrot / perl6 ... typical wintel (mabye running linux) and/or mac laptops or do folks make heavy use of cloud instances virtualized hosts of all sorts ?
arnsholt I used a MBP for a while, but now I'm mostly using a Dell laptop running linux 12:36
I do the occasional bit of work on my work desktop machine as well 12:37
gtodd ok ... I run it on a slightly beefier than typical (4 core 32g ram) workstation ... and rakudo/parrot seem to have predictable or consistent areas of slowness but are certainly usable
gtodd heheh like p6doc is 1000% slower than perldoc :-) 12:38
FROGGS jnthn: say GLOBAL::InnerModule::EXPORT::DEFAULT:: gives me ("\&foo" => sub foo() { ... }, "\&bar" => sub bar() { ... }).hash 12:40
jnthn: but say GLOBAL::InnerModule::EXPORT::DEFAULT::bar gives me: Could not find symbol 'bar'
FROGGS is it possible that the symbols arn't imported because it tries to import from the modulename which is a path in this case? 12:44
will look now what Perl6::ModuleLoader::merge_globals does 12:46
timotimo jnthn, arnsholt: thanks. compiling and spectesting one more time 12:48
jnthn FROGGS: Does GLOBAL::InnerModule::EXPORT::DEFAULT::<&bar> work?
FROGGS jnthn: that works... 12:54
not very intuitive though
jnthn FROGGS: Well, it shows the problem is not the global merge though, as the symbol is there 12:56
timotimo hooray! all spectests succeed now! :) 12:56
i'll fix up the branch and pullrequest it :)
FROGGS soo, atm ::('InnerModule') gives me the InnerModule, while ::('InnerModule')::('&bar') doesn't give me &bar... 13:04
I dont really understand how require Fancy::Utilities; Fancy::Utilities::lolgreet('me') is working though 13:06
I'd expect to see some declaration of that modulename while it gets parsed... but there is nothing like that 13:07
nwc10 jnthn: make nqptest fails on my machine 13:12
a lot of Method 'compunit_mainline' not found for invocant of class 'HLL::Backend::JVM'
test and selftest pass 13:13
timotimo pull request'd 13:15
nwc10 apparently we have to go the beach, so afk
rindolf Hi all. 13:16
timotimo hey rindolf
rindolf What copyright notice should I put at the top of every source file to indicate that it is licensed under Artistic 2.0. 13:17
timotimo: hi, what's up?
FROGGS rindolf: you might want to google for proper patterns 13:18
rindolf FROGGS: couldn't find those off hand.
FROGGS: and there's also DuckDuckGo. 13:19
The Rakudo and Parrot source codes do not appear to contain them - quite sloppy.
timotimo rindolf: nothing much, I'm screwing around with the optimizer again after i made a pretty grave mistake last time
rindolf timotimo: ah, OK, nice. 13:20
timotimo can't tell if there'll be any noticable performance improvement this time around 13:21
github.com/rakudo/rakudo/pull/125 - ready to spectest&merge 13:22
rindolf Found something here: search.cpan.org/~ajkald/Config-TOML...ig/TOML.pm 13:30
timotimo moritz or jnthn, can you intuit what kind of code would get faster by the WVal -> Want transformation? 13:39
timotimo writing an arithmetic expression seems to speed up with my changes applied, which is nice (1.35 to 1.12 seconds) 13:40
uh 13:42
r: my Num $num = 1.0;
camelia rakudo 5122e2: OUTPUT«Type check failed in assignment to '$num'; expected 'Num' but got 'Rat'␤ in block at /tmp/T65qBjjDE5:1␤␤»
jnthn 1.0 is a Rat in Perl 6
1e0 13:43
timotimo oke
wow. this code runs *faster* with Num than with num.
like 50% longer run time
i did not expect that 13:44
dalek p-jvm-prep: d26aaf7 | jnthn++ | / (3 files):
Use class path as default module search path.

Will (hopefully) be useful during bootstrapping.
13:46
p-jvm-prep: 9127bcd | jnthn++ | src/org/perl6/nqp/runtime/LibraryLoader.java:
ModuleLoader special handling.

Added as part of the work towards getting NQP JVM to build itself in order to support bootstrapping.
timotimo hm, maybe it needs to vivify a box every time the value gets changed or something? i have no idea. 13:56
gtodd why does: say (1/4).perl give me 0.25 14:01
shouldn't it give me [1, 4] 14:02
hmm maybe there should be a perl6-questions channel :-)
timotimo why should it give [1, 4]? 14:04
colomon gtodd: 0.25 is the perl expression for the rational 1/4
colomon it's exact 14:04
rn: say (1/2, 1/3, 1/4, 1/5, 1/6).perl 14:05
timotimo takes his bike out into the sun :)
camelia rakudo 5122e2, niecza v24-37-gf9c8fc2: OUTPUT«(0.5, <1/3>, 0.25, 0.2, <1/6>)␤»
colomon rn: say (1/2, 1/3, 1/4, 1/5, 1/6)>>.nude 14:06
camelia rakudo 5122e2, niecza v24-37-gf9c8fc2: OUTPUT«1 2 1 3 1 4 1 5 1 6␤»
colomon rn: say (1/2, 1/3, 1/4, 1/5, 1/6)>>.nude.perl
camelia rakudo 5122e2: OUTPUT«((1, 2), (1, 3), (1, 4), (1, 5), (1, 6))␤»
..niecza v24-37-gf9c8fc2: OUTPUT«[[1, 2], [1, 3], [1, 4], [1, 5], [1, 6]].list␤»
gtodd should not be distracting developers :-) but I am gradually answering some FAQs that are being recorded! 14:07
colomon: OK I forgot about .nude ... or repressed it because of its connotations 14:08
jnthn When did you last see a clothed Rat? 14:11
gtodd hah ... argh just found this where perl6advent.wordpress.com/2009/12/1...-the-rats/ it says"
say (3/7).nude.perl
[3, 7]
I guess I don't need [1,4] I can find numbers I want using other methods like .denominator etc. 14:13
cool
and well ">>" is neat too 14:16
gtodd ... there seems to be so many ways where future perls are going to be able to figure out how to give really good error messages 14:16
gtodd in a -w strict or debugger or console and point more exactly to where the error is 14:18
masak I have a feeling people in here might enjoy dev.stephendiehl.com/hask/ 14:24
dalek p/jvm-support: 2d0a551 | jnthn++ | / (83 files):
Add JVM runtime support; get Makefile to build it.
15:01
p/jvm-support: 604ef1d | jnthn++ | tools/build/ (2 files):
Add a conditional compilation mechanism.

gen-cat.pl now takes an argument for the current backend, and handles directives in the files it is processing related to VM-specific code.
p/jvm-support: 41237e1 | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
Add an nqp::scgetdesc op.
nqp-jvm-prep: 365b131 | jnthn++ | / (2 files):
nqp-jvm-prep: Fix deserialize_code to work on NQP JVM. 15:02
masak jnthn: wow. 15:06
2d0a55: "Showing 83 changed files with 11,979 additions and 2 deletions."
what was that about "you know you're correctly factored when commits are almost exclusively additions and no deletions"? :P 15:07
jnthn :D
dalek p/jvm-support: 13c5f8d | jnthn++ | src/vm/jvm/stage0/ (10 files):
Add current nqp-jvm-prep selfhost as stage0.

May have to update it if issues crop up, but hopefully not too many shall.
15:12
p/jvm-support: c9065ee | jnthn++ | src/how/NQPClassHOW.nqp:
Mark out Parrot-specific bits in MOP.
p/jvm-support: aadcfd0 | jnthn++ | src/vm/jvm/ModuleLoader.nqp:
Add JVM module loader.
nqp/jvm-support: d68776e | jnthn++ | / (2 files):
nqp/jvm-support: Rules for first bits of the stage1 build.
colomon \o/ 15:13
lizmat QA Hackathon wrapping up, mostly afk until Tuesday 15:42
dalek ast: c464098 | (Tobias Leich)++ | S11-modules/require.t:
test for "require PATH"
15:49
FROGGS jnthn: we have symlink() and link() now, should I add these as methods to IO ? 15:55
(writing the tests currently)
I'll add these methods unless someone screams "STOPIT!" 15:58
nwc10 jnthn: nqp-jvm-prep very unappy currently, is this expeted? 16:15
nqp --target=pir --output=QASTJASTCompiler.pir lib/QAST/JASTCompiler.nqp
Error while compiling block : Error while compiling block (source text: "{\n # Responsible for handling issues around code references, building the\n # switch statemen..."): Error while compiling block deserialization_code (source text: "{\n # Serialize it.\n my $sh := nqp::list_s();\n my $serialized := nqp::seriali..."): Error while compiling op callmethod (source text: "\n QAST::Op.new(\n :op('bind
jnthn nwc10: yes
nwc10 OK
jnthn nwc10: At the moment the only chance it has of building is against an NQP built from the jvm-support branch
nwc10 OK.
gtodd masak: interesting ... dev.stephendiehl.com/hask/ assuming that once perl6 is released similar documents start popping up, what should be done? :-)
masak: ... an timtowtdi-fold path to satori 16:17
masak gtodd: well, a Quickcheck in Perl 6 would be fairly cool. 16:37
if Erlang can do it, so can we.
gtodd: also, I don't wish monads on Perl 6, but I'm currently investigating things like dependency DAGs and lenses, which have nice uses. 16:38
dalek ast: acf18c7 | (Tobias Leich)++ | S11-modules/require.t:
add links to synopsis
16:48
FROGGS std: require "foo/bar.pm" <&bar> 16:52
camelia std 86b102f: OUTPUT«===SORRY!===␤Bogus term at /tmp/S7yIVEg159 line 1 (EOF):␤------> require "foo/bar.pm" <&bar>⏏<EOL>␤Undeclared routine:␤ 'bar' used at line 1␤Parse failed␤FAILED 00:00 45m␤»
FROGGS ESTDBUG
BenGoldberg jnthn, Don't forget to change the README for nqp :) 17:24
yoleaux 13 Apr 2013 23:02 EST <labster> BenGoldberg: I am aware that File::Spec::Case sucks, but compared to the Perl 5 version which is always wrong on my computer, it's still an improvement. One of the main reasons I wanted to yank it out of File::Spec is because it's little-used and broken.
dalek p-jvm-prep: 529ee92 | jnthn++ | src/org/perl6/nqp/sixmodel/SerializationWriter.java:
Fix growToHold() bug in serializer.
17:35
p-jvm-prep: b7c3945 | jnthn++ | nqp-src/ModuleLoader.pm:
Make module loader respect --module-path.
jnthn That serializer one took some finding :/ 17:37
dalek p/jvm-support: 11c79ea | jnthn++ | src/core/NQP (2 files):
Mark out Parrot/JVM specific bits of CORE.
p/jvm-support: fdaa9ea | jnthn++ | src/vm/jvm/ModuleLoader.nqp:
Make module loader respect --module-path.
p/jvm-support: 939c511 | jnthn++ | src/vm/jvm/stage0/ModuleLoader.class:
Updated stage0 module loader.
p/jvm-support: 073363c | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SerializationWriter.java:
Fix growToHold() bug in serializer.
colomon \o/ 17:39
dukeleto colomon: welcome 17:40
dukeleto moritz: github.com/parrot/parrot/commit/22...e30507a991 17:54
moritz: not sure how to fix that bug yet, but we have a failing test and a branch :) 17:55
dalek p-jvm-prep: 9ceb63a | jnthn++ | lib/QAST/JASTCompiler.nqp:
Make $x<does><not><exist> not explode.
17:58
grondilu GlitchMr: so you like minecraft as well? Do you know about #minetest, the FOSS clone? Would you consider translating it in perl6? 17:59
flussence
.oO( do want )
18:00
timotimo whaaaaat, minetest in perl6? 1 frame per day? x_X 18:11
FROGGS .oO( if it is a good frame? ) 18:12
flussence well if nothing else, it'd give people plenty of profiling data to chew on... 18:13
moritz dukeleto++ 18:15
colomon moritz: do you remember working on your TestML fork? 18:18
gtodd moritz: do you think Svg::Plot should work "out of the box" or has too much changed in perl6. 18:32
gtodd ?? oh Text::CSV::Simple is no more ... maybe changing that is all that's needed 18:39
colomon gtodd: you working on fixing things? 19:04
colomon gtodd: errr, actually my tests show SVG::Plot already works, no fixes needed 19:12
dalek p-jvm-prep: 4c3618d | jnthn++ | src/org/perl6/nqp/sixmodel/reprs/P6OpaqueBaseInstance.java:
Ensure SC is cleared when cloning P6opaque.
19:13
p-jvm-prep: 31ea5f0 | jnthn++ | nqp-src/NQP.pm:
Add missing stringification.
colomon gtodd: current version of SVG::Plot does not use Test::CSV::Simple 19:14
gtodd: I just had no problem installing it using pandabrew. 19:15
pmurias what sort of project will the parrot foundation accept for gsoc now that parrot is not actively developed? 19:25
yoleaux 7 Apr 2013 05:44Z <FROGGS_> pmurias: 'use v5' itself is not a problem, but after doing it, the Perl6::Grammar.statement rule is still the active one, _that_ is a problem because it means a slang cant have its own statement rule
FROGGS pmurias: well, I'd say none if there is no mentor 19:26
but maybe there is?
pmurias FROGGS: did you solve that issue? 19:27
pmurias FROGGS: the one yoleaux reported? 19:27
FROGGS nope 19:28
but it is currently not a show-stopper
pmurias isn't the statement rules supposed to change after 'use v5' has ended? 19:32
pmurias FROGGS: ah, I understand the bug now 19:34
IMHO, the whole reblessing of cursors seems really hackish in the first place as it assumes the grammars inherit from each other 19:35
FROGGS ... which is not true for 'use COBOL'
pmurias which shouldn't be true for Perl 5 either 19:36
arnsholt pmurias: Perl 6 projects, both compiler hacking and module work should be reasonable I think
pmurias even compiling Perl 6 to JavaScript? ;) 19:37
arnsholt I can probably be convinced to mentor a NativeCall related project
If you don't ask, you won't find out =)
FROGGS arnsholt: ahh, you're talking about gsoc 19:38
sad there is no perl, just parrot 19:39
arnsholt Oh, hang on. I read parrot but my registered perl 19:41
In that case I'm not sure
lue could've sworn that TPF would be there 19:43
FROGGS well, still four orgs missing in the table 19:50
dalek p-jvm-prep: 9b6b90e | jnthn++ | lib/QAST/JASTCompiler.nqp:
Thou shalt not mutate the node you're compiling.
19:54
ingy is the ubuntu-precise rakudo worth using? 19:57
gtodd colomon: I working on trying to use things :) ...
masak ingy: how recent is it? 19:58
ingy This is Rakudo Perl 6, version 2011.07 built on parrot 3.6.0 0 19:59
is there a debian ppm for p6?
dalek p/jvm-support: f4d6baa | jnthn++ | src/QRegex/Cursor.nqp:
Conditional comp bits in Cursor.
20:00
p/jvm-support: 1a01251 | jnthn++ | src/NQP/World.nqp:
Stringification fixes in NQP World.
p/jvm-support: 23253fc | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/P6OpaqueBaseInstance.java:
Sync nqp-jvm-prep P6opaque fix.
jnthn ingy: That's...really old.
ingy: A lot has improved/changed etc. since then.
gtodd colomon: the spec test example for SVG::Plot still uses Test::CSV::Simple so I wanted to make that example work without it
ingy is there a debian ppm for p6? :) 20:01
gtodd colomon: trying different apps and modules that might allow p6doc web app to be 6-ified 20:02
ingy nm, I'll just grab a star
dalek p/jvm-support: bd15ebf | jnthn++ | src/vm/jvm/stage0/ (10 files):
Update JVM stage0 from latest nqp-jvm-prep.
20:03
p/jvm-support: 95903d5 | jnthn++ | tools/build/Makefile-JVM.in:
Build stage 1 setting, QASTNodes, QRegex.
gtodd colomon: my ulterior motive is simply to learn more about perl6 :)
lue kinda hopes jnthn will blog when NQP conversion is complete. 20:05
masak I'm pretty sure ++jnthn won't neglect to blog about that milestone ;) 20:07
jnthn Yeah, I'll blog when I'm through with this bit :) 20:08
timotimo is that still today? 20:09
moritz spectests timotimo++'s latest pull request
gtodd: re SVG::Plot, I have no idea if too much list-y stuff has changed or not 20:10
last time I tried, it mostly worked
masak jnthn: just in case someone hasn't told you in the last half hour: you rock. :) 20:11
jnthn :P
moritz though it's a bit tricky to get the input arrays-of-arrays right
jnthn No, I won't get through this stuff today. Getting the self-hosted NQP on JVM to spit out another self-hosted NQP on JVM is proving a little work :) 20:12
gtodd r: 1/3.Num 20:14
lue
.oO(Luckily Java does a good job of keeping you up throughout the night, or this'd take twice as long)
camelia rakudo 5122e2: ( no output )
timotimo okay, then i can go to bed :) 20:15
tadzik jnthn: you and your work are awesome. Keep it up!
gtodd r: 1/3.Num.say
camelia rakudo 5122e2: OUTPUT«3␤»
FROGGS r: (1/3).Num.say 20:15
camelia rakudo 5122e2: OUTPUT«0.333333333333333␤» 20:16
gtodd so .... perlito .... 20:18
timotimo what about it? 20:25
gtodd moritz: just fiddling with the example github.com/moritz/svg-plot/blob/ma...rogress.pl to change out the CSV::Simple 20:26
timotimo if anyone finds out, i'd love to know why code using Num is faster than code using num. 20:27
gtodd timotimo: in the channel there's m: are: n: for evaling ... but I guess perlito is too much of a subset ?
geekosaur is num repeatedly unboxing and reboxing or something? 20:28
jnthn timotimo: The typical answer is because if you pass a num somewhere that needs an object and is untyped, then it has to box it to a Num. Do this a lot and you'll be reboxing it all the time.
geekosaur or more accurately the reverse
box->op->unbox->box->op->unbox...
timotimo oh, well that's an answer. 20:28
could that be helped by adding more multi candidates for basic arithmetic for unboxed nums and friends? 20:29
geekosaur likely. profiling would tell you where they're most needed 20:30
timotimo it really didn't :)
cognominal jnthn++ 20:31
timotimo okay, bedtimey times :)
gtodd timotimo: I sometimes try examples I see pasted in here but they rarely work in perlito 20:32
colomon r: say 1..10 20:36
camelia rakudo 5122e2: OUTPUT«1..10␤»
colomon jnthn: any feel for how hard it would be to make \N ** {0..$text-width} work in Rakudo? 20:39
masak colomon: might want to workaround that with an assertion for now. 20:40
hm, but you probably already know that ;)
jnthn colomon: Needs regex engine hacking. 20:41
colomon masak: I've never seen a workaround that actually worked for that.
masak: so feel free to suggest.
colomon masak: (Or possibly the problem I had was the workarounds wouldn't work in Niecza?) 20:42
masak rn: for "aa", "aaaa" { if /^ (a*) <?{ $0.chars ~~ 0..3 }> $/ { say "$_ matches" } else { say "$_ does not match" } } 20:44
camelia rakudo 5122e2, niecza v24-37-gf9c8fc2: OUTPUT«aa matches␤aaaa does not match␤»
masak colomon: voila.
cognominal arf, java on mac seems to be 1.6.0_43
colomon rn: my $text-width = 6; say "This is a test" ~~ / (\N ** {0..$text-width}) ( \s | $ ) /; 20:45
camelia niecza v24-37-gf9c8fc2: OUTPUT«「This 」␤ 0 => 「This」␤ 1 => 「 」␤␤»
..rakudo 5122e2: OUTPUT«===SORRY!===␤Quantifier quantifies nothing␤at /tmp/Zyu_KLsFTj:1␤------> h = 6; say "This is a test" ~~ / (\N ** ⏏{0..$text-width}) ( \s | $ ) /;␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-i…
colomon rn: my $text-width = 6; say "This is a test" ~~ / (\N* <?{ $0.chars ~~ 0..$text-width}> ) ( \s | $ ) /; 20:47
camelia niecza v24-37-gf9c8fc2: OUTPUT«Unhandled exception: Unable to resolve method chars in type Any␤ at /tmp/tzBLLoagn_ line 1 (ANON @ 8) ␤ at /tmp/tzBLLoagn_ line 1 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2982 (Regex.ACCEPTS @ 10) ␤ at /tmp/tzBLLoagn_ line 1 (mainline …
..rakudo 5122e2: OUTPUT«No such method 'chars' for invocant of type 'Any'␤ in block at /tmp/QhoSX_hJlo:1␤␤»
cognominal apparently I must go to oracle.com to get a newer java
colomon rn: my $text-width = 6; say "This is a test" ~~ / ((\N*) <?{ $0.chars ~~ 0..$text-width}> ) ( \s | $ ) /;
camelia rakudo 5122e2, niecza v24-37-gf9c8fc2: OUTPUT«「This 」␤ 0 => 「This」␤ 0 => 「This」␤ 1 => 「 」␤␤»
colomon ah, maybe that will work. hmmm. 20:47
masak ( \s | $ ) maybe better written >> 20:48
colomon masak++ 20:49
wait, what's that last bit?
> > 20:50
?
masak >> is a right-side word boundary.
colomon is trying to get Text-Tabs-Wrap working again 20:51
flussence I have half a mind to redo Text::Wrap from scratch... 20:54
colomon masak++'s workaround there has most of the tests running again. 21:08
masak bows
I'm glad I blurted it out. :) 21:09
colomon flussence: hold on a sec and I'll send you a pull request. 21:12
flussence alrighty 21:13
colomon flussence: done, I think. been a while since I actually generated a pull request. :) 21:14
flussence looks good to me 21:16
colomon flussence: I fear I don't understand Text::Wrap well enough to understand what's not working in the test failures.
flussence to be honest, I don't completely understand it either :)
I think most of this algorithm was written around the limitations of terminals having weird text-wrapping rules, I tried to actually document what it was doing at one point but that never went anywhere 21:18
japhb is still backlogged, but before the UTC+n crowd head to bed ... 21:25
moritz, let me add my best wishes for your wife's rapid and excellent recovery
FROGGS, the p5/p6 benchmarking repo you're thinking of is probably mine. 21:26
I will be bringing it up to date in preparation for my related YAPC::NA talk, but at the moment it's idling on the back burner.
timotimo, in github.com/rakudo/rakudo/commit/5122e2ead9 , lines 266-269, the else block looks redundant, since the very next thing after the else is the same thing that's inside the else. :-) 21:27
masak japhb++ 21:28
japhb jnthn, in github.com/jnthn/nqp-jvm-prep/commit/d26aaf7387 , why after the change do you still have the setting of $explicit at line 11 inside an 'if !nqp::isnull($explicit)' ? I'm not sure that makes sense. 21:29
jnthn japhb: It didn't; thinko; fixed in a later commit 21:29
japhb jnthn, ah gotcha 21:30
also, in github.com/perl6/nqp/commit/c9065ee68a, line 176 on the new side (171 on the old), looks like an existing line with a typo: vtablee
jnthn japhb: yeah, that typo has been in there for ages... 21:31
japhb :-)
japhb continues backlogging where he left off at 15:55 (log time). :-) 21:32
dalek rl6-roast-data: d158c81 | coke++ | / (4 files):
today (automated commit)
21:37
rl6-roast-data: 501f0d3 | coke++ | / (4 files):
today (automated commit)
dalek ast: 3117f5b | coke++ | S11-modules/require.t:
pugs fudge
21:45
FROGGS japhb: ya, noticed that 21:50
masak 'night, #perl6 22:01
FROGGS gnight masak
r: require 'Test' # jnthn, this should not work per spec: "When you pass a string, require always assumes the string contains a filename." 22:02
camelia rakudo 5122e2: ( no output )
[Coke] jnthn++ 22:15
r: require 'Crap' 22:18
camelia rakudo 5122e2: OUTPUT«Could not find Crap in any of: /home/p6eval/nom-inst/lib/parrot/5.2.0-devel/languages/perl6/site/lib, /home/p6eval/nom-inst/lib/parrot/5.2.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/parrot/5.2.0-devel/languages/perl6/lib, /home/p6eval/.perl6/2013…
tadzik . o O ( Crap.pm: die "Obviously you mean Carp... or did you?" ) 22:21
cognominal has C< :/$a for :a($<a>) > been ever discussed ? 22:23
that would be a nice addition, I could use in Actions classes 22:24
FROGGS :a( <-- is that some sort of smiley? ms piggy perhaps? 22:26
cognominal oops
I meant
has C< :/$a > for C< :a($<a>) > been ever discussed ? 22:27
FROGGS what should that do?
cognominal r: say :a(1).perl
camelia rakudo 5122e2: OUTPUT«"a" => 1␤»
FROGGS the 'for' is not a statement_mod in this case? 22:29
cognominal I meant C< :/$a > as a short for C< :a($<a>) > which is itself a short for :a($/<a>)
cognominal Nope the code is inside the C< > "formatting" instructions. Consider only my last statement. 22:30
FROGGS I'd prefer :$<a> over :/$a 22:32
:/$a is not that intuitive somehow 22:33
cognominal r: :$<a> 22:34
camelia rakudo 5122e2: OUTPUT«===SORRY!===␤Bogus statement␤at /tmp/e9SwWCzc9e:1␤------> :$⏏<a>␤ expecting any of:␤ colon pair␤»
cognominal FROGGS: I agree :$<a> is more consistent 22:36
FROGGS cognominal: btw, I'd like it to have 22:47
cognominal ??
cognominal FROGGS: did you meant you'd like the feature, with your better syntax? 22:48
FROGGS yes 22:49
because it feels like it has to be there
jnthn enough bug hunt for tonight... 22:50
'night o/
cognominal jnthn++ 22:50
FROGGS gnight jnthn 22:51
diakopter rn: say 3 23:08
camelia rakudo 5122e2, niecza v24-37-gf9c8fc2: OUTPUT«3␤»
cognominal good night 23:18