»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! | Rakudo Star Released!
Set by diakopter on 6 September 2010.
jnthn sleep & 00:03
masak decommute & 00:13
lichtkind blog post: blogs.perl.org/users/lichtkind/2010...-week.html 00:57
good night @all 00:58
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet 02:00
edenc how do I decl 03:43
uhm
how do I declare named captures in a rule?
Tene edenc: $<foo>=(...) 03:45
edenc hmm, "symbol foo not predeclared" 03:46
I have an inline code block after the match
that's trying to access the value of foo 03:47
edenc apparently, the wrong way 03:47
TimToady paste or nopaste it?
edenc gist.github.com/713076 03:49
TimToady use $<id> inside the block too 03:49
edenc ah
sweetness
what if I want to declare a named rule multiple times and have that imply '|', as in: rule foo { '/bar' }, rule foo { '/baz' }, instead of rule foo { '/bar' | '/baz' } 03:52
diakopter protoregex
perl6advent.wordpress.com/2009/12/2...d-grammar/ 03:53
edenc yeah, I saw that in S05 but couldn't quite grasp how to use it
diakopter search in that article
for protoregex :)
edenc right, thanks 03:54
diakopter TimToady: is that article right? 'proto token' vs 'proto rule' ? 03:55
edenc ok, that worked, thanks 03:58
diakopter yay; /me knew something correct for once
edenc what does the "sym<>" construct after the rule name mean?
and... why is it needed
diakopter that tells the rule what <sym> means inside the rule 03:59
TimToady and remembers the string in case you want to make an operator later
diakopter so actually those literals ('if' etc) can be replaced with <sym>
TimToady nowadays the proto wants {*} instead of { <...> } 04:00
at least in STD, not sure whether rakudo has tracked that yet
edenc yeah, it doesn't work in rakudo
I just built it fresh
TimToady dinner & 04:01
edenc I'm confused as to why I declare "proto token" but then extend it via rules
diakopter what I was asking 04:02
(also)
does it work with token also?
edenc yes
I just swapped it out for rule
diakopter probably it should enforce them to be the same, I'd think 04:03
edenc swapping the literals out for <sym> doesn't work 04:06
diakopter hm
oh, try <.sym> 04:07
edenc not on rakudo, at least
nope
well
actually
I might be doing something wrong
diakopter might be very mistaken about able to swap them out 04:08
edenc yeah, it works with literals, but obviously, doesn't work with subrules
dalek odel: f443c7e | diakopter++ | dotnet/runtime/Runtime/Ops/Primitive.cs:
[dotnet] add a length_str Op
04:39
odel: c46ad28 | diakopter++ | / (5 files):
[dotnet] bunches of integer expression (binary operations returning int & bool) code-generators

fix typo in DNST::Class slight adjustments in Cursor fix plan count in 28-subclass.t
lue y o hai o/ 05:13
dalek : 714cf3a | cotto++ | misc/dalek-conf.json:
add plobsing's extraction of pirc to dalek
05:33
plobsing it appears pirc has 16 open tickets 05:47
masak lue: watched last ep of DW. laughed. cried. 06:21
mberends masak: o/ 06:23
masak mberends! \o/
mberends -> $work :(
masak hopes mberends comes back soon 06:24
ch3ck3r morgääähn 07:07
masak o/ 07:08
ch3ck3r morrn masak 07:10
masak ch3ck3r: any Perl 6 plans for the day? 07:11
ch3ck3r masak: not yet 07:12
sorear edenc: diakopter: rule/token/regex just set the initial states of :sigspace and :ratchet, they don't affect the inherent type of the Regex object in any way 07:14
token {...} is exactly equivalent to regex {:ratchet ...} or rule {:!sigspace ...} 07:15
proto token, proto rule, and proto regex are all exactly the same, since {*} is not affected by regex modes
hrm, nearly half of niecza-std's time was spent in the LTM module 07:20
diakopter oh 07:35
masak .oO( Longest-Time Matching ) 07:46
sorear well, I haven't really bothered to optimize LTM up to now 07:47
masak Su-Shee can has snow, too :) twitter.com/sheeshee/status/7339644857352192 07:52
sorear masak: you wouldn't happen to know [anyone who knows]? Croatian, would you? 07:53
masak not anyone who knows it in depth, no.
sorear masak: no, GGE is still longer-time. 08:17
masak :)
cosimo sorear: i know one 08:56
sorear where is tadzik from? 09:03
tadzik Poland
I've been to Croatia once, but I don't think that counts :)
hello btw
masak hi, tadzik
sorear tadzik: NotFound tells me that modern Spanish has a degenerate CharLingua, and suggested that I investigate one of the Slavic languages that uses Latin or vice versa 09:04
sorear Does Polish have any cases where .chars in grapheme mode is intuitively wrong? 09:05
tadzik I don't think I understand this
Care to provide an example?
sorear That's exactly the problem 09:07
I haven't seen a single case where CharLingua is different from Grapheme
sjohnson masak: o/ 09:10
masak sjohnson: \o 09:11
sorear Grapheme is very much different from Codepoint; graphs "n̈" is 1, but codes "n̈" is 2 09:12
Is there any case in Polish where graphs and chars should disagree?
tadzik oh, yes, I think 09:13
like thre is 'ch', which is 2 letters, but pronounced exactly like 'h'. Is that what you mean?
sorear imagine you know nothing about data representation and you're playing with Perl 6 for the first time. You know that > chars "A" prints 1 and > chars "tadzik" prints 6. What do you expect after > chars "ch" ? 09:14
tadzik same with rz - ż 09:15
sorear: 2 chars
sorear Would you expect 1 after chars "ż"?
tadzik for there are exceptions: marznąć is pronounced "marznąć", not mażnąć 09:16
sorear: yes
sorear tadzik: are there any basic string operations that intuitively should treat "rz" as a unit? 09:17
tadzik I don't think so 09:18
it matters only when speaking 09:19
dalek ecza: 6a9add7 | sorear++ | lib/Cursor.cs:
Use a more clever algorithm for collecting fates

