Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2014-07-28

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:00 hoverboard joined #perl6
00:01 cognome joined #perl6
00:01 timotimo parse_json is faster, array_set_xx is slower, huh.
00:01 jnthn Curious.
00:01 timotimo but forest fire is faster, so well done! :)
00:03 cognome_ joined #perl6
00:04 timotimo jnthn: did you measure the impact on stage parse? :)
00:08 jnthn Yeah. Faster. :)
00:08 jnthn Stage MAST used to be around the 14.xs mark for me, now it's down to 11.xs
00:08 timotimo no numbers?
00:12 thou joined #perl6
00:13 timotimo going to bed now :)
00:14 jnthn 'night timotimo
00:17 avuserow joined #perl6
00:17 * jnthn sleeps too
00:17 jnthn 'night
00:18 timotimo tomorrow will see a weekly spanning two weeks
00:20 rindolf joined #perl6
00:25 cognome joined #perl6
00:30 dalek tablets: 684fdd1 | (Herbert Breunung)++ | docs/appendix-d-delta.txt:
00:30 dalek tablets: backlink design trends properly
00:30 dalek tablets: review: https://github.com/perl6/tablets/commit/684fdd183f
00:30 dalek roast: df19092 | (David Warring david.warring@gmail.com)++ | integration/99problems-21-to-30.t:
00:30 dalek roast: replace invalid autothreading ~~ with subset (<=)
00:30 dalek roast: review: https://github.com/perl6/roast/commit/df19092e4b
00:31 * dwarring reads better anyway
00:41 BenGoldberg joined #perl6
00:47 atroxaper joined #perl6
00:59 dayangkun joined #perl6
01:04 FROGGS_ joined #perl6
01:10 raiph joined #perl6
01:21 rurban1 joined #perl6
01:22 raiph joined #perl6
01:25 cognome joined #perl6
01:31 raiph .tell timotimo https://gist.github.com/raiph/c1202f874c2477b09d1f irc summary trawl
01:31 yoleaux raiph: I'll pass your message to timotimo.
01:46 klapperl_ joined #perl6
01:51 lizmat joined #perl6
02:01 thou joined #perl6
02:05 lizmat_ joined #perl6
02:12 bowtie joined #perl6
02:20 noganex joined #perl6
02:22 rurban1 joined #perl6
02:22 kst joined #perl6
02:24 rurban2 joined #perl6
02:24 itz joined #perl6
02:25 cognome joined #perl6
02:30 lustlife joined #perl6
02:47 atroxaper joined #perl6
02:56 Akagi201 joined #perl6
03:00 * lizmat_ is spectesting last version, and finds it ~5% slower / using 5% more CPU than before  :-(
03:03 figoe joined #perl6
03:06 rurban1 joined #perl6
03:06 Akagi201 joined #perl6
03:07 figoe joined #perl6
03:14 lizmat Files=907, Tests=31845, 232 wallclock secs ( 9.44 usr  4.31 sys + 1466.85 cusr 181.28 csys = 1661.88 CPU)
03:15 lizmat with MVM_SPESH_DISABLE=1: Files=907, Tests=31951, 221 wallclock secs ( 8.84 usr  3.87 sys + 1421.61 cusr 154.11 csys = 1588.43 CPU)
03:15 lizmat FWIW, the timing with MVM_SPESH_DISABLE=1 are more like the timings I've seen before
03:25 ventica2 joined #perl6
03:25 cognome joined #perl6
03:32 chenryn joined #perl6
03:39 ventica2 m: say $*PID;
03:39 camelia rakudo-moar 319a78: OUTPUT«8067␤»
03:39 ventica2 m: say $PID;
03:39 camelia rakudo-moar 319a78: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/OY0IZgD_dDâ�¤Variable '$PID' is not declaredâ�¤at /tmp/OY0IZgD_dD:1â�¤------> [32msay $PID[33mâ��[31m;[0mâ�¤    expecting any of:â�¤        postfixâ�¤Â»
03:40 lizmat ventica2: is there something here you didn't expect ?
03:40 ventica2 no
03:40 ventica2 but not grokkin the $* twigil generally
03:43 ventica2 m: say $( 1 & 2 & 3 );
03:43 camelia rakudo-moar 319a78: OUTPUT«all(1, 2, 3)␤»
03:49 dayangkun joined #perl6
03:49 thou joined #perl6
03:50 rurban1 joined #perl6
03:50 ventica2 say $( 1, 2, 3, );
03:50 ventica2 m: say $( 1, 2, 3, ); #oops
03:50 camelia rakudo-moar 319a78: OUTPUT«1 2 3␤»
03:51 ventica2 ok now that I didn't expect
03:51 ventica2 should it coerce down to a scalar value?
03:51 ventica2 shouldn't*
03:55 lue r: say (1,2,3).perl; say $(1,2,3).perl;
03:55 camelia rakudo-{parrot,jvm,moar} 319a78: OUTPUT«(1, 2, 3)␤$(1, 2, 3)␤»
03:56 lue ventica2: it is a scalar, just in the programming sense of "one object" (in this case, one Parcel), and not the math sense of "one value"
03:56 ventica2 i'm trying to use $() to say "I gave you an array, but I want a scalar. Pick one and DWIM."
03:56 ventica2 and I mean scalar in the P5 sense
03:56 lue ventica2: if you want any one of them, then you want  @list.pick or @list.roll  :)
03:56 ventica2 surely P6 distinguishes between a scalar value and other kinds of "single" things
03:56 ventica2 hrm
03:56 lue r: say (1,2,3).roll(5)
03:56 ventica2 not grokking the overall idea then
03:56 camelia rakudo-moar 319a78: OUTPUT«3 3 2 1 2␤»
03:56 camelia ..rakudo-jvm 319a78: OUTPUT«3 2 1 3 3␤»
03:56 camelia ..rakudo-parrot 319a78: OUTPUT«2 2 2 3 3␤»
03:56 ventica2 what's the point of $()?
03:57 lue to force item context instead of list context (lemme try to make an example real quick)
03:57 lue s/list context/some other context/
03:57 ventica2 k thx, appreciated
03:58 lue r: say $_.perl for (1,2,3);
03:58 camelia rakudo-{parrot,jvm,moar} 319a78: OUTPUT«1␤2␤3␤»
03:58 lue r: say $_.perl for $(1,2,3);
03:58 camelia rakudo-{parrot,jvm,moar} 319a78: OUTPUT«$(1, 2, 3)␤»
03:58 ventica2 the second loop executed just once, no?
03:58 lue when that list of three elements is seen in list context, you go through each item in the list. When the list is forced into item context, it's seen as a singular item.
03:59 ventica2 ok yeah i'm getting it
04:00 ventica2 m: say $_.perl for 1 & 2 & 3
04:00 camelia rakudo-moar 319a78: OUTPUT«all(1, 2, 3)␤»
04:00 ventica2 ok, so all/any/etc act a little bit like $()
04:01 ventica2 the junction is treated as a single item
04:01 lue perhaps, though using Junctions with that thought in your head will surely lead to Bad Things™
04:01 ventica2 haha ok
04:01 lue A Junction is really multiple things at once, rather than a collection of things.
04:01 ventica2 yes
04:02 kaare__ joined #perl6
04:02 ventica2 so, what I'm really looking for is a "collapse" function for the Junction... "Take this thing that can be ANY or ALL of these things and make it a TRULY single thing"
04:03 ventica2 how do I do that?
04:03 lue r: sub foo($a) { say $a }; foo((1,2,3)); foo(any(1,2,3));   # here's a quick way to show the difference between a list and junction
04:03 camelia rakudo-{parrot,jvm,moar} 319a78: OUTPUT«1 2 3␤1␤2␤3␤»
04:03 lue (and yes, the list in the first call was itemized because it was stuffed into a $ variable)
04:04 rurban1 joined #perl6
04:05 lue ventica2: in your case it would probably be best to use a normal list and just .pick a value
04:05 lue r: say (1,2,3).pick
04:05 camelia rakudo-jvm 319a78: OUTPUT«2␤»
04:05 camelia ..rakudo-{parrot,moar} 319a78: OUTPUT«3␤»
04:17 Pleiades` joined #perl6
04:22 atroxaper joined #perl6
04:24 nbrown joined #perl6
04:25 cognome joined #perl6
04:27 chenryn joined #perl6
04:45 gfldex joined #perl6
04:50 avuserow .tell itz thanks for the PR. what tests started failing on parrot 6.6.0? I think Rakudo 2014.07 used Parrot 6.6.0, so I wouldn't expect it to be that bad
04:50 yoleaux avuserow: I'll pass your message to itz.
04:53 avuserow timotimo++ # resuming weekly updates
04:56 avuserow m: say (so any(1,2,3)).perl
04:56 camelia rakudo-moar 319a78: OUTPUT«Bool::True␤»
04:56 avuserow m: say (+any(1,2,3)).perl
04:56 camelia rakudo-moar 319a78: OUTPUT«any(1, 2, 3)␤»
04:57 avuserow right.
05:19 kaare__ joined #perl6
05:20 dayangkun joined #perl6
05:22 [Sno] joined #perl6
05:23 ventica joined #perl6
05:24 rurban1 joined #perl6
05:25 raiph joined #perl6
05:25 cognome joined #perl6
05:31 chenryn joined #perl6
05:35 kaare_ joined #perl6
05:37 thou joined #perl6
05:43 bowtie joined #perl6
05:43 woolfy joined #perl6
05:44 dayangkun joined #perl6
05:47 jack_rabbit joined #perl6
05:52 ventica2 joined #perl6
05:55 bowtie_ joined #perl6
06:05 virtualsue joined #perl6
06:09 gamo joined #perl6
06:17 chenryn joined #perl6
06:19 sergot hi o/
06:21 woolfy left #perl6
06:25 cognome joined #perl6
06:29 bowtie_ joined #perl6
06:35 FROGGS[mobile] joined #perl6
06:35 c1sung joined #perl6
06:38 xinming_ joined #perl6
06:43 ventica2 avuserow: thanks
06:44 ventica2 say (so 1 | 2 | 3).perl
06:44 ventica2 m: say (so 1 | 2 | 3).perl # oops
06:44 camelia rakudo-moar 319a78: OUTPUT«Bool::True␤»
06:44 ventica2 aha
06:44 ventica2 m: say (so 0 & 2 & 3).perl
06:44 camelia rakudo-moar 319a78: OUTPUT«Bool::False␤»
06:44 ventica2 there we g
06:45 ventica2 m: say 1 + 2 & 3
06:45 camelia rakudo-moar 319a78: OUTPUT«all(3, 3)␤»
06:45 ventica2 m: say 1 + (2 & 3)
06:45 camelia rakudo-moar 319a78: OUTPUT«all(3, 4)␤»
06:45 ventica2 nice
07:10 virtualsue o/
07:14 raydiak \o
07:17 virtualsue_ joined #perl6
07:20 avuserow huh, I'm a little surprised that junctions don't drop duplicate values
07:21 dayangkun joined #perl6
07:21 avuserow m: my $j = 2; $j &= 2 for ^5; $j.perl.say
07:21 camelia rakudo-moar 319a78: OUTPUT«all(all(all(all(all(2, 2), 2), 2), 2), 2)␤»
07:22 FROGGS you need that, otherwise you cannot map that against the input...
07:22 salv0 joined #perl6
07:22 FROGGS m: say 2 ~~ 1 | 2 | 2 | 2 | 2 | 3
07:22 camelia rakudo-moar 319a78: OUTPUT«True␤»
07:22 moritz avuserow: at least the one() junction wouldn't work if it dropped duplicate values
07:22 FROGGS m: say 2 ~~ all 1 | 2 | 2 | 2 | 2 | 3
07:22 camelia rakudo-moar 319a78: OUTPUT«True␤»
07:22 FROGGS err
07:23 moritz you create an all-junction with one value, which is an any-junction
07:24 avuserow right, one() is special here. for some reason, the other junctions seem like they'd be more set-like than list-like in my mind. or maybe bag-like
07:25 avuserow I mean, certainly my idea does not pan out if you expected to be able to get the values from a junction, but IIRC that temptation is a bit discouraged
07:26 TimToady seems like one(1,2,2,2,3) could be optimized to one(1,3)
07:26 avuserow (except bags might still work?)
07:26 thou joined #perl6
07:26 nbrown joined #perl6
07:27 avuserow m: say so one(1, 2, 2, 2, 3)
07:27 camelia rakudo-moar 319a78: OUTPUT«False␤»
07:27 avuserow m: say so one(1, 3)
07:27 camelia rakudo-moar 319a78: OUTPUT«False␤»
07:27 avuserow oh I see
07:27 TimToady m: say so one(1,2,2,2,3) == 2
07:27 camelia rakudo-moar 319a78: OUTPUT«False␤»
07:27 TimToady m: say so one(1,2,2,2,3) == 3
07:27 camelia rakudo-moar 319a78: OUTPUT«True␤»
07:28 avuserow m: say so one(1, 3) == 2
07:28 camelia rakudo-moar 319a78: OUTPUT«False␤»
07:29 TimToady so it's still worthwhile finding the duplicates, but you do something different with them, is all
07:30 TimToady just as ^^ can short circuit on the second true
07:30 [Sno] joined #perl6
07:30 chenryn joined #perl6
07:30 TimToady m: say True ^^ False ^^ True ^^ die "oops"
07:30 [Sno] joined #perl6
07:30 camelia rakudo-moar 319a78: OUTPUT«Nil␤»
07:30 dayangkun joined #perl6
07:31 dmol joined #perl6
07:32 FROGGS somehow the v5 code that got translated from NQP to Perl 6 does not like multi tokens at all :o(
07:32 FROGGS (except token term...)
07:33 avuserow m: sub infix:<!>(**@values) { Junction.new(@values, :type<none>); }; say (1 ! 2 ! 3).perl
07:33 camelia rakudo-moar 319a78: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/ut_aiZURSWâ�¤Negation metaoperator not followed by valid infixâ�¤at /tmp/ut_aiZURSW:1â�¤------> [32mn.new(@values, :type<none>); }; say (1 ![33mâ��[31m 2 ! 3).perl[0mâ�¤    expecting any of:â�¤ …»
07:33 avuserow m: sub infix:<&!>(**@values) { Junction.new(@values, :type<none>); }; say (1 &! 2 &! 3).perl
07:33 camelia rakudo-moar 319a78: OUTPUT«none(none(1, 2), 3)␤»
07:35 avuserow still I wonder if junctions of a certain size would be better as Bags, assuming the values are hashable...
07:35 avuserow junctions aren't mutable right?
07:36 moritz right
07:36 TimToady no, so sets are good enough
07:37 TimToady though you'd need a second set to track one construction, so you'd know to remove that 2 and keep it removed
07:37 avuserow or just de-duplicating a list by hand, since that doesn't require hashability, you'd only do it once, and lists are cheaper?
07:38 TimToady well, requires a sort of some sort, likely
07:38 TimToady but a sorted list could be searched with a binary search, if you don't want to hash
07:39 avuserow do we have unhashable things in perl6? or is that $other-lang brain damage that I'm thinking of?
07:39 TimToady but a hash might be a good way to handle some ops $value eq any(@lots)
07:40 TimToady mutable objects including containers hash to their identity, not their contents
07:40 moritz but if you construct the hash for just one comparison, it's slower than going through it linearly
07:40 TimToady sure
07:51 TimToady zzz &
07:51 bjz joined #perl6
07:52 darutoko joined #perl6
07:55 hoverboard joined #perl6
07:56 bjz joined #perl6
07:57 zakharyas joined #perl6
08:04 bjz joined #perl6
08:07 timotimo o/
08:07 yoleaux 01:31Z <raiph> timotimo: https://gist.github.com/raiph/c1202f874c2477b09d1f irc summary trawl
08:07 dayangkun_ joined #perl6
08:07 virtualsue_ joined #perl6
08:10 raydiak \o
08:10 timotimo hey raydiak!
08:10 timotimo good to see you :)
08:10 raydiak thanks, you too :)
08:16 xinming joined #perl6
08:19 timotimo it'd be interesting if we could extract benchmarks from pray
08:20 timotimo have you tried pray recently?
08:21 timotimo especially yesterday and the day before that jnthn has improved performance nicely
08:21 timotimo even though some people are actually reporting performance hits
08:21 raydiak that was one of the thoughts I had as I was beginning it...I'm going to be working on math::threed and pray more very soon, so adding some stuff to it specific to benchmarks is a possibility
08:21 nwc10 has anyone run the benchmarks since ++jnthn++'s work?
08:21 timotimo i have, but it was missing parser speed improvements
08:21 raydiak I have tried it enough to confirm that it still works
08:21 timotimo so startup time would have been overestimated
08:22 raydiak (Pray I mean)
08:22 timotimo thought so
08:23 raydiak problem is I got a new (well, new to me) laptop, so comparing the speed of this to anything else is meaningless
08:23 timotimo ah, of course
08:23 timotimo did you know perl6-bench is a nice tool to build rakudo at different revisions?
08:24 raydiak oh, I think I was running them on my server before anyway...I ought to build a new rakudo on the vps and try pray again
08:24 raydiak is it?
08:24 timotimo like ./bench extract rakudo-moarvm/2014-05 rakudo-moarvm/2014-06 rakudo-moarvm/2014-07; ./bench build rakudo-moarvm/2014-05 rakudo-moarvm/2014-06 rakudo-moarvm/2014-07
08:24 raydiak oh neat
08:24 raydiak I usually use rakudobrew
08:24 timotimo in the bench case you don't need the "switch" part
08:25 timotimo but you don't get a perl6 binary for your path
08:25 Ven joined #perl6
08:25 raydiak might not want historical versions in your path anyway :)
08:26 Ven o/, #perl6.
08:26 timotimo that's correct
08:26 timotimo hey ven
08:26 raydiak hi Ven
08:26 raydiak are the performance improvements specific to moar?
08:26 timotimo partially
08:27 timotimo a big chunk of them are
08:27 raydiak I'll build that first them
08:27 raydiak *then
08:29 timotimo recent improvements to moar are a big chunk of "make more things inlinable at spesh time", so if pray happens to have been blocking on that in some place or other, there could certainly be a nice speed boost in store for you :)
08:30 kaleem joined #perl6
08:31 timotimo that might also explain the performance hit some people saw so far; we can do more inlinings and maybe they don't end up benefiting performance as much as they take to be done
08:31 denis_boyun joined #perl6
08:31 chenryn joined #perl6
08:32 timotimo only speculations at this point, though
08:32 raydiak hard to say what my bottleneck is...I think Pray is blocking on the fact that at least in the master branch no attempt has ever been made to pay any attention to performance
08:32 timotimo oh, you mean the pray code isn't performance-optimized?
08:33 raydiak heck no :)
08:33 timotimo that's good, though
08:33 timotimo it'd point us at things that'd appear in "regular code" that ought to be faster, but isn't
08:34 raydiak to an extent...I'm sure some of it is just outright wrong in retrospect, I'll be finding out as I dig back in
08:34 timotimo hah, all right :)
08:34 timotimo i'm just glad you chose to fly with perl6 airlines
08:34 raydiak heh me too
08:35 raydiak getting new hardware helped...Pray was developed on a VPS w/half a gig ram, via a half-broken laptop from 2007 w/no hard drive
08:35 FROGGS_ joined #perl6
08:36 timotimo ah, that does sound like something you may want to update
08:37 raydiak I kinda prided myself on being able to limp it by with lean desktops and excessive console use, but that looses entertainment value after a certain amount of time
08:37 timotimo mhm
08:38 timotimo i've gone back and forth between "geek pride" "hard core" setups and "end-user fancy flashy stuff" multiple times in the past
08:38 timotimo kde3 followed by awesome (then xmonad and then i3)
08:38 timotimo and then xfce4
08:38 tempire joined #perl6
08:39 raydiak I've been through so many...back in my gentoo days I'd change window managers a few times a week for a while...using mint kde atm
08:39 timotimo at some point i was on gentoo, even did a stage1 build at some point, but that was after (i think) debian and followed by debian, later on fedora
08:39 timotimo oh, debian, then mint (with cinnamon) and then fedora
08:41 raydiak I've tried to some extent or another at some point between the 90s and now slackware, gentoo, redhat, debian, ubuntu, mint, arch, mandrake, puppy, knoppix, portage...
08:42 raydiak can't remember it all, or at least I try not to
08:42 timotimo hah, i also used mandrake for a short while
08:43 timotimo back when it was actually called mandrake and not mandriva
08:43 timotimo that was my very second linux distro ever
08:43 timotimo back then i didn't really know what to do with a linux system; i was much more into gaming then than i am now
08:43 masak good antenoon, #perl6
08:44 raydiak yeah they had the best hardware autodetection back in the day, I loved the lesser extent I had to futz with kernel modules and so forth
08:44 raydiak \o masak
08:44 masak m: my $jnthn; say ++$jnthn++
08:44 camelia rakudo-moar 319a78: OUTPUT«Cannot assign to an immutable value␤  in sub postfix:<++> at src/gen/m-CORE.setting:4561␤  in block  at /tmp/DaBFPrSdkk:1␤␤»
08:44 masak m: my $jnthn; say (++$jnthn)++
08:44 camelia rakudo-moar 319a78: OUTPUT«Cannot assign to an immutable value␤  in sub postfix:<++> at src/gen/m-CORE.setting:4561␤  in block  at /tmp/SYaGRCX_xc:1␤␤»
08:44 masak m: my $jnthn; say ++($jnthn++)
08:44 camelia rakudo-moar 319a78: OUTPUT«Cannot assign to an immutable value␤  in sub prefix:<++> at src/gen/m-CORE.setting:4553␤  in block  at /tmp/Tn1QylpxaJ:1␤␤»
08:45 jnthn ++ returns the value, not the container
08:45 masak turns out pre-post-incrementing jnthn's karma is too much :)
08:45 * masak .oO( circumincrement )
08:46 Mouq_ joined #perl6
08:55 masak prompted by Perl Weekly -- why are formats so rarely used?
08:55 masak is it due to a shift in what's fashionable/interesting? or were they always rarely used?
08:56 timotimo masak: formats, as in @foobar.fmt("this thing in here") #?
08:56 masak hehe, no :)
08:56 masak as in `perldoc perlform`
08:56 masak as in http://www.learning-perl.com/2014/07/formats/
08:56 kurahaupo joined #perl6
08:57 timotimo oh!
08:57 timotimo that's kinda cute
08:58 masak as in http://www.perl.com/pub/2004/02/27/exegesis7.html
08:58 masak as in https://github.com/mathw/form/
08:58 Ven oh, I never knew about that
08:58 timotimo that's far from implemented, isn't it?
08:59 timotimo did it actually end up as part of the spec?
08:59 masak no, and that's part of my point.
08:59 masak it was exiled to module-land from the start.
08:59 timotimo ah
08:59 masak E07 has no synopsis.
08:59 timotimo well, yeah, i can see how it'd be quite good in a module
08:59 masak S07 today is about something else (lists and iteration).
09:00 masak my question is about the history and evolution of the use of formats.
09:00 masak where do they come from originally? were they a Perl invention?
09:00 masak were they once wildly popular?
09:02 moritz they were pretty popular once, yes
09:04 [particle] joined #perl6
09:05 kurahaupo_mobile joined #perl6
09:05 masak moritz: about the only data I have to support that is the "R" in "Perl" :)
09:05 bjz joined #perl6
09:05 raydiak my general impression was that they are crufty and limited...ascii soup, weird scoping rules iirc, stuff like that, and not something that likely belongs in the core anyway, given our shift away from dot-matrix printers and monospaced characters for typographic layout
09:05 raydiak straight out of perlform:
09:06 raydiak "Pretty ugly, eh? It's a common idiom though, so don't be too surprised when you see it."
09:06 ventica2 what is gabor szabo's nick? (i'm watching his YT video tutorials)
09:06 timotimo szagab usually
09:06 timotimo !seen szagab
09:06 ventica2 thx
09:06 timotimo yoleaux: seen szagab
09:06 timotimo how do i ...
09:07 masak szabgab usually.
09:07 timotimo oh
09:07 masak it's a Hungarian thing, I think, to put the last name first.
09:07 * ventica2 thinks of cracking bad pun about hungarian notation...
09:07 chenryn joined #perl6
09:08 masak heh.
09:08 timotimo oh hey ventica2
09:08 ventica2 yes
09:08 timotimo i see you've "discovered" junctions
09:08 ventica2 haha yeha, i used quantum:: back in the day
09:08 timotimo it felt like i was the only person to like junctions when i last worked on them
09:09 ventica2 yeah, I think it will become a killer-app feature of langs after p6 hits mainstream... :)
09:09 timotimo i do agree that if you do something like return junctions from your module's interface-defined subs and methods, that's pretty evil
09:10 ventica2 hmm, not sure it's evil... a search function for example might want to say "i found one of X or Y or Z"
09:10 timotimo it does funky things with calls :)
09:11 ventica2 implementation bug?
09:11 timotimo no
09:11 ventica2 or arch bug?
09:11 timotimo anyway, you usually have to declare your variables to hold a Mu if you want to handle junctions
09:11 timotimo that's just how junctions work
09:11 FROGGS_ .seen szabgab
09:11 ventica2 k
09:11 yoleaux I haven't seen szabgab around.
09:11 timotimo m: sub do_something($a) { say "i'm doing something with $a. cool, huh?"; return Bool.pick }; say do_something(1 | 2 | 3).perl
09:11 camelia rakudo-moar 319a78: OUTPUT«i'm doing something with 1. cool, huh?␤i'm doing something with 2. cool, huh?␤i'm doing something with 3. cool, huh?␤any(Bool::False, Bool::False, Bool::True)␤»
09:12 masak I used to be wildly in love with junctions, too.
09:12 timotimo this is called "autothreading" (not actually multi-threading across cores/threads though (yet))
09:12 masak nowadays I consider them to be one of those rather narrow power features to be used in a limited, controlled scope.
09:13 timotimo i think the next thing i ought to do with junctions is apply the same optimizing transformation to any(<foo bar baz>) that would happen to "foo" | "bar" | "baz" (in boolean context, that is)
09:13 moritz ventica2: Gabor mostly stopped using IRC about two years ago, IIRC
09:14 timotimo irc is quite the time sink :)
09:14 moritz ventica2: but it should be possible to reach him by e-mail
09:14 ventica2 moritz: ah
09:14 ivan`` joined #perl6
09:14 timotimo or twitter, i think
09:14 ventica2 was jst curious if he's around to say "nice job!" on the tuts
09:14 thou joined #perl6
09:14 timotimo can send a comment on youtube/google+
09:14 kivutar joined #perl6
09:15 ventica2 m: sub foo($a) { return "blah $a"; }; foo(1|2|3);
09:15 camelia rakudo-moar 319a78: ( no output )
09:15 ventica2 m: sub foo($a) { return "blah $a"; }; say foo(1|2|3); #oops
09:15 camelia rakudo-moar 319a78: OUTPUT«any(blah 1, blah 2, blah 3)␤»
09:15 ventica2 m: sub foo($a) { say "blah $a"; }; foo(1|2|3);
09:15 camelia rakudo-moar 319a78: OUTPUT«blah 1␤blah 2␤blah 3␤»
09:15 ventica2 oooooooooookay
09:15 ventica2 finally
09:16 timotimo you see now how that can cause unexpected things? :)
09:16 ventica2 it seems that junctions aren't considered a readability feature?
09:17 timotimo they are totally good for readability
09:17 ventica2 yeah... but... seems like they could be made a bit more DWIMmy
09:17 timotimo consider if $x & $y == -1 | 0 | 1
09:17 timotimo how so?
09:18 ventica2 hmm, maybe i just need more time with them... it seems they should be a little more eager to resolve to "classical" states, i.e. to "de-junctionize"
09:18 Ven timotimo: took me some time to understand what that meant
09:19 timotimo ventica2: they de-junctionize if you .Bool them
09:19 ventica2 m: my $x = 1; my $y = 0; say ($x & $y == -1 | 0 | 1).perl;
09:19 camelia rakudo-moar 319a78: OUTPUT«all(any(Bool::False, Bool::False, Bool::True), any(Bool::False, Bool::True, Bool::False))␤»
09:19 moritz ventica2: if you want a non-boolean result out of a junction, you shouldn't be using a junction (but a Set)
09:20 ventica2 timo: aha! let me try:
09:20 ventica2 m: my $x = 1; my $y = 0; say ($x & $y == -1 | 0 | 1).Bool.perl;
09:20 camelia rakudo-moar 319a78: OUTPUT«Bool::True␤»
09:20 timotimo m: my $x = 1; my $y = 0; say so $x & $y == -1 | 0 | 1;
09:20 camelia rakudo-moar 319a78: OUTPUT«True␤»
09:20 ventica2 theeeeeeeere we go!
09:20 ventica2 ha, u guys made my night
09:20 Ven yay :)
09:20 timotimo being able to .say a Junction is considered A Feature
09:20 ventica2 what is the mnemonic for 'so'
09:20 ventica2 ?
09:20 timotimo "opposite of not"
09:21 ventica2 as in "it is so" ?
09:21 timotimo yup
09:21 ventica2 lol TimToady
09:21 timotimo that's also why we have ... ?? ... !! ... instead of ... ? ... : ...
09:21 ventica2 that's got to be his idea
09:21 timotimo not only because the : is for other things now
09:22 timotimo because prefix:<?> is the opposite of prefix:<!>, i.e. boolification without negation
09:22 ventica2 m: my $x = 1; my $y = -1; say ($x & $y == -1 | 0 | 1).Bool.perl;
09:22 camelia rakudo-moar 319a78: OUTPUT«Bool::True␤»
09:22 ventica2 m: my $x = 1; my $y = 2; say ($x & $y == -1 | 0 | 1).Bool.perl;
09:22 camelia rakudo-moar 319a78: OUTPUT«Bool::False␤»
09:22 timotimo so in the ternary operator, the ?? comes before what is the result for a "true" condition, and after the !! is the result for a "false" condition
09:22 ventica2 m: my $x = 1; my $y = 2; say ($x | $y == -1 | 0 | 1).Bool.perl;
09:22 camelia rakudo-moar 319a78: OUTPUT«Bool::True␤»
09:22 ventica2 ^ exactly what I expect
09:23 timotimo great, huh? :)
09:23 ventica2 :D
09:23 ventica2 timo: Yeah, same as C
09:23 timotimo that's the part of junctions i really enjoy having
09:23 timotimo bwahaha
09:23 ventica2 just different squigglies :P
09:23 timotimo would $x | $y == -1 | 0 | 1 in C actually work? %)
09:23 timotimo through some ridiculous coincidence of bit masks
09:23 ventica2 moritz: OK, I haven't gotten to sets yet
09:24 ventica2 timo: No, i meant the ternary operator
09:24 masak no, no, the mnemonic of "so" is children going "not X!" -- "so X!"
09:25 ventica2 lol
09:25 masak or "that is *so* true" as an opposite of "that is *not* true"
09:25 ventica2 "dude, that is so X!" where "X == cool"
09:25 timotimo m: say so "perl6" ~~ Cool
09:25 camelia rakudo-moar 319a78: OUTPUT«True␤»
09:25 jnthn m: say so not True # :-)
09:25 camelia rakudo-moar 319a78: OUTPUT«False␤»
09:26 timotimo m: say not so True
09:26 ventica2 lol... p6 poetry...
09:26 camelia rakudo-moar 319a78: OUTPUT«False␤»
09:26 ventica2 wait... how does "perl6" match Cool??
09:27 timotimo m: say "perl6".^mro
09:27 camelia rakudo-moar 319a78: OUTPUT«(Str) (Cool) (Any) (Mu)␤»
09:27 masak m: for ^10 { say EVAL "not " x $_ ~ "True" }
09:27 camelia rakudo-moar 319a78: OUTPUT«True␤False␤True␤False␤Tru​e␤False␤True␤False␤True␤False␤»
09:27 ventica2 lol ... um
09:27 timotimo m: say (True, not * ... *)[^10
09:27 camelia rakudo-moar 319a78: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/FBDCI1Z5G7â�¤Unable to parse expression in subscript; couldn't find final ']' â�¤at /tmp/FBDCI1Z5G7:1â�¤------> [32msay (True, not * ... *)[^10[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤     …»
09:27 timotimo m: say (True, not * ... *)[^10]
09:27 camelia rakudo-moar 319a78: OUTPUT«True False True False True False True False True False␤»
09:28 Ven timotimo: oh wow, that's cool :DD
09:29 ventica2 hrm, not grokking that
09:29 timotimo the ... operator?
09:29 Ven well, it's the sequence operator using a closure as the "next"
09:29 ventica2 looks like * is somehow using the "last" value in constructing the lazy array slice?
09:29 ventica2 am i completley off?
09:30 masak m: enum Trool <False Meow True>; sub knot(Trool $t) { Trool(($t + 1) % 3) }; for ^10 { say EVAL "knot " x $_ ~ "Trool::False" }
09:30 camelia rakudo-moar 319a78: OUTPUT«False␤Meow␤True␤False␤Me​ow␤True␤False␤Meow␤True␤False␤»
09:30 Ven it's the Whatever, and here, it creates a closure
09:30 timotimo no, that's right; but it's the ... operator that is responsible for that
09:30 ventica2 but where's the closure coming from?
09:30 masak strangest code I've written in a while ;)
09:30 Ven m: (not *)(True); # ventica2
09:30 camelia rakudo-moar 319a78: ( no output )
09:30 Ven m: say (not *)(True); # ventica2 / ENOSAY
09:30 camelia rakudo-moar 319a78: OUTPUT«False␤»
09:31 timotimo the ... operator takes, on its left hand side, a list of initial values. but if the list of initial values ends in a callable, it'll be using that as the generator for new values
09:31 ventica2 ohhhhhh
09:31 timotimo maybe you've read it as "True, not (* ... *)"
09:31 ventica2 so you can have (* ... foo())?
09:31 masak m: enum Trool <False Meow True>; sub knot(Trool $t) { Trool(($t + 1) % Trool.WHO.elems) }; for ^10 { say EVAL "knot " x $_ ~ "Trool::False" }
09:31 camelia rakudo-moar 319a78: OUTPUT«False␤Meow␤True␤False␤Me​ow␤True␤False␤Meow␤True␤False␤»
09:31 timotimo ventica2: that would use foo to determine whether or not to stop creating new values
09:32 ventica2 oh
09:32 ventica2 8|
09:32 zakharyas joined #perl6
09:32 timotimo what you're looking for would probably look more like this:  1, &foo ... * > 10
09:32 timotimo or something similar
09:32 ventica2 k
09:33 timotimo m: .say for (1, &rand ... * < 0.01)
09:33 camelia rakudo-moar 319a78: OUTPUT«1␤0.63806099432048␤0.99600266644003␤0.627​999792034536␤0.424795260287713␤0.773997386634655​␤0.930332430721908␤0.0731129034402533␤0.62469018​7159723␤0.378498143362509␤0.900633295939546␤0.16​7187315044206␤0.770091165681623␤0.97043794096…»
09:33 timotimo m: say rand(10)
09:33 camelia rakudo-moar 319a78: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/ep0hFjK1tS�Unsupported use of rand(N); in Perl 6 please use N.rand or (1..N).pick�at /tmp/ep0hFjK1tS:1�------> [32msay rand[33m�[31m(10)[0m�»
09:33 timotimo ah, ok
09:33 timotimo m: .say for (1, { rand * $_ } ... * < 0.01)
09:33 camelia rakudo-moar 319a78: OUTPUT«1␤0.892413575163273␤0.822827642810​902␤0.759099022921723␤0.0162804340793365␤​0.0123253346263869␤0.00537682554377414␤»
09:33 timotimo m: .say for (1, { rand * $_ } ... * < 0.01)
09:33 camelia rakudo-moar 319a78: OUTPUT«1␤0.674718120498933␤0.504576203895648␤0.2​77071311046884␤0.272918659793391␤0.2405955047677​05␤0.190853393534245␤0.163029548975817␤0.0819790​525609101␤0.0648692437531501␤0.0279766166199596␤​0.0172190678642668␤0.0145456946016295␤0.00034…»
09:33 timotimo m: .say for (1, *.rand ... * < 0.01)
09:33 camelia rakudo-moar 319a78: OUTPUT«1␤0.696997511073613␤0.614248​875876916␤0.338122651616165␤0.02890​01131197655␤0.00732885836923004␤»
09:34 timotimo m: .say for (1, *.rand ... * < 0.0001)
09:34 camelia rakudo-moar 319a78: OUTPUT«1␤0.894375562174117␤0.63748354142407␤0.50​9248141468545␤0.360450555755423␤0.31626819694223​2␤0.282577593425415␤0.249381263229318␤0.18316330​0749547␤0.136788393139608␤0.132964163895922␤0.03​31698493581032␤0.00457938070950557␤0.00281906…»
09:34 timotimo ^- perfectly useful sequence of "randomly" spaced decreasing numbers
09:37 pecastro joined #perl6
09:38 moritz wy does that only produce decreasing numbers?
09:39 moritz *why
09:39 moritz ah, because we call .rand on the previous number
09:39 Ven moritz: because .rand will never produce something greater than its self
09:39 ventica2 m: say 1 .. 10;
09:39 jnthn Because the previous thing is what we call .rand on
09:39 moritz clever
09:39 camelia rakudo-moar 319a78: OUTPUT«1..10␤»
09:39 ventica2 m: say (1..10).perl;
09:39 camelia rakudo-moar 319a78: OUTPUT«1..10␤»
09:39 ventica2 m: say $_ for (1..10);
09:39 camelia rakudo-moar 319a78: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤»
09:40 ventica2 m: say $_ for (1,3...10);
09:40 ventica2 oops
09:40 camelia rakudo-moar 319a78: OUTPUT«(timeout)1␤3␤5␤7␤9␤11␤13␤15␤17␤19␤2​1␤23␤25␤27␤29␤31␤33␤35␤37␤39␤41␤43␤45␤47␤4​9␤51␤53␤55␤57␤59␤61␤63␤65␤67␤69␤71␤73␤75␤7​7␤79␤81␤83␤85␤87␤89␤91␤93␤95␤97␤99␤10…»
09:40 ventica2 wait, what?
09:40 Ven ventica2: it doesn't hit 10, so doesn't stop :)
09:41 Ven m: say $_ for (1,3... * > 10);
09:41 camelia rakudo-moar 319a78: OUTPUT«1␤3␤5␤7␤9␤11␤»
09:41 ventica2 i see
09:42 moritz m: say $_ for (1,3...^ * > 10);
09:42 camelia rakudo-moar 319a78: OUTPUT«1␤3␤5␤7␤9␤»
09:43 ventica2 i think it should detect > 10 in a DWIMmy way
09:43 ventica2 otherwise, too susceptible to hang conditions
09:44 ventica2 unintended
09:44 masak no no, it's a *fun* way to teach people to be careful with infinity! :P
09:44 Ven it used it, afaik
09:44 Ven it used to*
09:45 ventica2 Ven: yeah, in szabgab's tuts, he shows it stopping before 10 for odd no.s
09:46 ventica2 masak: perhaps... but seems to me to violate the principle of least surprise... :\
09:46 masak the scheme that dwam 10 was way complicated.
09:47 masak and the complexity bit more than it served.
09:47 Ven yeah, you need to deduce the "direction", right ?
09:47 masak yep.
09:48 Timbus ?
09:48 Timbus m: say 5 ... 1
09:48 camelia rakudo-moar 319a78: OUTPUT«5 4 3 2 1␤»
09:48 masak m: say 11, 9 ... 0
09:48 camelia rakudo-moar 319a78: OUTPUT«(timeout)»
09:49 masak (oops, missed) :)
09:49 moritz ventica2: we had automagic detection of upper limits once
09:49 moritz ventica2: it was a complete mess with non-monotonic sequences
09:49 masak queue moritz retreading my steps :P
09:49 masak moritz++
09:49 ventica2 seems to me that non-monotonic is the problem
09:50 ventica2 personally, i'd say dispense non-monotonic and preserve principle of least surprise for monotonic sequences
09:50 masak now you're just insisting on things being as simple as you'd like :)
09:50 jnthn Well, infix:<...> is just an operator, so you an always write a module that implements the ... you'd like.
09:51 masak sure, if you can prove monotonicity, then you can do clever things with detecting timeouts.
09:51 moritz ... and be surprised how many corner cases lurk in such a seemingly simple operator
09:51 ventica2 masak: perhaps... or maybe it's not abt simplicity so much as not introducing unintended bugs when using variables in a sequence construction
09:51 ventica2 $init, $next ... $final
09:52 moritz what does that do when $next < $init < $final ?
09:52 masak ventica2: I can definitely see a case for special-casing the simple linear case. but it does feel a little like a slippery slope.
09:52 ventica2 for any value of init, next and final, I know what thta means (or error) for monotonic sequences... for non-monotonic, I have no idea what's going to happen
09:52 jnthn ventica2: A hang is a pretty obvious bug; I seem to recall the ones introduced by the DWIM-y end point were much more subtle and harder to figure out.
09:52 masak moritz: that could also be detected.
09:52 moritz masak: sure it can; but what to do?
09:52 moritz also
09:52 ventica2 idk, I just think of it as a range() function baked into the syntax
09:52 moritz one must be careful not to introduce different behavior between  1, 3 ... 10 and 1, *+2 ... 10
09:53 masak moritz: why is that important?
09:53 moritz masak: consistency
09:53 jnthn 'cus I'd expect to be able to do a refactor like that without changing the semantics.
09:53 masak this is about catching statically-determinable beginner mistakes.
09:54 moritz oh
09:54 moritz you want extra compile-time analysis
09:54 masak moritz: if one dies at compilation, and the other loops infinitely, then that's not immediately "different behavior" to me. it's just we caught one of them.
09:54 masak yes.
09:54 * ventica2 doesn't see a large distinction between beginner(self) and expert_hasnt_used_this_featu​re_in_a_couple_months(self)
09:54 masak could even be a warning :)
09:54 moritz masak: I missed that part
09:54 Ven .oO( ERROR: it seems you're unable to count up to 10 )
09:55 masak we detect all kinds of wrong signature binding at compile time. why not wrong sequences?
09:55 moritz m: say (100, 45, *%* ... 0)[*-2]
09:55 camelia rakudo-moar 319a78: OUTPUT«5␤»
09:55 moritz I still love that GCD implementation
09:55 ventica2 O.o
09:56 Ven haha nice
09:57 mathw ah yes, formats. definitely better in a module.
09:58 masak mathw++ # making that module
09:58 mathw yeah shame I never maintain it...
09:58 mathw and have never finished it...
09:58 masak mathw: we could hackathon it sometime.
09:58 mathw might be a good idea
09:58 mathw give me a Perl 6 knowledge refresh/update too
09:58 masak oh, 'd love to!
09:59 mathw so focussed lately on C# at work, and using Clojure for some home stuff
09:59 mathw was using Haskell but got bitten by the dependency hell so backed off for a while
09:59 timotimo #perl6 memes. today: GMM; Good Man Masak
09:59 masak :P
09:59 timotimo in perl6 land we got rid of the "dependency hell" by not having any modules you can depend on!
09:59 mathw My local PM group are going to start having technical talks, they want something Perl 6-ish and of course they're all looking at me...
10:00 masak mathw: dependency hell in Haskell? I thought those people were all into immutable stuff...
10:00 xiaomiao dependency hell is just a matter of having good policies and a package manager available
10:00 masak xiaomiao: "just", huh? :P
10:00 xiaomiao e.g. perl5: no cyclical dependencies in cpan, ever
10:00 mathw yeah... it's not that simple in Haskell-land
10:00 xiaomiao that's a massive lesson that the ruby people won't learn, so their stuff is impossible to install
10:00 masak xiaomiao: are there package managers with cyclical dependencies!!??? h... how?
10:00 moritz xiaomiao: and reliable infrastructure, and packages declaring all deps correctly, ...
10:00 mathw cyclical dependencies???
10:00 masak I... how?
10:01 mathw no, Haskell has problems with versioning
10:01 xiaomiao mostly tests depending on things that need that package installed to run
10:01 mathw package A depends on B 1.0.3, package C (which you also want) uses B 1.0.5
10:01 xiaomiao so you have to disable all tests to install things
10:01 mathw this usually causes some sort of explosion
10:01 moritz if you have some kind of transaction thingy, and deps don't need to be satisfied inside the transaction, you can have cyclic deps
10:01 xiaomiao e.g. gem :)
10:02 xiaomiao mathw: you should never need such precise deps, unless your code is so fragile that you'll bundle that in directly
10:02 xiaomiao bundling is bad!
10:02 fhelmberger joined #perl6
10:02 timotimo bundling is fun!
10:02 mathw especially as Hackage (Haskell-like CPAN) has a lot of packages with upper version bounds that are way too tight or just too cautious
10:02 xiaomiao usually, most of the time, <=1.0.0 would be ok
10:02 mathw a lot of packages have broken interfaces on 0.0.1 increments etc.
10:02 xiaomiao forcing =1.0.3 like ruby people like to do is bad
10:02 Ven you can have cyclical deps in JS :P
10:02 mathw bad policies, no enforcement etc.
10:02 xiaomiao bad code :)
10:02 mathw Haskell library community needs to mature
10:03 mathw and they're trying to find a good solution
10:03 xiaomiao they all need to mature, and mostly get rid of the stupid
10:03 timotimo i hope we're doing well with the learning from other people's mistakes with perl6 on this topic
10:03 xiaomiao e.g. python/pip, it's ... augh
10:03 mathw and it's a shame, because it's the only thing holding me back from trying to get everyone using Haskell for everything they're not using Perl 6 for
10:04 Ven JS land has specifically-pinned version everywhere
10:04 xiaomiao Ven: JS is based on bundling
10:05 Ven (and I use it too, because sometimes your stuff breaks in a minor update and you're like wtf)
10:05 xiaomiao always stapling everything together
10:06 Ven mathw: looks like the paris pm group will also stuff perl 6 stuff soon :)
10:09 xfix joined #perl6
10:09 xfix joined #perl6
10:10 mathw Ven: they all want Perl 6 to happen, it seems, because I've been teasing them about how cool it is
10:10 Ven m: say "{"
10:10 camelia rakudo-moar 319a78: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/rQrhVcMnoGâ�¤Unable to parse expression in double quotes; couldn't find final '"' â�¤at /tmp/rQrhVcMnoG:1â�¤------> [32msay "{"[33mâ��[31m<EOL>[0mâ�¤    expecting any of:â�¤        statement lis…»
10:10 Ven mathw: hehe, exactly :o)
10:11 * Ven teased them in a talk where he barely had 2 slides which some baby perl 6 code
10:11 mathw unfortunately the amount of happening Perl 6 has already had isn't quite enough for them at this point in time
10:11 mathw and most of them are working with big Perl 5 codebases so there's that problem to deal with
10:11 mathw they're all on board with modern Perl though, which is great
10:12 mathw and then I sometimes get a bit jealous because my job is C# and it's annoying
10:12 mathw especially when we've all got F# development environments because it comes with Visual Studio
10:12 timotimo and you're not allowed F# at all?
10:14 mathw it's something I need to start trying to persuade people to do
10:14 xfix joined #perl6
10:14 xfix joined #perl6
10:14 mathw unfortunately they look at C# and it's familiar and the tooling's big and sophisticated (ReSharper)
10:15 * jnthn can't use ReSharper; it's just too noisy
10:15 jnthn Plain VS stays out of my way enough.
10:15 mathw and they look at F# and it's weird and therea ren't any {} and ReSharper doesn't support it (not that F# really needs that much help) and it's just new and weird and...
10:15 mathw I now rely on a few ReSharper features, but that's just saving me time when I'm dealing with C#'s peculiarities
10:16 mathw if we were using a proper language...
10:16 timotimo that's a jetbrains product, isn't it?
10:16 mathw yeah
10:16 jnthn Yeah. It's decent enough. It just doesn't fit with the way I work.
10:16 timotimo jetbrains make really good stuff
10:16 mathw really expensive addon for Visual Studio (which is really expensive) that gives it loads of features it should've already had
10:16 mathw and a load of other features you shouldn't need
10:16 timotimo can't wait for the stuff they come up with when perl6 actually gets popular %)
10:17 mathw marvellous work they've done on it, but it's a solution for a problem that we shouldn't have
10:17 ssutch joined #perl6
10:29 isBEKaml joined #perl6
10:29 isBEKaml joined #perl6
10:29 nbrown joined #perl6
10:31 xfix joined #perl6
10:31 xfix joined #perl6
10:37 Ven m: say (1.11)[*/2]
10:37 camelia rakudo-moar 319a78: OUTPUT«Index out of range. Is: 0.5, should be in 0..0␤  in method gist at src/gen/m-CORE.setting:12892␤  in sub say at src/gen/m-CORE.setting:13830␤  in block  at /tmp/adZBsxKCKy:1␤␤»
10:37 Ven "should be 0..0" ?
10:37 Timbus not much wiggle room there
10:38 Timbus how about 0..0.1
10:41 masak yes, that error shouldn't happen.
10:42 masak since if it didn't, the 0.5 would be successfully rounded down to 0.
10:42 * masak submits rakudobug
10:43 Ven masak: you don't think that should be an error ?
10:43 masak I think it shouldn't be an error.
10:43 masak fractional indices don't exist, 0.5 gets rounded down to 0, which is a legal index.
10:44 masak more philosophically, you're doing */2 because you want the middle index, which should work for a 1-element thing.
10:44 Timbus ya its common to.. ^ that
10:44 Ven meh.
10:45 masak this is a case of "validation should happen *after* dwimming the parameter".
10:47 masak https://rt.perl.org/Ticket/Display.html?id=122423
10:51 xfix joined #perl6
10:57 chenryn joined #perl6
10:59 cibs joined #perl6
10:59 colomon joined #perl6
11:01 dalek rakudo/nom: fd2b197 | (Tobias Leich)++ | src/Perl6/Actions.nqp:
11:01 dalek rakudo/nom: do not try to locate a macro when we do not have a name
11:01 dalek rakudo/nom:
11:01 dalek rakudo/nom: A ternary expression resulted if an QAST::Op(if &infix:<>) where the
11:01 dalek rakudo/nom: ope name is ignored, but we still tried to find a macro called &infix:<>,
11:01 dalek rakudo/nom: which is bogus.
11:01 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fd2b197153
11:02 thou joined #perl6
11:02 xfix joined #perl6
11:02 xfix joined #perl6
11:13 xfix joined #perl6
11:18 xfix joined #perl6
11:20 cognome joined #perl6
11:22 cognome_ joined #perl6
11:24 kaare_ joined #perl6
11:29 virtualsue joined #perl6
11:41 hoelzro morning #perl6
11:43 rindolf hoelzro: morning.
11:43 dalek rakudo-star-daily: 3450b6d | coke++ | log/ (14 files):
11:43 dalek rakudo-star-daily: today (automated commit)
11:43 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/3450b6d5f1
11:47 moritz timotimo: http://perlpunks.de/paste/show/53d6384a.5ff2.12a
11:47 moritz oh, wrong channel
12:10 virtualsue joined #perl6
12:20 cognome joined #perl6
12:27 Vendethiel joined #perl6
12:28 cognome joined #perl6
12:33 raiph joined #perl6
12:50 thou joined #perl6
12:58 takesako joined #perl6
13:20 cognome joined #perl6
13:21 chenryn joined #perl6
13:23 akaseki joined #perl6
13:26 user3 joined #perl6
13:30 SamuraiJack joined #perl6
13:32 nbrown joined #perl6
13:36 user3 left #perl6
13:36 dalek roast: b289b17 | duff++ | S02-lists/indexing.t:
13:36 dalek roast: Add a test for RT #122423
13:36 dalek roast: review: https://github.com/perl6/roast/commit/b289b17f3a
13:36 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=122423
13:40 jnap joined #perl6
13:42 virtualsue joined #perl6
13:42 pmurias joined #perl6
13:43 pmurias what would be a good way of testing nqp::printfh in combination with nqp::getstdout()/nqp::getstderr()?
13:45 dalek nqp-js: fee00df | (Pawel Murias)++ | TODO:
13:45 dalek nqp-js: Add TODO item.
13:45 dalek nqp-js: review: https://github.com/pmurias​/nqp-js/commit/fee00df376
13:45 dalek rakudo/nom: 6be1028 | duff++ | src/core/Any.pm:
13:45 dalek rakudo/nom: Add a fix for RT #122423
13:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6be102830a
13:45 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=122423
13:52 Pleiades` joined #perl6
13:53 btyler joined #perl6
13:54 dalek rakudo/nom: 3abaf60 | duff++ | t/spectest.data:
13:54 dalek rakudo/nom: Add new file to spectests
13:54 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3abaf6008d
13:57 dalek rakudo/nom: d3988a9 | Carlin++ | src/core/ (2 files):
13:57 dalek rakudo/nom: Disallow file operations on directories
13:57 dalek rakudo/nom:
13:57 dalek rakudo/nom: This prevents rakudo performing file operations on directories on
13:57 dalek rakudo/nom: platforms where the OS itself does not disallow this.
13:57 dalek rakudo/nom:
13:57 dalek rakudo/nom: This fixes RT #122358
13:57 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=122358
13:57 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d3988a9865
13:57 dalek rakudo/nom: 7d92f4c | lizmat++ | src/core/ (2 files):
13:57 dalek rakudo/nom: Merge pull request #297 from carbin/nom
13:57 dalek rakudo/nom:
13:57 dalek rakudo/nom: Disallow file operations on directories (RT #122358)
13:57 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7d92f4cdbc
13:57 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=122358
13:57 masak PerlJam++ # nice fix
13:58 thou joined #perl6
14:02 PerlJam m: .say for 0b11..0xa)
14:02 camelia rakudo-moar fd2b19: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/4mgJswD1v5�Unexpected closing bracket�at /tmp/4mgJswD1v5:1�------> [32m.say for 0b11..0xa[33m�[31m)[0m�»
14:02 dalek nqp-js: 7c29c9d | (Pawel Murias)++ | src/vm/js/nqp-runtime-node/ops/fs.js:
14:02 dalek nqp-js: nqp::printfh works with nqp::getstdout() and nqp::getstdin().
14:02 dalek nqp-js:
14:02 dalek nqp-js: We need tests for that.
14:02 dalek nqp-js: review: https://github.com/pmurias​/nqp-js/commit/7c29c9d252
14:02 PerlJam m: .say for 0b11..0xa
14:02 camelia rakudo-moar fd2b19: OUTPUT«3␤4␤5␤6␤7␤8␤9␤10␤»
14:03 timotimo m: .base(2).say for 0b1..0b1111
14:03 camelia rakudo-moar fd2b19: OUTPUT«1␤10␤11␤100␤101␤110␤111␤1000␤​1001␤1010␤1011␤1100␤1101␤1110␤1111␤»
14:06 timotimo fwiw, i ran features.json through json_verify and it claimed it was valid json
14:06 timotimo so i don't know why the feature comparison matrix doesn't get updated
14:07 ChoHag I've managed to trigger a missing symbol error against a symbol I'm not using.
14:11 dalek nqp-js: 4389197 | (Pawel Murias)++ | TODO:
14:11 dalek nqp-js: Expand on the TODO list.
14:11 dalek nqp-js: review: https://github.com/pmurias​/nqp-js/commit/4389197a7a
14:11 dalek nqp-js: 682a7b5 | (Pawel Murias)++ | src/vm/js/QAST.nqp:
14:11 dalek nqp-js: Add missing file.
14:11 dalek nqp-js: review: https://github.com/pmurias​/nqp-js/commit/682a7b577e
14:17 dalek nqp: 3c49975 | duff++ | / (2 files):
14:17 dalek nqp: Allow other integer representations for ranges in ** quantifier
14:17 dalek nqp: review: https://github.com/perl6/nqp/commit/3c49975d40
14:18 lizmat joined #perl6
14:18 araujo joined #perl6
14:20 cognome joined #perl6
14:25 pmurias HLL::Compiler should close stdout?
14:27 pmurias jnthn: closing the stdout at src/HLL/Compiler.nqp:241 looks like a bug
14:27 rurban1 joined #perl6
14:29 woolfy joined #perl6
14:30 jnthn 241?
14:30 * jnthn sees no close there
14:31 PerlJam I thihnk he means :262
14:31 pmurias jnthn: sorry, 262
14:31 jnthn ah
14:32 jnthn I dunno if it's a bug. Typically beyond that point we're existing the program anyway.
14:32 jnthn *exiting
14:34 FROGGS_ might that explain that I only see the ast printing partial?
14:36 jnthn Hm, maybe?
14:36 FROGGS_ hmmm
14:36 jnthn But I'd hope we'd have flushed before closing...
14:36 jnthn Feel free to try patching it
14:37 FROGGS_ will do, have to fiddle with nqp anyway...
14:37 pmurias shouldn't closing flush?
14:37 FROGGS_ (if/while statements in v5 do not work, the 'immediate' block vanishes)
14:37 dalek nqp-js: fa7ae23 | (Pawel Murias)++ | TODO:
14:37 dalek nqp-js: Remove extra whitespace from TODO.
14:37 dalek nqp-js: review: https://github.com/pmurias​/nqp-js/commit/fa7ae23c42
14:37 dalek nqp-js: 9cbad51 | (Pawel Murias)++ | src/vm/js/nqp-runtime-node/ops/fs.js:
14:37 dalek nqp-js: Support closing stderr and stdout. They are also true when treated as bools.
14:37 dalek nqp-js: review: https://github.com/pmurias​/nqp-js/commit/9cbad51150
14:37 dalek nqp-js: ae24e3e | (Pawel Murias)++ | / (3 files):
14:37 dalek nqp-js: 'make nqp-js.js' works.
14:37 dalek nqp-js: review: https://github.com/pmurias​/nqp-js/commit/ae24e3e796
14:38 timotimo not only perl6 has the :D    → https://plus.google.com/u/0/110214​848059767137292/posts/E5qA2RKtWJH
14:38 PerlJam timotimo++ nice!
14:38 pmurias node ./nqp-js.js --optimize=off -e 'say("Hello World")' | node now works
14:39 FROGGS_ \o/
14:40 treehug88 joined #perl6
14:41 aoseki joined #perl6
14:42 jnap joined #perl6
14:43 chenryn joined #perl6
14:44 woolfy left #perl6
14:45 lizmat PDX -> AMS commute&
14:47 hoelzro lizmat: safe flight!
14:48 [Coke] pmurias++
14:49 pmurias the current biggest problem with the build process is that I'm depending on a preinstalled nqp-p to build the cross-compiled-to-parrot nqp-js
14:49 dalek tablets: 301d306 | (Herbert Breunung)++ | docs/ (3 files):
14:49 dalek tablets: preparing and modernize op tablet + related bits
14:49 dalek tablets: review: https://github.com/perl6/tablets/commit/301d306c3f
14:50 rindolf joined #perl6
14:50 chenryn joined #perl6
14:50 jnthn I'm not sure I'd call a longhaul flight a commute... :P
14:51 brrt joined #perl6
14:54 hoelzro pmurias++
14:57 matija joined #perl6
14:58 dalek roast: bffb321 | Carlin++ | S (5 files):
14:58 dalek roast: Test that file operations on directories fail
14:58 dalek roast:
14:58 dalek roast: On some platforms the OS itself does not enforce this
14:58 dalek roast: review: https://github.com/perl6/roast/commit/bffb32147a
14:59 psch joined #perl6
15:03 Vendethiel pmurias++
15:05 carlin \o/ one OpenBSD spectest failure down
15:05 carlin if my moar pull req gets merged it'll be clean
15:06 carlin oh except for S02 KERNEL and DISTRO failures but they're more informative than actual failures...
15:09 masak carlin++
15:11 prevost joined #perl6
15:11 chenryn joined #perl6
15:12 telex joined #perl6
15:12 dayangkun joined #perl6
15:17 dalek nqp: 294a1fe | (Tobias Leich)++ | src/HLL/Compiler.nqp:
15:17 dalek nqp: flush filehandles and do not close stdout
15:17 dalek nqp:
15:17 dalek nqp: AST printing was broken on my machine, also pmurias++ found the bug where we
15:17 dalek nqp: close stdout when this is either not wanted or sane.
15:17 dalek nqp: review: https://github.com/perl6/nqp/commit/294a1fe264
15:17 FROGGS_ I'm not going to bump revision in rakudo, because that is just a bit more than cosmetics
15:17 ventica2 m: say so "good", "morning", "#perl6";
15:17 camelia rakudo-moar 7d92f4: OUTPUT«Truemorning#perl6␤»
15:17 FROGGS_ hi ventica2
15:17 ventica2 hi
15:18 ventica2 m: say so ("good", "morning", "#perl6"); #oops, precedence
15:18 camelia rakudo-moar 7d92f4: OUTPUT«True␤»
15:18 masak apparently 'so' considers itself a prefix op, not a sub.
15:18 masak m: say &so
15:18 camelia rakudo-moar 7d92f4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/PiL3Yb0DxLâ�¤Undeclared routine:â�¤    &so used at line 1â�¤â�¤Â»
15:18 masak m: say &prefix:<so>
15:18 camelia rakudo-moar 7d92f4: OUTPUT«sub prefix:<so> (Mu) { #`(Sub+{<anon>}|139915261910160) ... }␤»
15:19 masak that... makes sense, since prefix:<not> is an op.
15:19 Vendethiel masak: yeah, it's an op.
15:19 carlin ventica2: True morning to you to :p
15:19 masak not False morning to you, ventica2!
15:20 raiph joined #perl6
15:20 cognome joined #perl6
15:20 hoverboard joined #perl6
15:27 rindolf joined #perl6
15:28 masak whuu, Python can do string concat through juxtaposition.
15:28 TimToady that's...not a feature
15:28 TimToady that's a bug
15:29 FROGGS_ *g*
15:29 FROGGS_ TimToady: there is more than one way to concat :P
15:29 timotimo masak: explain that to me please?
15:29 pmurias "a" "b"
15:29 timotimo juxtaposition? as in, just writing strings next to each other?
15:29 pmurias timotimo: yes
15:29 timotimo why is that not a feature?
15:30 TimToady destoys self-clocking
15:30 TimToady *stroys
15:30 TimToady same reason P5-style indirect objects was a bad idea
15:30 timotimo psst
15:30 timotimo self-clocking is only a feature in perl6
15:31 timotimo no other language cares for that sillyness
15:31 TimToady well, it's a feature in P5 too, just not done as well
15:31 awwaiid self-clocking?
15:31 TimToady an extra channel of information that lets you know if you've gotten out of sync
15:32 TimToady many human languages have self-clocking features for redundancy
15:32 TimToady UPC codes are self-clocking
15:32 TimToady every pair of bars and spaces will add up to a width of 7
15:33 FROGGS_ timotimo: C does too
15:33 TimToady self-clocking let's you catch errors much earlier
15:33 awwaiid er. example plz?
15:33 TimToady like leaving out the semicolon
15:34 FROGGS_ btw, first time I've seen P6 being mentioned besides other languages: http://en.wikipedia.org/wiki/Comparison​_of_programming_languages_%28strings%29
15:34 awwaiid ah. Or even the presence sigils
15:34 TimToady well, they're noun markers, so it's easy to see if you've accidentally put two nouns in a row
15:34 awwaiid ya, ok
15:41 colomon joined #perl6
15:44 mr-foobar joined #perl6
15:53 dalek perl6-roast-data: c5d9f80 | coke++ | / (5 files):
15:53 dalek perl6-roast-data: today (automated commit)
15:53 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/c5d9f808d4
15:59 gfldex joined #perl6
16:02 [Coke] FROGGS: did some diving, the perl 6 reference was added by Dreftymac on 31 Oct 2006.
16:04 [Coke] Do we have a rakudo-jvm champion at the moment? aa
16:05 pmurias what's the state of rakudo-jvm is it progressing or has the development shifted to rakudo-moar?
16:06 [Coke] no one is doing active dev on rakudo-jvm as far as I can tell. lots of daily failures. Much more interesting stuff going on for moar.
16:07 [Coke] as someone who has said he'd use rakudo-jvm at work, I should probably try harder to fix the fails.
16:18 cognominal joined #perl6
16:18 cognome joined #perl6
16:24 ventica2 carlin masak: haha thx
16:27 masak this just in: only string *literals* in Python juxtapose. I guess that saves self-clocking.
16:27 xinming joined #perl6
16:28 masak (because that means N juxtaposed string literals are isomorphic to a single one)
16:29 masak in other news, you may (or may not) remember the discussion a few months back about Python indentation, merge conflicts, and redundancy.
16:29 masak I just realized that the colons are a form of redundancy in Python, just as good as '{', basically.
16:29 masak but there's still no '}' analogue.
16:31 * ventica2 is a secret fan of indentation ala YAML, but not Python-style where the indentation is directly chained to the syntax...
16:31 masak ventica2: what's the difference?
16:32 masak more specifically, isn't YAML indentation also "directly chained to the syntax"?
16:33 ventica2 well I misspoke it's not so much the syntax as what the semantics... YAML is a data language and my brain "groks" the indentation of data ... but indentation to create syntactical structures seems bureaucratic to me
16:34 masak interesting.
16:34 masak ventica2: do you have the same objection to pseudocode?
16:34 ventica2 So, a YAML hash entry is created by foo: followed by an indent.... another element can be added to the hash by a dedent, bar: and then another indent... that makes sense to me
16:34 Rotwang joined #perl6
16:36 ventica2 masak: probably
16:37 ventica2 masak: I pretty much buy into the Perl philosophy of whitespace... whitespace should be freely and liberally used to visually format visible syntactical elements
16:37 ventica2 I compulsively line up ='s... i had to install Tabular in vim lol
16:37 ventica2 but I also think a well-designed data-serialization format can accomplish this: http://pastebin.com/8paDRaSM
16:38 ventica2 do we have a .yaml like the .perl and .gist?
16:38 ventica2 ruby does and I like that idea
16:38 masak I used to compulsively line up = signs, and many other elements, too. seems I somehow stopped doing that, at least most of the time.
16:38 masak ventica2: no .yaml built in, no.
16:38 ventica2 k
16:39 ventica2 i assume thre is a way to add that in without hacking the core?
16:39 xinming joined #perl6
16:41 ventica2 i think i'm thinking of adding a method to Mu class? (have not got to the OO synopsis yet...)
16:42 ventica2 m: my @a=<a b c>; for @a -> $x, $y { say $x; say $y; };
16:43 camelia rakudo-moar 7d92f4: OUTPUT«a␤b␤Not enough positional parameters passed; got 1 but expected 2␤  in block  at /tmp/iuvXk_oGml:1␤␤»
16:43 ventica2 interesting, dyn. failure
16:43 PerlJam ventica2: use MONKEY_TYPING;  class Mu { method yaml(...) { ... } }   # something like that.
16:44 jnthn m: my @a=<a b c>; for @a -> $x, $y? { say $x; say $y; }; # can make it optional if you want to not explode
16:44 camelia rakudo-moar 7d92f4: OUTPUT«a␤b␤c␤(Mu)␤»
16:44 ventica2 seems a little DWIM-deficient?  What about just using Whatever when passing an odd-numbered array to a pointy-block with even-numbered arguments?
16:44 ventica2 PerlJam: thx
16:44 ventica2 jnthn: OK
16:46 ventica2 masak: I find myself doing it increasingly more... it's like a bad habit that just gest worse :P
16:46 masak ventica2: well, make sure you at least have editor support for it, so you don't waste your time doing it manually.
16:47 ventica2 no doubt... hence Tabular
16:48 ventica2 afk &
16:49 `matija joined #perl6
16:50 japhb joined #perl6
17:00 carlin clang's output while building moar/rakudo hurts to look at... probably why it's called clang
17:06 ventica2 is there a .bytes?
17:06 ventica2 m: say "foo".chars;
17:06 camelia rakudo-moar 7d92f4: OUTPUT«3␤»
17:06 ventica2 m: say "foo".bytes;
17:06 camelia rakudo-moar 7d92f4: OUTPUT«No such method 'bytes' for invocant of type 'Str'␤Did you mean '.encode($encoding).bytes'?␤  in block  at /tmp/_FlgGbuUBb:1␤␤»
17:07 ventica2 m: say "foo".utf8.bytes;
17:07 camelia rakudo-moar 7d92f4: OUTPUT«No such method 'utf8' for invocant of type 'Str'␤  in block  at /tmp/8qqx81fF0l:1␤␤»
17:07 carlin m: say "foobar".encode("ascii").bytes
17:07 camelia rakudo-moar 7d92f4: OUTPUT«6␤»
17:07 ventica2 aha
17:07 ventica2 ty
17:09 adu joined #perl6
17:10 rindolf joined #perl6
17:12 ventica2 m: my %h = 'foo' => 1, 'bar' => 2; for %h.keys -> $k {say $k}
17:12 camelia rakudo-moar 7d92f4: OUTPUT«foo␤bar␤»
17:13 ventica2 m: my %h = 'foo' => 1, 'bar' => 2; for %h :k -> $k {say $k}
17:13 camelia rakudo-moar 7d92f4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/T_BYZ1so4nâ�¤You can't adverb thatâ�¤at /tmp/T_BYZ1so4n:1â�¤------> [32my %h = 'foo' => 1, 'bar' => 2; for %h :k[33mâ��[31m -> $k {say $k}[0mâ�¤    expecting any of:â�¤        pair valueâ�¤Â»
17:14 vendethiel joined #perl6
17:14 ventica2 m: my %h = 'foo' => 1, 'bar' => 2; for %h<foo bar> :k -> $k {say $k}
17:14 camelia rakudo-moar 7d92f4: OUTPUT«foo␤bar␤»
17:14 ventica2 m: my %h = 'foo' => 1, 'bar' => 2; for %h<foo bar> :exists :k -> $k {say $k}
17:14 camelia rakudo-moar 7d92f4: OUTPUT«Unsupported combination of named parameters (exists, k) passed to Hash %h␤  in method gist at src/gen/m-CORE.setting:12903␤  in sub say at src/gen/m-CORE.setting:13841␤  in block  at /tmp/lMDXcfeav7:1␤␤»
17:15 ventica2 m: my %h = 'foo' => 1, 'bar' => 2; for %h<foo bar> :exists -> $k {say $k}
17:15 camelia rakudo-moar 7d92f4: OUTPUT«True␤True␤»
17:19 ventica2 m: my $a=0; say $a infix:<+> 1;
17:19 camelia rakudo-moar 7d92f4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/FZoPAbTVrdâ�¤Two terms in a rowâ�¤at /tmp/FZoPAbTVrd:1â�¤------> [32mmy $a=0; say $a [33mâ��[31minfix:<+> 1;[0mâ�¤    expecting any of:â�¤        postfixâ�¤        infix stopperâ�¤        infix …»
17:21 ventica2 m: $a=13; say :2($a); say :16($a);
17:21 camelia rakudo-moar 7d92f4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/Z_3THAxrFEâ�¤Variable '$a' is not declaredâ�¤at /tmp/Z_3THAxrFE:1â�¤------> [32m$a[33mâ��[31m=13; say :2($a); say :16($a);[0mâ�¤    expecting any of:â�¤        postfixâ�¤Â»
17:22 rindolf Hi all.
17:22 rindolf TimToady: hi, how are you feeling?
17:22 Ven joined #perl6
17:23 timotimo carlin: you're of course free to fix some of teh warnings clang comes up with :)
17:26 raydiak good morning #perl6
17:26 timotimo it's no fun hacking in more and more ops for the jit to use when it segfaults really early into stage compile and even nqp builds ;(
17:29 ventica2 m: sub f { return @_.perl }; say f("hi!");
17:29 camelia rakudo-moar 7d92f4: OUTPUT«Array.new("hi!")␤»
17:30 ventica2 m: say -> { return "foo" };
17:30 camelia rakudo-moar 7d92f4: OUTPUT«-> () { #`(Block|140384833825296) ... }␤»
17:31 itz left #perl6
17:31 itz joined #perl6
17:35 rindolf raydiak: morning.
17:36 treehug88 joined #perl6
17:51 raydiak timotimo: re performance improvements you were talking about last night, it seems that moar is much faster than jvm for pray now, but if memory serves, jvm has gotten substantially slower (though I haven't actually tested an old version yet for direct comparison)
17:52 timotimo oh
17:52 timotimo that's not good :(
17:52 raydiak like, if I'm right, it's around half as fast as it was earlier this year...
17:52 timotimo that seems better
17:52 timotimo bad*
17:52 FROGGS_ wow
17:54 raydiak I'll actually test it today, but I think it's the same scene on the same version of pray on the same vps, gets like 20 pixels/sec now, used to be more like 45
17:54 timotimo it would be fantastic if you were able to verify that
17:54 timotimo that's a pretty bad performance hit
17:54 [Coke] is rakudo-jvm on rakudo-bench?
17:54 timotimo unfortunately, the IP address of my home computer seems to have changed, so i can't use it to benchmark properly now :(
17:54 timotimo yes, you can just build it
17:55 raydiak sure, I'll start building an old version right now
17:55 timotimo thank you
17:56 raydiak yesterday's moar got like 30 or 35 on the same scene though, in happy news :)
17:56 zakharyas joined #perl6
17:57 timotimo that's not as much as 45 :(
17:57 raydiak better than it used to be
17:58 raydiak which I suppose is a painfully obvious statement
18:01 timotimo :)
18:01 timotimo it'd also be interesting if we regressed
18:01 timotimo not as nice, but still good to know
18:02 rindolf joined #perl6
18:02 raydiak I seem to have regressed on my ability to use p6bench
18:03 xinming joined #perl6
18:03 timotimo how can i help you?
18:03 timotimo also, did you pull recently?
18:04 raydiak yep
18:04 kaleem joined #perl6
18:04 raydiak how do I get a version from like december installed of rakudo jvm?
18:04 raydiak well, not *installed* but built...you know what I mean
18:04 timotimo ./bench build rakudo-jvm/2013.10
18:04 timotimo we have tags for releases that are YYYY.MM, so you can use that
18:05 timotimo well, have to extract first, then build
18:05 raydiak why .10?  would expect 11 or 12 for december
18:06 jnthn .12 would be December
18:06 jnthn The other consideration is JVM version.
18:07 raydiak .10 fails configuring nqp with "Unknown option: backends"
18:07 raydiak jnthn: I had wondered whether something was wrong with my jvm, got updated/replaced, or something like that
18:08 jnthn raydiak: I got a slowdown on a newer JVM vs the one I initially did the port on :( Didn't get to investigate further, or see if latest is better again.
18:09 raydiak well, when 2013.12 finishes building, I'll know for sure if it's that or not
18:09 jnthn ok :)
18:09 raydiak though tbh I'm not sure if I've done any maintinence to my server this year like updates :P
18:10 dwarring joined #perl6
18:12 raiph joined #perl6
18:16 Ven joined #perl6
18:16 raydiak argh building failed because I have to shove -Xms and -Xmx params into one of the build files at a certain step to get it to work on this machine...starting over
18:18 [Sno] joined #perl6
18:20 timotimo raydiak: i have to do a linear search (and use my fingers) each time i want to get from month-name to number and back
18:20 timotimo raydiak: so i guessed
18:21 raydiak timotimo: I know what you mean, I just have an easier time with the ones closer to the ends
18:22 raydiak after 30 years, I have 1-4 and 10-12 down pretty well :)
18:31 dalek tablets: f736d43 | (Herbert Breunung)++ | docs/appendix-c-classtree.txt:
18:31 dalek tablets: classtree stub, remove misleading stuff
18:31 dalek tablets: review: https://github.com/perl6/tablets/commit/f736d437fd
18:31 treehug88 joined #perl6
18:32 timotimo raydiak: the date you were using must have been at a point when we still had Configure.pl and ConfigureJVM.pl
18:32 timotimo we have moritz++ to thank for the new system with --backends
18:34 raydiak ah, cool
18:35 raydiak I'd certainly hate to have a different configure for each backend
18:35 timotimo aye.
18:35 timotimo back then you could only build a single backend per checkout of the source tree
18:37 raydiak moritz++ indeed
18:44 [Coke] timotimo: which is what all the normal kids do anyway, even with the new system. :)
18:44 FROGGS_ [Coke]: not true :o)
18:45 colomon errr… "Heap corruption detected: pointer 0x10776ae98 to past fromspace"
18:45 raydiak theres normal kids around here?
18:46 geekosaur ...what is this "normal" of which you speak?
18:47 carlin I tried being normal once, it was the worst 2 minutes of my life
18:47 raydiak geekosaur: he must mean a vector perpendicular to a plane
18:48 timotimo [Coke]: well, i don't ...
18:49 FROGGS_ raydiak: *g*
18:50 [Coke] I am usually testing something; I want the fastest build time to get each platform I'm testing. Can't wait for java when all I want is moar.
18:51 [Coke] not like the build really has any steps in common for the backend.
18:51 timotimo that's why there is m-install, j-install and p-install targets :)
18:51 [Coke] timotimo: yes, but why -build- java if I'm interested in the latest moar?
18:52 FROGGS_ because you can...
18:52 [Coke] makes the turnaround time for testing horrible. (... which probably explains why my daily runs still have the most jvm failures. :( )
18:53 [Coke] FROGGS_: apparently I need an upgrade on my primary dev machine, then. :P
18:53 timotimo [Coke]: m-install will not build java
18:53 timotimo m-install will only build moar for you and install that
18:53 colomon jnthn: "Heap corruption detected: pointer 0x10776ae98 to past fromspace" ?
18:53 * [Coke] is really glad that option works for folks. I just don't see how it helps.
18:54 jnthn colomon: -> MoarVM bug report with whatever details you can offer to reproduce it
18:54 FROGGS_ colomon: others have reported that too, but there is no knowledge about what's going on atm
18:54 [Coke] timotimo: it won't even build nqp-jvm? ok.
18:55 colomon jnthn, FROGGS_: seeing what I can do.  but the very quick version is, I got this running t/08-combinations.t from List::Utils
18:55 FROGGS_ I usually build for all backends, because I wanna test my changes on all of them... (even when I tend to not run j-spectest)
18:55 timotimo well, building nqp and such isn't part of the "make" step, it's part of the "configure" step (or, if you don't use --gen-nqp, the make step for nqp)
18:56 timotimo (i personally don't use --gen-* in my working copy)
18:56 [Coke] timotimo: right - does it build nqp-jvm as part of the configure step, even if I'm only going to runb make m-install? It has to, right?
18:56 [Coke] I always use gen
18:56 timotimo if you use the gen option, then yes, it has no influence
18:56 timotimo i personally build rakudo way more often than nqp, though
18:57 [Coke] as do i. the gen option only builds if needs be.
18:57 [Coke] (based on revision, not backend)
18:58 * [Coke] tries a rakudo.jvm on his mac, it's been a while.
18:58 jnthn colomon: OK; flussence++ also reported a possibly related explosion and was bisecting earlier...
19:01 woosley joined #perl6
19:03 colomon jnthn: I'm utterly baffled by this at the moment.
19:03 colomon jnthn: I haven't been able to duplicate it.
19:04 colomon jnthn: but something has happened twice now -- once (unknown failure) in the smoke run overnight, and then the time I reported above.
19:04 colomon haven't seen it happen again.  :\
19:05 ivanshmakov joined #perl6
19:05 * [Coke] wonders tools/build/gen-cat.pl is using perl5 and not nqp.
19:05 [Coke] *why*
19:06 [Coke] seems like a LHF to move that over and use a little more dogfood.
19:14 PerlJam Coke: which nqp?  nqp-j, nqp-p, or nqp-m  ?    (seems like an extra little hurdle to jump there)
19:18 brrt joined #perl6
19:19 raydiak okay, pray's first example scene does render somewhat faster using december rakudo jvm, but nowhere near the huge discrepency I was talking about
19:20 itz_ joined #perl6
19:20 raydiak I'm starting to think I may have used a sphere instead of a cube back then, but in any case, as much as I'm able to test right now, moar is a good 60+% faster than jvm
19:21 jnthn raydiak: And faster than JVM was back then too?
19:22 colomon jnthn: oh, managed to get the Heap corruption again.
19:23 raydiak jnthn: well I have recollections of getting about 15-20% higher speeds than I do now under any circumstances, but I think I was probably testing with a phere instead of a cube back then
19:23 raydiak jnthn: but faster than I test old jvm to be now, yes
19:23 raydiak ^^*sphere
19:25 jnthn So I've nothing to phere? :)
19:25 raydiak ha, it does seem that way :)  after a few different runs, it's around this neighborhood: old jvm: 20; new jvm: 15; new moar: 30
19:26 timotimo sweet :)
19:27 * jnthn should spend some time teaching the JVM some of the things we've learned in the Moar backend.
19:27 [Coke] PerlJam: we're using it in rakudo's build, so it should be whatever the nqp used to build rakudo is, since you already had to build it or have it. no hurdle.
19:27 [Coke] if you can do that, maybe you can pre-teach js? ;)
19:29 liztormato joined #perl6
19:30 rindolf joined #perl6
19:31 itz joined #perl6
19:32 raydiak walk to the corner store &
19:34 raiph joined #perl6
19:34 * liztormato is waiting for her flight, which has been delayed ~2 hours
19:35 timotimo :|
19:35 timotimo did you bring your coat?
19:35 liztormato No. Should I have?
19:39 timotimo not sure
19:39 timotimo the meme this comes from did not prepare me for this question
19:39 jnthn liztormato: ugh, delay. But safe travels.
19:39 jnthn liztormato: Is this the cross-atlantic leg?
19:39 liztormato Yup
19:40 liztormato PDX -> AMS
19:40 timotimo airplanes are safer than walking
19:41 liztormato By number of km travelled, yes!
19:41 Ven joined #perl6
19:42 liztormato By number of persontrips, I'm not too sure
19:42 nwc10 as a child (before the first shuttle accident) I think I estimatd that space travel was safer still, per passenger km
19:42 timotimo also, most people who try to walk across the ocean would probably die
19:42 liztormato Lies, damn lies and statistics!
19:42 nwc10 the moon is a long way
19:42 nwc10 exactly.
19:43 beastd joined #perl6
19:43 liztormato And a harsh mistress
19:43 timotimo and people who somehow manage to walk towards the moon will soon find they didn't bring enough breathable air with them
19:43 [Coke] safe travels, liztormato!
19:43 liztormato If you can walk to the moon, you don't need air
19:43 itz_ joined #perl6
19:44 liztormato Thanks all!
19:45 Ven o/
19:45 timotimo heyo ven
19:45 Ven hey timotimo, do you plan to do a weekly ?
19:46 timotimo yes
19:46 timotimo i just opened the wordpress editor
19:46 timotimo and grumbled about google keep keeping (haha, get it?) my data on my phone and not syncing it to the web ...
19:46 Ven good :). timotimo++ raiph++
19:47 denis_boyun joined #perl6
19:49 timotimo the irc summaries weren't terribly helpful this time around
19:49 timotimo i wonder why
19:53 raydiak back
19:54 timotimo i has something to push :3
19:55 dalek rakudo/nom: c9fc8af | (Timo Paulssen)++ | src/vm/moar/ops/perl6_ops.c:
19:55 dalek rakudo/nom: if available, use MVM_spesh_get_and_use_facts.
19:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c9fc8af5f4
19:55 timotimo this ought to work with a master moar and a split_get_use_facts moar
19:56 ventica2 m: for 1 .. * -> $a, $b { say $a; last if $b > 4 };
19:56 camelia rakudo-moar 7d92f4: OUTPUT«1␤3␤5␤»
19:58 ventica2 general implementation questions: 1) how do later statements "track back" to the lazy list they are touching and tell it "give me another one!" and 2) do overwritten values of a lazy list just "go away" or do they hang around and take up space? In the above loop, 3 overwrites 1 in $a... what happened to that 1 in terms of the memory model?
20:01 timotimo ... what
20:01 timotimo lazy lists have a "reified" part, which is basically a regular list, and at least one generator part
20:02 timotimo so if you overwrite (or even read) any given position that's beyond the reified part, all entries up to that point will be reified for you
20:02 treehug88 joined #perl6
20:03 timotimo now i understand what you mean with "3 overwrites the 1"
20:03 timotimo in this case it's actually more like a second call to the pointy block, so the $a that used to be will no longer be there
20:03 timotimo but since lists keep their initial part reified, the 1 will still be there
20:03 brrt joined #perl6
20:04 timotimo it might be the case that we use a RangeIter or something in this case so we don't actually keep the list around
20:04 jnthn It'll be a GatherIter I think
20:04 jnthn And I think it'll be munching its way through the data rather than keeping it.
20:04 timotimo that'd be nice
20:05 ventica2 thx, that helps... so it looks like the implementation can either keep the values around or discard them, as appropriate
20:06 ventica2 i just have this foggy worry that if I do a loop a billion times (perfectly reasonable), and i use a lazy list for the iterator, I don't want a billion unused entries in memory that only came into existence as transient counter values
20:17 liztormato joined #perl6
20:19 timotimo we already turn for ^$n { } into a simple c-style loop; maybe at some point we'll do betetr with more complicated lists, too
20:22 ventica2 m: ^3 { say "hi"; }
20:22 camelia rakudo-moar 7d92f4: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/DE9WOtC4Fxâ�¤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?)â�¤at /tmp/DE9WOtC4Fx:1â�¤------> [32m^3 [33mâ��[31m{ say "hi"; }[0mâ�¤    expecting…»
20:22 ventica2 m: for ^3 { say "hi"; }
20:22 camelia rakudo-moar 7d92f4: OUTPUT«hi␤hi␤hi␤»
20:32 Ven joined #perl6
20:35 lizmat joined #perl6
20:37 Ven so, so, onto warn and fail ... *tries to get a grasp of Perl 6's exception-like thinges*
20:44 [Coke] j: say "hi"
20:44 camelia rakudo-jvm c9fc8a: OUTPUT«hi␤»
20:45 lizmat j: say 42.WHY
20:45 camelia rakudo-jvm c9fc8a: OUTPUT«Life, the Universe and Everything␤»
20:46 lizmat sane, I would say :-)
20:46 [Coke] -1. :P
20:47 [Coke] https://github.com/perl6/roast/blo​b/master/S02-names/is_cached.t#L78
20:47 [Coke] tests 34 and 38 (38 is the last) are explicitly testing that the cache was used, yes?
20:48 FROGGS_ ahh, that feels good... v5 (written in Perl 6) passes now the first three tests since the rewrite...
20:49 [Coke] according to S06, that seems like an over eager test.
20:49 [Coke] "The compiler is free to choose any kind of caching algorithm (including non-expiring, random, lru, pseudo-lru, or adaptive algorithms, or even no caching algorithm at all)."
20:50 hoverboard joined #perl6
20:56 dalek roast: 4da0e24 | coke++ | S02-names/is_cached.t:
20:56 dalek roast: add link to RT #122425, fudge for jvm
20:56 dalek roast: review: https://github.com/perl6/roast/commit/4da0e24ffb
20:56 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=122425
20:57 Khisanth joined #perl6
21:03 * masak only now realizes that the Easter egg would have made a lot more sense if "Life, the Universe and Everything".WHY was 42
21:04 timotimo that's true
21:04 itz_ I'm seeing perl6-p fails with t/spec/S02-types/bool.t and modules/jsonrpc/t/server.t
21:06 Ven lazy, sink, quietly, contend don't get much docs. I'll try to check roast ...
21:06 akaseki joined #perl6
21:07 jnthn I think contend may well be fossil
21:08 timotimo what, did we kick out STM again? :(
21:08 timotimo sergot: do you have something i should report in this weekly (which also covers the week before last week)?
21:10 timotimo http://p6weekly.wordpress.com/?p=​203&amp;shareadraft=53d6bc4a3b55c - this is the draft so far
21:12 lizmat timotimo: yes, STM is kicked out for the moment
21:12 lizmat definitely post 6.0
21:12 timotimo okay
21:12 timotimo lizmat: how's your flight? are you on it yet?
21:12 lizmat nope, waiting for the plane to get ready
21:12 lizmat it was delayed out of Amsterdam because of the bad weather therel, I suppose
21:13 timotimo OK
21:13 gtodd is there a nice way match the first 10 characters of a string and move them to the end ... p6-ishly?  (my $new = $old) =~ s/^(\d{10})(.*)/$2$1/dg;
21:13 timotimo we have a nice little thunderstorm in karlsruhe right now as well
21:13 lizmat I'm looking at the plane now, and the captain and crew already entered the plane
21:14 lizmat so I guess they're doing their pre-flight checks
21:14 gtodd or better yet which pod doc page to read   :-|
21:14 timotimo m: say <1 2 3 4 a b c d>.rotate(3);
21:14 camelia rakudo-moar c9fc8a: OUTPUT«4 a b c d 1 2 3␤»
21:14 timotimo m: say "Sixteen characters.".comb.rotate(-10).join
21:14 camelia rakudo-moar c9fc8a: OUTPUT«haracters.Sixteen c␤»
21:14 gtodd I think I am running into TATMNWMTOWDI
21:14 gtodd too many new waywa to do it
21:14 gtodd ways
21:15 dalek rakudo/nom: c00999a | (Elizabeth Mattijsen)++ | src/core/ (2 files):
21:15 dalek rakudo/nom: Properly easter egg 42
21:15 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c00999af21
21:15 gtodd argh ... you see I knew there was a .method  for my madness
21:15 lizmat masak++
21:16 raiph joined #perl6
21:16 brrt left #perl6
21:16 timotimo %)
21:16 timotimo it's not as efficient as doing a substr + concat, though
21:17 dalek specs: 51502a2 | (Elizabeth Mattijsen)++ | S04-control.pod:
21:17 dalek specs: Powderize contend fossil
21:17 dalek specs: review: https://github.com/perl6/specs/commit/51502a2a60
21:17 timotimo m: say(my $s = "Sixteen characters.").substr(10) ~ $s.substr(*-10)
21:17 camelia rakudo-moar c9fc8a: OUTPUT«Sixteen characters.␤===SORRY!===␤Start of substr out of range. Is: 10, should be in 0..4␤»
21:17 timotimo m: say (my $s = "Sixteen characters.").substr(10) ~ $s.substr(*-10)
21:17 camelia rakudo-moar c9fc8a: OUTPUT«aracters.haracters.␤»
21:17 masak lizmat: ;)
21:18 gtodd timotimo: ok I have string objects ... errm not lists :-D
21:18 gtodd forgot
21:18 timotimo m: say (my $s = "Sixteen characters.").substr(10) ~ $s.substr(10, *-10)
21:18 camelia rakudo-moar c9fc8a: OUTPUT«===SORRY!===␤Length argument to substr out of range. Is: -1, should be in 0..Inf; use *-1 if you want to index relative to the end␤»
21:18 timotimo gtodd: that's what .comb is for
21:25 timotimo gtodd: .comb without arguments turns a string into a list of its characters
21:30 lizmat boarding's starting, see you on the other side of the pond&
21:37 nbrown joined #perl6
21:39 masak lizmat: safe flight!
22:14 pecastro joined #perl6
22:18 xubuntu joined #perl6
22:36 dmol joined #perl6
22:44 masak 'night, #perl6
22:45 timotimo gnite masak!
22:45 timotimo looking forward to your further work on escape analysis :)
22:53 dalek joined #perl6
23:37 hoverboard left #perl6
23:50 ventica2 m: say "foo".comb; #checking it out...
23:50 camelia rakudo-moar c00999: OUTPUT«f o o␤»
23:50 ventica2 nice
23:51 timotimo comb is, so to speak, the opposite of split
23:51 timotimo hm, not the opposite, i guess
23:51 timotimo the congruent operator maybe?
23:52 BenGoldberg joined #perl6
23:52 xragnar_ joined #perl6
23:56 gtodd ventica2: when I use .comb I think of that song by Jim White "https://www.youtube.com/watch?v=nZEAhyib-lw"  Combing my hair in a brand new style
23:57 timotimo http://www.1-script.com/forums/perl/le​arning-english-with-perl6-139094-.htm - what just happened
23:57 ventica2 :P
23:58 ventica2 m: say "foo".split();
23:58 camelia rakudo-moar c00999: OUTPUT«Cannot call 'split'; none of these signatures match:␤:(Cool: Regex $pat, Any $limit = { ... }, Any :all($all), *%_)␤:(Cool: Cool $pat, Any $limit = { ... }, Any :all($all), *%_)␤:(Str:D: Regex $pat, Any $limit = { ... }, Any :all($all), *%_)␤:(Str:…»
23:58 ventica2 m: say "foo".split(//);
23:58 camelia rakudo-moar c00999: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/fAAlPNX2fU�Null regex not allowed�at /tmp/fAAlPNX2fU:1�------> [32msay "foo".split(//[33m�[31m);[0m�»
23:58 ventica2 hrm
23:58 timotimo m: say "foobar".split("")
23:58 camelia rakudo-moar c00999: OUTPUT«f o o b a r␤»
23:59 BenGoldberg m: say "foobar".comb
23:59 camelia rakudo-moar c00999: OUTPUT«f o o b a r␤»
23:59 BenGoldberg m: say Mu.comb
23:59 camelia rakudo-moar c00999: OUTPUT«No such method 'comb' for invocant of type 'Mu'␤  in block  at /tmp/Bxg0ttJjf_:1␤␤»
23:59 BenGoldberg m: say Any.comb
23:59 camelia rakudo-moar c00999: OUTPUT«No such method 'comb' for invocant of type 'Any'␤  in block  at /tmp/YEy9nKOnAr:1␤␤»
23:59 lue timotimo: I think (based just on reading the article) the fancy word to describe comb and split would be "obversion"  https://en.wikipedia.org/wiki/Obversion

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

Perl 6 | Reference Documentation | Rakudo