»ö« 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
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
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.
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
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
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
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
jnthn sleep & 00:41
[Coke] might not be specific to parrot, just happened to be what I was running. 00:51
timotimo vendethiel: wiki.gnome.org/action/show//Projec...X/Building - seems like you can build a GTK that doesn't require XQuartz 07:22
timotimo wow, the difference in time between (^1000).pick and 1000.rand.Int is *immense* 07:39
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
timotimo (but for now i noticed i'm using .rand everywhere in my code anyway) 07:47
moritz good morning 08:18
timotimo: you can check with nqp::isbig_I 08:19
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
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
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
itz hmm rakudobrew 11:59
that needs ~/.rakudobrew doesn't it? 12:00
or needed
oh hardcoded line 8 12:01
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 :\
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
timotimo :) 12:17
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
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
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
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
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
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
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"
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 =)
isBEKaml Well, I liked his Text::CSS presentation. :-) 14:40
isBEKaml Everything else was way over my head. 14:40
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
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
rurban And there is a workaround 14:52
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
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
rurban ? copying is the best if you want the best throughput, stop-the-world is ancient and unneeded 15:07
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
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
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
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
timotimo "disobject" 15:44
vendethiel- hello, #perl6. And now for some 48h backlogging...
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?
lizmat timotimo: are you working on Bool.pick and friends already? 16:06
if not, I could take that small smop :-)
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
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
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
timotimo yes, i know what "noice" means 16:50
timotimo i just don't know what you commented on 16:50
vendethiel- timotimo: gtk thingie 16:54
lizmat timotimo: grrrr... settings orderng issues :-( 16:58
timotimo lizmat: ah damn 17:00
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?
colomon or multiply by two and check against one? 17:03
lizmat colomon: we're about creating a faster Bool.pick/roll 17:04
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 ...
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
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
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
lizmat Bool.roll(1) hardly got any faster: apparently it is the parameter handling overhead 17:49
lizmat that is causing the performance loss 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
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
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)
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
lizmat goes to double check performance on Bool.pick vs Bool.pick(1) 18:48
timotimo ooc, are you on nqp and moarvm master? 18:53
lizmat nope
timotimo i wonder if that makes a big difference
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
lizmat timotimo: probably because of xx, indeed, trying a simpler mmd setup 19:06
raydiak m: say 1 19:08
camelia rakudo-moar 6be4a4: OUTPUT«(timeout)»
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
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
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
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
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
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
moritz it comes with haskel^Wperl 20:19
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
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
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 :)
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
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.
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
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
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
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
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
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
timotimo gnite masak 22:49
timotimo this stuff works, i just forgot to remove a comment 23:01