»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
tadzik what a night 00:00
00:01 Mso150 left, xenoterracide_ left, Mso150_x joined, xenoterracide_ joined 00:02 Hor|zon joined
jnthn tadzik: Dare I ask? :) 00:02
tadzik jnthn: sure 00:03
jnthn: so, I was to get back from $work trip in Wrocław to Warsaw
my plane was supposed to leave on 21:00
it was delayed something like 2 hours
jnthn Oh my, here comes a transport story :)
Urgh.
That *does* suck
tadzik because fog in Warsaw
they tried to get us on board twice, on the second try we actually took off
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...
tadzik (55 minutes, yes)
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"
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
turns down that's also how airplanes get from Warsaw to Wrocław in 20 minutes
at least that's how it sounded like
jnthn o.O
00:05 Mso150 joined
tadzik and I managed to get a place on a flight on 5:something 00:05
(not everyone did)
some will fly on 14:something
jnthn That's..."lucky"
tadzik I hope that this 5:something will land this time 00:06
not so obious
jnthn Yeah...I'm a tiny bit surprised that some kind of instrument landing wasn't possible.
tadzik so I got a hotel and about 2 hours of sleep, yey
apparently the plane is not properly equipped
jnthn Oh.
00:06 Hor|zon left
tadzik and it will be the same one on my 5am flight 00:07
so, yeah
jnthn I was gonna be really surprised if it was the airport that wasn't equipped...
jnthn remembers a couple of landings on flights where it was extremely obvious the appraoch could never have been done visually
00:07 Mso150_x left
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
well, it's quite an adventure :) 00:08
I lol'd a lot today, a few times it sounded a bit like f#%k though
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
jnthn One can only hope ;)
jnthn is flying to Malaysia tomorrow
tadzik oh, cool
Malaysian airlines?
jnthn No!!! 00:10
tadzik :D
TimToady has flown Malaysia Airlines but in the opposite direction that got shot down
jnthn Emirates, via Dubai...
arnsholt Malaysian is supposedly a very nice airline
jnthn Which means two 6ish hour flights
arnsholt: Perhaps so, but sadly extremely unlucky of late... 00:11
arnsholt Yeah, the one over Ukraine was just such terrible, terrible luck
TimToady yes, the flight was very nice
jnthn Well, to the degree Russia fighting an undeclared war counts as "bad luck", but yeah... :/ 00:12
00:12 ajr_ left
arnsholt I guess. Up to that point I think commercial traffic was going over the area as normal though 00:12
jnthn Yup.
Many airlines where. 00:13
*were
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:14
00:14 xenoterracide_ left
tadzik :( 00:16
war sucks
[Coke] Code object coerced to string (please use .gist or .perl to do that) in block 00:19
^^ gobs of these in parrot spectest
jnthn is a little surprised that one would be VM-specific.. 00:20
00:35 xenoterracide_ joined
jnthn sleep & 00:41
00:41 xenoterracide_ left 00:47 _slade_ joined
[Coke] might not be specific to parrot, just happened to be what I was running. 00:51
00:54 xenoterracide_ joined 00:58 xenoterracide_ left, xenoterracide_ joined 01:03 grettis left, xenoterracide_ left 01:06 xenoterracide_ joined 01:10 Guest94599 is now known as ponbiki 01:11 xenoterracide_ left 01:12 xenoterracide_ joined 01:41 jack_rabbit left 02:03 Hor|zon joined 02:08 Hor|zon left 02:33 virtualsue joined 02:45 lue left 02:51 noganex_ joined 02:52 virtualsue left 02:54 noganex left 02:59 pdcawley left 03:00 pdcawley joined 03:10 aborazmeh joined 03:16 mauke_ joined 03:17 raiph joined 03:19 mauke left 03:21 mauke_ is now known as mauke 03:22 xenoterracide_ left 03:28 lue joined 03:34 BenGoldberg left 03:42 araujo left 03:50 j4jackj joined 03:51 j4jackj is now known as Guest64429 03:52 Guest64429 is now known as j4jackj 04:00 Mso150 left 04:01 Mso150 joined, aborazmeh left 04:04 Hor|zon joined 04:06 Mso150 left 04:08 Hor|zon left 04:09 Mso150 joined 04:14 gtodd left 04:20 raiph left 04:40 ldris joined 04:45 ggoebel11111113 joined 04:47 ggoebel11111112 left 04:56 ldris left 05:35 chenryn joined 05:38 wk_ joined 05:41 kaare_ joined 05:53 chenryn left 05:56 slavik left 05:57 chenryn joined 05:58 gtodd joined 06:00 Mso150 left, rurban joined 06:01 Mso150 joined, chenryn left, nickpatch left 06:02 nickpatch joined 06:03 djanatyn joined 06:04 chenryn joined 06:05 Hor|zon joined 06:09 slavik joined 06:10 Hor|zon left 06:21 rindolf joined 06:34 gfldex joined 06:35 aborazmeh joined 06:42 FROGGS joined, camelia left 06:44 flaviusb joined 06:45 camelia joined 06:46 ChanServ sets mode: +v camelia 06:49 FROGGS left 06:50 aborazmeh left 07:11 anaeem1 joined 07:13 darutoko joined 07:14 anaeem1 left 07:18 virtualsue joined 07:19 camelia left
timotimo vendethiel: wiki.gnome.org/action/show//Projec...X/Building - seems like you can build a GTK that doesn't require XQuartz 07:22
07:26 virtualsue left, camelia joined, rurban left, rurban joined 07:27 ChanServ sets mode: +v camelia, rurban left 07:29 kurahaupo left 07:30 chenryn left 07:32 anaeem1_ joined 07:35 chenryn joined 07:39 chenryn left
timotimo wow, the difference in time between (^1000).pick and 1000.rand.Int is *immense* 07:39
07:40 chenryn joined
timotimo rand_I takes about 4x as long as p6box_i(rand_n(1000e0)) 07:42
a smallbigint "fast path" for MVM_bigint_rand seems like not such a bad idea 07:47
07:47 rurban joined
timotimo (but for now i noticed i'm using .rand everywhere in my code anyway) 07:47
07:48 slavik left 07:51 virtualsue joined, chenryn left 07:54 chenryn joined 08:02 slavik joined 08:04 gfldex left 08:06 Hor|zon joined 08:08 vendethiel- joined 08:10 vendethiel left 08:11 Hor|zon left
moritz good morning 08:18
timotimo: you can check with nqp::isbig_I 08:19
08:23 chenryn left 08:24 chenryn joined
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
but i can do it in rakudo's code as well
08:30 anaeem1_ left 08:34 Akagi201 joined 08:49 slavik left 08:55 anaeem1_ joined 09:01 slavik joined 09:02 anaeem1_ left 09:03 virtualsue left 09:07 jack_rabbit joined 09:17 chenryn left 09:18 rmgk_ joined, rmgk is now known as Guest30797, Guest30797 left, rmgk_ is now known as rmgk, spider-mario joined 09:21 Mso150 left 09:29 chenryn joined 09:35 kjs_ joined 09:42 virtualsue joined 09:56 chenryn left 09:58 b2gills joined 10:07 cognome joined, jack_rabbit left, Hor|zon joined 10:11 Hor|zon left 10:12 cognome left 10:13 dakkar joined 10:15 kurahaupo joined 10:22 gtodd1 joined 10:23 gtodd left, Alula left 10:28 b2gills left 10:31 gtodd1 left, anaeem1 joined 10:32 noganex_ left 10:36 chenryn joined 10:37 Alula joined, gtodd joined, anaeem1 left 10:41 b2gills joined 10:47 b2gills left 11:01 b2gills joined 11:07 chenryn left 11:08 chenryn joined 11:18 b2gills left 11:20 rurban left 11:22 salv0 left 11:34 b2gills joined, virtualsue left 11:36 rurban joined 11:38 b2gills left 11:40 salv0 joined
masak aloha, #perl6 11:42
timotimo mau 11:43
masak m: say <f h m n>.roll ~ <au argh yo oo ou>.roll 11:44
camelia rakudo-moar 6be4a4: OUTPUT«margh␤»
masak margh, timotimo
11:44 virtualsue joined
timotimo my game is reaching the point where frame rate is harder and harder to come by 11:44
so perl6 has to become faster! 11:45
:)
masak \o/
how about I set "make another blog post" as today's goal? 11:47
timotimo that doesn't sound bad 11:50
11:54 b2gills joined 11:57 PZt joined 11:59 b2gills left
itz hmm rakudobrew 11:59
that needs ~/.rakudobrew doesn't it? 12:00
or needed
oh hardcoded line 8 12:01
12:02 cognome joined
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
it works even when the role has an attribute.
timotimo i don't know why the profiler is having such trouble when i run it with my game :\
12:08 Hor|zon joined
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␤»
masak \o/
this is a dimension of the role system I hadn't appreciated before. 12:10
but it works really well for what I'm doing.
(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:11
12:12 Hor|zon left 12:15 b2gills joined
timotimo :) 12:17
12:24 grondilu joined 12:28 b2gills left
itz damm redhat's free cloud kills rakudo compile at the "Stage mast" 12:30
bonsaikitten clown :D 12:34
timotimo clown? 12:36
itz: we make it through most stages, but not mast.
bonsaikitten timotimo: a substitution that makes "cloud" a lot more reasonable 12:37
12:37 cognome left
itz I wonder how they enforce the resource limit? 12:38
timotimo ah
itz: maybe ulimit is set?
itz Stage mast : make: *** [CORE.setting.moarvm] Terminated
no doesn't seem to be
timotimo well. firefox at least gives me a bit of the Routines table before it claims "the script is running too slow." 12:39
12:43 b2gills joined, kjs_ left 12:48 b2gills left
itz are any processes regularly building the ecosystem and logging fails? 12:52
timotimo we have something, yes
host08.perl6.com:8080/report - or something like that
itz ah 12:54
timotimo it works but it takes a long time to start up 12:56
12:58 colomon left 13:01 b2gills joined 13:05 colomon joined 13:06 b2gills left 13:13 xenoterracide_ joined 13:17 rurban left 13:19 b2gills joined
dalek rlito: 33ad4d5 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Space.pm:
Perlito5 - parser - add "=cut" pod command special case
13:19
rlito: 4f47002 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Use.pm:
Perlito5 - parser - extended error message on "use" error
rlito: a2e53c7 | (Flavio S. Glock)++ | perlito5.pl:
Perlito5 - rebuild
13:23 b2gills left 13:26 rurban joined 13:32 xenoterracide_ left, xenoterracide_ joined
colomon jnthn: dunno why, but OO::Actors is consistently failing in emmentaler 13:35
failing one test in basic.t
masak jnthn is currently in transit to Malaysia. 13:36
13:36 virtualsue left, b2gills joined 13:38 cognome joined 13:52 b2gills left 13:57 colomon left 14:01 xenoterracide_ left, isBEKaml joined 14:05 b2gills joined 14:09 Hor|zon joined 14:10 b2gills left, _sri joined 14:11 xinming joined 14:13 isBEKaml left 14:14 Hor|zon left, isBEKaml joined 14:16 colomon joined 14:17 bjz left 14:18 bjz joined 14:24 b2gills joined
timotimo damn. just as moarvm is becoming too slow! :P 14:31
masak what's that? something has slowed moarvm down? 14:32
isBEKaml jnthn's flight departure did.
:P
masak aww, don't grudge the guy some well-deserved vacation. 14:36
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
I'm not saying there weren't other people involved, but...
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
arnsholt Yeah, jnthn is crazy productive
14:38 xinming left
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 pierrot left
moritz don't forget a profiler, grammars, zavolaj, bounded serialization 14:39
masak as well as wildly popular, motivating and game-changing presentations.
arnsholt Sugar, spice and all things nice =)
14:40 pierrot joined
isBEKaml Well, I liked his Text::CSS presentation. :-) 14:40
14:40 anaeem1 joined
isBEKaml Everything else was way over my head. 14:40
14:40 kjs_ joined
moritz host08.perl6.com:8080/report shows that File::Spec::Case has been failing tests for some days 14:47
but it works fine here
can somebody on OS X please test it?
(and maybe even submit a pull request :-)
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
Opinions?
masak rurban: so you're saying there are no regressions on the Rakudo-Parrot end? 14:50
the regression you are talking about is in Parrot itself?
rurban yes, parrot only. perl6 does not use it AFAIK
I've looked at the nqp and perl code and none is using yield/returncc to labels. 14:51
14:51 zakharyas joined
rurban nqp-p continuations don't seem to be implemented at all 14:51
I've fixed coros now mostly (all previously failing testcases) but broke on weird special case 14:52
Which I hope to fix later
14:52 anaeem1 left
rurban And there is a workaround 14:52
14:53 raiph joined
masak not sure my vote counts so much, but it sounds eminently mergeable to me from Rakudo's perspective. 14:53
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.
I'll test a version from a few days ago which worked fine 14:55
14:55 anaeem1_ joined
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 14:58
arnsholt Yeah, you're trading some increased overhead for better latency 15:01
I learnt some neat things about GC from jnthn at YAPC::NA last year
Like the fact that stop-the-world is the best strategy if you want the best throughput 15:04
15:07 anaeem1_ left
rurban ? copying is the best if you want the best throughput, stop-the-world is ancient and unneeded 15:07
15:08 mirjam joined
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
timotimo arnsholt: well, the thing is: 15:10
15:10 rurban left
timotimo arnsholt: the gc will only start running if i'm allocating 15:10
while the game is waiting for the next tick to start, it won't be allocating
so it takes a break in the pause between frames, *then* wakes up and notices it has to clean up a bit 15:11
15:12 xinming joined 15:21 anaeem1_ joined 15:23 anaeem1_ left 15:24 anaeem1 joined 15:25 raiph left
timotimo would anybody object to me implementing a faster Bool.roll? 15:27
because Bool.roll is 10x slower than 2.rand.Int.Bool
tadzik oh, interesting 15:28
15:28 virtualsue joined
tadzik I remember making Range.pick not contruct a list every time, might've been my first rakudo patch :) 15:28
timotimo neato :) 15:29
^2.roll.Bool takes 3.6x as long as Bool.roll 15:30
^2.pick.Bool is a little bit slower still 15:31
colomon wait, which is slower?
masak timotimo: I explicitly non-object to you implementing a faster Bool.roll.
colomon (though implementing faster Bool.roll seems perfectly reasonable, no matter what else.)
isBEKaml masak: *squints* is non-object a verb? 15:34
thisisthefirstimeiveseensuchusage 15:35
masak isBEKaml: I think I've stopped thinking of language usage, especially English, in terms of "is that even a word?" :)
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 :)
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:37
masak isBEKaml: got it. 15:38
isBEKaml: did you get my intended meaning, though? how would you phrase it using only perfectly cromulent words? :)
isBEKaml masak: yes, I did. s/non\-/do not/ maybe. :-) 15:39
masak yeah, that might work. 15:40
isBEKaml object -> verb, non-object turns it into a noun. 15:41
</eng-discussion>
masak I see what you mean. 15:42
maybe I meant "un-object", or something.
isBEKaml yeah, that could be some heavy influence from your native language or whatever language you think in. 15:43
15:43 rurban joined
timotimo "disobject" 15:44
vendethiel- hello, #perl6. And now for some 48h backlogging...
15:44 dakkar left
timotimo Bool.roll(n) is easy, Bool.pick(n) is also easy 15:44
vendethiel- timotimo: noice!
timotimo because the latter has only three cases
"n is 0" → empty list
"n is 1" → same as Bool.roll(1)
"n is >=2" → return True and False in a random order
vendethiel-: what is noice? 15:45
the gtk xquartz-less thingie?
15:45 anaeem1 left 15:51 raiph joined 15:58 gfldex joined, xfix is now known as notfix 16:01 rurban left 16:02 raiph left 16:03 guru joined, guru is now known as Guest49561, Guest49561 is now known as ajr_ 16:05 BenGoldberg joined
lizmat timotimo: are you working on Bool.pick and friends already? 16:06
if not, I could take that small smop :-)
16:08 zakharyas left 16:09 cognome left 16:10 Hor|zon joined 16:15 Hor|zon left 16:16 chenryn left
timotimo no i'm not :) 16:17
go ahead
i'm fiddling with my game still
lizmat ok, give me a few mins :-) 16:18
16:19 chenryn joined
timotimo seems like a big chunk of the performance penalty of having many enemies on screen was the exhaust effects 16:26
3/4 of all frames are rendered at 33fps or faster 16:32
that's not terribly bad
BenGoldberg Have the exhaust effects rendered last, and only if the framerate is fast enough :) 16:34
16:35 cognome joined 16:38 cognome_ joined, cognome left 16:42 virtualsue left, cognome_ left
timotimo heh. 16:44
that'd mean i'd have to go over the list of enemies again afterwards, not sure if that's so good
and i'm *still* surprised i spend more time rendering stuff out than i'm spending calculating movements and collisions and stuff
vendethiel- timotimo: it's "nice" but with that stupid accent I use sometimes 16:48
took me only an hour to backlog :p
16:49 isBEKaml left
timotimo yes, i know what "noice" means 16:50
16:50 pdcawley left
timotimo i just don't know what you commented on 16:50
16:51 ptc_p6 joined 16:54 pdcawley joined
vendethiel- timotimo: gtk thingie 16:54
16:56 BenGoldberg left, ezra1 joined
lizmat timotimo: grrrr... settings orderng issues :-( 16:58
17:00 ezra1 left
timotimo lizmat: ah damn 17:00
17:01 ptc_p61 joined
lizmat has trouble understanding .5 that early in the setting 17:01
timotimo as in 0.5? 17:02
that'd be a Rat, so maybe that's the reason?
lizmat "Could not locate compile-time value for symbol Rat"
indeed 17:03
timotimo try 0.5e0 instead?
or can you perhaps work with native nums?
17:03 ptc_p6 left
colomon or multiply by two and check against one? 17:03
lizmat colomon: we're about creating a faster Bool.pick/roll 17:04
17:04 zakharyas joined
colomon lizmat: yes, I know 17:04
but multiplying by two is probably faster than constructing a Rat
lizmat constructing a Rat at that point in the setting is a NYI 17:05
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
lizmat working on a solution :-) 17:12
colomon though getting a num/Num version of 0.5 is probably superior to 2 * rand < 1 17:14
17:15 Mso150 joined
lizmat I think I have something better 17:16
timotimo well, 0.5e0? 17:17
lizmat almost
nqp::rand_n(2e0) >= 1
timotimo ah, yes, that looks good
should also be pretty fast
lizmat and that was the goal, right ?
timotimo yeah 17:18
lizmat++ :)
now i can rewrite the code in "beatiful" :) 17:19
lizmat $ 6 'for ^10000 { Bool.pick }'
real0m0.247s
timotimo may want to add a 2 or two :) 17:22
er
a 0 or two
lizmat running spectest now, so far so good 17:23
$ 6 'for ^1000000 { Bool.pick }' 17:25
real0m1.801s
$ 6 'for ^1000000 { Bool.pick(1) }'
real0m37.380s
quite a difference :-)
colomon does it still work? ;) 17:26
dalek kudo/nom: 3b1aaa6 | (Elizabeth Mattijsen)++ | src/core/Bool.pm:
Speed up Bool.pick/roll
colomon imagines how quick it would be if Bool.roll just returned True always. :)
lizmat $ 6 'my $t; for ^100000 { $t++ if Bool.pick }; say $t' 17:27
50036
$ 6 'my $t; for ^100000 { $t++ if Bool.pick }; say $t'
49812
I'd say it still works :-)
itz Bool.roll.loadeddie? 17:33
lizmat $ 6 'for ^1000000 { Bool.pick }'
real0m1.517s
another 15% faster :-)
timotimo you mean when you leave out the $t++? 17:37
lizmat no, by adding another optimization
timotimo neato :) 17:38
dalek kudo/nom: 514e41b | (Elizabeth Mattijsen)++ | src/core/Bool.pm:
Stay in NQP land as much as possible

