IRCloggy #perl6 2013-07-25

Logs Search ←Prev date Next date→ Channels Documentation

Provider of IRC logs since 2005.
WARNING: As Freenode became unjoinable and lost all warnings in topics, we cannot log channels on Freenode anymore.

2013-07-25

FROGGS left00:01
sqirrel left00:02
grondilu left00:12
abnorman left00:39
grondilu joined01:11
grondilu What does SC stand for in MoarVM?01:11
as in "SC Dependencies Table"01:12
timotimo serialization context is my guess01:13
grondilu left01:30
xinming left02:00
xinming joined02:01
orafu left02:05
OuLouFu joined02:05
OuLouFuorafu02:05
cbk joined02:10
logie joined02:21
logie left02:37
stevan_ left02:54
btyler joined02:56
stevan_ joined02:56
nebuchadnezzar joined02:57
_jaldhar joined03:28
dayangkun joined03:28
preflex_ joined03:33
ChanServ set mode: +v03:33
preflex_preflex03:34
prevost joined03:40
eternaleye joined03:41
prevost left03:43
leprevost joined03:44
btyler left04:19
SamuraiJack joined04:48
birdwindupbird joined04:55
_jaldhar left05:26
crab2313 joined05:28
_jaldhar joined05:29
zacts left05:47
leprevost left06:04
iSlug joined06:48
iSlug left06:49
iSlug joined06:49
crab2313_ joined06:51
fridim_ left06:56
domidumont joined07:17
dmol left07:24
dmol joined07:24
rGeoffreeey joined07:33
fhelmberger joined07:34
rGeoffreeey In about 19 hours I will be doing a lightning talk at OSCON on the State of the Onion and want to include a slide with some of the highlights of the current status of Perl6. Does anyone have a bullet point or two to include?07:34
arnsholt JVM backend for Rakudo is a good candidate I think07:39
kaleem joined07:39
FROGGS joined07:40
domidumont left07:40
lizmat MoarVM with Perl 5 interop might be a good bullet point07:40
nwc10 JVM backend for Rakudo passes >99% of the spectests that Parrot backend for Rakudo does07:41
lizmat (aka running "standard" Perl 5 in a separate thread inside MoarVM)07:41
domidumont joined07:41
SmokeMac_ joined07:42
SmokeMachine left07:42
FROGGS rGeoffreeey: note that the p5interop has a request for a grant and is of course not yet done07:43
nwc10 whereas the >99% is here and now07:43
FROGGS right07:43
next step is to "port" the module ecosystem07:43
lizmat experimental thread support on the JVM ?07:45
FROGGS maybe, but an outsider might think: "what? Perl 6 has no threads yet? Perl 5 has it for ages!"07:46
rGeoffreeey keep in mind I have not been following perl6 other than the occasional comment heard at a conference, so you need to keep things simple for me07:46
FROGGS s/has/had/07:46
nwc10 rGeoffreeey: you might want to read recent posts on http://6guts.wordpress.com/07:47
I think that that will be more coherent than this channel :-/07:48
FROGGS rGeoffreeey: and this too: http://www.josetteorama.com/all-about-perl-6-interview-of-jonathan-worthington-part-1-of-3/07:48
nwc10 experimental *proper* threads. None of the ithread pains.07:48
FROGGS yeah, that's true07:50
same goes for proper native call interface compared to XS07:50
and this one isnt experimental, but yet only available on rakudo on parrot07:50
rGeoffreeey so to translate for me, MoarVM is like Parrot, the thing under the hood that runs the language? And Perl 6 can do on MoarVM 92% of what it can do on Parrot?07:52
FROGGS well07:52
lizmat JVM and MoarVM are 2 different projects07:53
FROGGS rakudo runs on nqp, which has parrot and jvm as a backend07:53
lizmat grr need to go now, back in a few hours07:53
&07:53
FROGGS rakudo on nqp on jvm passes >99% of the tests that rakudo on nqp on parrot does07:53
bonsaikitten hrm, I may have to adapt packaging if you guys continue like that :)07:54
FROGGS and MoarVM is a new backend, and rakudo does not yet run on it07:54
nwc10 rGeoffreeey: aha. step back. Rakudo is a compiler. It targets multiple backends. Much like gcc is a compiler that targets x86, ARM, PPC etc07:54
FROGGS I think the interview explains the backend stuff well07:54
nwc10 it's also not a perfect compiler yet - there are some spec tests that it doesn't pass (anywhere)07:55
but the progress of the JVM backend is being measured against the parrot backend07:55
so it's >99% of the way to "as good as the parrot backend"07:55
rGeoffreeey Thank you all for the input, I will read the interview when I wake up. It is about 1am here and time to call it quits for the night. If anyone wants to supply a few bullet points for a sldie I will scroll back when I get up.07:57
FROGGS k, we'll do07:57
rGeoffreeey Before Larry speaks I am giving 5 minutes to show what conferences have happened in the last year, and next, the new monger groups in the last year (11), that we have regular perl5 releases, and a few other things.07:58
tomaw joined08:02
rGeoffreeey left08:03
rGeoffreeey joined08:03
crab2313 left08:04
crab2313_ left08:04
eiro joined08:12
dmol left08:14
dmol joined08:20
sqirrel joined08:28
BenGoldberg left08:35
dakkar joined08:40
kresike joined09:01
kresike hello all you happy perl6 people09:01
FROGGS hi kresike09:02
kresike FROGGS, o/09:07
risou_awyrisou09:09
masak greetings, #perl6.09:31
FROGGS masak! \o/09:32
welcome back!09:32
JimmyZ masak: welcome back!!09:32
masak is on a really slow connection, so don't expect eloquence09:34
tadzik that's masak!09:34
FROGGS no eloquence at all \o/09:34
daxim joined09:34
wk joined09:36
wkGuest3986409:36
jnthn morning, #perl609:44
yoleaux 24 Jul 2013 23:59Z <FROGGS> jnthn: Is this approach (wip) reasonable or totally off? https://gist.github.com/FROGGS/6a22741986d134ab501109:44
00:01Z <FROGGS> jnthn: I'm asking if the switch there belongs to that location, I know that I need to clean that up...09:44
jnthn finally got a decent amount of sleep...09:44
tadzik I woke up today, thinking "wow, nice, I woke up before the alarm went off!"09:44
but it was 8:30. There was no alarm set09:45
it's good that the $flight is in the evening09:45
jnthn FROGGS: atpos_o is not meant to autobox.09:45
FROGGS: If you use typed arrays you have to use them with the correct instructiom.09:45
*instruction09:45
jlaire joined09:46
FROGGS jnthn: then something else is wrong(-ish)09:46
JimmyZ guesses it's in 74-nfa.t09:47
jnthn FROGGS: Perhaps so. On Parrot things were quite lax; I cleaned many things up in the NQP codebase for on JVM.09:47
masak I'm not 100% back, just "back enough". :)09:47
FROGGS jnthn: because t/nqp/74-nfa.t fails with: MVMArray cant box native int or so09:47
jnthn FROGGS: But maybe some of the code in nqp-src was nabbed before that.09:47
FROGGS JimmyZ++ :o)09:47
jnthn Yeah, then somethere is using list_i when it meant list, or atpos when it meant atpos_i.09:48
Take a look at if things are out of sync somewhere with latest NQP or so.09:48
masak backlogs something like two weeks09:48
FROGGS jnthn: the failing thing is $matching[0]09:48
which does atpos09:48
how should it know that it has to do atpos_i? should the postcircumfix make that decision?09:49
jnthn FROGGS: Um, where are we looking?09:50
In NQP, you generally write nqp::atpos_i out explicitly. Things in NQP are *much* more primitive than in Rakudo.09:50
FROGGS this fails: https://github.com/perl6/nqp/blob/master/t/nqp/74-nfa.t#L2909:51
cbk left09:51
FROGGS because [0] dispatches to atpos(_o)09:51
jnthn Did you try running the test on NQP JVM?09:51
FROGGS when $matching is an MVMIntArray09:51
jnthn: no09:51
jnthn Please do.09:51
FROGGS eye sir09:51
:o)09:51
jnthn If it fails there also, then the test itself is to blame :)09:51
Generally, MoarVM should have semantics aligned with 6model on JVM rather than 6model on Parrot.09:52
FROGGS ok 3 - we can match a simple string09:52
VMArray representation does not implement at_pos_boxed09:52
:/09:52
jnthn Right.09:52
That's the same underlying error.09:53
So, the test should use nqp::atpos_i09:53
Woodi joined09:53
FROGGS instead of the postcircumfix?09:53
I think I understand09:53
JimmyZ Parrot does autobox everywhere09:53
jnthn JimmyZ: Yeah, I know.09:54
JimmyZ yeah, I meant I don't like the action :P09:56
jnthn Thing is that in real Perl 6, we know when we have a native array or not, so penalizing every array access for the (identifiable) cases where we don't know is bad performance wise.09:58
FROGGS so you mean parrot is somewhat slow? :P09:59
JimmyZ thinks so10:00
jnthn In MoarVM I'm designing for letting us exploit what type info we have, e.g. the design is aimed at a gradually typed language (which Perl 6 is), not a dynamically typed one. Parrot's design call is I guess sane if you're just thinking dynamic.10:00
dalek nqp: fb241ae | (Tobias Leich)++ | t/nqp/74-nfa.t:10:01
nqp: use atpos_i if we have an integer-array, jnthn++10:01
nqp: review: https://github.com/perl6/nqp/commit/fb241ae50610:01
JimmyZ I see Moarvm avoids recursion frame call stack overflow10:02
jnthn Yeah, we are generally making extremely shallow use of the C stack :)10:02
JimmyZ and parrot didn't10:02
jnthn However, we may want to create a way to artificially limit how deep you can go. Writing an infinite recursion and finding you filled a few gigabytes of memory with call frames is probably not very user friendly ;)10:03
JimmyZ I tested fib(100), and didn't see memory inc10:04
JimmyZ decommutes10:04
nwc10 at least you can check on heap overflow10:05
jnthn ;)10:05
Woodi left10:25
Woodi joined10:26
ggoebel lizmat: The other 2 parts of the 3 part interview:10:42
http://www.josetteorama.com/all-about-perl-6-interview-of-jonathan-worthington-part-2-of-3/10:42
http://www.josetteorama.com/all-about-perl-6-interview-of-jonathan-worthington-part-3-of-3/10:42
lizmat back, just after a cloudburst dropped ~20mm of water in ~15 minutes10:49
*our* feet are still dry10:49
some of our neighbours not10:49
good thing: temperature dropped from 27 to 21 in the same period10:50
jnthn wow10:50
lizmat I've only seen it rain this hard during monsoon season in India10:50
jnthn .oO( and I thought the rain nether lands there... )10:50
lizmat but then it was more like hours on end like that, not 15 minutes10:50
FROGGS lizmat: do you really mean 20mm?10:51
lizmat yes, I mean 20mm, as in 20l per square meter10:51
jnthn hopes the end of the hot weather won't make him a very wet and cloudy vacation...10:52
lizmat up in Switzerland, you'd get snow :-)10:52
meters of it :-)10:53
jnthn hah, yes!10:53
nwc10 presumably metres of snow in the French-speaking areas :-)10:53
jnthn Well, I have had a walk canceled by snow in in a July there before :)10:53
crab2313 joined10:56
lizmat see? see?10:58
rindolf joined10:58
lizmat r: multi a ($a) { say "single" }; multi a (@a) { say "multi ", @a.elems }; multi a (*@a) { say "slurp ",@a.elems }; a([1,2,3]) # why is it choosing the multi candidate instead of the single candidate ?11:01
camelia rakudo 9ba5dd: OUTPUT«multi 3␤»11:01
lizmat is that specced somewhere, that a [] flattens?11:02
masak lizmat: because "positional" scores tighter than "scalar".11:02
dmol left11:02
masak (in reply to why it chooses that)11:02
lizmat: "scalar" could be anything, including "positional". when you write a @ sigil, you are being specific. specific means tight.11:02
lizmat r: my @a; push @a,[1,2,3]; say @a.perl11:03
camelia rakudo 9ba5dd: OUTPUT«Array.new([1, 2, 3])␤»11:03
lizmat but why does it flatten the, in my eyes, array ref ?11:04
jnthn Flattening is, for better or worse, not encoded in the type system really.11:04
colomon jnthn: so, my much improved STEP program runs out of memory on jakudo when given 32G. but the weird thing is, it happens *after* the parse of the entire file is done. at that point, the primary thing happening in the code is simply iterating over the hash created during the parse / actions….11:05
jnthn And multi-dispatch cares for "does the type match"11:05
colomon: Weird. Does memory grow a lot while doing that?11:05
colomon jnthn: you cannot tell -- jakudo allocates all the memory you give as the max limit when the program run starts11:06
jnthn oh.11:06
Probably reserves rather than allocates...11:06
colomon yes11:06
whatever, the memory usage jumps to 32G (or whatever) instantly11:07
jnthn Maybe you can get top or something to show what is reserved and committed?11:07
lizmat r: my @a; @a.push(Array.new(1,2,3)); say @a.perl11:07
camelia rakudo 9ba5dd: OUTPUT«Array.new(1, 2, 3)␤»11:07
jnthn colomon: Yeah but if we can get differrent numbers out...11:07
lizmat ok, that means I cannot use MMD for .push with @values, because I cannot distinguish inside the method between the @a and []11:08
jnthn This is why the extra iscont check in one of the postcircumfix candidates, fwiw.11:09
you could have a (\a) candidate and examine it11:09
lizmat tries to grok that11:09
jnthn if nqp::istype(a, Iterable) && !nqp::iscont(a) { #`(iterate over it) } else { #`(push dat item) }11:10
sqirrel left11:12
lizmat ….testing...11:12
cognominal joined11:17
masak tadzik: ooc, are you aware of an actual picture on the Internets of an actual sad panda?11:19
crab2313 left11:19
tadzik masak: like this? http://fc01.deviantart.net/fs71/f/2011/323/1/f/sad_panda_by_ramy-d4gn0jt.jpg11:20
:P11:20
jnthn masak: http://lolfunnymeme.com/wp-content/uploads/sadpanda.jpg11:20
tadzik or maybe the "what have I done" gif11:20
http://i.imgur.com/3xPms.gif11:20
panda should open that image whenever it crashes11:21
jnthn *lol*11:21
masak likes http://lolfunnymeme.com/wp-content/uploads/sadpanda.jpg the best :)11:22
masak it's so... fluffy!11:23
jnthn https://github.com/Arcterus/rakudo has a patch for fixed size arrays11:23
tadzik yeah, it11:23
's cute11:23
rindolf left11:23
jnthn https://github.com/Arcterus/rakudo/commit/e124a6a24b9f3cb2cc4850206cf97b5672bc969f of note11:24
tadzik https://gist.github.com/tadzik/607884411:24
jnthn tadzik: lol11:24
pmurias joined11:25
lizmat jnthn: looks interesting!11:26
jnthn I've supervised it a bit; done by a guy who had to contribute to an open source project for a school course :)11:27
lizmat no pull request yet?11:27
jnthn lizmat: No, I think "new to GitHub" :)11:28
lizmat also: why the Whatever class, shouldn't that be Shape class or so?11:28
pmurias pmichaud_: ping11:28
jnthn lizmat: I think S09 has @foo[*] as meaning "whatever shape"11:29
lizmat: so afaik that's spec-compliant11:29
lizmat but we have Whatever in so many other contexts as well11:30
sqirrel joined11:30
jnthn I think that's the point of Whatever :)11:30
The universal "I don't care" indicator11:30
FROGGS .tell crab2313 this might fix your issue: https://github.com/MoarVM/MoarVM/commit/351339dfdc11:33
yoleaux FROGGS: I'll pass your message to crab2313.11:33
masak moritz++ lizmat++ # Edinburgh11:33
lizmat masak: yw11:34
JimmyZ Wrap up Perl 5 Interop for Rakudo Perl 6 on MoarVM http://news.perlfoundation.org/2013/07/hague-grant-application.html # FYI11:34
masak [backlog] hm, both Pod and heredocs are "special because they are line-oriented". if on one line I do a q:to'EOF' and on the next line a =comment, who wins? the heredoc or the Pod?11:38
masak guesses the heredoc, but can't rationally motivate it11:38
masak I would also accept the answer "it dies at parse time because what in the *world* do you think you are doing?"11:40
dayangkun left11:41
masak (masak's Law)++ # "For every DWIM there's an equal and opposite WAT"11:42
moritz++ TimToady++ # promoting it :)11:42
lizmat I still think that's derived from the Law of Conservation of Misery11:46
cycling (the rains are gone)&11:47
masak lizmat: it might be. which in turn sounds like a corollary of Murphy's Law.11:51
lizmat: but as derived laws go, I think it still says something useful.11:52
lizmat Yes, I should have added a :-)11:52
masak it's like it's placing language features on a sphere, and pointing out that every point has an antipode.11:52
and you may still come out ahead, because most of the time you'd be coding near the DWIMmed feature, and not near the antipode.11:53
but the antipode is still there... and we tend to realize that only months or years down the road. masak's law tells us to look out for it up front.11:53
example: .[-1] in Perl 5. awesome feature. I saw someone defend it in the backlog.11:54
the antipode being what TimToady pointed out: it's a discontinuity, and worse, it's assymmetric.11:54
lizmat even worse than asymmetric !11:55
masak so the WAT in that case is that when you need order and structure the most, the discontinuity will jump up and bite you.11:55
lizmat really gone now&11:55
in the ass! :-)11:55
dmol joined11:55
masak oh dang, yes. there really is just one 's' in "asymmetric". :)11:55
jnthn haha11:56
masak but there are to 'p's in "appreciate" and "appropriate" and "append".11:56
jnthn .oO( assymmetric: one butt cheek bigger than the other :P )11:56
masak English is hard :)11:56
jnthn: do yourself a favor and YouTube search for "my neighbors ass" by Tim Minchin ;)11:56
's*11:57
jnthn *lol*!#11:58
colomon jnthn: I haven't conclusively proved it yet, but I'm leaning heavily to the problem with my code being either in Hash.kv or the for statement. At the very least it takes an incredibly long time for the line "for $step-data.entities.kv -> $id, $object" to get to the first iteration…11:58
masak oh! the 'a-' in 'asymmetric' is Greek and means "not", doesn't it. whereas the 'a-' in those other words is Latin and means '(on)to'.11:59
that would explain the... asymmetry. :)11:59
colomon or so you'd assume...12:00
jnthn colomon: I wonder if this points to a gather/take issue maybe?12:00
colomon: .pairs uses that.12:00
masak colomon! \o/12:01
colomon jnthn: maybe? I'm trying to golf it right now.12:01
logie joined12:03
colomon no longer needs this at the moment for $work -- he found one of the trouble faces a different way.12:03
jnthn away for an hour or two12:05
colomon https://gist.github.com/colomon/6079027 # java.lang.StackOverflowError with default jakudo stack size12:06
masak hehe. $utterance ~~ /:i <<arglebargle>>/ tends to strongly raise the prior of $utterer eq '[Coke]' in the backlog ;)12:06
colomon update: it's Hash.kv that's done it12:08
doing it12:08
gist updated, still gets java.lang.StackOverflowError12:09
masak that's the error you get when you need to look for an answer over at Stack Overflow :P12:10
colomon no, no, no, that's the error you get when StackOverflow is wrong about the code you wrote12:11
dmol left12:11
masak moritz++! # coming to YAPC::EU!12:11
dmol joined12:11
masak YAPC::EU++ # wrapping around moritz!12:12
moritz: that is seriously good news!12:12
\o/12:12
logie left12:13
skids left12:17
masak mst++ # greeting newbies and trolling about $|12:19
masak is all out of breath from backlogging12:20
colomon is starting to think we've got some really serious issues with rakudo and big lists....12:22
masak diakopter++ # http://news.perlfoundation.org/2013/07/hague-grant-application.html12:23
colomon: "I like big lists and I cannot lie..." :P12:24
ribasushi masak: what's the $| trolling about...?12:26
colomon masak: I tried establishing that everything else worked by just creating an array of the keys to use instead of .kv. But it appears that pushing182500 small strings onto an array takes several orders of magnitude longer than storing the same strings as keys in a hash.12:27
Guest1337 joined12:29
masak ribasushi: just http://irclog.perlgeek.de/perl6/2013-07-23#i_7362962 -- I smiled when I saw it :)12:30
fwiw, S16 doesn't even *mention* buffering. S28 says $*OUT.autoflush() and S32/IO concurs, defining it as an rw method.12:32
S16--12:32
masak is now caught up with le backlog12:33
masak dinner &12:33
colomon rn: say time12:36
camelia rakudo 9ba5dd: OUTPUT«1374755780␤»12:36
..niecza v24-88-g1f87209: OUTPUT«1374755783.7686591␤»12:36
[Coke] rGeoffreeey++ keeping p6 in the loop.12:36
logie joined12:37
colomon is starting to think having his music server be on the same system as he is running rakudo sanity tests may be a bad idea...12:39
colomon looks to me like we've got some sort of terrible O(N^2) issue with push12:40
in jakudo, at any rate. but I'm suspicious it's in parrakudo too.12:41
memory usage is out of control, too12:41
logie left12:49
colomon actually, it's drastically worse than O(N^2)12:53
pushing 1825 Ints to the array took 1 second.12:54
pushing 18250 Ints ran for 10 ten minutes before I killed it because it was consuming all the memory on my system12:55
also, I appear to have completely forgotten how to cook omelets.12:55
moritz pushing 10x as many elements would take 100x as many seconds for O(N^2)12:56
oh, 10 minutes. I read "10s"12:56
domidumont left12:56
domidumont joined12:57
colomon I just switched the program to use a second hash instead of the array. took 3 seconds instead of 10+ minutes13:03
logie joined13:03
Guest1337 left13:03
colomon any time emulating an array with a hash is faster than using a hash, you've got some serious performance issues13:04
sorry, faster than using an array13:05
moritz indeed13:05
nwc10 colomon: if 1825 takes (about) 1 second, what do 3650 and 5475 take?13:05
curious what the power is in the O()13:05
and 7300 (if I got that right)13:05
colomon nwc10: give me a moment, I'm going to golf13:06
nwc10 excellent13:06
ribasushi joined13:06
dalek Perlito: d7ea076 | (Flavio S. Glock)++ | / (4 files):13:08
Perlito: Perlito5 - reset strict flags in do-file13:08
Perlito: review: https://github.com/fglock/Perlito/commit/d7ea07689713:08
domidumont left13:08
colomon nwc10: 1825 * 1 = 1s * 2 = 6s * 3 = 15s * 4 = 53s13:10
sqirrel left13:10
moritz r: say log 53, 413:12
camelia rakudo 9ba5dd: OUTPUT«2.8639602272816␤»13:12
colomon also, the difference between pushing 1825 * 2 Ints and 1825 * 4 Ints is a full gigabyte of memory.13:13
r: say 1000000000 / (1825 * 2)13:14
camelia rakudo 9ba5dd: OUTPUT«273972.602740␤»13:14
colomon 273K per Int13:14
FROGGS wow, imagine how many digits one can put in13:15
I guess that is why they are called "BigInts"13:15
colomon all the Ints involved could each fit in 4 bytes13:15
ajr joined13:16
ajrGuest438013:16
PacoAir joined13:17
colomon https://gist.github.com/colomon/6079526 # golfed push performance issue13:18
[Coke] r: sleep 10 ; say time - BEGIN time; #13:20
camelia rakudo 9ba5dd: OUTPUT«10␤»13:20
ribasushi left13:27
ribasushi joined13:27
dalek ecosystem: feefc4d | tadzik++ | META.list:13:30
ecosystem: Add File::Find and Shell::Command separated from File::Tools13:30
ecosystem: review: https://github.com/perl6/ecosystem/commit/feefc4d4b113:30
rGeoffreeey left13:30
domidumont joined13:33
pmurias push is a method of Any in rakudo?13:39
colomon by point of comparison -- it takes 53 seconds to push 1825 * 4 Ints onto an array. It takes 21 seconds to generate 1825 * 100 pairs of random numbers, using the first in each pair as the key, the second as the value, use a second hash to store the keys just generated as values, and then go through all those generated values and sum them.13:41
btyler joined13:41
colomon (that's in jakudo, trying it in rakudo now)13:42
parrakudo, I mean13:42
daxim left13:44
daxim joined13:44
colomon parrakudo seems to also have issues with pushing, but not nearly to the extent that jakudo has13:45
well… it's just back a factor of two or so on the curve. 1825 * 8 takes 46s and uses 2.x gigs of memory13:46
pmurias left13:46
skids joined13:48
jaldhar_ joined13:49
_jaldhar left13:49
timotimo if this regression is fixed, maybe perl6 can be performant :)13:49
oh13:50
JimmyZ r: say time - BEGIN time;13:50
camelia rakudo 9ba5dd: OUTPUT«0␤»13:50
timotimo self.gimme(*) called multiple times will not cause extra computation, will it?13:51
because push will self.elems, which does self.gimme(*) to get the number of elements13:51
r: my @l; @l.push(^100); my $start = time; for ^200 { @l.gimme(*); 1 }; say time -$start;13:52
camelia rakudo 9ba5dd: OUTPUT«0␤»13:52
timotimo r: my @l; @l.push(^100); my $start = time; for ^1000 { @l.gimme(*); 1 }; say time -$start;13:52
camelia rakudo 9ba5dd: OUTPUT«0␤»13:52
timotimo r: my @l; @l.push(^100); my $start = time; for ^5000 { @l.gimme(*); 1 }; say time -$start;13:52
camelia rakudo 9ba5dd: OUTPUT«0␤»13:52
timotimo seems good13:52
r: my @l; @l.push(^100); say @l.elems13:52
camelia rakudo 9ba5dd: OUTPUT«100␤»13:52
timotimo r: my @l; @l.push(^5000); my $start = time; for ^5000 { @l.gimme(*); 1 }; say time -$start;13:52
camelia rakudo 9ba5dd: OUTPUT«0␤»13:52
colomon for what it's worth: 1825 * 8 pushes take 46s in parrukdo, 0.03s in Niecza13:54
JimmyZ and how about jvm?13:55
colomon 1825 * 4 pushes take 53s on JVM, not going to bother trying 1825 * 813:55
timotimo add_core_pirop_mapping"("bindpos", "set", "1QiP", 1 :named("inlinable")) <- this should not give any trouble at all, should it?!13:55
JimmyZ colomon: you could try vargrind, parrot support it13:56
jnthn back13:57
JimmyZ *Valgrind13:58
timotimo bind_pos_boxed on javakudo does set_size_internal, which seems sane. at less that 8192 slots it will double every time the number of slots is used up14:00
jnthn It grows by doubling each time up to a certain size, then adds 4096 each time14:01
timotimo right14:01
er14:02
what's this14:02
gfldex r: https://gist.github.com/gfldex/607995414:02
camelia rakudo 9ba5dd: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method list at src/gen/CORE.setting:1388␤ in any !reduce at src/stage2/QRegex.nqp:667␤ in any !cursor_pass at src/stage2/QRegex.nqp:631␤ in regex list at /tmp/M_LfCiLkSC:8␤ in regex element at /tm…14:02
gfldex n: https://gist.github.com/gfldex/607995414:02
camelia niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Excess arguments to KERNEL Any.list, used 1 of 2 positionals␤ at <unknown> line 0 (KERNEL Any.list @ 1) ␤ at /tmp/xOzH23mHMd line 9 (Confusion.list @ 22) ␤ at /tmp/xOzH23mHMd line 8 (Confusion.element @ 12) ␤ at /tmp/xOzH23mHMd lin…14:02
timotimo if (ssize < 8) ssize = 814:02
gfldex std: https://gist.github.com/gfldex/607995414:02
camelia std c2215f0: OUTPUT«ok 00:01 52m␤»14:02
gfldex i believe my gist to be a newbug14:03
crab2313 joined14:03
timotimo ah, that just means never make a list smaller than 8 entries. mmkay.14:03
rindolf joined14:03
timotimo i don't see something obviously wrong yet14:04
colomon jnthn: so, how do we profile rakudo these days?14:04
jnthn --profile14:05
timotimo: It's just making sure...yes, that.14:05
jnthn is reproducing measurements here14:06
timotimo jnthn: mind if i reimplement memmove in the VMArrayInstance*java files in terms of System.arraycopy?14:06
jnthn timotimo: Please do.14:06
timotimo: That was suggested recently in a commit comment14:06
timotimo don't think it'll give us much in this case, but every little bit helps, no? why profile if i can just optimize instead!14:06
jnthn timotimo: Plesae check it for other suggestions, if you get chance.14:07
timotimo: unshift may benefit from similar things, fwiw.14:07
timotimo i thought unshift would use the "the array doesn't have to start at the start" mechanic?14:07
at least set_pos_boxed will check if there's space at the beginning and move everything over to the beginning if space is needed towards the end14:08
jnthn Right14:09
wow, .push on Rakudo Parrot is really a pig.14:09
byte48 joined14:10
colomon jnthn: but it's worse on Rakudo JVM, according to my tests here14:11
chinaXing joined14:11
jnthn colomon: 42s on Rakudo JVM here, vs 46s on Rakudo Parrot.14:11
Both suck.14:12
timotimo i can't find the thing you're refering to :(14:12
FROGGS hmmm, nqp::push is pretty fast on nqp@parrot, but not on nqp@jvm nor on moarvm14:12
timotimo the commit that has suggestions14:12
nwc10 a suckling pig! om nom nom.14:12
colomon really? I got Rakudo JVM taking longer on only half the number of elements14:12
nwc10 Oh, wait. Fail14:12
risourisou_awy14:12
jnthn colomon: Maybe our benchmarks differ14:13
risou_awyrisou14:13
colomon or our rakudo builds… the ones I've been testing on are probably at least a day or two stale14:13
FROGGS my @a; my $i := 0; while ($i := $i + 1) < 1000000 { nqp::push(@a, $i) } # 0.383s nqp/parrot, 2.126s nqp/jvm, 5.892s nqp/moarvm (precompiled)14:13
jnthn FROGGS: Unoptimized moarvm build, I presume?14:14
FROGGS jnthn: yes14:14
hold on14:14
colomon does p6listitems copy the list?14:15
jnthn colomon: Would have to look at it to find out...14:15
colomon nqp::p6listitems, I mean14:15
jnthn perl6.bat -e "my @a; my $n = now; for 1 .. (1825 * 4) { @a.push($_) }; say now - $n"14:15
42.22114:15
perl6.exe -e "my @a; my $n = now; for 1 .. (1825 * 4) { @a.push($_) }; say now - $n"14:15
46.936001414:15
(the .bat is on JVM, the .exe is on Parrot)14:15
FROGGS 0.294s nqp/moarvm (optimized, no debug, gcc instead of clang)14:15
MoarVM++14:16
jnthn uh, compiling it optimized makes it go from 5.8s to 0.29s?!14:16
(C compilers)++14:16
sqirrel joined14:16
colomon jnthn: actually, the timing difference we're seeing might be memory size dependent? I was showing jakudo using twice as much memory, but if that makes my machine go to swap faster, that could easily explain the timing difference14:17
gfldex is Grammar supposed to tell the user that he/she forgot to implement an action method or should it spit out a confusing, if a rule/token name happens to be a method name in Any?14:17
*confusing error message14:17
colomon you don't have to implement every action method14:18
jnthn colomon: Could be14:18
tadzik although you could pwrobably change GrammarHOW to warn you :)14:18
benabik left14:19
gfldex r: https://gist.github.com/gfldex/607995414:19
camelia rakudo 9ba5dd: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method list at src/gen/CORE.setting:1388␤ in any !reduce at src/stage2/QRegex.nqp:667␤ in any !cursor_pass at src/stage2/QRegex.nqp:631␤ in regex list at /tmp/oNU9xNLrk9:4␤ in regex element at /tm…14:19
benabik joined14:19
gfldex Core.setting:1388 is Any.list in that case14:19
gfldex heads off to find the rakudobug form and a sharp pencil14:20
pmurias joined14:29
pmurias re push slowness, does it persist when not using push and just inserting the element at the end of the array?14:30
timotimo will try14:30
holy moly14:30
that makes it finish *instantly*14:30
even when using @keys[@keys.elems] = $_ it's instant14:31
skids what about push(...); 1;?14:33
timotimo good catch. that is very fast as well14:34
takes just 2 seconds14:34
skids so it is the construction of the return value of the for loop.14:34
timotimo we never should have trusted sink!14:34
jnthn *sigh* yes, it's the sink think14:35
I thought I put us in an optimization for not constructing the result list in sink context?14:35
timotimo even with --target=optimize there's the whole sink thing, but it's all in a want for void context ... or am i looking at the wrong thing?14:36
Psyche^ joined14:37
jnthn ohhh14:37
$past := QAST::Op.new(14:37
:op<callmethod>, :name<eager>, $past14:37
);14:37
statement_control:sym<for> always calls eager14:37
timotimo ... yeah14:37
timotimo noticed that often before but never thought it would be bad :P14:37
jnthn Well, push returns the entire list.14:38
timotimo oh14:38
it makes a list of all the lists that push had14:38
and flattens them?14:38
colomon woah14:39
jnthn Right.14:39
jnthn tries compiling a fix to that.14:39
timotimo wow, whoops14:39
[Coke] nice catch, folks.14:40
colomon can confirm -- adding 1; at the end of the list speeds things up enormously14:40
Psyche^_ left14:40
timotimo wow, that *is* pretty bad14:40
jnthn I also got a couple of other small optimizations to .push that we can try.14:40
timotimo that's release a 2013.07.1 compiler release with just that fix bad.14:40
gfldex r: class Foo {}; say nqp::can(nqp::getlex('Foo'), 'list');14:40
camelia rakudo 9ba5dd: OUTPUT«1␤»14:40
nyuszika7h left14:40
timotimo in the mean time, i'll spectest my array copy replacement and hope the spec tests would bring a wrong usage of that to light14:40
jnthn timotimo++14:41
gfldex is there a nqp::can variant that doesn't follow the inheritance chain?14:41
jnthn No14:41
But you can look in .^method_table14:41
timotimo jnthn: the only thing i worry about is that arraycopy takes int for all the parameters and our memmove method takes longs ...14:41
nyuszika7h joined14:41
jnthn Which is "this class only"14:41
timotimo: That's fine, just cast 'em...14:41
timotimo *how* can that be fine? what if we have a humongous array?14:41
gfldex how do i do that in nqp?14:41
colomon looks to be (part of) the problem with categorize as well -- it's a double for loop with interior push, all in sink context14:42
jnthn darn, my patch didn't help...14:42
gfldex is nqp illiterate14:42
timotimo i'd imagine that's the trouble with p6doc's htmlize using up ridiculous amounts of memory, too ...14:42
jnthn gfldex: nqp::existskey($foo.HOW.method_table($foo), 'methname')14:42
Note it's not gonna be so fast as nqp::can14:42
What do you need it for, ooc?14:42
gfldex to fix https://gist.github.com/gfldex/607995414:43
jnthn: NQPCursorRole::!reduce is using nqp::can on an action class14:44
masak finds http://www.josetteorama.com/all-about-perl-6-interview-of-jonathan-worthington-part-2-of-3/ a really good read14:44
jnthn gfldex: Yes, but we rely on inheritance working14:44
masak jnthn++14:44
gfldex jnthn: that will force the user to implement any action method that has the same name then any method in Any14:45
if that method's name also shows up as a rule/token in the grammar in question14:45
Kiralexis joined14:45
timotimo i wonder if in for ^1024 { ... } $_ will be marked as Int by our clever optimizer. or if it should.14:47
jnthn gfldex: Only if we don't find a different fix :)14:48
timotimo remember how every grammar derives things like <ident>, too? we don't want to force the user to implement all those as well14:50
gfldex that's a different problem14:50
timotimo OK14:50
rGeoffreeey joined14:51
timotimo rGeoffreeey: when is that thing where you want to tell a bit about the status of perl6? can we get an emergency rakudo hotfix release before then?14:52
r: [1, 2, 3, 4].gimme(*).say14:53
camelia rakudo 9ba5dd: OUTPUT«4␤»14:53
timotimo jnthn: maybe instead of calling .eager, .gimme(*) could be called on for's result?14:53
jnthn timotimo: Working on some fixes here...14:54
timotimo good, i'll let you concentrate :)14:54
jnthn timotimo: Hotfix release matters only for basing a Star release off it14:54
timotimo: I suspect this issue has been in a Star release, but also we have lots of other stuff landed since then like the Buf changes14:54
nwc10 I would also be very surprised if anyone actually installs the compiler release from the release tarball.14:54
timotimo i was thinking to release just the fix you're going to come up with14:55
nwc10 What (I suspect) matters are git HEAD, and the Star distribution.14:55
pmurias jnthn: if I want to check // working with more complex things should I create a new test file?14:55
timotimo is no star going to be made this month?14:55
[Coke] we already know some people think we've been hit by a bus when we don't do a monthly star release. *sadface*14:56
jnthn OK, I got it down to 1.32s on JVM here.14:56
(from 42s)14:56
nwc10 stupids question maybe, but14:56
1) are there other places in the grammar with the same problem?14:57
2) when did it sneak in?14:57
timotimo initiates balcony time14:57
rGeoffreeey timotimo, the talk is at 19:00 Pacific time, 11 hours from now. I am just going for very high level bullet points, so any changes between now and then shouldn't be a problem for me14:57
stevan_ left14:57
pmurias jnthn: if I put things like 'class' into the earlier ones the test will be inaccesible to new implementations, if I put that in a new file we will have one more test file14:58
timotimo ah. well, the thought i had was: "will people come and install the latest compiler release and see how terrible for loops tend to perform"14:58
but i suppose it's a non-issue14:58
masak r: say (1..10).gimme(5)14:58
camelia rakudo 9ba5dd: OUTPUT«No such method 'gimme' for invocant of type 'Range'␤ in block at /tmp/qKF_pLi0sp:1␤␤»14:58
jnthn pmurias: "working with more complex things"?14:58
nwc10 timotimo: yes, it's a reasonable thing to question.14:58
masak r: say [1..10].gimme(5)14:58
camelia rakudo 9ba5dd: OUTPUT«10␤»14:58
masak huh.14:58
oh. number of elements available?14:59
jnthn masak: You called .gimme directly on a Range the first time...14:59
OK, I should spectest these patches I have here on both JVM and Parrot. It'll be a little bit before I can push.15:00
risourisou_awy15:00
pmurias jnthn: // doing the correct thing while passed a freshly created object15:00
bbkr joined15:01
jnthn pmurias: Are we talking about nqp or Rakudo here?15:01
pmurias jnthn: nqp15:02
bbkr hi. what is P6 syntax for capturing command line output - like P5 my $x = `ls` ?15:02
jnthn qx/ls/15:03
bbkr jnthn: thanks15:03
benabik left15:04
benabik joined15:06
gfldex r: class Foo {}; my Foo $foo; say "I have no", $foo.^parents; say "but I implement", $foo.list;15:06
camelia rakudo 9ba5dd: OUTPUT«I have no␤but I implement␤»15:06
gfldex magic \o/15:07
jnthn gfldex: .^parents(:all) # yes, I knew this'd catch people when TimToady++ wanted .^parents to default to lying... :)15:07
bbkr currently perl6 has --target= option. and I can for example do --target=PIR, then use pbc_to_exe to build executable. is there a way to simply request executable without worrying which VM rakudo is running on?15:08
jnthn Grr, I see spectest fails...15:08
chinaXing left15:08
jnthn bbkr: Not yet15:08
bbkr thanks again15:09
jnthn oh, I broke spectests 'cus I did something stupid15:13
diakopter stupid--15:13
FROGGS that makes it less stupid then15:14
diakopter stupid++15:14
FROGGS meh15:14
Guest4380 left15:14
ajr joined15:15
ajrGuest1656015:15
kaare_ joined15:18
bluescreen10 joined15:23
timotimo it doesn't seem like my arraycopy thing made any new spectest failures, but it's hard to spot new ones among the old ones. i shall run a pre-change spectest and just diff the output.15:23
jnthn My spectest run on JVM after I unstupided the patch is looking a bit better15:23
FROGGS .oO( Unstupify! )15:24
diakopter timotimo: any performance test results?15:24
FROGGS let's wave our wand-hands15:24
bluescreen100 joined15:24
diakopter .oO( Uncruciate )15:25
timotimo diakopter: i'd probably have to come up with a proper benchmark first. i suppose mixed shifts and pushes would do the trick?15:25
kresike bye folks15:26
kresike left15:26
pmurias left15:26
domidumont left15:26
kaleem left15:27
bluescreen10 left15:27
[Coke] wonders if we will eventually get a "useless use of sink context"15:29
smash_ joined15:31
ajr_ joined15:31
Guest16560 left15:32
skids .oO(useless use of sink == washing a handful of mud)15:32
jnthn timotimo: Here is another place to use array copy: https://github.com/perl6/nqp/blob/master/src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/VMArrayInstance.java#L8715:35
timotimo: If you didn't already. Taht one will help push more, I suspect15:35
timotimo: If this is gonna help, anyway15:35
SamuraiJack left15:41
timotimo i imagine the sun people came up with some ridiculously clever way to make arraycopy work well on overlapping regions15:43
although, maybe they also have ways to make such a for loop dispatch to an arraycopy after a little bit of jitting.15:44
rGeoffreeey left15:52
timotimo benchmark about to be run15:53
no visible change. but at least the code is a bit nicer now ...15:53
i'm actually not quite sure if those arrays ever shrink15:54
it does not. but i think it should15:55
something like "if the number of used slots shrinks below 1/3rd, it should be halved in size" or something. sonds sensible?15:55
dalek rakudo/nom: 49404ef | jnthn++ | src/Perl6/Actions.nqp:15:56
rakudo/nom: Fix for loops in sink context to actually be sunk.15:56
rakudo/nom: review: https://github.com/rakudo/rakudo/commit/49404ef95915:56
rakudo/nom: f173b55 | jnthn++ | src/core/MapIter.pm:15:56
rakudo/nom: Proper sink handling on JVM backend.15:56
rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f173b5586f15:56
rakudo/nom: cc9cf16 | jnthn++ | src/core/ (2 files):15:56
rakudo/nom: Minor optimizations in List/Array.15:56
rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cc9cf1613515:56
jnthn timotimo: Please dont' do that.15:56
timotimo: Because we have code that relies on15:57
nqp::setlems($foo, $big-number);15:57
nqp::setlems($foo, 0);15:57
Then pushes15:57
To not go resizing all the time.15:57
And you'd undo that.15:57
timotimo how about i put the code in shift and pop only?15:57
that would allow setelems $bignum and pushes to work no-problem15:58
but actually shrink arrays appropriately if they're being shifted trom15:58
actually, you know what? i could probably make it an == instead of <= comparison, because shift and pop will only ever pop off one. in that case, it would only trigger if there were once more than that many elements in the list15:59
timotimo cooks some dinner now15:59
jnthn colomon: Feel free to give the things I just pushed a try15:59
colomon jnthn++16:00
[Coke] hey! obra made boingboing: http://boingboing.net/2013/07/25/scratch-building-a-keyboard.html16:00
daxim still nothing on http://keyboard.io/ :(16:02
I know these slides16:03
jnthn colomon: Was there something else especially slow?16:03
colomon yes, %hash.kv on a big hash16:03
daxim http://podcast.bulknews.net/post/4991526288416:04
colomon well, maybe more extremely stacky than slow, but same effect.16:04
jnthn: https://gist.github.com/colomon/607902716:04
rGeoffreeey joined16:04
[Coke] daxim: looks like the background is supposed to be this: https://launchrock-assets.s3.amazonaws.com/background-files/EPVBNZBC_1366340862269.jpg?_=016:04
colomon might have been fixed by your latest changes, but since the problem showed up in the stack, I'm guessing not.16:05
daxim that's prototype #6, I believe16:05
FROGGS jnthn: will 49404ef959 change for-loops behaviour when it is the last statement in a sub?16:06
daxim I want something with a couple more keys - but still keep the ergodox-workalike layout16:06
jnthn FROGGS: no16:06
FROGGS k16:06
jnthn FROGGS: As last statement in a sub is not in sink context16:06
FROGGS I see16:06
colomon jnthn: that's insanely better16:09
jnthn \o/16:09
colomon 1825 * 8 is 2 seconds, where 1825 * 4 used to be 53 (this under JVM)16:09
afk # noms16:09
jnthn Wow, the hash one explodes on JVM due to the gather/take issue16:10
bbkr any idea why --target=pir produces pir file that crashes with "Missing or wrong version of dependency 'src/Perl6/Grammar.nqp'" error? are there any special directives/options to pass?16:10
[Coke] bbkr: are you building rakudo?16:11
(I find I get those unless I realclean because of dep issues)16:11
bbkr no, I'm trying to make executable as listed here: http://perlgeek.de/blog-en/perl-6/my-first-executable.writeback16:11
from sample hello world code16:11
moritz that hasn't been working for years :(16:11
FROGGS bbkr: I'd guess you should do `make install` in rakudo's dir first16:12
have to*16:12
bbkr same result after "make install"16:13
FROGGS :/16:13
lizmat jnthn: what's the rationale of STORE_AT_POS, when apparently this only gets called at one location ever?16:14
something for the future?16:14
jnthn lizmat: hMM16:15
timotimo isn't it called from all the things in Any?16:15
fhelmberger left16:15
jnthn lizmat: Not sure16:15
lizmat hMM ?16:15
timotimo nope, i was wrong.16:15
lizmat hmmm… with a big M ?16:15
jnthn yes :)16:15
lizmat seems like a useless extra sub call for each .push16:16
estrabd joined16:16
lizmat also: from jnthn's push() fixes, spectest has gone down from ~3180CP seconds to ~314016:16
CPU16:16
diakopter moritz: deprecated article needs DEPRECATED stamp16:17
jnthn lizmat: Well, note that it is the thing that makes push in a List and push in an Array do different things.16:17
lizmat: We have to preserve taht difference.16:17
lizmat ok16:17
aha, and Array doesn't have it's own .push16:18
*its16:18
I guess it would be an optimization that would be too early to copy .push into Array and get rid of that sub call ?16:18
too early as in premature16:19
jnthn yeah16:19
Adding the extra single arg candidate for push, or something smiliar to that, may be worth it though.16:19
lizmat ok, I'll pursue that line of thought then16:19
timotimo jnthn: are you still convinced i should not implement array shrinking on pop and shift?16:22
dalek rakudo/nom: 207cdaf | (Elizabeth Mattijsen)++ | src/core/List.pm:16:23
rakudo/nom: Subtle change in fail message16:23
rakudo/nom: review: https://github.com/rakudo/rakudo/commit/207cdaf54d16:23
TimToady P5 gets along very well with the idea that past behavior probably indicates future needs, so if you needed the space before, it's better to hang onto it than to reallocate it16:24
in the rare cases you need to reclaim, the user can copy16:25
jnthn colomon: I'm working on faster hash iteration16:27
rindolf left16:27
timotimo hmm. i was thinking of cases like ... while @list.shift16:27
TimToady of course, P5 is nuts about that sort of stuff; it'll even notice you're shifting and pushing the same array as a rotation, and allocate something like 10 times more space to cut down on the copying16:27
jnthn timotimo: Generally those lists a throw-away16:28
FROGGS left16:28
jnthn *&are16:29
rGeoffreeey left16:32
timotimo okay, i'll drop the case then :)16:32
Guest39864 left16:36
daxim http://paste.scsys.co.uk/263755?tx=on # rakudo-jvm 2013.07 build fails after step "tools/build/create-jvm-runner.pl"16:41
error message is "Unhandled exception: java.nio.file.NoSuchFileException: ModuleLoader.class"16:41
[Coke] daxim: what is "nqp-jvm" ?16:42
diakopter nqp-jvm: say 116:43
camelia nqp-jvm: OUTPUT«Confused at line 2, near "say 1"␤ in panic␤ in comp_unit␤ in TOP␤ in parse␤ in parse␤ in <anon>␤ in compile␤ in eval␤ in evalfiles␤ in command_eval␤ in command_line␤ in MAIN␤ in <anon>␤ in <anon>»16:43
diakopter nqp-jvm: say("slap")16:43
camelia nqp-jvm: OUTPUT«slap␤»16:43
[Coke] diakopter: that is most unhelpful.16:43
lizmat sanity check: we don't have infinite Parcels, do we?16:43
[Coke] let me rephrase my question for the pedants.16:43
diakopter ?16:43
[Coke] which version of nqp do you have installed as nqp-jvm?16:43
diakopter [Coke]: sorry :( I didn't look at daxim's paste16:43
(the "slap" was to self for forgetting nqp needs parens)16:44
dalek nqp: 24c14a7 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/VMArrayInstance (7 files):16:45
nqp: use java.lang.System.arraycopy for memmove.16:45
nqp: review: https://github.com/perl6/nqp/commit/24c14a7fa416:45
nqp: 3e222b8 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/VMArrayInstance (7 files):16:45
nqp: use System.arraycopy in one more place in VMArray.16:45
nqp: review: https://github.com/perl6/nqp/commit/3e222b879716:45
daxim [Coke], nqp-jvm is /usr/bin/nqp-jvm, a product of the nqp-2013.07 source code with the ConfigureJVM toolchain. I had to rename it from nqp because it conflicts with nqp from the Configure/pir toolchain16:45
timotimo i'll see how much ram htmlify now swallows up.16:46
[Coke] daxim: what is in your copy of "perl6" ?16:46
daxim shebang and this line: exec java -Xms100m -Xbootclasspath/a:/usr/share/java/nqp-runtime.jar:/usr/share/java/asm-4.1.jar:/usr/share/java/asm-tree-4.1.jar:/usr/share/java/jline-1.0.jar:./rakudo-runtime.jar:./perl6.jar:.:blib -cp .:blib:/usr/bin perl6 "$@"16:47
[Coke] (also, did anyone ever get installations of rakudo-jvm working?)16:47
er, of nqp-jvm16:47
FROGGS joined16:47
[Coke] (nevermind, I guess that does work, although not usually done ina system dir)16:47
daxim yes, see my specfile: https://build.opensuse.org/package/view_file/home:ldieckow:branches:devel:languages:parrot/nqp/nqp.spec?expand=116:48
the build system sucks balls, though. I hope the configures are merged in the next release16:48
[Coke] daxim: you're changing stuff before you do the build. are you sure those changes aren't breaking anything? (I'm still digging)16:49
daxim no, quite the opposite16:49
these changes make it work16:49
rindolf joined16:50
jaldhar_jaldhar16:50
daxim I probably should comment what each patch accomplishes, but I didn't expect there would be so many needed when I started out16:50
cbk joined16:50
[Coke] why are they needed?16:51
that is, I'm just building right from source, which doesn't have any of those changes.16:51
daxim yeah, you're not packaging; you just install into $builddir/install16:52
which is fine for a developer, but I'm redistributing software here that must follow certain conventions16:52
bbkr left16:52
daxim i.e. %{_javadir} and crap like that16:53
lee_ colomon: hmm after building latest jvm-rakudo my push test just hangs seemingly forever16:53
if i add a say @a.elems before pushing it hangs at 730016:54
my @a; for 0..(1825 * 4) { say @a.elems; @a.push($_); } # probably doing something wrong here16:55
[Coke] daxim: what version of java are you using, OOC?16:56
daxim java-1_7_0-openjdk16:56
lee_ yeah it just hangs at 7300 and memory continues growing and using 300% of CPU16:57
rGeoffreeey joined16:59
colomon lee_: what nqp are you using?17:00
lee_ fb241ae, i'll try updating that17:01
i believe it is from last night17:01
[Coke] daxim: does blib/Perl6/ModuleLoader.jar exist?17:04
daxim yes17:06
there's also a /usr/share/java/ModuleLoader.jar17:06
spider-mario joined17:08
colomon lee_: hmmm, that's the same one I have, actually.17:08
lee_: what was your push test?17:08
dakkar left17:08
lizmat jnthn: why isn't List.push implemented in terms of nqp::push ?17:10
lee_ colomon: pasted it above17:10
lizmat jnthn: the reason I'm asking, is that I just realized that the way .push is currently implemented is not at all thread safe17:10
jnthn lizmat: Good question.17:11
lizmat: I had pondered that a bit also; it'd require push being duplicated in Array to get it right, I suspect.17:11
fridim_ joined17:11
timotimo hmm. htmlify still reaches 4gb resident memory after just 40 pod files17:12
lizmat well, if that's the price to get it working in a threaded environment, it's a price I don't mind paying17:12
jnthn lizmat: Feel free to investigate; I just did a few initial improvements.17:12
timotimo: Does it do hash iteration?17:13
timotimo i don't think so, but let me look17:13
colomon lee_: 7300 with yours, yep. WTH?17:13
lee_ colomon: does it hang after that?17:13
colomon lee_: I didn't give it long, but it certainly went from printing several a second to not printing any more, just like it hit a brick wall17:14
timotimo no. what it does do is for (0..* Z @source) (i made that part so that it would show how many files it's gone through and how many are missing)17:14
maybe that's unoptimized? but i can hardly see that17:14
the return value of spurt should be a bool, no?17:14
or does it return the spurt'd string?17:15
jnthn bool I think17:15
colomon lee_: this is crazy17:15
ajr_ left17:15
timotimo doesn't see any obvious flaws17:15
colomon rn: say 1825 * 417:15
ajr joined17:15
camelia rakudo 207cda, niecza v24-88-g1f87209: OUTPUT«7300␤»17:15
jnthn I have some work here that gets hash iteration to use a new HashIter that I'm working on instead of using gather/take17:15
colomon oh17:15
jnthn It should deal wiht the stack overflow colomon sees17:15
lee_ colomon: my @a; for 0..2 { @a.push($_) } # returns 0 1 2 0 1 2 0 1 2 in REPL17:16
timotimo hm, i *think* the memory usage used to be a bit extremer before, though17:16
ajrGuest5602817:16
Guest56028ajr_17:16
[Coke] daxim: trying a build with those specific versions... (don't see anything obvious in your ./perl6 that would cause the issue)17:16
(though there are ordering differences and you have extra path info that I don't)17:16
colomon lee_: 7300 is the last element. but why is it taking so long to return after the loop is done?17:16
jaldhar left17:17
lee_ colomon: ah, i think i see. being in the repl forces it to sink context?17:17
jaldhar joined17:17
lee_ er, maybe not17:17
colomon out of sink context17:17
that maybe what I'm seeing, too, it's the last thing in the script I created from your code.17:17
that's totally it17:18
jaldhar left17:18
ajr_ left17:18
jaldhar joined17:18
lee_ yeah, if i plop a 1; at the end it returns much faster17:18
colomon rn: my @a; for 0..(1825 * 4) { @a.push($_); }17:19
lee_ (a 1; after the for loop)17:19
camelia rakudo 207cda: OUTPUT«(timeout)»17:19
..niecza v24-88-g1f87209: ( no output )17:19
xinming left17:19
birdwindupbird left17:19
colomon rn: my @a; for 0..(1825 * 4) { @a.push($_); };1;17:19
lee_ rn: my @a; for 0..(1825 * 4) { @a.push($_); } 1;17:19
timotimo it goes up to 7.4gb :(17:19
lee_ hehe17:19
camelia rakudo 207cda, niecza v24-88-g1f87209: ( no output )17:19
rakudo 207cda: OUTPUT«===SORRY!===␤Confused␤at /tmp/6M73ABocSX:1␤------>  @a; for 0..(1825 * 4) { @a.push($_); } ⏏1;␤ expecting any of:␤ postfix␤ statement end␤ statement modifier␤ statement modifier loop␤ horizo…17:19
..niecza v24-88-g1f87209: OUTPUT«===SORRY!===␤␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/aONRQ9Cf3F line 1:␤------> y @a; for 0..(1825 * 4) { @a.push($_); }⏏ 1;␤␤Parse failed␤␤»17:19
rGeoffreeey left17:19
jnthn timotimo: Is that before or after the sink patch?17:20
timotimo after17:20
i think before, too, though17:20
jnthn wait, are you actually evaluating it in sink context?17:20
At the REPL, just writing my @a; for 0..(1825 * 4) { @a.push($_); }; for example has to build up all the result lists17:20
timotimo as opposed to assigning the result of a loop to a variable, either directly or through any amount of sub calls?17:20
colomon timotimo: try @source.kv rather than 0..* Z @source ?17:21
xinming joined17:21
timotimo 7.7gb maxrss :(17:21
colomon: good point17:21
jnthn r: say [+] 1..(1825 * 4)17:21
camelia rakudo 207cda: OUTPUT«26648650␤»17:21
jnthn Out of sink context, you're constructing a result array of that many elements.17:21
timotimo i see no assignment going on that shouldn't.17:23
and fwiw, the thing that generates a list of pairs using a breadth-first-search gather/take with dir is still getting up to the same amount of ridiculous ram usage it had before17:23
340M before, 1820M after reading the 153 files out of the directories17:24
skids has had to add 1; at the end of included modules to avoid fun with sink/nosink. Reminded him of perl5's require requirement.17:26
moritz skids: and I already changed for-loops to be eager again17:28
sqirrel left17:28
skids Wasn't a for loop in this case, the last thing in the module was a role. Punned it without the 1; IIRC.17:29
moritz urk.17:30
jnthn moritz: Yes, they were eager, but eager != sink :)17:32
timotimo should @todo = @todo cause any excess memory reserved for the VMArray to be freed and a new, fitting memory chunk to be allocated?17:34
hm, nah, that wouldn't explain that much memory usage at all17:36
dalek rakudo/nom: fe35215 | (Elizabeth Mattijsen)++ | src/core/List.pm:17:41
rakudo/nom: Applied same optimization logic to other List methods17:41
rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fe3521562a17:41
lizmat will look at .push again when back from Wolverine 3D :-)17:41
&17:41
btyler left17:44
rGeoffreeey joined17:45
[Coke] timotimo: no.17:52
dalek perl6-roast-data: e88ad8b | coke++ | / (4 files):17:53
perl6-roast-data: today (automated commit)17:53
perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/e88ad8b84117:53
btyler joined18:00
[Coke] daxim: did a build with those particular versions with no errors on an OS X box.18:01
(developer style, obviously)18:01
daxim well, then you spent a lot of time not reproducing the problem I'm having18:01
[Coke] ... Yes.18:02
I do see that the generated ./perl6 from that "era" matches the one you have much more closely.18:02
I can try out your patches that made it "work" for you and see if I can figure out if one of those is tied to the issue.18:03
daxim yes please18:03
[Coke] Do you have a script you're running to do the build?18:03
hoelzro good evening Perl 6 folk!18:05
jnthn o/ hoelzro18:06
daxim yes, osc18:06
[Coke] (also, if you have a script for building the nqp-jvm, that would also be helpful)18:06
daxim if you can't run osc, just follow the shell script parts of the specfile in order18:07
jnthn colomon: Think I've worked out all the spectest fails in my re-work of hash iteration.18:09
daxim the spec files are at https://build.opensuse.org/package/show/home:ldieckow:branches:devel:languages:parrot/nqp and https://build.opensuse.org/package/show/home:ldieckow:branches:devel:languages:parrot/rakudo each18:09
hoelzro so I some ideas about my issues with MAIN(Str $value) and passing '10' on the command line18:09
colomon jnthn: oooooo18:09
jnthn colomon: Verifying that on Parrot now, then will make sure it doesn't blow up Rakudo JVM18:09
colomon: It adds a HashIter over using gather/take18:10
hoelzro could MAIN be modified so that it checked an argument's type before coercing it to something it recognizes?18:10
jnthn Also seems to elimiante a previous Parrot/JVM difference hack and maybe (if they don't go away) makes some todo tets pass18:10
hoelzro: I think the problem you've got is Rakudo not yet providing the IntStr type18:10
kaare_ left18:11
hoelzro so what exactly does the IntStr type provide? something that can hold either an Int or a Str, I assume?18:11
[Coke] daxim: why does the nqp spec file build the parrot version and the java version?18:11
jnthn hoelzro: it's roughly class IntStr is Int is Str { } or so18:11
daxim because the source archive provides those build targets18:12
TimToady n: @*ARGS = '10'; sub MAIN (Int $i) { say $i.WHAT }18:12
camelia niecza v24-88-g1f87209: OUTPUT«(IntStr)␤»18:12
TimToady hoelzro: prior art ^^18:12
[Coke] so if someone is trying to build rakudo-jvm, they get rakudo-jvm, nqp-jvm, and nqp-parrot?18:13
hoelzro ok, so maybe IntStr would solve my problem18:13
but let's say I wanted to implement 'echo'18:13
TimToady you can always process your own args18:14
daxim no. when nqp is built, it produces nqp, nqp-devel and (since yesterday) nqp-jvm18:14
hoelzro I suppose so18:14
but to me, this isn't just about capability; it's about surprise18:14
[Coke] where nqp == "nqp on parrot", which is what I was trying to say above. ok.18:14
TimToady but using val() semantics allows multidispatch to MAIN18:15
there is now way to avoid surprise when the command line does not supply sufficient type info18:15
*no18:15
hoelzro let's say that as a newbie to Perl 6, I implemented echo as such: sub MAIN(Str $value) { say $value }18:15
Kiralexis 2/away18:15
hoelzro if I call echo True, it'll fail, complaining that I didn't provide a value18:15
that confused me when I saw it18:16
so what's the right way to handle this?18:16
TimToady n: @*ARGS = 'True'; sub MAIN ($i) { say $i.WHAT }18:16
camelia niecza v24-88-g1f87209: OUTPUT«(Str)␤»18:16
TimToady val doesn't do enums18:16
hoelzro I haven't tried this in niecza yet18:17
TimToady n: @*ARGS = '22/7'; sub MAIN ($i) { say $i.WHAT }18:17
camelia niecza v24-88-g1f87209: OUTPUT«(RatStr)␤»18:17
hoelzro I'm just making my feeling on this Rakudo feature known18:17
=)18:17
TimToady and in any case, it'd have to be a BoolStr :)18:18
hoelzro and then, if I call 'echo 10'?18:18
TimToady n: @*ARGS = '10'; sub MAIN (Str $i) { say $i }18:19
camelia niecza v24-88-g1f87209: OUTPUT«10␤»18:19
TimToady still works as a Str18:19
that's what the MI is for18:19
hoelzro if that works in Rakudo, that's fine with me =)18:20
TimToady the only other approach I've considered seriously is making Str an ancestor class of everything numeric, but that also seems problematic18:20
trouble is, it's a DWIM, and that invokes masak's law18:20
the WAT of the MI solution is that a multi dispatching to both Int and Str will fail18:21
hoelzro in thinking about this, I also thought it might be nice to able to provide special traits to MAIN to override/augment how argument parsing works18:23
but maybe that would be better suited to an actual option parsing routine?18:23
zby_home_ joined18:23
TimToady that is the way that MAIN makes hard things possible :)18:25
sjohnson joined18:25
[Coke] daxim: is your JAVADIR set to /usr/share/java ?18:26
sjohnson left18:26
gtodd joined18:26
daxim is that an environment variable? if yes, then no.18:26
[Coke] er, sorry, misread. how is %{_javadir} set?18:27
daxim that's an rpm macro, expanded at when the spec file is parsed18:27
[Coke] ok. what's it set to (I'm running these by hand, not inside whatever build system you're using.)18:28
?18:28
jnthn colomon: On JVM, that thing that stack overflowed before now compltes in 2.18s.18:29
colomon \o/18:29
[Coke] wherever you installed nqp?18:29
daxim /usr/share/java18:29
[Coke] jnthn++18:29
colomon jnthn++ indeed!18:29
rindolf left18:29
daxim the jars go to /usr/share/java, the bins to /usr/bin18:29
jnthn Running spectest on JVM now; back after a quick visit to the shop18:30
[Coke] daxim: can you show me your /usr/bin/nqp-jvm script?18:31
rGeoffreeey left18:31
ajr joined18:32
ajrGuest5596918:33
daxim exec java -Xbootclasspath/a:/usr/share/java:/usr/share/java/nqp-runtime.jar:/usr/share/java/asm-4.1.jar:/usr/share/java/jline-1.0.jar:/usr/share/java/nqp.jar -cp /usr/share/java nqp "$@"18:33
plus shebang18:33
SamuraiJack joined18:42
[Coke] daxim: FYI, the description on nqp's jvm package mentions PIR still.18:42
Guest55969ajr_18:43
daxim do you have a better description?18:44
omeranon joined18:44
[Coke] s/PIR/java/ is probably sufficient.18:45
skids left18:49
[Coke] daxim: ok. the problem appears to be that nqp cannot handle being split into a bin dir and a jar dir.18:51
I don't know if this is a systemic thing, or just a result of the rakudo.jvm makefile.18:51
gtodd left18:52
daxim that's a "must" for packaging. I'll put the rakudo-jvm target on ice until next release18:52
daxim left18:57
[Coke] I would recommend opening a rakudobug to track this.18:57
sqirrel joined19:02
jnthn Also, coordinate with donaldh++ who is working on these things.19:03
dalek rakudo/nom: 787295d | jnthn++ | src/core/ (2 files):19:06
rakudo/nom: Re-work hash iteration to use a HashIter.19:06
rakudo/nom:19:06
rakudo/nom: This replaces the existing gather/take approach with maps over them,19:06
rakudo/nom: which for .kv/.keys/.pairs is much more efficient as we never create a19:06
rakudo/nom: load of Pair objects only to throw them away. Seems not to regress any19:06
rakudo/nom: spectests on JVM or Parrot, and makes some TODO tests pass, most likely19:06
[Coke] jnthn: wish I had know that several long builds ago. ;)19:06
dalek rakudo/nom: because 'for %h.vk -> $k, $v is rw { ... }' is probably fixed.19:06
rakudo/nom: review: https://github.com/rakudo/rakudo/commit/787295d0d219:06
[Coke] jnthn++ # moar java!19:06
jnthn [Coke]: Know...donaldh++ has a make-install branch? :)19:06
Sorry, I'm not always good at knowing who knows what :)19:07
colomon: Please give 787295d a spin19:07
colomon jnthn: I've been eagerly awaiting it.19:07
ORFJackal joined19:08
jnthn LHF for others: maybe pull HashIter out into a HashIter.pm for consistency and update the Rakudo/Parrot makefiles; look into untodo'ing some tests :)19:08
timotimo: Another run of p6bench may be interesting with these latest changes19:09
ORFJackal jnthn, I heard from Raiph Mellor that you would like a chat; see his comment at http://blog.orfjackal.net/2013/07/lambda-expressions-backported-to-java-7.html19:12
[Coke] jnthn: not your job, no worries. ;)19:14
jnthn ORFJackal: Looking...19:14
ORFJackal: Ah, I'd heard about Retrolambda :)19:16
ORFJackal word travels fast nowadays :)19:16
jnthn ORFJackal: Is it doing Just Enough of invokedynamic for what is needed by Java 8 lambdas?19:16
ORFJackal it basically produces similar bytecode as if you would use anonymous inner classes instead19:17
preflex left19:17
mtk left19:17
Kiralexis left19:17
crab2313 left19:18
Kiralexis joined19:18
preflex joined19:18
mtk joined19:18
PerlJam joined19:18
ivan``_ joined19:18
crazedpsyc joined19:18
TimToady joined19:18
kshannon joined19:18
gfldex joined19:18
mathw joined19:18
bakedb joined19:18
arnsholt joined19:18
hubbard.freenode.net set mode: +v19:18
ORFJackal it takes the invokedynamic instruction produced by JDK 8 for lambdas, and replaces it with a normal method invocation for instantiating the class19:19
jnthn OK. We're using invokedynamic for a bunch of things; I guess my question is whether this is a general way to get code using invokedynamic to run on JVMs without it, or if it looks for Java 8 lambda-like uses of invokedynamic and just tweaks thsoe?19:19
pmurias joined19:19
xinming left19:20
benabik left19:20
nyuszika7h left19:20
cognominal left19:20
kingbeast left19:20
jnthn guesses the latter, having read more carefully now :)19:20
ORFJackal it looks for only lambda related invokedynamic19:20
the relevant code is at https://github.com/orfjackal/retrolambda/blob/master/retrolambda/src/main/java/net/orfjackal/retrolambda/LambdaUsageBackporter.java#L97-L11019:21
xinming joined19:21
benabik joined19:21
nyuszika7h joined19:21
cognominal joined19:21
kingbeast joined19:21
masak joined19:21
Ulti joined19:21
odoacre_ joined19:21
scottp joined19:21
rom1504 joined19:21
simcop2387 joined19:21
ORFJackal in lambda's case it's enought to replace the invokedynamic with a single invokestatic call, because it knows how LambdaMetafactory works19:22
jnthn Yeah. )19:22
ORFJackal in the general case invokedynamic is much more flexible, because it can dispatch the method call dynamically to lots of places19:22
colomon jnthn: certainly makes my golfed test work better!19:23
pmurias left19:23
smash_ left19:24
gabriel_ left19:24
awwaiid left19:24
sivoais left19:24
jnthn Yes, we've got a bunch of usages like that. However, it occurs to me that the approach - recognize specific uses of invokedynamic that our code-gen spits out and then tweak them using knowledge of what they do - could be used.19:26
ORFJackal Yes, that might work, if you know the implementation details of the bootsrap method. I doubt that any generic solution would be possible - at least not with same performance.19:28
zamolxes joined19:29
smash joined19:29
integral joined19:29
integral left19:29
integral joined19:29
awwaiid joined19:29
cosimo joined19:29
sivoais joined19:29
jnthn Yes, there is a small-ish set of bootstrap methods that we use.19:29
diakopter joined19:29
mls joined19:29
frettled joined19:29
p5eval joined19:29
huf joined19:29
pmurias joined19:30
gabriel_ joined19:30
rhr joined19:30
ORFJackal Are the call sites constant or dynamic?19:30
jnthn Dynamic.19:30
Which makes it a bit more fun :)19:31
sjohnson joined19:31
ORFJackal :)19:31
What are your motivations of getting rid of invokedynamic?19:31
sjohnson left19:31
sjohnson joined19:31
ORFJackal Is Java 7 too high a minimum requirement?19:32
jnthn Only motivation really running in places where it's not available yet, as an option rather than as a default.19:33
ORFJackal Like Android and others?19:33
jnthn Yeah. Which would be kinda cool, though I'm not sure how useful. :)19:34
ORFJackal True.19:34
jnthn And probably it's only a matter of time before invokedynamic is more widespread...19:34
djanatyn joined19:34
araujo joined19:34
silug joined19:35
charsbar_______2 joined19:35
rafl joined19:35
ORFJackal I agree. Java 6 is already EOL, so Java 7 should sooner or later be everywhere.19:35
...except some mobile stuff.19:35
geekosaur .oO { famous last words }19:35
cognominal before Perl 7? /me ducks19:36
ORFJackal :)19:36
I wonder if some companies still use Java 5 in production.19:37
jnthn ORFJackal: Out of curiosity, is there a good place you know to follow the invokedynamic improvements going into JDK8?19:37
sqirrel left19:37
jnthn (short of the openjdk mailing lists...)19:38
ORFJackal I was just about to mention them ;)19:38
There is https://groups.google.com/forum/#!forum/jvm-languages which seems to be filled with likeminded people19:38
I'm not reading it actively, but that's the place I would look for if I want to hear about such things19:39
Then there is the JVM Language Summit conference. I don't know whether their presentations are published online, but it's worth finding out.19:41
jnthn Hm, that forum shows no posts since April...19:41
ORFJackal http://openjdk.java.net/projects/mlvm/jvmlangsummit/ "Talks from previous years are hosted by the Oracle Technology Network: 2011, 2012. Some older talks are also available at InfoQ (2008 & 2009) and on the wiki (2010)."19:41
tadzik "already EOLd". Like Perl 5.8, for example? :P19:41
ORFJackal :)19:42
nemesys joined19:42
jnthn ORFJackal: Thanks for the pointers :)19:43
ORFJackal np19:43
vk_ joined19:44
nemesys left19:54
SamuraiJack left19:56
SamuraiJack joined19:59
prevost joined20:01
domidumont joined20:03
FROGGS r: use MONKEY_TYPING; augment class Buf { }20:03
camelia rakudo 787295: OUTPUT«===SORRY!===␤Cannot augment Buf because it is closed␤at /tmp/CfA_3P5c45:1␤------> use MONKEY_TYPING; augment class Buf ⏏{ }␤ expecting any of:␤ scoped declarator␤ generic role␤»20:03
FROGGS star: use MONKEY_TYPING; augment class Buf { }20:03
camelia star 2013.02: ( no output )20:03
SamuraiJack left20:03
FROGGS is that by design?20:03
jnthn Yes; Buf is a role, not as class, per spec. We used to have that wrong.20:04
FROGGS hmmmm20:05
r: say "a".encode.WHAT20:07
camelia rakudo 787295: OUTPUT«(utf8)␤»20:07
domidumont left20:08
[Coke] I cannot imagine we are upgraded to java 7 here at work anytime soon. :P20:09
*upgrading20:09
FROGGS I'd think that we are stuck with the version that was popular in 200820:09
benabik left20:16
corecatcher joined20:17
benabik joined20:18
timotimo jnthn: i'm going to go do a benchmark run. should i do both rakudo.jvm and rakudo.parrot against older rakudo.jvm and rakudo.parrot?20:22
zby_home_ left20:23
jnthn timotimo: yeah20:27
[Coke]: Did you do an ecosystem test run since the Buf signedness fixes I did?20:28
[Coke] that was days ago, yes? everything seems fine-ish on the jvm.20:28
er, wait, ecosystem. star?20:28
jnthn [Coke]: The modules tests20:29
[Coke] the way the daily star tests pick what to run is currently useless - it picks the versions that are selected in star.20:29
so any commits newer than that are ignored. :)20:29
made sense when we got started, because even those were broken.20:30
jnthn ah, ok20:30
[Coke] but now It needs to move to latest-and-greatest, I think.20:30
jnthn *nod*20:30
[Coke] I'll get that done this weekend.20:30
jnthn OK20:30
PerlJam [Coke]++20:30
jnthn I'll be gone by then, but will be back well before any release involving Buf... :)20:30
[Coke] wonders if there's enough working to get started on a rakuduo.jvm*20:31
corecatcher evening, are there any other LHF except those few issues at github?20:33
jnthn [Coke]: I expect a bunch of modules may well work20:34
FROGGS corecatcher: there are tickets in RT too20:34
jnthn [Coke]: We're missing a few foundational pieces like NativeCall that will probably block a bunch of stuff.20:34
timotimo corecatcher: rakudo.org has a section "bugs" on the top where you can find a pre-made search for LHF in the RT20:34
PerlJam timotimo: currently showing 0 results.20:36
timotimo hm20:36
let's make some ;)20:36
PerlJam NYI is showing 0 too20:37
blocking on tests has bunches though.20:37
those should be LHFish20:37
corecatcher FROGGS: url?20:37
FROGGS corecatcher: ^^https://rt.perl.org/rt3/Public/Search/Simple.html?Query=Queue%20=%20%27perl6%27%20AND%20%28Status%20=%20%27open%27%20OR%20Status%20=%20%27new%27%20OR%20Status%20=%20%27stalled%27%2920:38
sorry for the long url20:38
corecatcher np, thx20:38
FROGGS err, remove that ^^20:38
[Coke] FROGGS, corecatcher : http://rakudo.org/tickets/ is a decent launch page to avoid having to remember the long urls.20:40
ajr_ left20:40
dalek rakudo/sized-arrays: e124a6a | Arcterus++ | / (11 files):20:40
rakudo/sized-arrays: Add support for shaped arrays20:40
rakudo/sized-arrays: review: https://github.com/rakudo/rakudo/commit/e124a6a24b20:40
rakudo/sized-arrays: fe86822 | Arcterus++ | / (86 files):20:40
rakudo/sized-arrays: Merge remote-tracking branch 'upstream/nom' into nom20:40
rakudo/sized-arrays:20:40
rakudo/sized-arrays: Conflicts:20:40
rakudo/sized-arrays: src/vm/jvm/runtime/org/perl6/rakudo/Ops.java20:40
rakudo/sized-arrays: review: https://github.com/rakudo/rakudo/commit/fe8682206020:40
rakudo/sized-arrays: ec7842b | Arcterus++ | src/core/Array.pm:20:40
rakudo/sized-arrays: Fixed error with 'use' statements20:40
rakudo/sized-arrays: review: https://github.com/rakudo/rakudo/commit/ec7842b5b720:40
rakudo/sized-arrays: 6493e48 | jnthn++ | / (11 files):20:40
rakudo/sized-arrays: Bring Arcterus++ sized array work into a branch.20:40
rakudo/sized-arrays:20:40
rakudo/sized-arrays: Can evaluate/tweak it from here.20:41
rakudo/sized-arrays: review: https://github.com/rakudo/rakudo/commit/6493e4850920:41
timotimo cool :)20:41
jnthn: i built rakudo.parrot and rakudo.jvm for bench now and i'll run timings now20:43
jnthn \o/20:43
timotimo++20:43
dmol left20:43
timotimo jnthn: any particular version you'd like me to compare it to? 2013.07?20:43
jnthn timotimo: That'll do just fine.20:44
timotimo i'll have to build them, too ...20:44
i can give you a comparison to older revisions in the mean time20:44
PerlJam timotimo: sounds like a blog post in the making too :)20:45
timotimo only if the results are meaningful.20:45
also, i'm kind of stealing japhb's thunder ;)20:46
corecatcher omg, these bugs are all years old - either not up2date anymore and need to be verified? :)20:46
timotimo hehe. some are just waiting for a test case to be written and checked into perl6/roast20:47
wk joined20:47
cognominal left20:47
wkGuest3772920:47
fridim_ left20:48
PerlJam timotimo: you could talk about the lightning (benchmark setup) and let japhb talk about the thunder (results)20:48
jnthn corecatcher: There's a load of fixed bugs that need test cases, as timotimo just mentioned. They typically contain a good example of what code the test case should contain and the correct result, so it's quite easy to convert them into tests and then get the ticket clsoed. :)20:48
timotimo japhb had a benchmark setup talk at yacp::na20:48
cognominal joined20:48
jnthn corecatcher: This is a very useful thing to be doing. :)20:48
PerlJam timotimo: I know. The more points of view on a subject, the more meaningful it becomes to people. :)20:49
rGeoffreeey joined20:49
corecatcher haha, i do recognize dirty work, but yes its useful20:49
BenGoldberg joined20:51
jnthn timotimo: I wouldn't worry about stealing thunder here; most of the time, I think people's reaction to "hey, I used your thing and did something cool/useful" is "yay", not "oh noes I wanted to say that" ;)20:51
dalek rakudo-js: bc60823 | (Pawel Murias)++ | / (5 files):20:51
rakudo-js: Implement subcapture, fix //.20:51
rakudo-js:20:51
rakudo-js: That makes basic protoregexes work. Pass test 32.20:51
rakudo-js: review: https://github.com/pmurias/rakudo-js/commit/bc60823b1220:51
timotimo :)20:51
jnthn I'm gonna be offline Sat - Sat; if there's anything anybody would especially like me to look at or unblock before I go, please do say :)20:51
timotimo do you have opinions on nodality? although i guess that can wait a week or two. i can just as easily pass my time with pod6 work20:52
colomon \o/20:52
lizmat jnthn: I guess variable traits is out of the question?20:53
:-)20:53
colomon jnthn: my giant task? The one that ran overnight and then failed? The one I'd never gotten to go successfully? completed in 12 minutes with your new code.20:54
timotimo oooooh yeah!20:54
you were the one completing lots and lots of rosalind examples but never being able to run them on rakudo, weren't you?20:54
maybe it's time to retry some of those :D20:54
colomon timotimo: not I20:55
jnthn That was grondilu20:55
timotimo oh20:55
jnthn colomon: That's on JVM? :)20:55
timotimo in that case ... we should notify grondilu :)20:56
colomon yes20:56
jnthn Overnight and failing to 12 minutes and successful is WIN :)20:56
colomon WIN WIN WIN20:56
jnthn++20:56
timotimo yoleaux: tell grondilu there's been a radical fix for 'for' loops in rakudo a few hours ago that may make a lot of the rosalind things you weren't able to run yet work. care to give it a try? :)20:56
BenGoldberg r: for ( gather { take 1; die 'eager' } ) { .say; last }; say 'lazy';20:59
camelia rakudo 787295: OUTPUT«eager␤ in block at /tmp/asrUcCyH7j:1␤␤»20:59
lizmat sees some spectest failures after doing a git pull just now21:00
lizmat checking...21:00
some TODO's passed :-)21:01
timotimo benchmarking takes forever :|21:02
domidumont joined21:02
jnthn BenGoldberg: That one's know...it's for's fault, I believe.21:02
timotimo BenGoldberg: feels like you've been showing us the same known bug a few times now ;)21:03
doesn't seem like you really know how to fix it quickly, jnthn? else it would already have been done perhaps? ;)21:04
byte48 left21:04
jnthn timotimo: I'm not sure about nodality...21:04
timotimo: Yeah, it really needs pmichaud tuits...21:04
timotimo that's okay21:04
jnthn timotimo: I can touch iterator stuff but I take it in the wrong direction as often as the right one... :)21:05
timotimo random walk, eh?21:05
jnthn lizmat: Variable traits...hmmm :)21:05
dalek roast: f4c5ed8 | (Elizabeth Mattijsen)++ | S (3 files):21:05
roast: Unfudge TODO's passing after jnthn's work of today21:05
roast: review: https://github.com/perl6/roast/commit/f4c5ed8c6421:05
timotimo you're bound to reach the goal that's n steps away in n^2 steps i believe21:05
xinming left21:06
xinming joined21:06
lizmat checking remaining new failure in t/spec/S32-exceptions/misc.t21:06
ORFJackal left21:08
timotimo rakudo.parrot has finished its benchmark run21:08
domidumont left21:09
dmol joined21:11
lizmat r: use fatal; (1+2i).Num21:11
camelia rakudo 787295: OUTPUT«Can not convert 1+2i to Num: imaginary part not zero␤ in block at src/gen/CORE.setting:10863␤ in method coerce-to-real at src/gen/CORE.setting:8986␤ in method Num at src/gen/CORE.setting:8992␤ in block at /tmp/9YHX3Mi5ag:1␤␤»21:11
lizmat seems this doesn't throw like it should ?21:11
jnthn lizmat: It doesn't?21:12
jnthn looks confused21:12
corecatcher hm, https://rt.perl.org/rt3/Public/Bug/Display.html?id=88708 that bug has a test in roast/S03-operators/range.t:29421:12
so it might be closed?21:12
timotimo do you want to create an account with bitcard and close it or should i do it for you?21:13
iSlug left21:13
timotimo wonders if the irclog has a magic link for that test corecatcher linked21:13
corecatcher for the sake of lazyness, do it for me ;)21:13
timotimo sure :)21:14
lizmat looks further21:14
lizmat quite a number of tests in that file21:14
corecatcher might rather grep for the RT numbers and check each of them21:14
jnthn colomon: I assume the test is passing? :)21:14
oops21:14
corecatcher: ^^21:14
FROGGS r: 1..4..721:15
camelia rakudo 787295: OUTPUT«===SORRY!===␤Operators '..' and '..' are non-associative and require parenthesis␤at /tmp/MrHfpf0d1G:1␤------> 1..4.⏏.7␤ expecting any of:␤ postfix␤ dotty method or postfix␤»21:15
FROGGS gnight21:15
jnthn 'night, FROGGS21:15
lizmat gnight, FROGGS!21:15
jnthn: this test fails "throws_like 'use fatal; (1+2i).Real', X::Numeric::Real, target => Real;"21:15
timotimo weird. when i ./t/fudgeandrun that test file, it won't properly fudge a test that trips up rakudo21:16
but yeah, the test passes21:16
PerlJam corecatcher: the test also references RT #77572, so I guess RT#88708 is a dup?21:16
spider-mario left21:17
timotimo i will close both.21:17
arcterus joined21:17
arcterus left21:17
timotimo done21:18
jnthn lizmat: How does it fail?21:18
lizmat not ok 482 - .target matches (Real)21:18
use of uninitialized value of type Real in string context in any at src/gen/Metamodel.nqp:146121:18
use of uninitialized value of type Real in string context in block at t/spec/packages//Test/Util.pm:14321:18
# Got:21:18
# Expected:21:18
arcterus joined21:18
timotimo great! :D21:18
jnthn um :)21:19
lizmat: Dunno if you can golf it to anything?21:19
timotimo oh, jnthn, i have an issue that i think i need you to look at, but it may be hairy enough to not go in before saturday and i don't think anything except my ADT module depends on it getting fixed. does that sound interesting at all?21:19
lizmat r: use fatal; (1+2i).Real # jnthn, this was the gold21:20
camelia rakudo 787295: OUTPUT«Can not convert 1+2i to Real: imaginary part not zero␤ in block at src/gen/CORE.setting:10863␤ in method coerce-to-real at src/gen/CORE.setting:8986␤ in method Real at src/gen/CORE.setting:8989␤ in method Real at src/gen/CORE.setting:911␤ in block at /tmp/wy…21:20
lizmat golf21:20
corecatcher r: sub f { f(|$) }; say "alive"21:20
camelia rakudo 787295: OUTPUT«===SORRY!===␤Unsupported use of $) variable; in Perl 6 please use $*EGID␤at /tmp/QMHU4XPbmE:1␤------> sub f { f(|$)⏏ }; say "alive"␤»21:20
corecatcher r: sub f { f( |$ ) }; say "alive"21:21
jnthn r: use fatal; try (1+2i).Real; say $!.perl21:21
camelia rakudo 787295: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name␤at /tmp/XIl00tvlRU:1␤------> sub f { f( |⏏$ ) }; say "alive"␤ expecting any of:␤ argument list␤ prefix or term␤ prefix or meta-prefix␤»…21:21
rakudo 787295: OUTPUT«X::Numeric::Real.new(target => Real, reason => "imaginary part not zero", source => Complex.new(1, 2))␤»21:21
jnthn lizmat: Yeah, but that exception object looks correct to me; it's got Real in there...21:21
lizmat: What kind of comparison is thrwos_like doing?21:21
xinming left21:22
lizmat checking21:23
my $got = $_."$k"();21:24
my $ok = $got ~~ $v,;21:24
xinming joined21:24
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say $v.perl }21:25
camelia rakudo 787295: OUTPUT«Real␤»21:25
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say $v }21:25
camelia rakudo 787295: OUTPUT«(Real)␤»21:25
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say Real ~~ $v }21:26
camelia rakudo 787295: OUTPUT«False␤»21:26
lizmat huh?21:26
jnthn huh indeed21:26
star: my %h = a => Real; for %h.kv -> $k, $v { say Real ~~ $v }21:27
camelia star 2013.02: OUTPUT«True␤»21:27
lizmat uh oh21:27
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say nqp::iscont($v); say Real ~~ $v }21:27
camelia rakudo 787295: OUTPUT«1␤False␤»21:27
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say nqp::iscont($v); say Real ~~ nqp::decont($v) }21:27
camelia rakudo 787295: OUTPUT«1␤False␤»21:27
jnthn Thought it couldn't be that.21:27
PerlJam r: my %h = a => Real; for %h.kv -> $k, $v { say $v ~~ Real } # just checking21:27
camelia rakudo 787295: OUTPUT«True␤»21:27
rGeoffreeey left21:27
rGeoffreeey_ joined21:27
rGeoffreeey_rGeoffreeey21:27
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say nqp::iscont($v); say $v.ACCEPTS(Real) }21:28
camelia rakudo 787295: OUTPUT«1␤False␤»21:28
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say nqp::istype(Real, $v) }21:28
camelia rakudo 787295: OUTPUT«0␤»21:28
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say nqp::istype(Real, nqp::decont($v)) }21:28
camelia rakudo 787295: OUTPUT«0␤»21:28
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say nqp::istype(Real, Real) }21:28
camelia rakudo 787295: OUTPUT«1␤»21:28
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say nqp::istype($v, Real) }21:28
camelia rakudo 787295: OUTPUT«1␤»21:28
jnthn wtf21:28
FROGGS left21:29
BenGoldberg r: say nqp::istype(Real, Real)21:29
camelia rakudo 787295: OUTPUT«1␤»21:29
arcterus left21:29
BenGoldberg r: my %a = a => Real; for %h.kv -> { say nqp::decont($v) }21:30
camelia rakudo 787295: OUTPUT«===SORRY!===␤Variable '%h' is not declared␤at /tmp/nKyABJQLEz:1␤------> my %a = a => Real; for %h.kv⏏ -> { say nqp::decont($v) }␤ expecting any of:␤ method arguments␤ postfix␤»21:30
BenGoldberg r: my %h = a => Real; for %h.kv -> { say nqp::decont($v) }21:30
camelia rakudo 787295: OUTPUT«===SORRY!===␤Variable '$v' is not declared␤at /tmp/34JzKZJpE0:1␤------>  Real; for %h.kv -> { say nqp::decont($v⏏) }␤ expecting any of:␤ postfix␤»21:30
jnthn r: my %h = a => Real; for %h.kv -> $k, $v { say DUMP($v) }21:30
camelia rakudo 787295: OUTPUT«▶Real␤»21:30
BenGoldberg r: my %h = a => Real; for %h.kv -> $k, $v { say nqp::decont($v) }21:30
camelia rakudo 787295: OUTPUT«(Real)␤»21:30
BenGoldberg r: my %h = a => Real; for %h.kv -> $k, $v { say Real }21:30
camelia rakudo 787295: OUTPUT«(Real)␤»21:30
jnthn r: my %h = a => Real; for %h.kv -> $k, \v { say Real ~~ v }21:30
camelia rakudo 787295: OUTPUT«False␤»21:30
jnthn r: my %h = a => Real; for %h.kv -> $k, \v { say nqp::iscont(v); say Real ~~ v }21:31
camelia rakudo 787295: OUTPUT«0␤False␤»21:31
jnthn r: my %h = a => Real; for %h.kv -> $k, \v { say nqp::iscont(v); say Real ~~ nqp::decont(v) }21:31
camelia rakudo 787295: OUTPUT«0␤False␤»21:31
jnthn Really weird.21:31
oh, I wonder...21:31
r: say Real ~~ Real.item21:31
camelia rakudo 787295: OUTPUT«False␤»21:31
jnthn Now, that's a golf.21:31
ajr joined21:32
BenGoldberg r: my @a := gather { .take for 1..Inf }; @a.infinite.say; my @b; push @b, @a;21:32
camelia rakudo 787295: OUTPUT«(timeout)Nil␤»21:32
ajrGuest8480021:32
BenGoldberg Inside .push, the return value of .infinite is not checked for being Nil21:33
Guest84800ajr_21:33
jnthn lizmat: the "my $! is default(Nil)" in the traits.pm will create a bootstrapping issue, but also is not going ot influence anything other than precisely the $!/$_/$/ symbols in the main body of the setting itself...21:33
lizmat ok, I'll take them out :-)21:34
jnthn lizmat: Don't worry, done locally in my var-traits branch.21:34
lizmat ok21:34
BenGoldberg: Nil means, we don't know21:35
so it's potentially *not* infinite, so it *may* finish21:35
BenGoldberg I know that, but... isn't there a way to implement .push lazily?21:35
jnthn That's called .plan, though it's NYI21:36
BenGoldberg Perhaps when, inside of .push, .infinite returns Nil, it should throw an error saying that you should be using .plan instead?21:41
jnthn lizmat: Yes, looks like I'll have us a first cut of variable traits tonight21:41
lizmat that would be great news!21:41
I'll fudge that test for now, it is weird21:42
jnthn lizmat: no, I think I know how to fix it21:42
lizmat ah, ok21:42
jnthn lizmat: Leave it for now, I tyr and do it in a moment after these var traits.21:42
lizmat okidoki21:42
jnthn Just building it on Parrot at the moment21:42
lizmat: In fact, if you have a moment, try this patch: https://gist.github.com/jnthn/608405721:45
lizmat trying21:45
jnthn Thanks...then I can focus on the var traits :)21:45
corecatcher please close that one, you'll see https://rt.perl.org/rt3/Public/Bug/Display.html?id=11883521:46
jnthn ooh yays21:46
corecatcher hm, lots of spam in the recent queue21:46
dmol left21:46
jnthn lizmat: Just done as a test of var traits an implementation of "is default"...and it seems to work \o/21:47
lizmat jay, that would mean one step closer to get Nil really working for Any as well21:47
jnthn: success on that particular test, running full spectest now just to make sure21:50
jnthn lizmat: ok :)21:53
timotimo about 50% of the rakudo-jvm benchmark run is done.21:54
colomon joined21:55
pmurias left21:56
dalek rakudo/nom: 117beb2 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:21:59
rakudo/nom: Make Real ~~ Real.item work, suggested by jnthn++21:59
rakudo/nom: review: https://github.com/rakudo/rakudo/commit/117beb2d0021:59
lizmat jnthn: verified and committed22:00
and it's yet another day, gnight #perl6!22:01
colomon jnthn: trying same giant task on parrakudo, it's been running for 45 minutes now. so it seems like jakudo has a pretty big advantage here at the moment.22:04
jnthn r: say 45 / 1222:06
camelia rakudo 787295: OUTPUT«3.75␤»22:06
dalek rakudo/var-traits: b54c12b | jnthn++ | src/core/traits.pm:22:06
rakudo/var-traits: Remove unrequired default decls.22:06
rakudo/var-traits:22:06
rakudo/var-traits: We ignored these before; now we pay attention to them, and hit a22:06
rakudo/var-traits: bootstrap issue.22:06
rakudo/var-traits: review: https://github.com/rakudo/rakudo/commit/b54c12bb8522:06
rakudo/var-traits: 4766065 | jnthn++ | / (5 files):22:06
rakudo/var-traits: First pass at getting variable traits in place.22:06
rakudo/var-traits: review: https://github.com/rakudo/rakudo/commit/4766065bff22:06
rakudo/var-traits: cd4831d | jnthn++ | src/core/Variable.pm:22:06
rakudo/var-traits: Implement default trait on variables.22:06
rakudo/var-traits:22:06
rakudo/var-traits: Again, a first pass, but seems to basically work.22:06
rakudo/var-traits: review: https://github.com/rakudo/rakudo/commit/cd4831d5dc22:06
prevost left22:06
kingbeast left22:07
skids joined22:13
timotimo timing the 32/42th benchmark now22:17
rGeoffreeey left22:22
jaldhar left22:22
jaldhar joined22:23
Shozan joined22:32
Guest37729 left22:32
timotimo 40/42 ...22:32
broquain1 joined22:33
_sri joined22:33
pnu_ joined22:33
avarab joined22:33
avarab left22:33
avarab joined22:33
[Coke]_ joined22:33
Some-body_ joined22:33
Gothmog__ joined22:33
BooK_ joined22:33
patspam_ joined22:33
BinGOs_ joined22:34
jferrero_ joined22:34
ingyfoo joined22:34
corecatcher left22:34
corecatcher joined22:35
Gothmog__Gothmog_22:35
Some-body_DarthGandalf22:35
_ilbot joined22:35
hugme joined22:35
ChanServ set mode: +v22:35
corecatcher left22:36
camelia joined22:36
ChanServ set mode: +v22:37
cognominal__ joined22:37
cognominal left22:37
vk_ left22:37
groky joined22:38
timotimo jnthn: how would you like some benchmarks? :)22:39
btyler left22:40
jnthn timotimo: Well, I have some beer here. I can drink it in celebration or commiseration :P22:42
timotimo http://t.h8.lv/p6bench/before-after-for-and-hash-fix.html - don't decide on the outcome before reaching the end.22:42
btyler joined22:43
timotimo i think i still need to fix the trim_string benchmark for perl5.22:43
colomon left22:43
jnthn Which sha-1's are which?22:44
BinGOs_BinGOs22:44
BinGOs left22:44
BinGOs joined22:44
jnthn ah, figured it22:45
The 78' is latest22:45
kingbeast joined22:45
timotimo indeed22:46
Khisanth joined22:46
timotimo it made things a bit better all in all. there is no benchmarks for hash iteration alas22:46
want me to come up with one? :)22:46
or maybe you suggest one, i run it.22:46
jnthn timotimo: Yeah, still plenty of work to go on the benchmarks...22:50
timotimo: Well, could take something like what colomon's original report had...22:50
timotimo i just made a for loop that sets {$_} = $_ and then .kv -> $k, $v22:51
bluescreen100 left22:56
timotimo stackoverflow at Failed to run command: ./perl6 -e my %h; for ^4096 { %h{$_} = $_ }; for %h.kv -> $k, $v { $k == $v };22:57
but that's a decent benchmarking code? (4096 is the SCALE)22:57
BenGoldberg r: my $foo = do { .say for( 1..5 ) }; say $foo;22:58
camelia rakudo 117beb: OUTPUT«1␤2␤3␤4␤5␤True True True True True␤»22:58
BenGoldberg In non-sink context, 'for' acts like 'map' ?22:59
jnthn BenGoldberg: yes22:59
timotimo: uh, stack overflow?!22:59
timotimo: The thinkg I did earlier fixed the stack overflow...23:00
timotimo that's the old version23:00
broquaint joined23:00
jnthn timotimo: oh...23:00
:)23:00
timotimo there's no comparison unless i run the old version as well ;)23:00
jnthn ;)23:00
:D23:00
broquain1 left23:00
nyuszika7h left23:00
nyuszika7h joined23:01
timotimo ah, it's done. will build charts now23:01
http://t.h8.lv/p6bench/hash-iterate.html - there we go23:03
wow look at the jvm go23:03
corecatcher joined23:03
jnthn yeah :)23:04
Though we got notably better on Parrot too23:04
timotimo yeah, a bit23:07
ajr_ left23:07
timotimo anything else you'd like comparison'd?23:08
bluescreen10 joined23:09
colomon joined23:13
jnthn timotimo: push in a for loop in sink context could be a worthwhile benchmark23:17
timotimo: So we can spot the regression should it happen again.23:17
rGeoffreeey joined23:19
timotimo can you give me an example? i'm not sure i can make that happen well. { my @a; for ^SCALE { @a.push($_) }; }?23:24
yeah, that should do it.23:25
estrabd left23:26
jnthn That does it, yes23:27
But something after the for loop maybe to ensure the sink context23:28
estrabd joined23:28
timotimo well, i'll just check if it works at all.23:29
PacoAir left23:35
gfldex std: my @foo of Str|Num; sub f(@foo of Str|Num){}23:35
camelia std c2215f0: OUTPUT«===SORRY!===␤Unable to parse signature at /tmp/ZzbasnVd6z line 1:␤------> my @foo of Str|Num; sub f⏏(@foo of Str|Num){}␤Couldn't find final ')'; gave up at /tmp/ZzbasnVd6z line 1:␤------> my @foo of Str|Num; sub f(@foo of Str…23:35
gfldex is that NYI or am I asking for something silly?23:35
jnthn of expects a type name23:42
Declare a subset type if you wish to do something like that.23:42
Then use of on that.23:42
'night, #perl623:42
gfldex ===SORRY!===23:50
Invalid typename 'HTML-nodes' in parameter declaration. Did you mean 'HMTL-nodes'?23:50
that's either a bug or rakudo is mocking me :)23:50
rGeoffreeey left23:53
felipe joined23:55
timotimo jnthn: posted a charts link in #moarvm, but it doesn't seem right23:56

Logs Search ←Prev date Next date→ Channels Documentation