Takes 12% off STD SAFE.setting time.
09:42
sorear one thing I'm quickly learning is that System.Collections.Generic.Dictionary`1 and all its kin are hopelessly inefficient 09:45
moritz_ that's basically a hash, right? 09:46
sorear yes 09:51
sorear the one gripe I have with the mono profiler is how it handles recursive functions 09:54
dalek kudo: de61cd9 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get some testing
10:02
dalek ecza: b77fc74 | sorear++ | lib/Kernel.cs:
Use preallocated Bool objects
10:33
ecza: 923d289 | sorear++ | lib/Cursor.cs:
Avoid reallocating Close buffer
jnthn o/ #perl6 10:37
moritz_ \o 10:38
masak jnthn: \o 10:40
jnthn masak! \o/
ch3ck masak's one is a hitler smiley 10:43
sorear out
moritz_ ch3ck: not every stretched out arm is a hitler greeting
ch3ck the one in the smiley is very straight upwards 10:45
masak still, it's nice to have triggered the Godwin switch. we don't do that very often in here at all.
ch3ck just like they did
moritz_ so what? soccer referees use that gesture all the time too
masak moritz_: oh wow. I never realized that. 10:46
ch3ck masak is a soccer referee?
oO
masak ch3ck: I must say your logic is impeccable.
ch3ck the logic is very clear.. if this greeting is used mainly by soccer referees and nazis, i hope you're a soccer referee 10:49
moritz_ actually I'm not a good swimmer, but I suspect that if you swim the crawl, there are also times when you extend one arm
so I kinda think that masak++ is a swimmer
masak yes, but I swim like this: /o\ 10:50
:)
moritz_ as a table tennis referee I usually don't put the arm up that high, but ASCII gives little choice regarding the angle for the forward slash
masak: with deflector shields at the front? :-) 10:51
huf i dont think it's the greeting that makes the nazi
rather, the murderous rampage ;) 10:52
moritz_ ... which masak only displays towards bugs :-)
huf awwwww. hug a bug?
good thing version control keeps them alive indefinitely :) 10:53
moritz_ hugme: hug ch3ck 10:53
hugme hugs ch3ck
ch3ck well, we could just wait and see if masak one day makes a /nick massaker 10:55
or even with the 2 s upper case
if not, he probably is a swimmer or a soccer referee :D 10:56
moritz_ or maybe just a normal-ish dude who happens to like ASCII art
(I wouldn't go as far as calling masak "normal" :-) 10:57
masak thanks, I think. :)
moritz_ you're welcome
otoh I don't think I've ever met somebody whom I'd call "normal"
jnthn I did once. I was stood up and they were lying down. Seemed very normal to me. 11:00
moritz_ ah, the pain 11:01
thepain ;) 11:03
moritz_ hugme: hug thepain
hugme hugs thepain
ch3ck hugme: hug me 11:04
hugme hugs ch3ck
ch3ck thx
tadzik new rakudo can't make reaclclean 11:20
one needs to manually perl Configure.pl so the Makefile works 11:21
masak not sure I follow. you're saying you have to generate the Makefile in order to do 'make realclean'? how could it not be so? 11:23
tadzik masak: things changed, and Makefile used files that now do not exist 11:26
masak tadzik: hm, that does sound wrong. 12:01
jnthn Mmmm....bratwurst for lunch :) 12:07
tadzik masak: they have removed PIRC, and the old makefile referred to it; new one does not 12:08
masak tadzik: is there an easy/obvious fix? 12:19
moritz_ tadzik: just use 'git clean -xdf' to clear out your parrot repo 12:23
or use a fresh checkout 12:24
tadzik moritz_: I manually regenerated the makefile and then --gen-parrot worde
* worked 12:25
masak: what I said 12:26
takadonet morning all 13:25
masak takadonet: \o 13:26
ch3ck masak: \o 14:00
muixirt current parrot/rakudo spit out some error messages for perl6 spectest 15:26
past experience say I do something wrong then I get weird error messages :-) 15:27
muixirt getting some 'invalid pointer' messages while spectesting 16:24
muixirt hmm, t/spec/S02-literals/char-by-number.rakudo hangs, without eating cpu time 16:28
colomon muixirt: what platform?
muixirt linux x86-64 16:29
colomon I'll give it a try here. 16:30
colomon building... 16:38
muixirt sh*t, can't reproduce it 16:39
takadonet anyone noticed the whole speed up when running an empty perl6 script? 16:50
gfldex parrot++
takadonet s /whole/huge/
gfldex :) 16:51
takadonet gfldex: was that you? :)
gfldex no
i'm not good with birds
takadonet on the latest rakudo star it average around 1.3 s and on the latest compiler i get .8 s 16:52
gfldex they improved the GC and fixed a few memory leaks 16:53
takadonet by a lot it seems
that is a big difference
gfldex the old GC was rather horrible :) 16:54
i can't wait to see the JIT to come back
we will need seat belts :D
muixirt gfldex: keep on dreaming 16:55
takadonet muixirt: why is that? 16:58
muixirt takadonet: first of all is jitting not the answer to rakudo perf problems 17:01
muixirt second I doubt that a Parrot with JIT will materialize in the near future (let's say in 12 months) 17:02
takadonet muixirt: ok good to know
muixirt and as far I can remember the former Parrot jit system didn't work with perl6/rakudo (most of the time?) 17:06
muixirt takadonet: but as a dev you do know better than me, what's your take? 17:08
takadonet module developer not core good sir :) 17:09
muixirt (but, of course, a significant smaller startup time *is* progress)
takadonet well that what everyone was complain when rakudo star was release
so if we can speed up that startup time, perhaps more people would be interesting in hacking with perl 6 17:10
muixirt I agree 17:12
moritz_ well, currently all built-in types are created at startup time 17:14
that's very costly
if we could build them at compile time (we can), and then serialize them (we can't yet), we would just need to deserialize the types at startup 17:15
actually the first "we can" is also only partially true
jnthn++ is working on both points
muixirt colomon: do the tests work for you 17:17
colomon muixirt: spectest is still running, but no fails at all into S05 as far as I can tell 17:18
muixirt colomon: in the second run I got other errors, like
t/spec/integration/man-or-boy.t ................................ 1/10 *** glibc detected *** ./perl6: free(): invalid next size (normal): 0x0000000006638620 *** 17:19
moritz_ muixirt: welcome to the wonderful world of parrot GC
diakopter sigh; it fails man-or-boy now
muixirt moritz_: so these errors are known?
diakopter "it" used loosely 17:20
moritz_ muixirt: I get some random test failures
typically between 2 and 4 per spectest run
muixirt moritz_: I thought I did something wrong here (parrot fulltest was clean) 17:22
moritz_ muixirt: either it's an old rakudo bug that has been triggered by the new GC, or rakudo just exercises parrot much more thoroughly than parrot's own test suite
moritz_ well, the latter wouldn't be enws at all 17:23
*news
muixirt well I don't see a better startup time 17:26
colomon looks like t/spec/S19-command-line/dash-e.t failed 17:27
(spectest still running)
isBEKaml hello, #perl6! :) 17:30
colomon \o 17:32
isBEKaml colomon: surprisingly silent here. Long weekend? :)
colomon The long weekend has not yet started for me. :) 17:34
moritz_ long weekend? no such thing in the old worold
isBEKaml Oh, I don't know. I have seen lazy weekends and busy ones. ;) 17:35
colomon hmmm... looks like I got the "Parse errors: No plan found in TAP output" error for about seven files in spectest 17:38
moritz_ colomon: with local patches? 17:38
colomon moritz_: nope, fresh checkout
t/spec/S05-modifier/ignorecase.... 17:39
===SORRY!===
Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 41
that's ... different
moritz_ works here
moritz_ two failing TODO tests at the end 17:39
but that's to be expected 17:40
colomon huh. unicode issues? 17:41
isBEKaml moritz_: Parrot moved to git completely? So, does rakudo build with --gen-parrot checkout the parrot git tree now?
colomon isBEKaml: yes
moritz_++
isBEKaml o// moritz_++
colomon on the other hand, t/spec/S32-trig/cosh.t failed during "make spectest" and was fine when run directly. 17:42
sigh.
isBEKaml that reminds me, I still have to package rakudo for Slackbuilds.org. Slow builds on an ancient machine put me off. :| 17:43
parrot builds are available now without the git modifications, though.
isBEKaml I'll give it a try at packaging again this weekend. 17:45
muixirt moritz_: wrt Ticket #1871, does it really segfault? (error conditions intercepted by glibc) 18:21
moritz_ muixirt: it exits with status 11. Afaict that's a segfault 18:39
muixirt ok, I saw exit status 6 too 18:48
lue ohai o/ 18:49
sorear good * #perl6 19:39
sjohnson hi
tadzik hello 19:40
takadonet sorear: yo
colomon \o 19:42
sjohnson colomon ! 19:43
dalek odel: b34f13f | diakopter++ | dotnet/runtime/Runtime/Ops/Boxing.cs:
[dotnet] add variants of the boxing Ops that use the current thread's default types' representations
21:13
odel: ecb0d09 | diakopter++ | dotnet/compiler/DNST (2 files):
[dotnet] add $!type and $!result parameters to DNST::If, so the result temporary can optionally be ignored/left out,
odel: 8fd401d | diakopter++ | dotnet/compiler/PAST2DNSTCompiler.pm:
[dotnet] finish the success path of PAST::Regex(:pasttype('literal')), of which I'm proud:

   ge(emit_call($*re_tgt, 'IndexOf', 'int', lits((@($r))[0]), lit($*re_pos) ), lit(0)),
   DNST::Bind.new($*re_pos, plus(lit($*re_pos), lit(pir::length((@($r))[0]))))
  ));