Good for another 15% performance increase
timotimo looks good to me
i wonder what we can do in particular to make panda's stage Fetch faster
because that's still ridiculously slow ... 17:39
17:39 isBEKaml joined
lizmat timotimo: planning on taking on panda after the next release 17:39
timotimo oh, way cool!
lizmat especially wrt to deprecations and other stuff :-)
timotimo are you intending to work inside panda or stay inside rakudo?
the latter would certainly be better for all our users, but probably also harder 17:40
lizmat probably both 17:41
still, I'm *really* surprised by the difference between Bool.roll and Bool.roll(1) 17:42
timotimo ?
lizmat the Bool.roll(1) is 15x as slow as Bool.roll 17:43
timotimo even after your opts?!
lizmat seems to me an optimization is missed there
well, before there was only 1 method that did all
timotimo mhm
lizmat now I introduced mutli's
timotimo how much faster than before is Bool.roll(1)? 17:44
lizmat will check in a mo
17:45 chenryn left 17:48 isBEKaml left 17:49 raiph joined
lizmat Bool.roll(1) hardly got any faster: apparently it is the parameter handling overhead 17:49
17:50 cognome joined
lizmat that is causing the performance loss 17:50
17:50 molaf joined
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
I'm thinking of this as a module. something like Spacing::Tuxish
lizmat however, Bool.roll has become 17x faster 17:52
for 1M from 25.5 CPU -> 1.5 CPU
(bare startup is .2, so it's really closer to 20x faster) 17:53
I guess when the optimizer understands that Bool.roll(1) can be optimized in the same way as Bool.roll
that will also become faster
dalek kudo/nom: 3448cb1 | (Elizabeth Mattijsen)++ | docs/ChangeLog:
Mention Bool.pick/roll now 20x faster
17:55
17:59 mirjam left 18:01 anaeem1_ joined 18:02 raiph left 18:03 Mso150_h joined 18:04 Mso150 left 18:05 kaare__ joined 18:09 kaare_ left 18:11 Hor|zon joined, flaviusb left 18:19 Hor|zon left, Hor|zon joined
raydiak m: my @a = < a b c >; s:g/(.)/$0/ for @a; @a.perl.say; 18:22
camelia rakudo-moar 6be4a4: OUTPUT«(timeout)» 18:23
raydiak ^ so, that gives me 3 empty strings...why?
dalek kudo/nom: ab01b9e | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Make .round (no parameters) about 3x as fast
moritz lizmat++
lizmat I found some suboptimal stuff while investigating solutions for Bool.roll/pick 18:24
moritz what we really need is people complaining about particular things being slow 18:25
(except list iteration; that we know)
18:26 Hor|zon left
lizmat timotimo: do you have any problems with .atan2() being slow? 18:27
raydiak should $/ ever be Nil in the replacement part of a s/// ? 18:32
timotimo lizmat: is it slow? 18:33
my code used to use it a bit
lizmat well, it is suffering from the same issue all methods have that take an optional parameter
timotimo oh! 18:34
i didn't know this issue is an issue
lizmat neither until I saw the difference in performance between .pick and .pick(1) 18:35
lizmat assumes the parameterless version is better optimized
and even inlined possibly
timotimo raydiak: in there we should have properly made $/ stuff
inside a .subst we don't :(
for NYI and bug reasons :( 18:36
huh.
the code i use atan2 with always has the parameter set
so the version that *does* take the parameter is faster?
faster than the version that leaves out the optional parameter?
lizmat no, they're equallly fast / slow atm 18:37
timotimo wut :(
can you find versions from the past that don't have this? 18:38
raydiak timotimo++: thanks, I'll file a bug then
vendethiel-
.oO( we need a STM solver to prove that the argument passed to it is 1 at compile-time )
18:40
lizmat hmmm... using multi's for atan2, optimizes the atan2() case, but pessimizes the atan2($foo) case significantly :-( 18:47
timotimo damn, wtf? :( 18:48
lizmat zaps that idea
18:48 anaeem1_ left
lizmat goes to double check performance on Bool.pick vs Bool.pick(1) 18:48
18:49 raiph joined 18:51 pepl joined
timotimo ooc, are you on nqp and moarvm master? 18:53
lizmat nope
timotimo i wonder if that makes a big difference
18:58 darutoko left
lizmat hmmm... it appears I've pessimized Bool.pick(n) 18:58
timotimo because of xx? 18:59
er wait
pick(n) doesn't use xx
lizmat no, I think because of the literal candidate
hmmm... I seem to only have pessimised .pick(n), not .roll(n) 19:00
19:01 cibs left 19:02 raiph left, gtodd1 joined 19:04 gtodd left
lizmat timotimo: probably because of xx, indeed, trying a simpler mmd setup 19:06
19:06 cibs joined
raydiak m: say 1 19:08
camelia rakudo-moar 6be4a4: OUTPUT«(timeout)»
19:08 Mso150_h left 19:10 Mso150 joined
timotimo lizmat: perhaps it'd be better to just dispatch on $n vs no $n 19:11
lizmat yup, that's what I'm doing now 19:12
timotimo 'k
19:16 Mso150 left 19:17 Mso150 joined 19:19 anaeem1 joined, Ven joined
masak m: my $x; do { say $x++ } while $x < 10 19:21
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"
\o/
Ven masak++
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.
(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
ha, masak2spooky4me or something
19:24 DarthGandalf left
dalek kudo/nom: a1306ca | (Elizabeth Mattijsen)++ | src/core/Bool.pm:
De-pessimize Bool.pick(n)/roll(n)

It appears that literal value candidates are not yet optimized away, so having them slows things down considerably. So the (n) cases are now back to what they were before I started all this (instead of worse).
19:28
19:29 pepl left
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)»
colomon is back from the local robot competition. 19:32
TimToady sure looks busted to me
timotimo Heap corruption detected: pointer 0x7fc6e5758fb8 to past fromspace 19:33
raydiak: you may want to bind $a rw in that case?
TimToady doesn't seem to help
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:35 kaare__ left
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
masak still too early to rule that out :P 19:37
but yeah, you are onto something, I think.
feel free to submit a rakudobug about it
raydiak already done
masak raydiak++ 19:39
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:40
19:42 amkrankruleuen joined
masak that expectation feels reasonable to me. 19:43
raydiak masak++ # helping me pretend to retain my sanity :) 19:45
masak , helping uphold the appearance of sanity on #perl6 since 2005 19:48
wow, I'm soon celebrating my 10 year anniversary on this channel
vendethiel- wow. 19:49
I'm soon celebrating my 10 year anniversary of programming! P 19:50
raydiak is there going to be cake?
vendethiel- of course. But it'll be a lie...
masak what am I, GLADOS?
vendethiel- nope, you're the test subject. 19:51
perl6 is glados.
masak :P
vendethiel-
.oO( it's eating your cake! But still gives you some of it )
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
fun story
raydiak yeah it's in the end sequence 19:53
at the very end after all the singing and e-mail writing iirc
oh and I think it's in the menu background after you beat the game
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
vendethiel- I'm actually stuck on the original, because the game just crashes in some room
raydiak bummer 19:55
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?
moritz ... and got a commit bit within 3 minutes :-) 19:58
vendethiel-: irclog.perlgeek.de/perl6/search/?ni...ethiel;q=; and click on the last page link; scroll down 19:59
vendethiel-: doesn't work for people with lots of lines, though
vendethiel- 2014-01-30 17:39 20:00
my first perl6 thingie
moritz otherwise
vendethiel- irclog.perlgeek.de/perl6/2014-01-30#i_8199360 hehe
moritz select FROM_UNIXTIME(timestamp) from ilbot_lines where nick = '...' ORDER BY timestamp ASC LIMIT 1
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:01
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:02
moritz lizmat: 2005-10-23 actually: irclog.perlgeek.de/perl6/2005-10-23#i_-440881 20:06
vendethiel- wow, Juerd has been here for a while :P 20:07
lizmat yes, he has!
masak Juerd++
dalek kudo/nom: e9378d7 | (Elizabeth Mattijsen)++ | src/core/Supply (2 files):
Bring Supply up to spec wrt to s/more/emit/
20:08
vendethiel- Juerd++ 20:09
wow. async{} worked in 2005?? 20:10
dalek ast: ea288de | (Elizabeth Mattijsen)++ | S02-types/WHICH.t:
s/OnMore/OnEmit because of Supply.s/more/emit/
lizmat vendethiel-: only in spec :-)
vendethiel- irclog.perlgeek.de/perl6/2005-10-23#i_-440844
moritz I think it worked pretty early in pugs
vendethiel- maybe it was sequentially... and sequentially broken :P
masak no, it worked in Pugs.
moritz but not much more 20:11
vendethiel- oh. right
lizmat ah, in pugs, yes, posisbly :-)
vendethiel- hahaha
2005 rakudo?
moritz I mean, iirc there were no synchronization primitives
lizmat yeah yeah... :-)
raydiak notices a reference to lack of sanity within the first 10 minutes of the very start of the #perl6 log 20:13
masak it's a long-standing tradition :) 20:14
20:15 beastd joined, raiph joined
moritz it comes with haskel^Wperl 20:19
20:22 Hor|zon joined 20:26 slavik left 20:28 Hor|zon left
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:28
20:28 raiph left
moritz raydiak: what do you need quotemeta for? 20:29
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)
moritz raydiak: so you're doing my $string1 = "$a $b", and want to escape $a, but not $b? 20:32
raydiak: if so, you could isntead do my $regex = rx{ $a <?$b> } 20:33
or not, depending on whether you want to do some post-processing
raydiak moritz: more like $a = "literal"; $b = "(non-literal stuff) $a (more regex stuff)"; rule { stuff $(b) more stuff} 20:34
so the things in $a should be literal in the end
but not the other stuff in $b
so I quotemeta $a before shoving it into $b
erm, $(b) should have been {$b} or something
moritz $b = rx{ (non-literal-stuff) $a (more regexes stuff } 20:35
raydiak: if $b is a regex right away, you don't need to quotemeta $a
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:36
moritz raydiak: I didn't quite understand it, but then yes, use the s:g thingy 20:37
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:38
20:40 slavik joined, raiph joined 20:41 anaeem1 left 20:43 rindolf left 20:47 anaeem1_ joined 20:52 raiph left 20:54 ajr_ left 20:59 ptc_p61 left, ptc_p61 joined, ptc_p61 left 21:01 zakharyas left
Juerd Hm? 21:13
I saw highlights.
Yes, I've been here quite a while.
My first contributions to Perl 6 were unit tests for pugs and a server :D 21:14
masak Juerd++ # unit tests for pugs 21:16
Juerd++ # a server, which I believe has found some use since
lizmat Juerd++ xx many
Juerd :) 21:18
timotimo have y'all been making rakudo better today? :P
lizmat++ has :)
21:19 anaeem1_ left
masak lol! 21:20
I blogged!
strangelyconsistent.org/blog/macros...s-in-a-row
arnsholt Oooh, masak++ blug 21:21
arnsholt goes to read
dalek ast: fbdfbae | (Elizabeth Mattijsen)++ | / (23 files):
Supply.s/more/emit, as per new implementation/spec
21:23
moritz qz.com/283268/if-shakespeare-wrote-...look-like/ found on reddit, and thought it might fit the average #perl6'ers interest 21:24
21:24 spider-mario left
masak yes, it's an oldie-but-goodie :) 21:25
dalek kudo/nom: 45bac9b | (Elizabeth Mattijsen)++ | docs/ChangeLog:
Mention Supply.more is deprecated
21:30
kudo/nom: a9dea39 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Remove pessimation of .round($x)

