Camelia, the Perl 6 bug

IRC log for #perl6, 2013-07-25

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:10 grondilu joined #perl6
01:11 grondilu What does SC stand for in MoarVM?
01:12 grondilu as in "SC Dependencies Table"
01:13 timotimo serialization context is my guess
02:01 xinming joined #perl6
02:05 OuLouFu joined #perl6
02:10 cbk joined #perl6
02:21 logie joined #perl6
02:56 btyler joined #perl6
02:56 stevan_ joined #perl6
02:57 nebuchadnezzar joined #perl6
03:28 _jaldhar joined #perl6
03:28 dayangkun joined #perl6
03:33 preflex_ joined #perl6
03:40 prevost joined #perl6
03:41 eternaleye joined #perl6
03:44 leprevost joined #perl6
04:48 SamuraiJack joined #perl6
04:55 birdwindupbird joined #perl6
05:28 crab2313 joined #perl6
05:29 _jaldhar joined #perl6
06:48 iSlug joined #perl6
06:49 iSlug joined #perl6
06:51 crab2313_ joined #perl6
07:17 domidumont joined #perl6
07:24 dmol joined #perl6
07:33 rGeoffreeey joined #perl6
07:34 fhelmberger joined #perl6
07: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:39 arnsholt JVM backend for Rakudo is a good candidate I think
07:39 kaleem joined #perl6
07:40 FROGGS joined #perl6
07:40 lizmat MoarVM with Perl 5 interop might be a good bullet point
07:41 nwc10 JVM backend for Rakudo passes >99% of the spectests that Parrot backend for Rakudo does
07:41 lizmat (aka running "standard" Perl 5 in a separate thread inside MoarVM)
07:41 domidumont joined #perl6
07:42 SmokeMac_ joined #perl6
07:43 FROGGS rGeoffreeey: note that the p5interop has a request for a grant and is of course not yet done
07:43 nwc10 whereas the >99% is here and now
07:43 FROGGS right
07:43 FROGGS next step is to "port" the module ecosystem
07:45 lizmat experimental thread support on the JVM ?
07:46 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 me
07:46 FROGGS s/has/had/
07:47 nwc10 rGeoffreeey: you might want to read recent posts on http://6guts.wordpress.com/
07:48 nwc10 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-i​nterview-of-jonathan-worthington-part-1-of-3/
07:48 nwc10 experimental *proper* threads. None of the ithread pains.
07:49 FROGGS yeah, that's true
07:50 FROGGS same goes for proper native call interface compared to XS
07:50 FROGGS and this one isnt experimental, but yet only available on rakudo on parrot
07:52 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 well
07:53 lizmat JVM and MoarVM are 2 different projects
07:53 FROGGS rakudo runs on nqp, which has parrot and jvm as a backend
07:53 lizmat grr need to go now, back in a few hours
07:53 lizmat &
07:53 FROGGS rakudo on nqp on jvm passes >99% of the tests that rakudo on nqp on parrot does
07:54 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 it
07: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 etc
07:54 FROGGS I think the interview explains the backend stuff well
07:55 nwc10 it's also not a perfect compiler yet - there are some spec tests that it doesn't pass (anywhere)
07:55 nwc10 but the progress of the JVM backend is being measured against the parrot backend
07:55 nwc10 so it's >99% of the way to "as good as the parrot backend"
07:57 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 do
07:58 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.
08:02 tomaw joined #perl6
08:03 rGeoffreeey joined #perl6
08:12 eiro joined #perl6
08:20 dmol joined #perl6
08:28 sqirrel joined #perl6
08:40 dakkar joined #perl6
09:01 kresike joined #perl6
09:01 kresike hello all you happy perl6 people
09:02 FROGGS hi kresike
09:07 kresike FROGGS, o/
09:31 masak greetings, #perl6.
09:32 FROGGS masak! \o/
09:32 FROGGS welcome back!
09:32 JimmyZ masak: welcome back!!
09:34 * masak is on a really slow connection, so don't expect eloquence
09:34 tadzik that's masak!
09:34 FROGGS no eloquence at all \o/
09:34 daxim joined #perl6
09:36 wk joined #perl6
09:44 jnthn morning, #perl6
09:44 yoleaux 24 Jul 2013 23:59Z <FROGGS> jnthn: Is this approach (wip) reasonable or totally off? https://gist.github.com/FR​OGGS/6a22741986d134ab5011
09:44 yoleaux 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:45 tadzik but it was 8:30. There was no alarm set
09:45 tadzik it's good that the $flight is in the evening
09:45 jnthn FROGGS: atpos_o is not meant to autobox.
09:45 jnthn FROGGS: If you use typed arrays you have to use them with the correct instructiom.
09:45 jnthn *instruction
09:46 jlaire joined #perl6
09:46 FROGGS jnthn: then something else is wrong(-ish)
09:47 * JimmyZ guesses it's in 74-nfa.t
09: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 so
09:47 jnthn FROGGS: But maybe some of the code in nqp-src was nabbed before that.
09:47 FROGGS JimmyZ++ :o)
09:48 jnthn Yeah, then somethere is using list_i when it meant list, or atpos when it meant atpos_i.
09:48 jnthn Take a look at if things are out of sync somewhere with latest NQP or so.
09:48 * masak backlogs something like two weeks
09:48 FROGGS jnthn: the failing thing is $matching[0]
09:48 FROGGS which does atpos
09:49 FROGGS how should it know that it has to do atpos_i? should the postcircumfix make that decision?
09:50 jnthn FROGGS: Um, where are we looking?
09:50 jnthn In NQP, you generally write nqp::atpos_i out explicitly. Things in NQP are *much* more primitive than in Rakudo.
09:51 FROGGS this fails: https://github.com/perl6/nqp/b​lob/master/t/nqp/74-nfa.t#L29
09: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 MVMIntArray
09:51 FROGGS jnthn: no
09:51 jnthn Please do.
09:51 FROGGS eye sir
09:51 FROGGS :o)
09:51 jnthn If it fails there also, then the test itself is to blame :)
09:52 jnthn 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 string
09:52 FROGGS VMArray representation does not implement at_pos_boxed
09:52 FROGGS :/
09:52 jnthn Right.
09:53 jnthn That's the same underlying error.
09:53 jnthn So, the test should use nqp::atpos_i
09:53 Woodi joined #perl6
09:53 FROGGS instead of the postcircumfix?
09:53 FROGGS I think I understand
09:53 JimmyZ Parrot does autobox everywhere
09:54 jnthn JimmyZ: Yeah, I know.
09:56 JimmyZ yeah, I meant I don't like the action :P
09:58 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:59 FROGGS so you mean parrot is somewhat slow? :P
10:00 * JimmyZ thinks so
10: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:01 dalek nqp: fb241ae | (Tobias Leich)++ | t/nqp/74-nfa.t:
10:01 dalek nqp: use atpos_i if we have an integer-array, jnthn++
10:01 dalek nqp: review: https://github.com/perl6/nqp/commit/fb241ae506
10:02 JimmyZ I see Moarvm avoids recursion frame call stack overflow
10:02 jnthn Yeah, we are generally making extremely shallow use of the C stack :)
10:02 JimmyZ and parrot didn't
10:03 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:04 JimmyZ I tested fib(100), and didn't see memory inc
10:04 * JimmyZ decommutes
10:05 nwc10 at least you can check on heap overflow
10:05 jnthn ;)
10:26 Woodi joined #perl6
10:42 ggoebel lizmat: The other 2 parts of the 3 part interview:
10:42 ggoebel http://www.josetteorama.com/all-about-perl-6-i​nterview-of-jonathan-worthington-part-2-of-3/
10:42 ggoebel http://www.josetteorama.com/all-about-perl-6-i​nterview-of-jonathan-worthington-part-3-of-3/
10:49 lizmat back, just after a cloudburst dropped ~20mm of water in ~15 minutes
10:49 lizmat *our* feet are still dry
10:49 lizmat some of our neighbours not
10:50 lizmat good thing: temperature dropped from 27 to 21 in the same period
10:50 jnthn wow
10:50 lizmat I've only seen it rain this hard during monsoon season in India
10: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 minutes
10:51 FROGGS lizmat: do you really mean 20mm?
10:51 lizmat yes, I mean 20mm, as in 20l per  square meter
10:52 * 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:53 lizmat 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:56 crab2313 joined #perl6
10:58 lizmat see?  see?
10:58 rindolf joined #perl6
11:01 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:02 lizmat is that specced somewhere, that a [] flattens?
11:02 masak lizmat: because "positional" scores tighter than "scalar".
11:02 masak (in reply to why it chooses that)
11:02 masak lizmat: "scalar" could be anything, including "positional". when you write a @ sigil, you are being specific. specific means tight.
11:03 lizmat r: my @a; push @a,[1,2,3]; say @a.perl
11: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:05 jnthn And multi-dispatch cares for "does the type match"
11:05 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 colomon: Weird. Does memory grow a lot while doing that?
11:06 colomon jnthn: you cannot tell -- jakudo allocates all the memory you give as the max limit when the program run starts
11:06 jnthn oh.
11:06 jnthn Probably reserves rather than allocates...
11:06 colomon yes
11:07 colomon whatever, the memory usage jumps to 32G (or whatever) instantly
11: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.perl
11:07 camelia rakudo 9ba5dd: OUTPUT«Array.new(1, 2, 3)␤»
11:07 jnthn colomon: Yeah but if we can get differrent numbers out...
11:08 lizmat ok, that means I cannot use MMD for .push with @values, because I cannot distinguish inside the method between the @a and []
11:09 jnthn This is why the extra iscont check in one of the postcircumfix candidates, fwiw.
11:09 jnthn you could have a (\a) candidate and examine it
11:09 * lizmat tries to grok that
11:10 jnthn if nqp::istype(a, Iterable) && !nqp::iscont(a) { #`(iterate over it) } else { #`(push dat item) }
11:12 lizmat ….testing...
11:17 cognominal joined #perl6
11:19 masak tadzik: ooc, are you aware of an actual picture on the Internets of an actual sad panda?
11:20 tadzik masak: like this? http://fc01.deviantart.net/fs71/f/2011​/323/1/f/sad_panda_by_ramy-d4gn0jt.jpg
11:20 tadzik :P
11:20 jnthn masak: http://lolfunnymeme.com/wp-c​ontent/uploads/sadpanda.jpg
11:20 tadzik or maybe the "what have I done" gif
11:20 tadzik http://i.imgur.com/3xPms.gif
11:20 tadzik panda should open that image whenever it crashes
11:21 jnthn *lol*
11:22 * masak likes http://lolfunnymeme.com/wp-c​ontent/uploads/sadpanda.jpg the best :)
11:23 masak it's so... fluffy!
11:23 jnthn https://github.com/Arcterus/rakudo has a patch for fixed size arrays
11:23 tadzik yeah, it
11:23 tadzik 's cute
11:24 jnthn https://github.com/Arcterus/rakudo/commit​/e124a6a24b9f3cb2cc4850206cf97b5672bc969f of note
11:24 tadzik https://gist.github.com/tadzik/6078844
11:24 jnthn tadzik: lol
11:25 pmurias joined #perl6
11:26 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:28 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_: ping
11:29 jnthn lizmat: I think S09 has @foo[*] as meaning "whatever shape"
11:29 jnthn lizmat: so afaik that's spec-compliant
11:30 lizmat but we have Whatever in so many other contexts as well
11:30 sqirrel joined #perl6
11:30 jnthn I think that's the point of Whatever :)
11:30 jnthn The universal "I don't care" indicator
11:33 FROGGS .tell crab2313 this might fix your issue: https://github.com/MoarVM/MoarVM/commit/351339dfdc
11:33 yoleaux FROGGS: I'll pass your message to crab2313.
11:33 masak moritz++ lizmat++ # Edinburgh
11:34 lizmat masak: yw
11:34 JimmyZ Wrap up Perl 5 Interop for Rakudo Perl 6 on MoarVM  http://news.perlfoundation.org/201​3/07/hague-grant-application.html # FYI
11:38 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 it
11:40 masak I would also accept the answer "it dies at parse time because what in the *world* do you think you are doing?"
11:42 masak (masak's Law)++ # "For every DWIM there's an equal and opposite WAT"
11:42 masak moritz++ TimToady++ # promoting it :)
11:46 lizmat I still think that's derived from the Law of Conservation of Misery
11:47 lizmat cycling (the rains are gone)&
11:51 masak lizmat: it might be. which in turn sounds like a corollary of Murphy's Law.
11:52 masak 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:53 masak 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 masak 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:54 masak example: .[-1] in Perl 5. awesome feature. I saw someone defend it in the backlog.
11:54 masak the antipode being what TimToady pointed out: it's a discontinuity, and worse, it's assymmetric.
11:55 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 lizmat in the ass!  :-)
11:55 dmol joined #perl6
11:55 masak oh dang, yes. there really is just one 's' in "asymmetric". :)
11:56 jnthn haha
11: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 masak jnthn: do yourself a favor and YouTube search for "my neighbors ass" by Tim Minchin ;)
11:57 masak 's*
11:58 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:59 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 masak that would explain the... asymmetry. :)
12:00 colomon or so you'd assume...
12:00 jnthn colomon: I wonder if this points to a gather/take issue maybe?
12:00 jnthn colomon: .pairs uses that.
12:01 masak colomon! \o/
12:01 colomon jnthn: maybe?  I'm trying to golf it right now.
12:03 logie joined #perl6
12:03 * colomon no longer needs this at the moment for $work -- he found one of the trouble faces a different way.
12:04 jnthn away for an hour or two
12:06 colomon https://gist.github.com/colomon/6079027 # java.lang.StackOverflowError with default jakudo stack size
12:06 masak hehe. $utterance ~~ /:i <<arglebargle>>/ tends to strongly raise the prior of $utterer eq '[Coke]' in the backlog ;)
12:08 colomon update: it's Hash.kv that's done it
12:08 colomon doing it
12:09 colomon gist updated, still gets java.lang.StackOverflowError
12:10 masak that's the error you get when you need to look for an answer over at Stack Overflow :P
12:11 colomon no, no, no, that's the error you get when StackOverflow is wrong about the code you wrote
12:11 masak moritz++! # coming to YAPC::EU!
12:11 dmol joined #perl6
12:11 masak YAPC::EU++ # wrapping around moritz!
12:12 masak moritz: that is seriously good news!
12:12 masak \o/
12:19 masak mst++ # greeting newbies and trolling about $|
12:20 * masak is all out of breath from backlogging
12:22 * colomon is starting to think we've got some really serious issues with rakudo and big lists....
12:23 masak diakopter++ # http://news.perlfoundation.org/201​3/07/hague-grant-application.html
12:24 masak colomon: "I like big lists and I cannot lie..." :P
12:26 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:29 Guest1337 joined #perl6
12:30 masak ribasushi: just http://irclog.perlgeek.de/​perl6/2013-07-23#i_7362962 -- I smiled when I saw it :)
12:32 masak fwiw, S16 doesn't even *mention* buffering. S28 says $*OUT.autoflush() and S32/IO concurs, defining it as an rw method.
12:32 masak S16--
12:33 * masak is now caught up with le backlog
12:33 masak dinner &
12:36 colomon rn: say time
12:36 camelia rakudo 9ba5dd: OUTPUT«1374755780␤»
12:36 camelia ..niecza v24-88-g1f87209: OUTPUT«1374755783.7686591␤»
12:36 [Coke] rGeoffreeey++ keeping p6 in the loop.
12:37 logie joined #perl6
12:39 * 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:40 colomon looks to me like we've got some sort of terrible O(N^2) issue with push
12:41 colomon in jakudo, at any rate.  but I'm suspicious it's in parrakudo too.
12:41 colomon memory usage is out of control, too
12:53 colomon actually, it's drastically worse than O(N^2)
12:54 colomon pushing 1825 Ints to the array took 1 second.
12:55 colomon pushing 18250 Ints ran for 10 ten minutes before I killed it because it was consuming all the memory on my system
12:55 colomon also, I appear to have completely forgotten how to cook omelets.
12:56 moritz pushing 10x as many elements would take 100x as many seconds for O(N^2)
12:56 moritz oh, 10 minutes. I read "10s"
12:57 domidumont joined #perl6
13:03 colomon I just switched the program to use a second hash instead of the array.  took 3 seconds instead of 10+ minutes
13:03 logie joined #perl6
13:04 colomon any time emulating an array with a hash is faster than using a hash, you've got some serious performance issues
13:05 colomon sorry, faster than using an array
13:05 moritz indeed
13:05 nwc10 colomon: if 1825 takes (about) 1 second, what do 3650 and 5475 take?
13:05 nwc10 curious what the power is in the O()
13:05 nwc10 and 7300 (if I got that right)
13:06 colomon nwc10: give me a moment, I'm going to golf
13:06 nwc10 excellent
13:06 ribasushi joined #perl6
13:08 dalek Perlito: d7ea076 | (Flavio S. Glock)++ | / (4 files):
13:08 dalek Perlito: Perlito5 - reset strict flags in do-file
13:08 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/d7ea076897
13:10 colomon nwc10: 1825 * 1 = 1s  * 2 = 6s  * 3 = 15s  * 4 = 53s
13:12 moritz r: say log 53, 4
13:12 camelia rakudo 9ba5dd: OUTPUT«2.8639602272816␤»
13:13 colomon also, the difference between pushing 1825 * 2 Ints and 1825 * 4 Ints is a full gigabyte of memory.
13:14 colomon r: say 1000000000 / (1825 * 2)
13:14 camelia rakudo 9ba5dd: OUTPUT«273972.602740␤»
13:14 colomon 273K per Int
13:15 FROGGS wow, imagine how many digits one can put in
13:15 FROGGS I guess that is why they are called "BigInts"
13:15 colomon all the Ints involved could each fit in 4 bytes
13:16 ajr joined #perl6
13:17 PacoAir joined #perl6
13:18 colomon https://gist.github.com/colomon/6079526 # golfed push performance issue
13:20 [Coke] r: sleep 10 ; say time - BEGIN time; #
13:20 camelia rakudo 9ba5dd: OUTPUT«10␤»
13:27 ribasushi joined #perl6
13:30 dalek ecosystem: feefc4d | tadzik++ | META.list:
13:30 dalek ecosystem: Add File::Find and Shell::Command separated from File::Tools
13:30 dalek ecosystem: review: https://github.com/perl6/e​cosystem/commit/feefc4d4b1
13:33 domidumont joined #perl6
13:39 pmurias push is a method of Any in rakudo?
13:41 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 joined #perl6
13:42 colomon (that's in jakudo, trying it in rakudo now)
13:42 colomon parrakudo, I mean
13:44 daxim joined #perl6
13:45 colomon parrakudo seems to also have issues with pushing, but not nearly to the extent that jakudo has
13:46 colomon well… it's just back a factor of two or so on the curve.  1825 * 8 takes 46s and uses 2.x gigs of memory
13:48 skids joined #perl6
13:49 jaldhar_ joined #perl6
13:49 timotimo if this regression is fixed, maybe perl6 can be performant :)
13:50 timotimo oh
13:50 JimmyZ r: say time - BEGIN time;
13:50 camelia rakudo 9ba5dd: OUTPUT«0␤»
13:51 timotimo self.gimme(*) called multiple times will not cause extra computation, will it?
13:51 timotimo because push will self.elems, which does self.gimme(*) to get the number of elements
13:52 timotimo 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 good
13:52 timotimo r: my @l; @l.push(^100); say @l.elems
13: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:54 colomon for what it's worth: 1825 * 8 pushes take 46s in parrukdo, 0.03s in Niecza
13:55 JimmyZ and how about jvm?
13:55 colomon 1825 * 4 pushes take 53s on JVM, not going to bother trying 1825 * 8
13:55 timotimo add_core_pirop_mapping"("bindpos", "set", "1QiP", 1 :named("inlinable")) <- this should not give any trouble at all, should it?!
13:56 JimmyZ colomon: you could try vargrind, parrot support it
13:56 * jnthn back
13:58 JimmyZ *Valgrind
14:00 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 up
14:01 jnthn It grows by doubling each time up to a certain size, then adds 4096 each time
14:01 timotimo right
14:02 timotimo er
14:02 timotimo what's this
14:02 gfldex r: https://gist.github.com/gfldex/6079954
14: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/6079954
14: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 = 8
14:02 gfldex std: https://gist.github.com/gfldex/6079954
14:02 camelia std c2215f0: OUTPUT«ok 00:01 52m␤»
14:03 gfldex i believe my gist to be a newbug
14:03 crab2313 joined #perl6
14:03 timotimo ah, that just means never make a list smaller than 8 entries. mmkay.
14:03 rindolf joined #perl6
14:04 timotimo i don't see something obviously wrong yet
14:04 colomon jnthn: so, how do we profile rakudo these days?
14:05 jnthn --profile
14:05 jnthn timotimo: It's just making sure...yes, that.
14:06 * jnthn is reproducing measurements here
14: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 jnthn timotimo: That was suggested recently in a commit comment
14: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:07 jnthn timotimo: Plesae check it for other suggestions, if you get chance.
14:07 jnthn 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:08 timotimo 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 end
14:09 jnthn Right
14:09 jnthn wow, .push on Rakudo Parrot is really a pig.
14:10 byte48 joined #perl6
14:11 colomon jnthn: but it's worse on Rakudo JVM, according to my tests here
14:11 chinaXing joined #perl6
14:11 jnthn colomon: 42s on Rakudo JVM here, vs 46s on Rakudo Parrot.
14:12 jnthn 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 moarvm
14:12 timotimo the commit that has suggestions
14:12 nwc10 a suckling pig! om nom nom.
14:12 colomon really?  I got Rakudo JVM taking longer on only half the number of elements
14:12 nwc10 Oh, wait. Fail
14:13 jnthn colomon: Maybe our benchmarks differ
14:13 colomon or our rakudo builds… the ones I've been testing on are probably at least a day or two stale
14: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:14 jnthn FROGGS: Unoptimized moarvm build, I presume?
14:14 FROGGS jnthn: yes
14:14 FROGGS hold on
14: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 mean
14:15 jnthn perl6.bat -e "my @a; my $n = now; for 1 .. (1825 * 4) { @a.push($_) }; say now - $n"
14:15 jnthn 42.221
14:15 jnthn perl6.exe -e "my @a; my $n = now; for 1 .. (1825 * 4) { @a.push($_) }; say now - $n"
14:15 jnthn 46.9360014
14:15 jnthn (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:16 FROGGS MoarVM++
14:16 jnthn uh, compiling it optimized makes it go from 5.8s to 0.29s?!
14:16 jnthn (C compilers)++
14:16 sqirrel joined #perl6
14:17 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 difference
14: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 gfldex *confusing error message
14:18 colomon you don't have to implement every action method
14:18 jnthn colomon: Could be
14:18 tadzik although you could pwrobably change GrammarHOW to warn you :)
14:19 gfldex r: https://gist.github.com/gfldex/6079954
14: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 joined #perl6
14:19 gfldex Core.setting:1388 is Any.list in that case
14:20 * gfldex heads off to find the rakudobug form and a sharp pencil
14:29 pmurias joined #perl6
14:30 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 try
14:30 timotimo holy moly
14:30 timotimo that makes it finish *instantly*
14:31 timotimo even when using @keys[@keys.elems] = $_ it's instant
14:33 skids what about push(...); 1;?
14:34 timotimo good catch. that is very fast as well
14:34 timotimo takes just 2 seconds
14: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:35 jnthn *sigh* yes, it's the sink think
14:35 jnthn I thought I put us in an optimization for not constructing the result list in sink context?
14:36 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:37 Psyche^ joined #perl6
14:37 jnthn ohhh
14:37 jnthn $past := QAST::Op.new(
14:37 jnthn :op<callmethod>, :name<eager>, $past
14:37 jnthn );
14:37 jnthn statement_control:sym<for> always calls eager
14:37 timotimo ... yeah
14:37 * timotimo noticed that often before but never thought it would be bad :P
14:38 jnthn Well, push returns the entire list.
14:38 timotimo oh
14:38 timotimo it makes a list of all the lists that push had
14:38 timotimo and flattens them?
14:39 colomon woah
14:39 jnthn Right.
14:39 * jnthn tries compiling a fix to that.
14:39 timotimo wow, whoops
14:40 [Coke] nice catch, folks.
14:40 * colomon can confirm -- adding 1; at the end of the list speeds things up enormously
14:40 timotimo wow, that *is* pretty bad
14: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 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 light
14:41 jnthn timotimo++
14:41 gfldex is there a nqp::can variant that doesn't follow the inheritance chain?
14:41 jnthn No
14:41 jnthn But you can look in .^method_table
14: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 joined #perl6
14:41 jnthn Which is "this class only"
14:41 jnthn 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:42 jnthn darn, my patch didn't help...
14:42 colomon looks to be (part of) the problem with categorize as well -- it's a double for loop with interior push, all in sink context
14:42 * gfldex is nqp illiterate
14: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 jnthn Note it's not gonna be so fast as nqp::can
14:42 jnthn What do you need it for, ooc?
14:43 gfldex to fix https://gist.github.com/gfldex/6079954
14:44 gfldex jnthn: NQPCursorRole::!reduce is using nqp::can on an action class
14:44 * masak finds http://www.josetteorama.com/all-about-perl-6-i​nterview-of-jonathan-worthington-part-2-of-3/ a really good read
14:44 jnthn gfldex: Yes, but we rely on inheritance working
14:44 masak jnthn++
14:45 gfldex jnthn: that will force the user to implement any action method that has the same name then any method in Any
14:45 gfldex if that method's name also shows up as a rule/token in the grammar in question
14:45 Kiralexis joined #perl6
14:47 timotimo i wonder if in for ^1024 { ... } $_ will be marked as Int by our clever optimizer. or if it should.
14:48 jnthn gfldex: Only if we don't find a different fix :)
14:50 timotimo remember how every grammar derives things like <ident>, too? we don't want to force the user to implement all those as well
14:50 gfldex that's a different problem
14:50 timotimo OK
14:51 rGeoffreeey joined #perl6
14:52 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:53 timotimo r: [1, 2, 3, 4].gimme(*).say
14: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 it
14:54 jnthn 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 changes
14: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 with
14: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:56 [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 jnthn (from 42s)
14:56 nwc10 stupids question maybe, but
14:57 nwc10 1) are there other places in the grammar with the same problem?
14:57 nwc10 2) when did it sneak in?
14:57 * timotimo initiates balcony time
14: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 me
14:58 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 file
14: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 timotimo but i suppose it's a non-issue
14: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:59 masak oh. number of elements available?
14:59 jnthn masak: You called .gimme directly on a Range the first time...
15:00 jnthn 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 pmurias jnthn: // doing the correct thing while passed a freshly created object
15:01 bbkr joined #perl6
15:01 jnthn pmurias: Are we talking about nqp or Rakudo here?
15:02 pmurias jnthn: nqp
15:02 bbkr hi. what is P6 syntax for capturing command line output - like P5 my $x = `ls` ?
15:03 jnthn qx/ls/
15:03 bbkr jnthn: thanks
15:06 benabik joined #perl6
15: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:08 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 left #perl6
15:08 jnthn bbkr: Not yet
15:09 bbkr thanks again
15:13 jnthn oh, I broke spectests 'cus I did something stupid
15:13 diakopter stupid--
15:14 FROGGS that makes it less stupid then
15:14 diakopter stupid++
15:14 FROGGS meh
15:15 ajr joined #perl6
15:18 kaare_ joined #perl6
15:23 bluescreen10 joined #perl6
15: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 better
15:24 * FROGGS .oO( Unstupify! )
15:24 diakopter timotimo: any performance test results?
15:24 FROGGS let's wave our wand-hands
15:24 bluescreen100 joined #perl6
15:25 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:26 kresike bye folks
15:29 * [Coke] wonders if we will eventually get a "useless use of sink context"
15:31 smash_ joined #perl6
15:31 ajr_ joined #perl6
15:32 skids .oO(useless use of sink == washing a handful of mud)
15:35 jnthn timotimo: Here is another place to use array copy: https://github.com/perl6/nqp/blob/mast​er/src/vm/jvm/runtime/org/perl6/nqp/si​xmodel/reprs/VMArrayInstance.java#L87
15:35 jnthn timotimo: If you didn't already. Taht one will help push more, I suspect
15:35 jnthn timotimo: If this is gonna help, anyway
15:43 timotimo i imagine the sun people came up with some ridiculously clever way to make arraycopy work well on overlapping regions
15:44 timotimo although, maybe they also have ways to make such a for loop dispatch to an arraycopy after a little bit of jitting.
15:52 timotimo benchmark about to be run
15:53 timotimo no visible change. but at least the code is a bit nicer now ...
15:54 timotimo i'm actually not quite sure if those arrays ever shrink
15:55 timotimo it does not. but i think it should
15:55 timotimo something like "if the number of used slots shrinks below 1/3rd, it should be halved in size" or something. sonds sensible?
15:56 dalek rakudo/nom: 49404ef | jnthn++ | src/Perl6/Actions.nqp:
15:56 dalek rakudo/nom: Fix for loops in sink context to actually be sunk.
15:56 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/49404ef959
15:56 dalek rakudo/nom: f173b55 | jnthn++ | src/core/MapIter.pm:
15:56 dalek rakudo/nom: Proper sink handling on JVM backend.
15:56 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f173b5586f
15:56 dalek rakudo/nom: cc9cf16 | jnthn++ | src/core/ (2 files):
15:56 dalek rakudo/nom: Minor optimizations in List/Array.
15:56 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cc9cf16135
15:56 jnthn timotimo: Please dont' do that.
15:57 jnthn timotimo: Because we have code that relies on
15:57 jnthn nqp::setlems($foo, $big-number);
15:57 jnthn nqp::setlems($foo, 0);
15:57 jnthn Then pushes
15:57 jnthn To not go resizing all the time.
15:57 jnthn And you'd undo that.
15:57 timotimo how about i put the code in shift and pop only?
15:58 timotimo that would allow setelems $bignum and pushes to work no-problem
15:58 timotimo but actually shrink arrays appropriately if they're being shifted trom
15:58 timotimo 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 list
15:59 * timotimo cooks some dinner now
15:59 jnthn colomon: Feel free to give the things I just pushed a try
16:00 colomon jnthn++
16:00 [Coke] hey! obra made boingboing: http://boingboing.net/2013/07/25/​scratch-building-a-keyboard.html
16:02 daxim still nothing on http://keyboard.io/  :(
16:03 daxim I know these slides
16:03 jnthn colomon: Was there something else especially slow?
16:03 colomon yes, %hash.kv on a big hash
16:04 daxim http://podcast.bulknews.net/post/49915262884
16:04 colomon well, maybe more extremely stacky than slow, but same effect.
16:04 colomon jnthn: https://gist.github.com/colomon/6079027
16:04 rGeoffreeey joined #perl6
16:04 [Coke] daxim: looks like the background is supposed to be this: https://launchrock-assets.s3.amazonaws.com/ba​ckground-files/EPVBNZBC_1366340862269.jpg?_=0
16: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 believe
16: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 layout
16:06 jnthn FROGGS: no
16:06 FROGGS k
16:06 jnthn FROGGS: As last statement in a sub is not in sink context
16:06 FROGGS I see
16:09 colomon jnthn: that's insanely better
16:09 jnthn \o/
16:09 colomon 1825 * 8 is 2 seconds, where 1825 * 4 used to be 53 (this under JVM)
16:09 colomon afk # noms
16:10 jnthn Wow, the hash one explodes on JVM due to the gather/take issue
16: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:11 [Coke] bbkr: are you building rakudo?
16:11 [Coke] (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.writeback
16:11 bbkr from sample hello world code
16:11 moritz that hasn't been working for years :(
16:12 FROGGS bbkr: I'd guess you should do `make install` in rakudo's dir first
16:12 FROGGS have to*
16:13 bbkr same result after "make install"
16:13 FROGGS :/
16:14 lizmat jnthn: what's the rationale of STORE_AT_POS, when apparently this only gets called at one location ever?
16:14 lizmat something for the future?
16:15 jnthn lizmat: hMM
16:15 timotimo isn't it called from all the things in Any?
16:15 jnthn lizmat: Not sure
16:15 lizmat hMM ?
16:15 timotimo nope, i was wrong.
16:15 lizmat hmmm…  with a big M ?
16:15 jnthn yes :)
16:16 lizmat seems like a useless extra sub call for each .push
16:16 estrabd joined #perl6
16:16 lizmat also: from jnthn's push() fixes, spectest has gone down from ~3180CP seconds to ~3140
16:16 lizmat CPU
16:17 diakopter moritz: deprecated article needs DEPRECATED stamp
16: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 jnthn lizmat: We have to preserve taht difference.
16:17 lizmat ok
16:17 lizmat aha, and Array doesn't have it's own .push
16:18 lizmat *its
16:18 lizmat 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:19 lizmat too early as in premature
16:19 jnthn yeah
16:19 jnthn 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 then
16:22 timotimo jnthn: are you still convinced i should not implement array shrinking on pop and shift?
16:23 dalek rakudo/nom: 207cdaf | (Elizabeth Mattijsen)++ | src/core/List.pm:
16:23 dalek rakudo/nom: Subtle change in fail message
16:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/207cdaf54d
16:24 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 it
16:25 TimToady in the rare cases you need to reclaim, the user can copy
16:26 jnthn colomon: I'm working on faster hash iteration
16:27 timotimo hmm. i was thinking of cases like ... while @list.shift
16: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 copying
16:28 jnthn timotimo: Generally those lists a throw-away
16:29 jnthn *&are
16:32 timotimo okay, i'll drop the case then :)
16:41 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 daxim error message is "Unhandled exception: java.nio.file.NoSuchFileException: ModuleLoader.class"
16:42 [Coke] daxim: what is "nqp-jvm" ?
16:43 diakopter nqp-jvm: say 1
16: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 paste
16:44 diakopter (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:44 dalek nqp: use java.lang.System.arraycopy for memmove.
16:44 dalek nqp: review: https://github.com/perl6/nqp/commit/24c14a7fa4
16:44 dalek nqp: 3e222b8 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp​/sixmodel/reprs/VMArrayInstance (7 files):
16:44 dalek nqp: use System.arraycopy in one more place in VMArray.
16:44 dalek nqp: review: https://github.com/perl6/nqp/commit/3e222b8797
16: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 toolchain
16:46 timotimo i'll see how much ram htmlify now swallows up.
16:46 [Coke] daxim: what is in your copy of "perl6" ?
16:47 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/j​ava/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 [Coke] er, of nqp-jvm
16:47 FROGGS joined #perl6
16:47 [Coke] (nevermind, I guess that does work, although not usually done ina  system dir)
16:48 daxim yes, see my specfile:  https://build.opensuse.org/package/vie​w_file/home:ldieckow:branches:devel:la​nguages:parrot/nqp/nqp.spec?expand=1
16:48 daxim the build system sucks balls, though.  I hope the configures are merged in the next release
16:49 [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 opposite
16:49 daxim these changes make it work
16:50 rindolf joined #perl6
16:50 daxim I probably should comment what each patch accomplishes, but I didn't expect there would be so many needed when I started out
16:50 cbk joined #perl6
16:51 [Coke] why are they needed?
16:51 [Coke] that is, I'm just building right from source, which doesn't have any of those changes.
16:52 daxim yeah, you're not packaging; you just install into $builddir/install
16:52 daxim which is fine for a developer, but I'm redistributing software here that must follow certain conventions
16:52 daxim i.e. %{_javadir} and crap like that
16:53 lee_ colomon: hmm after building latest jvm-rakudo my push test just hangs seemingly forever
16:54 lee_ if i add a say @a.elems before pushing it hangs at 7300
16:55 lee_ my @a; for 0..(1825 * 4) { say @a.elems; @a.push($_); } # probably doing something wrong here
16:56 [Coke] daxim: what version of java are you using, OOC?
16:56 daxim java-1_7_0-openjdk
16:57 lee_ yeah it just hangs at 7300 and memory continues growing and using 300% of CPU
16:59 rGeoffreeey joined #perl6
17:00 colomon lee_: what nqp are you using?
17:01 lee_ fb241ae, i'll try updating that
17:01 lee_ i believe it is from last night
17:04 [Coke] daxim: does blib/Perl6/ModuleLoader.jar exist?
17:06 daxim yes
17:06 daxim there's also a /usr/share/java/ModuleLoader.jar
17:08 spider-mario joined #perl6
17:08 colomon lee_: hmmm, that's the same one I have, actually.
17:08 colomon lee_: what was your push test?
17:10 lizmat jnthn: why isn't List.push implemented in terms of nqp::push ?
17:10 lee_ colomon: pasted it above
17: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 safe
17:10 jnthn lizmat: Good question.
17:11 jnthn 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_ joined #perl6
17:12 timotimo hmm. htmlify still reaches 4gb resident memory after just 40 pod files
17:12 lizmat well, if that's the price to get it working in a threaded environment, it's a price I don't mind paying
17:12 jnthn lizmat: Feel free to investigate; I just did a few initial improvements.
17:13 jnthn timotimo: Does it do hash iteration?
17:13 timotimo i don't think so, but let me look
17:13 colomon lee_: 7300 with yours, yep.  WTH?
17:13 lee_ colomon: does it hang after that?
17:14 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 wall
17: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 timotimo maybe that's unoptimized? but i can hardly see that
17:14 timotimo the return value of spurt should be a bool, no?
17:15 timotimo or does it return the spurt'd string?
17:15 jnthn bool I think
17:15 colomon lee_: this is crazy
17:15 * timotimo doesn't see any obvious flaws
17:15 colomon rn: say 1825 * 4
17:15 ajr joined #perl6
17: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/take
17:15 colomon oh
17:15 jnthn It should deal wiht the stack overflow colomon sees
17:15 lee_ colomon: my @a; for 0..2 { @a.push($_) } # returns 0 1 2 0 1 2 0 1 2 in REPL
17:15 timotimo hm, i *think* the memory usage used to be a bit extremer before, though
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 [Coke] (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:17 lee_ colomon: ah, i think i see. being in the repl forces it to sink context?
17:17 jaldhar joined #perl6
17:17 lee_ er, maybe not
17:17 colomon out of sink context
17:17 colomon that maybe what I'm seeing, too, it's the last thing in the script I created from your code.
17:18 colomon that's totally it
17:18 jaldhar joined #perl6
17:18 lee_ yeah, if i plop a 1; at the end it returns much faster
17: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 camelia ..niecza v24-88-g1f87209:  ( no output )
17: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_ hehe
17:19 camelia rakudo 207cda, niecza v24-88-g1f87209:  ( no output )
17:19 camelia rakudo 207cda: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Confusedâ�¤at /tmp/6M73ABocSX:1â�¤------> [32m @a; for 0..(1825 * 4) { @a.push($_); } [33mâ��[31m1;[0mâ�¤    expecting any of:â�¤        postfixâ�¤        statement endâ�¤        statement modifierâ�¤        statement modifier loopâ�¤        horizo…
17:19 camelia ..niecza v24-88-g1f87209: OUTPUT«[31m===[0mSORRY![31m===[0m��Strange text after block (missing comma, semicolon, comment marker?) at /tmp/aONRQ9Cf3F line 1:�------> [32my @a; for 0..(1825 * 4) { @a.push($_); }[33m�[31m 1;[0m��Parse failed��»
17:20 jnthn timotimo: Is that before or after the sink patch?
17:20 timotimo after
17:20 timotimo i think before, too, though
17:20 jnthn wait, are you actually evaluating it in sink context?
17:20 jnthn At the REPL, just writing my @a; for 0..(1825 * 4) { @a.push($_); }; for example has to build up all the result lists
17:20 timotimo as opposed to assigning the result of a loop to a variable, either directly or through any amount of sub calls?
17:21 colomon timotimo: try @source.kv rather than 0..* Z @source ?
17:21 xinming joined #perl6
17:21 timotimo 7.7gb maxrss :(
17:21 timotimo colomon: good point
17: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:23 timotimo i see no assignment going on that shouldn't.
17:23 timotimo 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 before
17:24 timotimo 340M before, 1820M after reading the 153 files out of the directories
17:26 * 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:28 moritz skids: and I already changed for-loops to be eager again
17:29 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:30 moritz urk.
17:32 jnthn moritz: Yes, they were eager, but eager != sink :)
17:34 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:36 timotimo hm, nah, that wouldn't explain that much memory usage at all
17:41 dalek rakudo/nom: fe35215 | (Elizabeth Mattijsen)++ | src/core/List.pm:
17:41 dalek rakudo/nom: Applied same optimization logic to other List methods
17:41 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fe3521562a
17:41 lizmat will look at .push again when back from Wolverine 3D  :-)
17:41 lizmat &
17:45 rGeoffreeey joined #perl6
17:52 [Coke] timotimo: no.
17:53 dalek perl6-roast-data: e88ad8b | coke++ | / (4 files):
17:53 dalek perl6-roast-data: today (automated commit)
17:53 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/e88ad8b841
18:00 btyler joined #perl6
18:01 [Coke] daxim: did a build with those particular versions with no errors on an OS X box.
18:01 [Coke] (developer style, obviously)
18:01 daxim well, then you spent a lot of time not reproducing the problem I'm having
18:02 [Coke] ... Yes.
18:02 [Coke] I do see that the generated ./perl6 from that "era" matches the one you have much more closely.
18:02 [Coke] 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 please
18:03 [Coke] Do you have a script you're running to do the build?
18:05 hoelzro good evening Perl 6 folk!
18:06 jnthn o/ hoelzro
18:06 daxim yes, osc
18:06 [Coke] (also, if you have a script for building the nqp-jvm, that would also be helpful)
18:07 daxim if you can't run osc, just follow the shell script parts of the specfile in order
18:09 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:l​dieckow:branches:devel:languages:parrot/rakudo each
18:09 hoelzro so I some ideas about my issues with MAIN(Str $value) and passing '10' on the command line
18:09 colomon jnthn: oooooo
18:09 jnthn colomon: Verifying that on Parrot now, then will make sure it doesn't blow up Rakudo JVM
18:10 jnthn colomon: It adds a HashIter over using gather/take
18: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 pass
18:10 jnthn hoelzro: I think the problem you've got is Rakudo not yet providing the IntStr type
18: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 so
18:12 daxim because the source archive provides those build targets
18: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:13 [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 problem
18:13 hoelzro but let's say I wanted to implement 'echo'
18:14 TimToady you can always process your own args
18:14 daxim no.  when nqp is built, it produces nqp, nqp-devel and (since yesterday) nqp-jvm
18:14 hoelzro I suppose so
18:14 hoelzro but to me, this isn't just about capability; it's about surprise
18: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 MAIN
18:15 TimToady there is now way to avoid surprise when the command line does not supply sufficient type info
18:15 TimToady *no
18: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/away
18:15 hoelzro if I call echo True, it'll fail, complaining that I didn't provide a value
18:16 hoelzro that confused me when I saw it
18:16 hoelzro 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 enums
18:17 hoelzro I haven't tried this in niecza yet
18: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 known
18:17 hoelzro =)
18:18 TimToady and in any case, it'd have to be a BoolStr :)
18:18 hoelzro and then, if I call 'echo 10'?
18:19 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 Str
18:19 TimToady that's what the MI is for
18:20 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 problematic
18:20 TimToady trouble is, it's a DWIM, and that invokes masak's law
18:21 TimToady the WAT of the MI solution is that a multi dispatching to both Int and Str will fail
18:23 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 works
18:23 hoelzro but maybe that would be better suited to an actual option parsing routine?
18:23 zby_home_ joined #perl6
18:25 TimToady that is the way that MAIN makes hard things possible :)
18:25 sjohnson joined #perl6
18:26 [Coke] daxim: is your JAVADIR set to /usr/share/java ?
18:26 gtodd joined #perl6
18:26 daxim is that an environment variable?  if yes, then no.
18:27 [Coke] er, sorry, misread. how is %{_javadir} set?
18:27 daxim that's an rpm macro, expanded at when the spec file is parsed
18:28 [Coke] ok. what's it set to (I'm running these by hand, not inside whatever build system you're using.)
18:28 [Coke] ?
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/java
18:29 [Coke] jnthn++
18:29 colomon jnthn++ indeed!
18:29 daxim the jars go to /usr/share/java, the bins to /usr/bin
18:30 jnthn Running spectest on JVM now; back after a quick visit to the shop
18:31 [Coke] daxim: can you show me your /usr/bin/nqp-jvm script?
18:32 ajr joined #perl6
18: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 daxim plus shebang
18:42 SamuraiJack joined #perl6
18:42 [Coke] daxim: FYI, the description on nqp's jvm package mentions PIR still.
18:44 daxim do you have a better description?
18:44 omeranon joined #perl6
18:45 [Coke] s/PIR/java/ is probably sufficient.
18:51 [Coke] daxim: ok. the problem appears to be that nqp cannot handle being split into a bin dir and a jar dir.
18:51 [Coke] I don't know if this is a systemic thing, or just a result of the rakudo.jvm makefile.
18:52 gtodd left #perl6
18:52 daxim that's a "must" for packaging.  I'll put the rakudo-jvm target on ice until next release
18:57 [Coke] I would recommend opening a rakudobug to track this.
19:02 sqirrel joined #perl6
19:02 jnthn Also, coordinate with donaldh++ who is working on these things.
19:06 dalek rakudo/nom: 787295d | jnthn++ | src/core/ (2 files):
19:06 dalek rakudo/nom: Re-work hash iteration to use a HashIter.
19:06 dalek rakudo/nom:
19:06 dalek rakudo/nom: This replaces the existing gather/take approach with maps over them,
19:06 dalek rakudo/nom: which for .kv/.keys/.pairs is much more efficient as we never create a
19:06 dalek rakudo/nom: load of Pair objects only to throw them away. Seems not to regress any
19:06 dalek rakudo/nom: spectests on JVM or Parrot, and makes some TODO tests pass, most likely
19: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 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/787295d0d2
19:06 [Coke] jnthn++ # moar java!
19:06 jnthn [Coke]: Know...donaldh++ has a make-install branch? :)
19:07 jnthn Sorry, I'm not always good at knowing who knows what :)
19:07 jnthn colomon: Please give 787295d a spin
19:07 colomon jnthn: I've been eagerly awaiting it.
19:08 ORFJackal joined #perl6
19: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:09 jnthn timotimo: Another run of p6bench may be interesting with these latest changes
19:11 ORFJackal jnthn,  I heard from Raiph Mellor that you would like a chat; see his comment at http://blog.orfjackal.net/2013/07/lambd​a-expressions-backported-to-java-7.html
19:14 [Coke] jnthn: not your job, no worries. ;)
19:14 jnthn ORFJackal: Looking...
19:16 jnthn 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:17 ORFJackal it basically produces similar bytecode as if you would use anonymous inner classes instead
19:18 Kiralexis joined #perl6
19:18 preflex joined #perl6
19:18 mtk joined #perl6
19:18 PerlJam joined #perl6
19:18 ivan``_ joined #perl6
19:18 crazedpsyc joined #perl6
19:18 TimToady joined #perl6
19:18 kshannon joined #perl6
19:18 gfldex joined #perl6
19:18 mathw joined #perl6
19:18 bakedb joined #perl6
19:18 arnsholt joined #perl6
19:19 ORFJackal it takes the invokedynamic instruction produced by JDK 8 for lambdas, and replaces it with a normal method invocation for instantiating the class
19: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 joined #perl6
19:20 * jnthn guesses the latter, having read more carefully now :)
19:20 ORFJackal it looks for only lambda related invokedynamic
19:21 ORFJackal the relevant code is at https://github.com/orfjackal/retrolambda/blob/m​aster/retrolambda/src/main/java/net/orfjackal/r​etrolambda/LambdaUsageBackporter.java#L97-L110
19:21 xinming joined #perl6
19:21 benabik joined #perl6
19:21 nyuszika7h joined #perl6
19:21 cognominal joined #perl6
19:21 kingbeast joined #perl6
19:21 masak joined #perl6
19:21 Ulti joined #perl6
19:21 odoacre_ joined #perl6
19:21 scottp joined #perl6
19:21 rom1504 joined #perl6
19:21 simcop2387 joined #perl6
19:22 ORFJackal in lambda's case it's enought to replace the invokedynamic with a single invokestatic call, because it knows how LambdaMetafactory works
19: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 places
19:23 colomon jnthn: certainly makes my golfed test work better!
19:26 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:28 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:29 zamolxes joined #perl6
19:29 smash joined #perl6
19:29 integral joined #perl6
19:29 integral joined #perl6
19:29 awwaiid joined #perl6
19:29 cosimo joined #perl6
19:29 sivoais joined #perl6
19:29 jnthn Yes, there is a small-ish set of bootstrap methods that we use.
19:29 diakopter joined #perl6
19:29 mls joined #perl6
19:29 frettled joined #perl6
19:29 p5eval joined #perl6
19:29 huf joined #perl6
19:30 pmurias joined #perl6
19:30 gabriel_ joined #perl6
19:30 rhr joined #perl6
19:30 ORFJackal Are the call sites constant or dynamic?
19:30 jnthn Dynamic.
19:31 jnthn Which makes it a bit more fun :)
19:31 sjohnson joined #perl6
19:31 ORFJackal :)
19:31 ORFJackal What are your motivations of getting rid of invokedynamic?
19:31 sjohnson joined #perl6
19:32 ORFJackal Is Java 7 too high a minimum requirement?
19:33 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:34 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 joined #perl6
19:34 araujo joined #perl6
19:35 silug joined #perl6
19:35 charsbar_______2 joined #perl6
19:35 rafl joined #perl6
19:35 ORFJackal I agree. Java 6 is already EOL, so Java 7 should sooner or later be everywhere.
19:35 ORFJackal ...except some mobile stuff.
19:35 geekosaur .oO { famous last words }
19:36 cognominal before Perl 7?  /me ducks
19:36 ORFJackal :)
19:37 ORFJackal 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:38 jnthn (short of the openjdk mailing lists...)
19:38 ORFJackal I was just about to mention them ;)
19:38 ORFJackal There is https://groups.google.com/f​orum/#!forum/jvm-languages which seems to be filled with likeminded people
19:39 ORFJackal I'm not reading it actively, but that's the place I would look for if I want to hear about such things
19:40 ORFJackal 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:40 jnthn Hm, that forum shows no posts since April...
19:41 ORFJackal http://openjdk.java.net/pr​ojects/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? :P
19:42 ORFJackal :)
19:42 nemesys joined #perl6
19:43 jnthn ORFJackal: Thanks for the pointers :)
19:43 ORFJackal np
19:44 vk_ joined #perl6
19:59 SamuraiJack joined #perl6
20:01 prevost joined #perl6
20:03 domidumont joined #perl6
20:03 FROGGS r: use MONKEY_TYPING; augment class Buf { }
20:03 camelia rakudo 787295: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Cannot augment Buf because it is closedâ�¤at /tmp/CfA_3P5c45:1â�¤------> [32muse MONKEY_TYPING; augment class Buf [33mâ��[31m{ }[0mâ�¤    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 FROGGS is that by design?
20:04 jnthn Yes; Buf is a role, not as class, per spec. We used to have that wrong.
20:05 FROGGS hmmmm
20:07 FROGGS r: say "a".encode.WHAT
20:07 camelia rakudo 787295: OUTPUT«(utf8)␤»
20:09 [Coke] I cannot imagine we are upgraded to java 7 here at work anytime soon. :P
20:09 [Coke] *upgrading
20:09 FROGGS I'd think that we are stuck with the version that was popular in 2008
20:17 corecatcher joined #perl6
20:18 benabik joined #perl6
20:22 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:27 jnthn timotimo: yeah
20:28 jnthn [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 [Coke] er, wait, ecosystem. star?
20:29 jnthn [Coke]: The modules tests
20: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 [Coke] so any commits newer than that are ignored. :)
20:30 [Coke] made sense when we got started, because even those were broken.
20:30 jnthn ah, ok
20: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 OK
20:30 PerlJam [Coke]++
20:30 jnthn I'll be gone by then, but will be back well before any release involving Buf... :)
20:31 * [Coke] wonders if there's enough working to get started on a rakuduo.jvm*
20:33 corecatcher evening, are there any other LHF except those few issues at github?
20:34 jnthn [Coke]: I expect a bunch of modules may well work
20:34 FROGGS corecatcher: there are tickets in RT too
20: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 RT
20:36 PerlJam timotimo: currently showing 0 results.
20:36 timotimo hm
20:36 timotimo let's make some ;)
20:37 PerlJam NYI is showing 0 too
20:37 PerlJam blocking on tests has bunches though.
20:37 PerlJam those should be LHFish
20:37 corecatcher FROGGS: url?
20:38 FROGGS corecatcher: ^^https://rt.perl.org/rt3/Public/Search/Simple.h​tml?Query=Queue%20=%20%27perl6%27%20AND%20%28S​tatus%20=%20%27open%27%20OR%20Status%20=%20%27​new%27%20OR%20Status%20=%20%27stalled%27%29
20:38 FROGGS sorry for the long url
20:38 corecatcher np, thx
20:38 FROGGS err, remove that ^^
20:40 [Coke] FROGGS, corecatcher : http://rakudo.org/tickets/ is a decent launch page to avoid having to remember the long urls.
20:40 dalek rakudo/sized-arrays: e124a6a | Arcterus++ | / (11 files):
20:40 dalek rakudo/sized-arrays: Add support for shaped arrays
20:40 dalek rakudo/sized-arrays: review: https://github.com/rakudo/rakudo/commit/e124a6a24b
20:40 dalek rakudo/sized-arrays: fe86822 | Arcterus++ | / (86 files):
20:40 dalek rakudo/sized-arrays: Merge remote-tracking branch 'upstream/nom' into nom
20:40 dalek rakudo/sized-arrays:
20:40 dalek rakudo/sized-arrays: Conflicts:
20:40 dalek rakudo/sized-arrays: src/vm/jvm/runtime/org/perl6/rakudo/Ops.java
20:40 dalek rakudo/sized-arrays: review: https://github.com/rakudo/rakudo/commit/fe86822060
20:40 dalek rakudo/sized-arrays: ec7842b | Arcterus++ | src/core/Array.pm:
20:40 dalek rakudo/sized-arrays: Fixed error with 'use' statements
20:40 dalek rakudo/sized-arrays: review: https://github.com/rakudo/rakudo/commit/ec7842b5b7
20:40 dalek rakudo/sized-arrays: 6493e48 | jnthn++ | / (11 files):
20:40 dalek rakudo/sized-arrays: Bring Arcterus++ sized array work into a branch.
20:40 dalek rakudo/sized-arrays:
20:40 dalek rakudo/sized-arrays: Can evaluate/tweak it from here.
20:40 dalek rakudo/sized-arrays: review: https://github.com/rakudo/rakudo/commit/6493e48509
20:41 timotimo cool :)
20:43 timotimo jnthn: i built rakudo.parrot and rakudo.jvm for bench now and i'll run timings now
20:43 jnthn \o/
20:43 jnthn timotimo++
20:43 timotimo jnthn: any particular version you'd like me to compare it to? 2013.07?
20:44 jnthn timotimo: That'll do just fine.
20:44 timotimo i'll have to build them, too ...
20:44 timotimo i can give you a comparison to older revisions in the mean time
20:45 PerlJam timotimo: sounds like a blog post in the making too :)
20:45 timotimo only if the results are meaningful.
20:46 timotimo 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:47 timotimo hehe. some are just waiting for a test case to be written and checked into perl6/roast
20:47 wk joined #perl6
20: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::na
20:48 cognominal joined #perl6
20:48 jnthn corecatcher: This is a very useful thing to be doing. :)
20:49 PerlJam timotimo: I know.  The more points of view on a subject, the more meaningful it becomes to people.  :)
20:49 rGeoffreeey joined #perl6
20:49 corecatcher haha, i do recognize dirty work, but yes its useful
20:51 BenGoldberg joined #perl6
20: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 dalek rakudo-js: Implement subcapture, fix //.
20:51 dalek rakudo-js:
20:51 dalek rakudo-js: That makes basic protoregexes work. Pass test 32.
20:51 dalek rakudo-js: review: https://github.com/pmurias/​rakudo-js/commit/bc60823b12
20: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:52 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 work
20:52 colomon \o/
20:53 lizmat jnthn: I guess variable traits is out of the question?
20:53 lizmat :-)
20:54 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 timotimo 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 timotimo maybe it's time to retry some of those :D
20:55 colomon timotimo: not I
20:55 jnthn That was grondilu
20:55 timotimo oh
20:55 jnthn colomon: That's on JVM? :)
20:56 timotimo in that case ... we should notify grondilu :)
20:56 colomon yes
20:56 jnthn Overnight and failing to 12 minutes and successful is WIN :)
20:56 colomon WIN WIN WIN
20:56 colomon 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:59 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␤␤»
21:00 * lizmat sees some spectest failures after doing a git pull just now
21:00 lizmat checking...
21:01 lizmat some TODO's passed :-)
21:02 timotimo benchmarking takes forever :|
21:02 domidumont joined #perl6
21:02 jnthn BenGoldberg: That one's know...it's for's fault, I believe.
21:03 timotimo BenGoldberg: feels like you've been showing us the same known bug a few times now ;)
21:04 timotimo doesn't seem like you really know how to fix it quickly, jnthn? else it would already have been done perhaps? ;)
21:04 jnthn timotimo: I'm not sure about nodality...
21:04 jnthn timotimo: Yeah, it really needs pmichaud tuits...
21:04 timotimo that's okay
21:05 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 dalek roast: Unfudge TODO's passing after jnthn's work of today
21:05 dalek roast: review: https://github.com/perl6/roast/commit/f4c5ed8c64
21:05 timotimo you're bound to reach the goal that's n steps away in n^2 steps i believe
21:06 xinming joined #perl6
21:06 lizmat checking remaining new failure in t/spec/S32-exceptions/misc.t
21:08 timotimo rakudo.parrot has finished its benchmark run
21:11 dmol joined #perl6
21:11 lizmat r: use fatal; (1+2i).Num
21: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:12 jnthn lizmat: It doesn't?
21:12 * jnthn looks confused
21:12 corecatcher hm, https://rt.perl.org/rt3/Publ​ic/Bug/Display.html?id=88708 that bug has a test in roast/S03-operators/range.t:294
21:12 corecatcher so it might be closed?
21:13 timotimo do you want to create an account with bitcard and close it or should i do it for you?
21:13 * timotimo wonders if the irclog has a magic link for that test corecatcher linked
21:13 corecatcher for the sake of lazyness, do it for me ;)
21:14 timotimo sure :)
21:14 * lizmat looks further
21:14 lizmat quite a number of tests in that file
21:14 corecatcher might rather grep for the RT numbers and check each of them
21:14 jnthn colomon: I assume the test is passing? :)
21:14 jnthn oops
21:14 jnthn corecatcher: ^^
21:15 FROGGS r: 1..4..7
21:15 camelia rakudo 787295: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Operators '..' and '..' are non-associative and require parenthesisâ�¤at /tmp/MrHfpf0d1G:1â�¤------> [32m1..4.[33mâ��[31m.7[0mâ�¤    expecting any of:â�¤        postfixâ�¤        dotty method or postfixâ�¤Â»
21:15 FROGGS gnight
21:15 jnthn 'night, FROGGS
21:15 lizmat gnight, FROGGS!
21:15 lizmat jnthn: this test fails "throws_like 'use fatal; (1+2i).Real', X::Numeric::Real, target => Real;"
21:16 timotimo weird. when i ./t/fudgeandrun that test file, it won't properly fudge a test that trips up rakudo
21:16 timotimo but yeah, the test passes
21:16 PerlJam corecatcher: the test also references RT #77572, so I guess RT#88708 is a dup?
21:17 timotimo i will close both.
21:17 arcterus joined #perl6
21:18 timotimo done
21:18 jnthn lizmat: How does it fail?
21:18 lizmat not ok 482 - .target matches (Real)
21:18 lizmat use of uninitialized value of type Real in string context  in any  at src/gen/Metamodel.nqp:1461
21:18 lizmat use of uninitialized value of type Real in string context  in block  at t/spec/packages//Test/Util.pm:143
21:18 lizmat # Got:
21:18 lizmat # Expected:
21:18 arcterus joined #perl6
21:18 timotimo great! :D
21:19 jnthn um :)
21:19 jnthn 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:20 lizmat r: use fatal; (1+2i).Real  # jnthn, this was the gold
21: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 golf
21:20 corecatcher r: sub f { f(|$) }; say "alive"
21:20 camelia rakudo 787295: OUTPUT«[31m===[0mSORRY![31m===[0m�Unsupported use of $) variable; in Perl 6 please use $*EGID�at /tmp/QMHU4XPbmE:1�------> [32msub f { f(|$)[33m�[31m }; say "alive"[0m�»
21:21 corecatcher r: sub f { f( |$ ) }; say "alive"
21:21 jnthn r: use fatal; try (1+2i).Real; say $!.perl
21:21 camelia rakudo 787295: OUTPUT«[31m===[0mSORRY![3​1m===[0mâ�¤Non-declarative sigil is missing its nameâ�¤at /tmp/XIl00tvlRU:1â�¤------> [32msub f { f( |[33mâ��[31m$ ) }; say "alive"[0mâ�¤    expecting any of:â�¤        argument listâ�¤        prefix or termâ�¤        prefix or meta-prefixâ�¤Â»â€¦
21:21 camelia 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 jnthn lizmat: What kind of comparison is thrwos_like doing?
21:23 lizmat checking
21:24 lizmat my $got = $_."$k"();
21:24 lizmat my $ok = $got ~~ $v,;
21:24 xinming joined #perl6
21:25 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:26 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 indeed
21:27 jnthn 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 oh
21: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 checking
21:27 camelia rakudo 787295: OUTPUT«True␤»
21:27 rGeoffreeey_ joined #perl6
21:28 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 wtf
21:29 BenGoldberg r: say nqp::istype(Real, Real)
21:29 camelia rakudo 787295: OUTPUT«1␤»
21:30 BenGoldberg r: my %a = a => Real; for %h.kv -> { say nqp::decont($v) }
21:30 camelia rakudo 787295: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Variable '%h' is not declaredâ�¤at /tmp/nKyABJQLEz:1â�¤------> [32mmy %a = a => Real; for %h.kv[33mâ��[31m -> { say nqp::decont($v) }[0mâ�¤    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«[31m===[0mSORRY![31m===[0mâ�¤Variable '$v' is not declaredâ�¤at /tmp/34JzKZJpE0:1â�¤------> [32m Real; for %h.kv -> { say nqp::decont($v[33mâ��[31m) }[0mâ�¤    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:31 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 jnthn oh, I wonder...
21:31 jnthn r: say Real ~~ Real.item
21:31 camelia rakudo 787295: OUTPUT«False␤»
21:31 jnthn Now, that's a golf.
21:32 ajr joined #perl6
21: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:33 BenGoldberg Inside .push, the return value of .infinite is not checked for being Nil
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:34 lizmat ok, I'll take them out  :-)
21:34 jnthn lizmat: Don't worry, done locally in my var-traits branch.
21:34 lizmat ok
21:35 lizmat BenGoldberg: Nil means, we don't know
21:35 lizmat so it's potentially *not* infinite, so it *may* finish
21:35 BenGoldberg I know that, but... isn't there a way to implement .push lazily?
21:36 jnthn That's called .plan, though it's NYI
21:41 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 tonight
21:41 lizmat that would be great news!
21:42 lizmat I'll fudge that test for now, it is weird
21:42 jnthn lizmat: no, I think I know how to fix it
21:42 lizmat ah, ok
21:42 jnthn lizmat: Leave it for now, I tyr and do it in a moment after these var traits.
21:42 lizmat okidoki
21:42 jnthn Just building it on Parrot at the moment
21:45 jnthn lizmat: In fact, if you have a moment, try this patch: https://gist.github.com/jnthn/6084057
21:45 lizmat trying
21:45 jnthn Thanks...then I can focus on the var traits :)
21:46 corecatcher please close that one, you'll see https://rt.perl.org/rt3/Publi​c/Bug/Display.html?id=118835
21:46 jnthn ooh yays
21:46 corecatcher hm, lots of spam in the recent queue
21:47 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 well
21:50 lizmat jnthn: success on that particular test, running full spectest now just to make sure
21:53 jnthn lizmat: ok :)
21:54 timotimo about 50% of the rakudo-jvm benchmark run is done.
21:55 colomon joined #perl6
21:59 dalek rakudo/nom: 117beb2 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
21:59 dalek rakudo/nom: Make Real ~~ Real.item work, suggested by jnthn++
21:59 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/117beb2d00
22:00 lizmat jnthn: verified and committed
22:01 lizmat and it's yet another day, gnight #perl6!
22:04 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:06 jnthn r: say 45 / 12
22:06 camelia rakudo 787295: OUTPUT«3.75␤»
22:06 dalek rakudo/var-traits: b54c12b | jnthn++ | src/core/traits.pm:
22:06 dalek rakudo/var-traits: Remove unrequired default decls.
22:06 dalek rakudo/var-traits:
22:06 dalek rakudo/var-traits: We ignored these before; now we pay attention to them, and hit a
22:06 dalek rakudo/var-traits: bootstrap issue.
22:06 dalek rakudo/var-traits: review: https://github.com/rakudo/rakudo/commit/b54c12bb85
22:06 dalek rakudo/var-traits: 4766065 | jnthn++ | / (5 files):
22:06 dalek rakudo/var-traits: First pass at getting variable traits in place.
22:06 dalek rakudo/var-traits: review: https://github.com/rakudo/rakudo/commit/4766065bff
22:06 dalek rakudo/var-traits: cd4831d | jnthn++ | src/core/Variable.pm:
22:06 dalek rakudo/var-traits: Implement default trait on variables.
22:06 dalek rakudo/var-traits:
22:06 dalek rakudo/var-traits: Again, a first pass, but seems to basically work.
22:06 dalek rakudo/var-traits: review: https://github.com/rakudo/rakudo/commit/cd4831d5dc
22:13 skids joined #perl6
22:17 timotimo timing the 32/42th benchmark now
22:23 jaldhar joined #perl6
22:34 _ilbot joined #perl6
22:34 Topic for #perl6 is now »ö« Welcome to Perl 6! | http://perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:,  niecza:, std:, or /msg camelia perl6: ... | irclog: http://irc.perl6.org | UTF-8 is our friend!
22:35 hugme joined #perl6
22:36 camelia joined #perl6
22:37 cognominal__ joined #perl6
22:38 groky joined #perl6
22:39 timotimo jnthn: how would you like some benchmarks? :)
22:42 jnthn timotimo: Well, I have some beer here. I can drink it in celebration or commiseration :P
22: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:43 btyler joined #perl6
22:43 timotimo i think i still need to fix the trim_string benchmark for perl5.
22:44 jnthn Which sha-1's are which?
22:44 BinGOs joined #perl6
22:45 jnthn ah, figured it
22:45 jnthn The 78' is latest
22:45 kingbeast joined #perl6
22:46 timotimo indeed
22:46 Khisanth joined #perl6
22:46 timotimo it made things a bit better all in all. there is no benchmarks for hash iteration alas
22:46 timotimo want me to come up with one? :)
22:46 timotimo or maybe you suggest one, i run it.
22:50 jnthn timotimo: Yeah, still plenty of work to go on the benchmarks...
22:50 jnthn timotimo: Well, could take something like what colomon's original report had...
22:51 timotimo i just made a for loop that sets {$_} = $_ and then .kv -> $k, $v
22:57 timotimo stackoverflow at Failed to run command: ./perl6 -e my %h; for ^4096 { %h{$_} = $_ }; for %h.kv -> $k, $v { $k == $v };
22:57 timotimo but that's a decent benchmarking code? (4096 is the SCALE)
22:58 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:59 BenGoldberg In non-sink context, 'for' acts like 'map' ?
22:59 jnthn BenGoldberg: yes
22:59 jnthn timotimo: uh, stack overflow?!
23:00 jnthn timotimo: The thinkg I did earlier fixed the stack overflow...
23:00 timotimo that's the old version
23:00 broquaint joined #perl6
23:00 jnthn timotimo: oh...
23:00 jnthn :)
23:00 timotimo there's no comparison unless i run the old version as well ;)
23:00 jnthn ;)
23:00 jnthn :D
23:01 nyuszika7h joined #perl6
23:01 timotimo ah, it's done. will build charts now
23:03 timotimo http://t.h8.lv/p6bench/hash-iterate.html - there we go
23:03 timotimo wow look at the jvm go
23:03 corecatcher joined #perl6
23:04 jnthn yeah :)
23:04 jnthn Though we got notably better on Parrot too
23:07 timotimo yeah, a bit
23:08 timotimo anything else you'd like comparison'd?
23:09 bluescreen10 joined #perl6
23:13 colomon joined #perl6
23:17 jnthn timotimo: push in a for loop in sink context could be a worthwhile benchmark
23:17 jnthn timotimo: So we can spot the regression should it happen again.
23:19 rGeoffreeey joined #perl6
23:24 timotimo can you give me an example? i'm not sure i can make that happen well. { my @a; for ^SCALE { @a.push($_) }; }?
23:25 timotimo yeah, that should do it.
23:27 jnthn That does it, yes
23:28 jnthn But something after the for loop maybe to ensure the sink context
23:28 estrabd joined #perl6
23:29 timotimo well, i'll just check if it works at all.
23:35 gfldex std: my @foo of Str|Num; sub f(@foo of Str|Num){}
23:35 camelia std c2215f0: OUTPUT«[31m===[0mSORRY![31m===[0m�Unable to parse signature at /tmp/ZzbasnVd6z line 1:�------> [32mmy @foo of Str|Num; sub f[33m�[31m(@foo of Str|Num){}[0m�Couldn't find final ')'; gave up at /tmp/ZzbasnVd6z line 1:�------> [32mmy @foo of Str|Num; sub f(@foo of Str…
23:35 gfldex is that NYI or am I asking for something silly?
23:42 jnthn of expects a type name
23:42 jnthn Declare a subset type if you wish to do something like that.
23:42 jnthn Then use of on that.
23:42 jnthn 'night, #perl6
23:50 gfldex ===SORRY!===
23:50 gfldex Invalid typename 'HTML-nodes' in parameter declaration. Did you mean 'HMTL-nodes'?
23:50 gfldex that's either a bug or rakudo is mocking me :)
23:55 felipe joined #perl6
23:56 timotimo jnthn: posted a charts link in #moarvm, but it doesn't seem right

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs