Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2014-10-18

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 tadzik what a night
00:01 Mso150_x joined #perl6
00:01 xenoterracide_ joined #perl6
00:02 Hor|zon joined #perl6
00:02 jnthn tadzik: Dare I ask? :)
00:03 tadzik jnthn: sure
00:03 tadzik jnthn: so, I was to get back from $work trip in Wrocław to Warsaw
00:03 tadzik my plane was supposed to leave on 21:00
00:03 tadzik it was delayed something like 2 hours
00:03 jnthn Oh my, here comes a transport story :)
00:03 jnthn Urgh.
00:03 jnthn That *does* suck
00:03 tadzik because fog in Warsaw
00:03 tadzik they tried to get us on board twice, on the second try we actually took off
00:04 tadzik we flew to Warsaw, then flew above Warsaw for like half an hour
00:04 jnthn Given the flight was probably scheduled as under an hour...
00:04 tadzik (55 minutes, yes)
00:04 tadzik so we flew over Warsaw for a while, and the pilot says "nah, the fog still sucks and we're running out of fuel, time to get back to Wrocław"
00:05 tadzik you know the sound that cars make, when you overtake someone on the highway? You shift the gear down, push pedal to the metal
00:05 tadzik turns down that's also how airplanes get from Warsaw to Wrocław in 20 minutes
00:05 tadzik at least that's how it sounded like
00:05 jnthn o.O
00:05 Mso150 joined #perl6
00:05 tadzik and I managed to get a place on a flight on 5:something
00:05 tadzik (not everyone did)
00:05 tadzik some will fly on 14:something
00:05 jnthn That's..."lucky"
00:06 tadzik I hope that this 5:something will land this time
00:06 tadzik not so obious
00:06 jnthn Yeah...I'm a tiny bit surprised that some kind of instrument landing wasn't possible.
00:06 tadzik so I got a hotel and about 2 hours of sleep, yey
00:06 tadzik apparently the plane is not properly equipped
00:06 jnthn Oh.
00:07 tadzik and it will be the same one on my 5am flight
00:07 tadzik so, yeah
00:07 jnthn I was gonna be really surprised if it was the airport that wasn't equipped...
00:07 * jnthn remembers a couple of landings on flights where it was extremely obvious the appraoch could never have been done visually
00:07 jnthn Too bad the plane you had wasn't up to it. :(
00:07 tadzik heh, some said WAW actually handles this, but our propelled airplane did not
00:08 tadzik well, it's quite an adventure :)
00:08 tadzik I lol'd a lot today, a few times it sounded a bit like f#%k though
00:09 jnthn Oh, a prop? No wonder it was so darn noisy when it the pilot throttled it...
00:09 tadzik hope is that $job will count it as another work day, or at least give me a cookie or something ;P
00:09 jnthn One can only hope ;)
00:09 * jnthn is flying to Malaysia tomorrow
00:09 tadzik oh, cool
00:09 tadzik Malaysian airlines?
00:10 jnthn No!!!
00:10 tadzik :D
00:10 * TimToady has flown Malaysia Airlines but in the opposite direction that got shot down
00:10 jnthn Emirates, via Dubai...
00:10 arnsholt Malaysian is supposedly a very nice airline
00:10 jnthn Which means two 6ish hour flights
00:11 jnthn arnsholt: Perhaps so, but sadly extremely unlucky of late...
00:11 arnsholt Yeah, the one over Ukraine was just such terrible, terrible luck
00:11 TimToady yes, the flight was very nice
00:12 jnthn Well, to the degree Russia fighting an undeclared war counts as "bad luck", but yeah... :/
00:12 arnsholt I guess. Up to that point I think commercial traffic was going over the area as normal though
00:12 jnthn Yup.
00:13 jnthn Many airlines where.
00:13 jnthn *were
00:14 * jnthn actually flew to Donetsk airport just over a year ago, which was nice and shiny and modern back then, and is probably in ruins by now :(
00:16 tadzik :(
00:16 tadzik war sucks
00:19 [Coke] Code object coerced to string (please use .gist or .perl to do that)  in block
00:19 [Coke] ^^ gobs of these in parrot spectest
00:20 * jnthn is a little surprised that one would be VM-specific..
00:35 xenoterracide_ joined #perl6
00:41 jnthn sleep &
00:47 _slade_ joined #perl6
00:51 [Coke] might not be specific to parrot, just happened to be what I was running.
00:54 xenoterracide_ joined #perl6
00:58 xenoterracide_ joined #perl6
01:06 xenoterracide_ joined #perl6
01:11 xenoterracide_ joined #perl6
02:03 Hor|zon joined #perl6
02:33 virtualsue joined #perl6
02:51 noganex_ joined #perl6
03:00 pdcawley joined #perl6
03:10 aborazmeh joined #perl6
03:16 mauke_ joined #perl6
03:17 raiph joined #perl6
03:28 lue joined #perl6
03:50 j4jackj joined #perl6
04:01 Mso150 joined #perl6
04:04 Hor|zon joined #perl6
04:09 Mso150 joined #perl6
04:40 ldris joined #perl6
04:45 ggoebel11111113 joined #perl6
05:35 chenryn joined #perl6
05:38 wk_ joined #perl6
05:41 kaare_ joined #perl6
05:57 chenryn joined #perl6
05:58 gtodd joined #perl6
06:00 rurban joined #perl6
06:01 Mso150 joined #perl6
06:02 nickpatch joined #perl6
06:03 djanatyn joined #perl6
06:04 chenryn joined #perl6
06:05 Hor|zon joined #perl6
06:09 slavik joined #perl6
06:21 rindolf joined #perl6
06:34 gfldex joined #perl6
06:35 aborazmeh joined #perl6
06:42 FROGGS joined #perl6
06:44 flaviusb joined #perl6
06:45 camelia joined #perl6
07:11 anaeem1 joined #perl6
07:13 darutoko joined #perl6
07:18 virtualsue joined #perl6
07:22 timotimo vendethiel: https://wiki.gnome.org/action/s​how//Projects/GTK+/OSX/Building - seems like you can build a GTK that doesn't require XQuartz
07:26 camelia joined #perl6
07:26 rurban joined #perl6
07:32 anaeem1_ joined #perl6
07:35 chenryn joined #perl6
07:39 timotimo wow, the difference in time between (^1000).pick and 1000.rand.Int is *immense*
07:40 chenryn joined #perl6
07:42 timotimo rand_I takes about 4x as long as p6box_i(rand_n(1000e0))
07:47 timotimo a smallbigint "fast path" for MVM_bigint_rand seems like not such a bad idea
07:47 rurban joined #perl6
07:47 timotimo (but for now i noticed i'm using .rand everywhere in my code anyway)
07:51 virtualsue joined #perl6
07:54 chenryn joined #perl6
08:02 slavik joined #perl6
08:06 Hor|zon joined #perl6
08:08 vendethiel- joined #perl6
08:18 moritz good morning
08:19 moritz timotimo: you can check with nqp::isbig_I
08:24 chenryn joined #perl6
08:28 timotimo oh, i was going for an improvement to the bigint random function if we're looking for values that fit into 32bit integers
08:28 timotimo but i can do it in rakudo's code as well
08:34 Akagi201 joined #perl6
08:55 anaeem1_ joined #perl6
09:01 slavik joined #perl6
09:07 jack_rabbit joined #perl6
09:18 rmgk_ joined #perl6
09:18 spider-mario joined #perl6
09:29 chenryn joined #perl6
09:35 kjs_ joined #perl6
09:42 virtualsue joined #perl6
09:58 b2gills joined #perl6
10:07 cognome joined #perl6
10:07 Hor|zon joined #perl6
10:13 dakkar joined #perl6
10:15 kurahaupo joined #perl6
10:22 gtodd1 joined #perl6
10:31 anaeem1 joined #perl6
10:35 chenryn joined #perl6
10:37 Alula joined #perl6
10:37 gtodd joined #perl6
10:41 b2gills joined #perl6
11:01 b2gills joined #perl6
11:08 chenryn joined #perl6
11:34 b2gills joined #perl6
11:36 rurban joined #perl6
11:40 salv0 joined #perl6
11:42 masak aloha, #perl6
11:43 timotimo mau
11:44 masak m: say <f h m n>.roll ~ <au argh yo oo ou>.roll
11:44 camelia rakudo-moar 6be4a4: OUTPUT«margh␤»
11:44 masak margh, timotimo
11:44 virtualsue joined #perl6
11:44 timotimo my game is reaching the point where frame rate is harder and harder to come by
11:45 timotimo so perl6 has to become faster!
11:45 timotimo :)
11:45 masak \o/
11:47 masak how about I set "make another blog post" as today's goal?
11:50 timotimo that doesn't sound bad
11:54 b2gills joined #perl6
11:57 PZt joined #perl6
11:59 itz hmm rakudobrew
12:00 itz that needs ~/.rakudobrew doesn't it?
12:00 itz or needed
12:01 itz oh hardcoded line 8
12:02 cognome joined #perl6
12:07 masak I hadn't quite realized it until I tried it, but you can mix in a role in a parent class, and then mix in the same role in the child class, and it works.
12:07 masak it works even when the role has an attribute.
12:07 timotimo i don't know why the profiler is having such trouble when i run it with my game :\
12:08 Hor|zon joined #perl6
12:09 masak m: role R { has $.x }; class A does R { method set1 { $!x = 1 } }; class B is A does R { method set2 { $!x = 2 } }; given B.new { .set1; .set2; say .A::x; say .B::x }
12:09 camelia rakudo-moar 6be4a4: OUTPUT«1␤2␤»
12:09 masak \o/
12:10 masak this is a dimension of the role system I hadn't appreciated before.
12:10 masak but it works really well for what I'm doing.
12:11 masak (and yes, it's fairly obvious in retrospect that it would work, given how roles go about their business. but I'm still glad it does, with no unexpected trouble.)
12:15 b2gills joined #perl6
12:17 timotimo :)
12:24 grondilu joined #perl6
12:30 itz damm redhat's free cloud kills rakudo compile at the "Stage mast"
12:34 bonsaikitten clown :D
12:36 timotimo clown?
12:36 timotimo itz: we make it through most stages, but not mast.
12:37 bonsaikitten timotimo: a substitution that makes "cloud" a lot more reasonable
12:38 itz I wonder how they enforce the resource limit?
12:38 timotimo ah
12:38 timotimo itz: maybe ulimit is set?
12:38 itz Stage mast       : make: *** [CORE.setting.moarvm] Terminated
12:38 itz no doesn't seem to be
12:39 timotimo well. firefox at least gives me a bit of the Routines table before it claims "the script is running too slow."
12:43 b2gills joined #perl6
12:52 itz are any processes regularly building the ecosystem and logging fails?
12:52 timotimo we have something, yes
12:52 timotimo http://host08.perl6.com:8080/report - or something like that
12:54 itz ah
12:56 timotimo it works but it takes a long time to start up
13:01 b2gills joined #perl6
13:05 colomon joined #perl6
13:13 xenoterracide_ joined #perl6
13:19 b2gills joined #perl6
13:19 dalek Perlito: 33ad4d5 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Space.pm:
13:19 dalek Perlito: Perlito5 - parser - add "=cut" pod command special case
13:19 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/33ad4d511c
13:19 dalek Perlito: 4f47002 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Use.pm:
13:19 dalek Perlito: Perlito5 - parser - extended error message on "use" error
13:19 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/4f4700268a
13:19 dalek Perlito: a2e53c7 | (Flavio S. Glock)++ | perlito5.pl:
13:19 dalek Perlito: Perlito5 - rebuild
13:19 dalek Perlito: review: https://github.com/fglock/​Perlito/commit/a2e53c72c2
13:26 rurban joined #perl6
13:32 xenoterracide_ joined #perl6
13:35 colomon jnthn: dunno why, but OO::Actors is consistently failing in emmentaler
13:35 colomon failing one test in basic.t
13:36 masak jnthn is currently in transit to Malaysia.
13:36 b2gills joined #perl6
13:38 cognome joined #perl6
14:01 isBEKaml joined #perl6
14:05 b2gills joined #perl6
14:09 Hor|zon joined #perl6
14:10 _sri joined #perl6
14:11 xinming joined #perl6
14:14 isBEKaml joined #perl6
14:16 colomon joined #perl6
14:18 bjz joined #perl6
14:24 b2gills joined #perl6
14:31 timotimo damn. just as moarvm is becoming too slow! :P
14:32 masak what's that? something has slowed moarvm down?
14:32 isBEKaml jnthn's flight departure did.
14:32 isBEKaml :P
14:36 masak aww, don't grudge the guy some well-deserved vacation.
14:37 masak I mean, srsly, jnthn++ xx 512 for most of the good things that have happened to Rakudo's development in the past few years.
14:37 masak I'm not saying there weren't other people involved, but...
14:38 masak we're talking about the person who gave Rakudo junctions, an object system, a *meta*object system, and (just because that seemed like the logical next step) a VM.
14:38 isBEKaml naw, I don't mean anything like that. I just picked off timotimo's timing. :D
14:38 arnsholt Yeah, jnthn is crazy productive
14:38 masak next up, jnthn will likely rewrite physical reality to better run moarvm! :P
14:38 arnsholt And also my go to example for "no, you't need an IDE to be productive"
14:39 moritz don't forget a profiler, grammars, zavolaj, bounded serialization
14:39 masak as well as wildly popular, motivating and game-changing presentations.
14:39 arnsholt Sugar, spice and all things nice =)
14:40 pierrot joined #perl6
14:40 isBEKaml Well, I liked his Text::CSS presentation. :-)
14:40 anaeem1 joined #perl6
14:40 isBEKaml Everything else was way over my head.
14:40 kjs_ joined #perl6
14:47 moritz http://host08.perl6.com:8080/report shows that File::Spec::Case has been failing tests for some days
14:47 moritz but it works fine here
14:47 moritz can somebody on OS X please test it?
14:47 moritz (and maybe even submit a pull request :-)
14:48 rurban I want to merge the parrot smoke-me/coro-return-gh1106 branch, which adds one coro regression with return to a label (= continuation). Given that nqp/perl6 does not yet use parrot coros I don't care about the returncc label regression for coros and merge proper resettable coros. nqp needs continuationreset, not return to labels
14:48 rurban Opinions?
14:50 masak rurban: so you're saying there are no regressions on the Rakudo-Parrot end?
14:50 masak the regression you are talking about is in Parrot itself?
14:50 rurban yes, parrot only. perl6 does not use it AFAIK
14:51 rurban I've looked at the nqp and perl code and none is using yield/returncc to labels.
14:51 zakharyas joined #perl6
14:51 rurban nqp-p continuations don't seem to be implemented at all
14:52 rurban I've fixed coros now mostly (all previously failing testcases) but broke on weird special case
14:52 rurban Which I hope to fix later
14:52 rurban And there is a workaround
14:53 raiph joined #perl6
14:53 masak not sure my vote counts so much, but it sounds eminently mergeable to me from Rakudo's perspective.
14:54 moritz if rakudo's spectest doesn't barf, it sounds mergable to me
14:54 rurban perl6-p is currently failing all over, unrelated to me, so it's pretty much untestable.
14:55 rurban I'll test a version from a few days ago which worked fine
14:55 anaeem1_ joined #perl6
14:58 timotimo putting nqp::force_gc() at the end of the frame stuff makes the frame rate not only much smoother, but also gives only a tiny penalty
15:01 arnsholt Yeah, you're trading some increased overhead for better latency
15:01 arnsholt I learnt some neat things about GC from jnthn at YAPC::NA last year
15:04 arnsholt Like the fact that stop-the-world is the best strategy if you want the best throughput
15:07 rurban ? copying is the best if you want the best throughput, stop-the-world is ancient and unneeded
15:08 mirjam joined #perl6
15:09 isBEKaml arnsholt: did you mix up something there? Even tuned JVMs have long given up stop-the-world GC...
15:09 rurban force a generation 1 gc would be ok at the end of each frame
15:10 timotimo arnsholt: well, the thing is:
15:10 timotimo arnsholt: the gc will only start running if i'm allocating
15:10 timotimo while the game is waiting for the next tick to start, it won't be allocating
15:11 timotimo so it takes a break in the pause between frames, *then* wakes up and notices it has to clean up a bit
15:12 xinming joined #perl6
15:21 anaeem1_ joined #perl6
15:24 anaeem1 joined #perl6
15:27 timotimo would anybody object to me implementing a faster Bool.roll?
15:27 timotimo because Bool.roll is 10x slower than 2.rand.Int.Bool
15:28 tadzik oh, interesting
15:28 virtualsue joined #perl6
15:28 tadzik I remember making Range.pick not contruct a list every time, might've been my first rakudo patch :)
15:29 timotimo neato :)
15:30 timotimo ^2.roll.Bool takes 3.6x as long as Bool.roll
15:31 timotimo ^2.pick.Bool is a little bit slower still
15:31 colomon wait, which is slower?
15:31 masak timotimo: I explicitly non-object to you implementing a faster Bool.roll.
15:31 colomon (though implementing faster Bool.roll seems perfectly reasonable, no matter what else.)
15:34 isBEKaml masak: *squints* is non-object a verb?
15:35 isBEKaml thisisthefirstimeiveseensuchusage
15:35 masak isBEKaml: I think I've stopped thinking of language usage, especially English, in terms of "is that even a word?" :)
15:36 isBEKaml masak: Yeah, if only we could all stop thinking about English. :-)
15:36 masak isBEKaml: nowadays I feel it's more about using strings of letters to carry across a message in a clear and reliable way. whether the strings of letters happen to be pre-approved by some authority is usually beside the point :)
15:37 isBEKaml masak: I'm not trying to pick on anything here - English isn't my strongest language by any measure. Still, I found it weird to read "I explicit non-object..." :-)
15:38 masak isBEKaml: got it.
15:38 masak isBEKaml: did you get my intended meaning, though? how would you phrase it using only perfectly cromulent words? :)
15:39 isBEKaml masak: yes, I did. s/non\-/do not/ maybe. :-)
15:40 masak yeah, that might work.
15:41 isBEKaml object -> verb, non-object turns it into a noun.
15:41 isBEKaml </eng-discussion>
15:42 masak I see what you mean.
15:42 masak maybe I meant "un-object", or something.
15:43 isBEKaml yeah, that could be some heavy influence from your native language or whatever language you think in.
15:43 rurban joined #perl6
15:44 timotimo "disobject"
15:44 vendethiel- hello, #perl6. And now for some 48h backlogging...
15:44 timotimo Bool.roll(n) is easy, Bool.pick(n) is also easy
15:44 vendethiel- timotimo: noice!
15:44 timotimo because the latter has only three cases
15:44 timotimo "n is 0" → empty list
15:44 timotimo "n is 1" → same as Bool.roll(1)
15:44 timotimo "n is >=2" → return True and False in a random order
15:45 timotimo vendethiel-: what is noice?
15:45 timotimo the gtk xquartz-less thingie?
15:51 raiph joined #perl6
15:58 gfldex joined #perl6
16:03 guru joined #perl6
16:05 BenGoldberg joined #perl6
16:06 lizmat timotimo: are you working on Bool.pick and friends already?
16:06 lizmat if not, I could take that small smop  :-)
16:10 Hor|zon joined #perl6
16:17 timotimo no i'm not :)
16:17 timotimo go ahead
16:17 timotimo i'm fiddling with my game still
16:18 lizmat ok, give me a few mins  :-)
16:19 chenryn joined #perl6
16:26 timotimo seems like a big chunk of the performance penalty of having many enemies on screen was the exhaust effects
16:32 timotimo 3/4 of all frames are rendered at 33fps or faster
16:32 timotimo that's not terribly bad
16:34 BenGoldberg Have the exhaust effects rendered last, and only if the framerate is fast enough :)
16:35 cognome joined #perl6
16:38 cognome_ joined #perl6
16:44 timotimo heh.
16:44 timotimo that'd mean i'd have to go over the list of enemies again afterwards, not sure if that's so good
16:44 timotimo and i'm *still* surprised i spend more time rendering stuff out than i'm spending calculating movements and collisions and stuff
16:48 vendethiel- timotimo: it's "nice" but with that stupid accent I use sometimes
16:48 vendethiel- took me only an hour to backlog :p
16:50 timotimo yes, i know what "noice" means
16:50 timotimo i just don't know what you commented on
16:51 ptc_p6 joined #perl6
16:54 pdcawley joined #perl6
16:54 vendethiel- timotimo: gtk thingie
16:56 ezra1 joined #perl6
16:58 lizmat timotimo: grrrr... settings orderng issues  :-(
17:00 timotimo lizmat: ah damn
17:01 ptc_p61 joined #perl6
17:01 lizmat has trouble understanding .5 that early in the setting
17:02 timotimo as in 0.5?
17:02 timotimo that'd be a Rat, so maybe that's the reason?
17:02 lizmat "Could not locate compile-time value for symbol Rat"
17:03 lizmat indeed
17:03 timotimo try 0.5e0 instead?
17:03 timotimo or can you perhaps work with native nums?
17:03 colomon or multiply by two and check against one?
17:04 lizmat colomon: we're about creating a faster Bool.pick/roll
17:04 zakharyas joined #perl6
17:04 colomon lizmat: yes, I know
17:04 colomon but multiplying by two is probably faster than constructing a Rat
17:05 lizmat constructing a Rat at that point in the setting is a NYI
17:06 colomon let's try this again.  what did you want to do with the 0.5?
17:06 * colomon had assumed it was something like if rand < 0.5 ...
17:12 virtualsue joined #perl6
17:12 * lizmat working on a solution  :-)
17:14 colomon though getting a num/Num version of 0.5 is probably superior to 2 * rand < 1
17:15 Mso150 joined #perl6
17:16 lizmat I think I have something better
17:17 timotimo well, 0.5e0?
17:17 lizmat almost
17:17 lizmat nqp::rand_n(2e0) >= 1
17:17 timotimo ah, yes, that looks good
17:17 timotimo should also be pretty fast
17:17 lizmat and that was the goal, right ?
17:18 timotimo yeah
17:18 timotimo lizmat++ :)
17:19 timotimo now i can rewrite the code in "beatiful" :)
17:19 lizmat $ 6 'for ^10000 { Bool.pick }'
17:19 lizmat real0m0.247s
17:22 timotimo may want to add a 2 or two :)
17:22 timotimo er
17:22 timotimo a 0 or two
17:23 lizmat running spectest now, so far so good
17:25 lizmat $ 6 'for ^1000000 { Bool.pick }'
17:25 lizmat real0m1.801s
17:25 lizmat $ 6 'for ^1000000 { Bool.pick(1) }'
17:25 lizmat real0m37.380s
17:25 lizmat quite a difference  :-)
17:26 colomon does it still work?  ;)
17:26 dalek rakudo/nom: 3b1aaa6 | (Elizabeth Mattijsen)++ | src/core/Bool.pm:
17:26 dalek rakudo/nom: Speed up Bool.pick/roll
17:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3b1aaa6537
17:26 * colomon imagines how quick it would be if Bool.roll just returned True always.  :)
17:27 lizmat $ 6 'my $t; for ^100000 { $t++ if Bool.pick }; say $t'
17:27 lizmat 50036
17:27 lizmat $ 6 'my $t; for ^100000 { $t++ if Bool.pick }; say $t'
17:27 lizmat 49812
17:27 lizmat I'd say it still works  :-)
17:33 itz Bool.roll.loadeddie?
17:33 lizmat $ 6 'for ^1000000 { Bool.pick }'
17:33 lizmat real0m1.517s
17:33 lizmat another 15% faster  :-)
17:37 timotimo you mean when you leave out the $t++?
17:37 lizmat no, by adding another optimization
17:38 timotimo neato :)
17:38 dalek rakudo/nom: 514e41b | (Elizabeth Mattijsen)++ | src/core/Bool.pm:
17:38 dalek rakudo/nom: Stay in NQP land as much as possible
17:38 dalek rakudo/nom:
17:38 dalek rakudo/nom: Good for another 15% performance increase
17:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/514e41b166
17:38 timotimo looks good to me
17:38 timotimo i wonder what we can do in particular to make panda's stage Fetch faster
17:39 timotimo because that's still ridiculously slow ...
17:39 isBEKaml joined #perl6
17:39 lizmat timotimo: planning on taking on panda after the next release
17:39 timotimo oh, way cool!
17:39 lizmat especially wrt to deprecations and other stuff  :-)
17:39 timotimo are you intending to work inside panda or stay inside rakudo?
17:40 timotimo the latter would certainly be better for all our users, but probably also harder
17:41 lizmat probably both
17:42 lizmat still, I'm *really* surprised by the difference between Bool.roll and Bool.roll(1)
17:42 timotimo ?
17:43 lizmat the Bool.roll(1) is 15x as slow as Bool.roll
17:43 timotimo even after your opts?!
17:43 lizmat seems to me an optimization is missed there
17:43 lizmat well, before there was only 1 method that did all
17:43 timotimo mhm
17:43 lizmat now I introduced mutli's
17:44 timotimo how much faster than before is Bool.roll(1)?
17:44 lizmat will check in a mo
17:49 raiph joined #perl6
17:49 lizmat Bool.roll(1) hardly got any faster: apparently it is the parameter handling overhead
17:50 cognome joined #perl6
17:50 lizmat that is causing the performance loss
17:50 molaf joined #perl6
17:50 masak I have a question. what would be the fallout of taking the TTIAR error message in `$term    .foo` and turning it into the parse `$term.foo` instead?
17:50 masak I'm thinking of this as a module. something like Spacing::Tuxish
17:52 lizmat however, Bool.roll has become 17x faster
17:52 lizmat for 1M from 25.5 CPU -> 1.5 CPU
17:53 lizmat (bare startup is .2, so it's really closer to 20x faster)
17:53 lizmat I guess when the optimizer understands that Bool.roll(1) can be optimized in the same way as Bool.roll
17:53 lizmat that will also become faster
17:55 dalek rakudo/nom: 3448cb1 | (Elizabeth Mattijsen)++ | docs/ChangeLog:
17:55 dalek rakudo/nom: Mention Bool.pick/roll now 20x faster
17:55 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3448cb1863
18:01 anaeem1_ joined #perl6
18:03 Mso150_h joined #perl6
18:05 kaare__ joined #perl6
18:11 Hor|zon joined #perl6
18:19 Hor|zon joined #perl6
18:22 raydiak m: my @a = < a b c >; s:g/(.)/$0/ for @a; @a.perl.say;
18:23 camelia rakudo-moar 6be4a4: OUTPUT«(timeout)»
18:23 raydiak ^ so, that gives me 3 empty strings...why?
18:23 dalek rakudo/nom: ab01b9e | (Elizabeth Mattijsen)++ | src/core/ (2 files):
18:23 dalek rakudo/nom: Make .round (no parameters) about 3x as fast
18:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ab01b9ee59
18:23 moritz lizmat++
18:24 lizmat I found some suboptimal stuff while investigating solutions for Bool.roll/pick
18:25 moritz what we really need is people complaining about particular things being slow
18:25 moritz (except list iteration; that we know)
18:27 lizmat timotimo: do you have any problems with .atan2() being slow?
18:32 raydiak should $/ ever be Nil in the replacement part of a s/// ?
18:33 timotimo lizmat: is it slow?
18:33 timotimo my code used to use it a bit
18:33 lizmat well, it is suffering from the same issue all methods have that take an optional parameter
18:34 timotimo oh!
18:34 timotimo i didn't know this issue is an issue
18:35 * lizmat neither until I saw the difference in performance between .pick and .pick(1)
18:35 * lizmat assumes the parameterless version is better optimized
18:35 lizmat and even inlined possibly
18:35 timotimo raydiak: in there we should have properly made $/ stuff
18:35 timotimo inside a .subst we don't :(
18:36 timotimo for NYI and bug reasons :(
18:36 timotimo huh.
18:36 timotimo the code i use atan2 with always has the parameter set
18:36 timotimo so the version that *does* take the parameter is faster?
18:36 timotimo faster than the version that leaves out the optional parameter?
18:37 lizmat no, they're equallly fast / slow atm
18:37 timotimo wut :(
18:38 timotimo can you find versions from the past that don't have this?
18:38 raydiak timotimo++: thanks, I'll file a bug then
18:40 vendethiel- .oO( we need a STM solver to prove that the argument passed to it is 1 at compile-time )
18:47 lizmat hmmm... using multi's for atan2, optimizes the atan2() case, but pessimizes the atan2($foo) case significantly  :-(
18:48 timotimo damn, wtf? :(
18:48 * lizmat zaps that idea
18:48 * lizmat goes to double check performance on Bool.pick vs Bool.pick(1)
18:49 raiph joined #perl6
18:51 pepl joined #perl6
18:53 timotimo ooc, are you on nqp and moarvm master?
18:53 lizmat nope
18:53 timotimo i wonder if that makes a big difference
18:58 lizmat hmmm... it appears I've pessimized Bool.pick(n)
18:59 timotimo because of xx?
18:59 timotimo er wait
18:59 timotimo pick(n) doesn't use xx
18:59 lizmat no, I think because of the literal candidate
19:00 lizmat hmmm...  I seem to only have pessimised .pick(n), not .roll(n)
19:02 gtodd1 joined #perl6
19:06 lizmat timotimo: probably because of xx, indeed, trying a simpler mmd setup
19:06 cibs joined #perl6
19:08 raydiak m: say 1
19:08 camelia rakudo-moar 6be4a4: OUTPUT«(timeout)»
19:10 Mso150 joined #perl6
19:11 timotimo lizmat: perhaps it'd be better to just dispatch on $n vs no $n
19:12 lizmat yup, that's what I'm doing now
19:12 timotimo 'k
19:17 Mso150 joined #perl6
19:19 anaeem1 joined #perl6
19:19 Ven joined #perl6
19:21 masak m: my $x; do { say $x++ } while $x < 10
19:22 camelia rakudo-moar 6be4a4: OUTPUT«(timeout)»
19:22 masak locally: "Unsupported use of do...while; in Perl 6 please use repeat...while or repeat...until"
19:22 masak \o/
19:22 Ven masak++
19:23 Ven I should try and do something for once :<. Writing proper tests for my crappy parser would be a nice start I guess
19:23 masak Perl 6 is the only language I know of that has 'repeat while <cond>' with that semantics.
19:24 masak (that is, allowing the condition to be placed before the loop body, even though it's evaluated after each iteration)
19:24 * Ven doesn't even remember which semantics it has
19:24 Ven ha, masak2spooky4me or something
19:28 dalek rakudo/nom: a1306ca | (Elizabeth Mattijsen)++ | src/core/Bool.pm:
19:28 dalek rakudo/nom: De-pessimize Bool.pick(n)/roll(n)
19:28 dalek rakudo/nom:
19:28 dalek rakudo/nom: It appears that literal value candidates are not yet optimized away, so having
19:28 dalek rakudo/nom: them slows things down considerably.  So the (n) cases are now back to what
19:28 dalek rakudo/nom: they were before I started all this (instead of worse).
19:28 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a1306ca1b6
19:30 raydiak m: my $a = "a"; s/(.)/$0/ for $a; $a.perl.say; # seriously, is this NYI? doesn't work in HEAD or 2014.08 or 04, and re-re-re-reading parts of S05 has not helped me understand what I might be doing wrong
19:30 camelia rakudo-moar 6be4a4: OUTPUT«(timeout)»
19:32 * colomon is back from the local robot competition.
19:32 TimToady sure looks busted to me
19:33 timotimo Heap corruption detected: pointer 0x7fc6e5758fb8 to past fromspace
19:33 timotimo raydiak: you may want to bind $a rw in that case?
19:33 TimToady doesn't seem to help
19:33 raydiak timotimo: it doesn't even matter if it's the stuff in the for loop I'm operating *on*, just that the s/// is in a for loop
19:36 masak pretty sure that should work.
19:36 raydiak thanks for trying it out TimToady++, at least I have confirmation of my (very) unexpected results now...w/camelia down I thought I might just be losing my mind or something
19:37 masak still too early to rule that out :P
19:37 masak but yeah, you are onto something, I think.
19:37 masak feel free to submit a rakudobug about it
19:37 raydiak already done
19:39 masak raydiak++
19:40 raydiak sorry for buggin about it over and over for an hour, guess I just expected that a bunch of tests and modules would blow up if something like that didn't work
19:42 amkrankruleuen joined #perl6
19:43 masak that expectation feels reasonable to me.
19:45 raydiak masak++ # helping me pretend to retain my sanity :)
19:48 * masak , helping uphold the appearance of sanity on #perl6 since 2005
19:48 masak wow, I'm soon celebrating my 10 year anniversary on this channel
19:49 vendethiel- wow.
19:50 vendethiel- I'm soon celebrating my 10 year anniversary of programming! P
19:50 raydiak is there going to be cake?
19:50 vendethiel- of course. But it'll be a lie...
19:50 masak what am I, GLADOS?
19:51 vendethiel- nope, you're the test subject.
19:51 vendethiel- perl6 is glados.
19:51 masak :P
19:51 vendethiel- .oO( it's eating your cake! But still gives you some of it )
19:52 raydiak but I SAW the cake at the end, it can't be a lie...
19:52 vendethiel- raydiak: if you look at glitchy speedruns, the cake actually exists in the game engine :D
19:52 vendethiel- fun story
19:53 raydiak yeah it's in the end sequence
19:53 raydiak at the very end after all the singing and e-mail writing iirc
19:53 raydiak oh and I think it's in the menu background after you beat the game
19:54 timotimo vendethiel-: it also is shown in the outro
19:54 raydiak should clarify I'm talking about the original, haven't tried the sequel
19:54 vendethiel- I'm actually stuck on the original, because the game just crashes in some room
19:55 raydiak bummer
19:57 moritz I just searched in the logs, and found that I joined the channel first on 2007-02-04
19:57 vendethiel- moritz: how do you do that?
19:58 moritz ... and got a commit bit within 3 minutes :-)
19:59 moritz vendethiel-: http://irclog.perlgeek.de/perl​6/search/?nick=vendethiel;q=; and click on the last page link; scroll down
19:59 moritz vendethiel-: doesn't work for people with lots of lines, though
20:00 vendethiel- 2014-01-30 17:39
20:00 vendethiel- my first perl6 thingie
20:00 moritz otherwise
20:00 vendethiel- http://irclog.perlgeek.de/​perl6/2014-01-30#i_8199360 hehe
20:00 moritz select FROM_UNIXTIME(timestamp) from ilbot_lines where nick = '...' ORDER BY timestamp ASC LIMIT 1
20:01 lizmat hmmm.. it appears my first hello on this channel was on 25 Oct 2005 (as Liz), so I'm close to my 9 years  :-)
20:02 lizmat but I guess 2 Sep 2012 would be a more appropriate starting point, as I did not do much in those 7 years inbetween
20:06 moritz lizmat: 2005-10-23 actually: http://irclog.perlgeek.de/​perl6/2005-10-23#i_-440881
20:07 vendethiel- wow, Juerd has been here for a while :P
20:07 lizmat yes, he has!
20:07 masak Juerd++
20:08 dalek rakudo/nom: e9378d7 | (Elizabeth Mattijsen)++ | src/core/Supply (2 files):
20:08 dalek rakudo/nom: Bring Supply up to spec wrt to s/more/emit/
20:08 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e9378d7c90
20:09 vendethiel- Juerd++
20:10 vendethiel- wow. async{} worked in 2005??
20:10 dalek roast: ea288de | (Elizabeth Mattijsen)++ | S02-types/WHICH.t:
20:10 dalek roast: s/OnMore/OnEmit because of Supply.s/more/emit/
20:10 dalek roast: review: https://github.com/perl6/roast/commit/ea288de807
20:10 lizmat vendethiel-: only in spec  :-)
20:10 vendethiel- http://irclog.perlgeek.de/​perl6/2005-10-23#i_-440844
20:10 moritz I think it worked pretty early in pugs
20:10 vendethiel- maybe it was sequentially... and sequentially broken :P
20:10 masak no, it worked in Pugs.
20:11 moritz but not much more
20:11 vendethiel- oh. right
20:11 lizmat ah, in pugs, yes, posisbly  :-)
20:11 vendethiel- hahaha
20:11 vendethiel- 2005 rakudo?
20:11 moritz I mean, iirc there were no synchronization primitives
20:11 lizmat yeah yeah... :-)
20:13 * raydiak notices a reference to lack of sanity within the first 10 minutes of the very start of the #perl6 log
20:14 masak it's a long-standing tradition :)
20:15 beastd joined #perl6
20:15 raiph joined #perl6
20:19 moritz it comes with haskel^Wperl
20:22 Hor|zon joined #perl6
20:28 raydiak oh that reminds me...I got on to the whole regex problem b/c I was trying to work around the lack of quotemeta...do we have something else equivalent, or is s:g/(\W)/\\$0/ the way to go?
20:29 moritz raydiak: what do you need quotemeta for?
20:30 moritz raydiak: string interpolation is literal by default
20:30 raydiak moritz: I'm interpolating string literals into another string which is interpolated into a regex as a regex (not a string literal)
20:32 moritz raydiak: so you're doing  my $string1 = "$a $b", and want to escape $a, but not $b?
20:33 moritz raydiak: if so, you could isntead do my $regex = rx{ $a <?$b> }
20:33 moritz or not, depending on whether you want to do some post-processing
20:34 raydiak moritz: more like $a = "literal"; $b = "(non-literal stuff) $a (more regex stuff)"; rule { stuff $(b) more stuff}
20:34 raydiak so the things in $a should be literal in the end
20:34 raydiak but not the other stuff in $b
20:34 raydiak so I quotemeta $a before shoving it into $b
20:34 raydiak erm, $(b) should have been {$b} or something
20:35 moritz $b = rx{ (non-literal-stuff) $a (more regexes stuff }
20:35 moritz raydiak: if $b is a regex right away, you don't need to quotemeta $a
20:36 raydiak moritz: don't think I can b/c I need to refer to other named rules in $b that don't work when I interpolate it as a regex, for some reasons TimToady++ explained to me yesterday
20:37 moritz raydiak: I didn't quite understand it, but then yes, use the s:g thingy
20:38 raydiak moritz++: I know, I'm dealing with a small morass of issues for which a simple explanation or example eludes me atm...thanks for trying to help
20:40 slavik joined #perl6
20:40 raiph joined #perl6
20:47 anaeem1_ joined #perl6
20:59 ptc_p61 left #perl6
20:59 ptc_p61 joined #perl6
20:59 ptc_p61 left #perl6
21:13 Juerd Hm?
21:13 Juerd I saw highlights.
21:13 Juerd Yes, I've been here quite a while.
21:14 Juerd My first contributions to Perl 6 were unit tests for pugs and a server :D
21:16 masak Juerd++ # unit tests for pugs
21:16 masak Juerd++ # a server, which I believe has found some use since
21:16 lizmat Juerd++ xx many
21:18 Juerd :)
21:18 timotimo have y'all been making rakudo better today? :P
21:18 timotimo lizmat++ has :)
21:20 masak lol!
21:20 masak I blogged!
21:20 masak http://strangelyconsistent.org/blog​/macros-allowing-two-terms-in-a-row
21:21 arnsholt Oooh, masak++ blug
21:21 * arnsholt goes to read
21:23 dalek roast: fbdfbae | (Elizabeth Mattijsen)++ | / (23 files):
21:23 dalek roast: Supply.s/more/emit, as per new implementation/spec
21:23 dalek roast: review: https://github.com/perl6/roast/commit/fbdfbae49d
21:24 moritz http://qz.com/283268/if-shakespeare-wrote-i​n-javascript-heres-what-it-would-look-like/ found on reddit, and thought it might fit the average #perl6'ers interest
21:25 masak yes, it's an oldie-but-goodie :)
21:30 dalek rakudo/nom: 45bac9b | (Elizabeth Mattijsen)++ | docs/ChangeLog:
21:30 dalek rakudo/nom: Mention Supply.more is deprecated
21:30 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/45bac9bb7c
21:30 dalek rakudo/nom: a9dea39 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
21:30 dalek rakudo/nom: Remove pessimation of .round($x)
21:30 dalek rakudo/nom:
21:30 dalek rakudo/nom: Also using a literal param in MMD, which is still not optimized away.
21:30 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a9dea399e1
21:31 moritz masak: I read that a bit fast, so forgive me if you mentioned it...
21:32 moritz masak: but I feel it's worth pointing out *why* TTIAR violations are ok, why we get away with them
21:32 moritz 1) a constant prefix that introduces it
21:32 moritz and
21:32 moritz 2) the second term isn't a general term, but restricted to a very specific syntactic form: an (x)block
21:33 masak *nod*
21:33 moritz so we should assume that TTIAR-violating macros are bound to the same constraints
21:33 masak or similar, yes.
21:34 masak a fun exception is `repeat { ... } while $expr`
21:34 moritz one could argue that 'repeat' is a postfix and 'while' is an infix in that context
21:35 masak well, in the grammar they are part of the same form.
21:35 pmurias joined #perl6
21:35 masak and `while` doesn't "feel" like an infix.
21:35 pmurias ttiar?
21:35 masak but I see what you mean.
21:35 moritz pmurias: two terms in a row
21:35 masak pmurias: surprisingly, explained in the post!
21:36 * pmurias is reading the post
21:36 masak moritz: but yes, you definitely have a point.
21:36 moritz masak: so it might be rahter practical to have a TTIAR-pattern-macro-declarator
21:36 moritz *rather
21:36 moritz one that follows the <sym> <EXPR> <xblock>-pattern
21:37 masak moritz: oh, and `if $expr { ... } elsif $expr2 { ... } else { ... }` is also worth considering as an interesting case. it has at least two TTIAR.
21:37 anaeem1_ joined #perl6
21:37 moritz masak: yes, that doesn't fit the pattern
21:37 masak moritz: yes, that's kind of the point I reach in the last "If after that," paragraph.
21:38 masak moritz: that there may be further ways to optimize for `<sym> <EXPR> <xblock>`
21:38 masak (but that these should be done with macros written in userland)
21:39 Ven masak++ # high blogging frequency
21:39 * masak .oO( in 2014, masak's blogging became known for his frequency rather than his quality ) :P
21:39 masak its* its*
21:40 masak Ven: seriously though, I have a lot to get through, so if I don't hurry I'll never get done.
21:42 dalek rakudo/nom: 7fff877 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
21:42 dalek rakudo/nom: Make IO::Socket|Proc::Async emit instead of more
21:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7fff877ec6
21:43 dalek rakudo/nom: 0fb4cab | (Elizabeth Mattijsen)++ | src/core/signals.pm:
21:43 dalek rakudo/nom: Make sure signals emit rather than more
21:43 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0fb4cab0fc
21:49 moritz masak: my current summary of the state of the macro onion is: macros should provide a perlish API to the compiler, but the currently specced approaches don't offer sufficiently fine-grained access
21:58 masak I like that summary, I think.
22:00 masak yes, it's about *compilation* in general, not just parsing in particular. it's parsing, analysis, checking, perhaps optimization, and codegen.
22:12 arnsholt masak: There is an interesting point, I think, somewhat hidden in your last paragraph: Once macros are sufficiently powerful, almost any syntactic annoyance can be solved by another layer of indirection
22:12 masak ...and if they *don't*, they're just not very good macros.
22:12 arnsholt Exactly
22:12 arnsholt It's macros, all the way down!
22:13 woolfy Just wanna mention: vendethiel++
22:13 dalek rakudo/nom: a7275a0 | (Elizabeth Mattijsen)++ | src/ (3 files):
22:13 dalek rakudo/nom: S/winner/earliest/ as by recent S17 spec change
22:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a7275a05d9
22:13 vendethiel- eh?
22:14 dalek roast: 9a2faa3 | (Elizabeth Mattijsen)++ | S17-channel/ (2 files):
22:14 dalek roast: Rename test file as per recent S17 spec change
22:14 dalek roast: review: https://github.com/perl6/roast/commit/9a2faa35fc
22:15 * masak .oO( getting another karma by pretending you didn't hear it the first time ) :P
22:15 masak vendethiel++
22:15 dalek roast: 3c20f45 | (Elizabeth Mattijsen)++ | S17-channel/earliest.t:
22:15 dalek roast: s/winner/earliest, as per recent S17 spec change
22:15 dalek roast: review: https://github.com/perl6/roast/commit/3c20f453c8
22:16 dalek rakudo/nom: 09a84c3 | (Elizabeth Mattijsen)++ | t/spectest.data:
22:16 dalek rakudo/nom: winner.t is now earliest.t, as per spec change
22:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/09a84c3fbc
22:19 * lizmat calls it a day
22:19 lizmat so good night, #perl6!
22:20 masak 'night, lizmat
22:23 Hor|zon joined #perl6
22:27 kjs_ joined #perl6
22:29 DarthGandalf joined #perl6
22:36 masak someone might want to update STD.pm6, too. (wrt s/winner/earliest/)
22:38 timotimo okay, so ...
22:38 timotimo i have this thingie:
22:39 timotimo m: sub create_or_use($storage is rw, &actions) { if defined $storage { $storae } else { $storage = actions() } };
22:39 timotimo we can't eval here, this is timeout county!!
22:39 camelia rakudo-moar 3448cb: OUTPUT«(timeout)»
22:39 timotimo it lines up ♥
22:40 timotimo m: sub create_or_use($storage is rw, &actions) { if defined $storage { $storae } else { $storage = actions() } }; create_or_use((state %test){5}{10}, { say "making"; 99 }); say %test; create_or_use(%test{5}{10}); say %test;
22:40 masak timotimo: typo `$storae`
22:40 timotimo thx
22:41 camelia rakudo-moar 3448cb: OUTPUT«(timeout)»
22:41 timotimo m: sub create_or_use($storage is rw, &actions) { if defined $storage { $storage } else { $storage = actions() } }; create_or_use((state %test){5}{10}, { say "making"; 99 }); say %test; create_or_use(%test{5}{10}); say %test;
22:41 camelia rakudo-moar 3448cb: OUTPUT«(timeout)»
22:42 timotimo more exactly
22:42 timotimo m: sub create_or_use($storage is rw, &actions) { if defined $storage { $storage } else { $storage = actions() } }; create_or_use((state %test){5}{10}, { say "making"; 99 }); say %test; create_or_use(%test{5}{10}, { say "making again"; 42 }); say %test;
22:42 camelia rakudo-moar 3448cb: OUTPUT«(timeout)»
22:42 timotimo weird. in repl that works apparently?
22:43 masak timotimo: camelia is busted right now.
22:44 timotimo totally.
22:44 timotimo it works locally in perl6 -e, but in my bigger program it b0rks :(
22:47 masak 'night, #perl6
22:49 flussence joined #perl6
22:49 timotimo gnite masak
22:58 cognome joined #perl6
23:01 timotimo this stuff works, i just forgot to remove a comment
23:25 noganex joined #perl6
23:31 aborazmeh joined #perl6
23:44 Mso150 joined #perl6
23:49 kjs_ joined #perl6
23:55 colomon joined #perl6

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

Perl 6 | Reference Documentation | Rakudo