Compiles to C# string ops using C# ints.
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....kup_tablet 22:37
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet 22:53
lichtkind added scope declerator 22:58
sorear %foo{$bar} is about 90 times slower than perl 5... hmm 23:12
for me
diakopter how many reps 23:17
sorear 100,000, why does it matter?
diakopter just hoping it was more than 1 or something
sorear also it looks like an artefact of "slow" Num->Str coercions
diakopter (sry)
sorear no, 1 iteration is below my limits of measurement 23:18
I run stuff enough times to fill up a 5-30s timing window
(9s)
yeah, down to 4.7s after implementing an optimized Num.Str 23:19
dalek ecza: 8e193aa | sorear++ | lib/Kernel.cs:
Implement optimized Num.Str coercion
sorear I usually go for shorter runs when using the profiler, since it has rather high overhead
I think it calls gettimeofday twice per function call... insane 23:20
seriously there has to be a faster way. why can't I just mmap("/dev/jiffies/")
sorear oh dear 23:26
diakopter I guess to keep the overheard somewhat consistent across platforms 23:27
overhead
sorear if this profile is to be beleived, System.Double.ToString alone takes more microseconds than a single iteration of $hash{$i} = $i on Perl 5
(2.5)
sorear goes prying in NumberFormatter to see what's wasting so many cycles 23:28
*headdesk* It's written in C# 23:29
Not an icall
No wonder it's so slow 23:30
diakopter well it has to conform to the spec, which might not....
actually, technically, it is supposed to conform to .net.... 23:31
dalek ar: 8d848b7 | pmichaud++ | / (2 files):
Update Rakudo and Parrot version numbers.
23:31
ar: 5d02f3d | pmichaud++ | / (2 files):
Update Makefiles; disable neutro for this release (it doesn't build).
sorear this code is ridiculous 23:32
it uses thread-local singletons.
lichtkind good night 23:42
sorear diakopter: the spec doesn't say whether any given method is C or C# 23:44
System.Runtime.Serialization means that Mono classes need to have exactly the same fields as their .NET counterparts, but doesn't affect methods
diakopter yeah; for all those operations on value types that are very small sizes, they should definitely be copied/sent to much more native editions. 23:45
sorear well, Perl 5 is just using sprintf 23:50
it's not *particularly* native
dalek ecza: 1bda7f5 | sorear++ | / (3 files):
Use simplifier to optimize simple &postcircumfix calls
23:52
sorear 46.9 -> 43.2 23:53
dalek ecza: 7d54b1c | sorear++ | / (3 files):
Optimize &defined as a builtin
23:58