Also using a literal param in MMD, which is still not optimized away.
21:30 cognome left
moritz masak: I read that a bit fast, so forgive me if you mentioned it... 21:31
masak: but I feel it's worth pointing out *why* TTIAR violations are ok, why we get away with them 21:32
1) a constant prefix that introduces it
and
2) the second term isn't a general term, but restricted to a very specific syntactic form: an (x)block
masak *nod* 21:33
moritz so we should assume that TTIAR-violating macros are bound to the same constraints
masak or similar, yes.
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
masak well, in the grammar they are part of the same form. 21:35
21:35 pmurias joined
masak and `while` doesn't "feel" like an infix. 21:35
pmurias ttiar?
masak but I see what you mean.
moritz pmurias: two terms in a row
masak pmurias: surprisingly, explained in the post!
pmurias is reading the post 21:36
masak moritz: but yes, you definitely have a point.
moritz masak: so it might be rahter practical to have a TTIAR-pattern-macro-declarator
*rather
one that follows the <sym> <EXPR> <xblock>-pattern
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
21:37 anaeem1_ joined
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.
moritz: that there may be further ways to optimize for `<sym> <EXPR> <xblock>` 21:38
(but that these should be done with macros written in userland)
Ven masak++ # high blogging frequency 21:39
masak .oO( in 2014, masak's blogging became known for his frequency rather than his quality ) :P
its* its*
Ven: seriously though, I have a lot to get through, so if I don't hurry I'll never get done. 21:40
dalek kudo/nom: 7fff877 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Make IO::Socket|Proc::Async emit instead of more
21:42
kudo/nom: 0fb4cab | (Elizabeth Mattijsen)++ | src/core/signals.pm:
Make sure signals emit rather than more
21:43
21:43 pmurias left
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:49
masak I like that summary, I think. 21:58
yes, it's about *compilation* in general, not just parsing in particular. it's parsing, analysis, checking, perhaps optimization, and codegen. 22:00
22:03 anaeem1_ left 22:04 gfldex left
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.
arnsholt Exactly
It's macros, all the way down!
woolfy Just wanna mention: vendethiel++ 22:13
dalek kudo/nom: a7275a0 | (Elizabeth Mattijsen)++ | src/ (3 files):
S/winner/earliest/ as by recent S17 spec change
vendethiel- eh?
dalek ast: 9a2faa3 | (Elizabeth Mattijsen)++ | S17-channel/ (2 files):
Rename test file as per recent S17 spec change
22:14
masak .oO( getting another karma by pretending you didn't hear it the first time ) :P 22:15
vendethiel++
dalek ast: 3c20f45 | (Elizabeth Mattijsen)++ | S17-channel/earliest.t:
s/winner/earliest, as per recent S17 spec change
kudo/nom: 09a84c3 | (Elizabeth Mattijsen)++ | t/spectest.data:
winner.t is now earliest.t, as per spec change
22:16
lizmat calls it a day 22:19
so good night, #perl6!
masak 'night, lizmat 22:20
22:23 Hor|zon joined 22:26 kjs_ left 22:27 kjs_ joined 22:28 Hor|zon left 22:29 kjs_ left, DarthGandalf joined 22:30 beastd left 22:34 flussence left 22:35 virtualsue left
masak someone might want to update STD.pm6, too. (wrt s/winner/earliest/) 22:36
timotimo okay, so ... 22:38
i have this thingie:
m: sub create_or_use($storage is rw, &actions) { if defined $storage { $storae } else { $storage = actions() } }; 22:39
we can't eval here, this is timeout county!!
camelia rakudo-moar 3448cb: OUTPUT«(timeout)»
timotimo it lines up ♥
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`
timotimo thx
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;
camelia rakudo-moar 3448cb: OUTPUT«(timeout)»
timotimo more exactly 22:42
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;
camelia rakudo-moar 3448cb: OUTPUT«(timeout)»
timotimo weird. in repl that works apparently?
masak timotimo: camelia is busted right now. 22:44
timotimo totally.
it works locally in perl6 -e, but in my bigger program it b0rks :(
masak 'night, #perl6 22:47
22:49 flussence joined
timotimo gnite masak 22:49
22:58 cognome joined
timotimo this stuff works, i just forgot to remove a comment 23:01
23:11 Ven left 23:25 noganex joined 23:31 aborazmeh joined 23:43 Mso150 left 23:44 Mso150 joined 23:49 kjs_ joined 23:51 eiro left 23:54 colomon left 23:55 colomon joined