Parrot 2.7.0 "Australian King" Released! | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets (23 to go), merge outstanding branches; profile your favorite PIR for memory leaks with valgrind
Set by moderator on 1 September 2010.
whiteknight We're going to have to start with a dirt-simple JIT, at least to get the API started 00:01
but a sytem with a flat bitmap and no call/ret sounds interesting
I can't say I know of any prior art for such a thing, however
chromatic All it is is tracking what we do no across the barrier of where we can't know. 00:02
00:02 Psyche^ joined
chromatic The only other necessary part is making sure that any code which creates GCables which may get stored in an unknown fashion in untrusted code anchor them properly for their lifespans. 00:02
Subject verb agreement? I disagrees! 00:03
whiteknight I am not against a separate set of API functions and a separate GC for untrusted code 00:04
chromatic Hadn't thought of separate GC.
The API functions will likely have to be separate, as they'll support C's calling conventions.
whiteknight if extensions need to store crap in weird places, we'll give them a more flexible, but slower, GC to use for the purpose 00:05
00:08 davidfetter left, Patterner left, Psyche^ is now known as Patterner
whiteknight I can't figure out what I want to do for documentation for PLA 00:11
the output of pod2html is hideous 00:12
chromatic There's a CPAN module for the HTML output on search.cpan.org, but I forget its name. 00:13
Its output is much, much better.
whiteknight what I would really love to have, and may just have to create, is something like Pod::HTMLEmbed in pure Parrot
I guess Pod::HTML does support a --css option, which might be used to some effect
00:43 bluescreen joined
bluescreen hi guys, question, is there any reason why parrot doesn't allow you to add parents to class that has instances? 00:46
chromatic Yes; we don't have a good way yet to invalidate caches of attribute data and method lookup. 00:52
whiteknight chromatic: maybe that's a project we need to put on the roadmap. It's something we could tackle with a moderate-sized effort 00:55
a hash-like cache class with a pointer to a version counter would work pretty nicely and could be used in a number of places 00:56
Coke is it possible for abs to have promote? is it only in the case of negintmax?
whiteknight Coke: that question doesn't parse for me. Rephrase? 00:57
chromatic I can't imagine how abs would have to promote.
whiteknight, I don't know how useful it is. 00:58
whiteknight chromatic: if not having a cache invalidation mechanism is preventing us from adding useful features, we can create one
method lookup caches are the primary use I can think of. In the class obviously but also used for callsite caching 00:59
bluescreen chromatic: but you allow a class to add methods ( and possibly remove them but i haven't tested it ), it isn't that the same situation in terms of caches? 01:01
whiteknight bluescreen: It's not a problem with method caching so much as MRO caching 01:02
bluescreen MRO stands for..? 01:03
Coke er, "to have to"
MRO?
purl rumour has it MRO is the Digital sitecode for Marlboro, MA or Method Resolution Order or www.python.org/2.3/mro.html or one solution to the 'Diamond Problem' at en.wikipedia.org/wiki/Diamond_problem or Method Resolution Order or a pragma, see the 5.10 docs for details
Coke just looking at PGC's commit message. 01:04
(re: abs promoting)
dukeleto?
purl it has been said that dukeleto is mentoring a few peeps. can't remember everyone. sure.
whiteknight method resolution order. Each class caches a list of it's parents in a particular order
bluescreen but don't you have same problem with roles? 01:05
whiteknight once that list is compiled, you can't just jam another parent on the end, you need to recompute the whole list
we might. I'm certain roles are not oft-used or well-tested
bluescreen yeah gotcha whiteknight and Coke.
whiteknight Adding a new class to the MRO invalidates the MRO cache, but also all the method caches for all objects of all types in the MRO
or, all classes in the MRO below the newly-added parent 01:06
Coke dukeleto is also jonathan at leeeeeeeeeeeeto dot net
purl okay, Coke.
bluescreen so how does perl6 ( or perl5 running over parrot) solves this, as perl supports dynamic inheritance
Coke msg dukeleto nevermind. added your leeeeeeto.net addr.
purl Message for dukeleto stored.
Coke kid51? 01:07
purl kid51 is now going to live dangerously.
Coke kid51 is also jkeen@verizon.net
purl okay, Coke.
whiteknight bluescreen: It's not that parrot can't solve it. It's just that nobody has solved it yet. 01:08
doesn't seem to be much interest/motivation in it just yet
you interested?
:) 01:09
Coke msg kid51 - nevermind, added your verizon address.
purl Message for kid51 stored.
whiteknight Actually, we're probably going to re-do our object model soon, so there might not be much use in adding this feature to the current system
better to get involved in the design of the next system
I'm signing off for the night. Later 01:12
01:12 whiteknight left
tcurtis Does Perl 6 allow adding parents after instantiation? Rakudo doesn't appear to, and it certainly seems like it would be extremely difficult with certain representations if the new parent has any attributes. 01:13
chromatic Right.
Roles shouldn't have the same problem, because role composition is a compile-time operation. 01:14
tcurtis wonders how image-based Smalltalk implementations handles changes to a class's attributes. 01:17
chromatic Much more easily. 01:21
bluescreen whiteknigh: like you said, if you add/remove methods you should invalidate MRO cache for the class and its subclasses.. At a naive & inexpert look that shouldn't be so hard to do 01:22
assuming MRO is generated at a runtime
chromatic Okay. How do you find all subclasses of a given class? 01:25
bluescreen well, as i said, I don't know about parrot guts. but I would expect that how have some way to build an inheritance tree 01:30
chromatic Subclasses point to parents, but not the other way around. 01:31
bluescreen i mean in smalltalk classes know their subclasses
you can cascade down those kind of things
01:32 kid51 joined
dalek rrot: r48757 | jkeenan++ | trunk/t/pmc/bigint.t:
Two tests added -- so argument passed to plan() must increment by 2.
01:33
rrot: r48758 | jkeenan++ | trunk/config/inter/progs.pm:
Resolve ļæ½trac.parrot.org/parrot/ticket/854. Delete two needless regex substitutions in linkflags and ldflags settings.
02:07
chromatic Smalltalk has a registry of classes it can walk when it needs to invalidate things. 02:11
It's a question of how much data you want to store everywhere and how common the operation is.
dalek TT #854 closed by jkeenan++: config/inter/progs.pm: Figure out why -libpath: needs to be removed from ... 02:14
TT #854: trac.parrot.org/parrot/ticket/854
kudo: d75c61d | masak++ | src/core/Set.pm:
[Set] implemented .symmetricdifference and (^)
02:15 kid51 left 02:36 janus left 02:39 petdance joined
dalek kudo: 27d54dc | masak++ | src/core/Set.pm:
[Set] implemented postcircumfix:<{ }>
02:44
03:26 janus joined 03:47 bluescreen left 04:00 bluescreen joined
dalek rrot: r48759 | dukeleto++ | trunk/t/pmc/bigint.t:
[t] Reinstate division_by_zero test in t/pmc/bigint.t and fix plan
05:15
05:43 petdance left 05:58 bacek_at_work joined 05:59 jsut_ joined 06:01 TimToady left 06:04 jsut left 06:05 TimToady joined 06:08 uniejo joined 06:16 chromatic left 06:40 theory left 06:49 fperrad joined 07:12 jsut_ left 07:13 jsut joined
bacek_at_work S03? 07:42
purl rumour has it S03 is the operators spec or dev.perl.org/perl6/doc/design/syn/S03.html
dalek rrot: r48760 | mikehh++ | trunk/src/pmc/integer.pmc:
fix codetest failure - trailing whitespace
07:48
08:14 NotFound left 08:17 NotFound joined 08:32 tcurtis left
dalek rrot: r48761 | NotFound++ | trunk/t/pmc/stringiterator.t:
one more StringIterator test to reach 100% coverage
08:39
rrot: r48762 | NotFound++ | trunk/t/pmc/exception.t:
test setting a wrong attribute in Exception
08:56
mikehh All tests PASS (pre/post-config, make corevm/make coretest, test, fulltest) at r48762 - Ubuntu 10.04 amd64 (g++ with --optimize) 09:11
dalek nxed: r616 | NotFound++ | trunk/winxedst1.winxed:
allow invoke functions called 'new' in stage 1
09:39
nxed: r617 | NotFound++ | trunk/pir/winxed_compiler.pir:
update installable compiler
09:45
09:52 smash joined
smash hello everyone 09:53
moritz smash!
smash moritz: mornin' 09:54
moritz almost lunch time here :-) 09:55
smash 11am here 09:56
moritz ah, you're in GMT, I'm one TZ to the east 09:57
smash nods.
nopaste "NotFound" at 192.168.1.3 pasted "Using perl5 from winxed" (14 lines) at nopaste.snit.ch/23213 10:25
NotFound blizkost++ 10:26
10:33 cognominal left 10:34 cognominal joined 10:59 nwellnhof joined
moritz NotFound++ 11:26
11:30 fperrad_ joined 11:31 kid51 joined 11:33 fperrad left, fperrad_ is now known as fperrad
dalek rrot: r48763 | nwellnhof++ | trunk/src/packdump.c:
Add n_regs_used to packdump
11:46
11:57 luben_work joined 11:58 luben left 12:03 whiteknight joined 12:18 kid51 left 12:40 bkuhn joined 12:53 mariano__ joined 12:59 ash_ joined
nwellnhof Is it OK if I regenerate the IMCC parser with bison 2.4.2? 13:02
The current version was generated with 2.4.1
ash_ neat, there is a bison 2.4.3 release aug-5-2010 13:08
dalek rrot: r48764 | nwellnhof++ | trunk/t/pmc/bigint.t:
Fix bigint test without GMP
13:11
whiteknight nwellnhof: so long as you don't add any backwards-incompatible features 13:22
the important part is that all developers need to be able to regenerate it without going crazy, if necessary
nwellnhof whiteknight: i just happen to have bison 2.4.2 installed here and wanted to ask if that's ok. thanks. 13:24
whiteknight yeah, everybody has a different version, I think. So it does get regenerated with some regularity 13:26
dalek rrot: r48765 | nwellnhof++ | trunk/compilers/imcc (7 files):
[imcc] Check duplicate identifers more thoroughly
13:29
13:30 uniejo left
dalek TT #1701 closed by nwellnhof++: .const string of a .local string that's been assigned to -> bus error 13:32
TT #1701: trac.parrot.org/parrot/ticket/1701
TT #1766 created by nwellnhof++: n_regs_used in PBC files isn't checked
TT #1766: trac.parrot.org/parrot/ticket/1766
13:33 macroron joined 13:41 mariano__ left 13:42 mariano__ joined 13:45 ash_ left
dalek rrot: r48766 | nwellnhof++ | trunk/t/compilers/imcc/syn/const.t:
[imcc] Test case for TT #1701
13:46
arnsholt Given to integers, what's the best way in PIR to get div $P0, $P1 as a float? 13:55
nwellnhof integer registers or integer PMCs? 14:00
arnsholt PMCs 14:02
Right now I just coerce the them to num registers and divide those, which seems to work
nwellnhof i'd say $N0 = $P0, $N1 = $P1, $N2 = div $N0, $N1
just what you said 14:03
arnsholt Yeah, that's what I landed on too. Just had to ask in case there's some other kind of cleverness that could be done =)
14:06 mikehh left
particle you don't need to convert both 14:07
autoboxing should take care of it for you 14:08
14:09 patspam joined
arnsholt True. But they might be one Float and one Integer PMC as well, in which case I don't know which is what 14:12
Not without checking types and such. Coercing both to nums is less work for me =) 14:13
14:25 ash_ joined 14:34 davidfetter joined
moderator #parrot Parrot 2.7.0 "Australian King" Released! | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets (20 to go), merge outstanding branches; profile your favorite PIR for memory leaks with valgrind 14:40
moderator Parrot 2.7.0 "Australian King" Released! | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets (20 to go), merge outstanding branches; profile your favorite PIR for memory leaks with valgrind 14:42
14:50 patspam left 15:07 ruoso joined 15:08 fperrad_ joined 15:09 fperrad left, fperrad_ is now known as fperrad 15:10 ruoso left 15:11 davidfetter left 15:16 davidfetter joined
arnsholt What do I need to do to get the PIR output from my compiler to run through the parrot interpreter? 15:20
(Provide access to the language PBC somehow, I guess?) 15:21
15:23 fperrad_ joined 15:26 fperrad left, fperrad_ is now known as fperrad 15:29 hercynium left
whiteknight arnsholt: what do you mean by that 15:32
arnsholt Doing "./parrotlog --target=pir > file.pir ; ./parrot_install/bin/parrot file.pir" essentially 15:37
(But with a few modifications of the pir for debugging)
15:43 davidfetter left 15:46 chromatic joined
particle yes, you'll need load_bytecode 'your-lang' 15:56
15:57 jan left
arnsholt There we go. Cheers! 15:58
16:00 patspam joined 16:01 whiteknight left
dalek TT #854 reopened by doughera++: config/inter/progs.pm: Figure out why -libpath: needs to be removed from ... 16:07
TT #854: trac.parrot.org/parrot/ticket/854
16:07 theory joined
ash_ so... gc... fun times... i just took a gprof sample on a really long running rakudo app, and almost entirely made up of gc calls 16:09
16:20 hercynium joined
nwellnhof ash_: yeah, that's the biggest performance problem right now 16:24
ash_: what percentage of time is spent in GC in your app?
particle i just don't understand why parrot doesn't have a performant gc by now 16:25
it boggles my mind. it's been complaint #1 for what seems like tens of months. 16:26
Coke particle: same reason <every that sucks> sucks.
particle: can YOU fix the GC?
chromatic They're really very difficult to write.
particle Coke: i know, it's hard. and i know, there are other things to do that are easier, and are also pain points.
but we've had multiple people look at it multiple times 16:27
chromatic And it ALWAYS HAS TO KEEP PASSING EVERY TEST 100% OF THE TIME
particle it seems a bit to me like wyle e. coyote
Coke whoa.
particle try one thing, when it fails, don't ever try that way again.
chromatic: i disagree. we can have experimental gc's which fail tests. 16:28
chromatic And we do.
And they haven't replaced the current GC for an important reason.
particle of that, i was not aware.
what will it take to imlement a winner? 3 months for a team of two to three good hackers? 16:30
and i mean at the current burn rate, not 40 hr weeks
chromatic How long does it take to fix a bug?
particle please, estimate. 16:31
chromatic I can't.
particle are the problems with the current experimental gc's all bugs, or are there structural/argorithmic/design issues?
is that even known?
chromatic The current problems are bugs. 16:32
We can't discuss design issues without data over a large set of likely programs.
particle ok, good.
are the bugs being tracked?
chromatic In a formal sense, not to my knowledge.
particle ok, so that's a potential place to spend some energy. 16:33
nwellnhof i wonder how people could try to write experimental GCs without tackling things like write barriers first 16:34
chromatic That too.
Or at least formalizing our memory model somehow.
16:36 patspam left 16:38 patspam joined
nwellnhof i think it would be really helpful to implement a classic two-space copying collector first. 16:38
it wouldn't be much faster than the current GC, maybe even slower. 16:39
but it would be a much better base for optimizations than the code we have now.
chromatic That means we'd have to be able to move our GCables in memory. 16:40
16:40 patspam left
nwellnhof yes, we will have to, sooner or later. 16:40
16:42 pyrimidine joined, luben_work left 16:48 tcurtis joined 16:53 fperrad left 16:54 nwellnhof left
pmichaud rakudo: say ~(for 1..200 { $_ }) 16:57
p6eval rakudo 27d54d: OUTPUT«src/string/api.c:3341: failed assertion 'pos <= res->strstart + Buffer_buflen(res) + 1'␤Backtrace - Obtained 24 stack frames (max trace depth is 32).␤/home/p6eval//p1/lib/libparrot.so.2.7.0 [0x2ad9c6ab51a3]␤/home/p6eval//p1/lib/libparrot.so.2.7.0(Parrot_confess+0x87)
..[0x2ad9c6ab52d…
pmichaud star: say ~(for 1..200 { $_ })
p6eval star 2010.07: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
..97 …
pmichaud something appears to have broken with strings. :(
chromatic r48727? 16:58
pmichaud looking
ash_ chromatic: its not finished but 75.143.73.208/?input=say%20[%2b]%201...3 you might find it interesting 17:00
chromatic Very nice! 17:01
pmichaud's example completes there, so something in the past week is the culprit.
moritz ash_: care to add a <noscript> tag that warns?
pmichaud rakudo: say ~(1..200) 17:02
p6eval rakudo 27d54d: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
..96 97 …
pmichaud hmm
rakudo: say ~(for 1..500 { $_ })
p6eval rakudo 27d54d: OUTPUT«src/string/api.c:3341: failed assertion 'pos <= res->strstart + Buffer_buflen(res) + 1'␤Backtrace - Obtained 24 stack frames (max trace depth is 32).␤/home/p6eval//p1/lib/libparrot.so.2.7.0 [0x2b0b575e61a3]␤/home/p6eval//p1/lib/libparrot.so.2.7.0(Parrot_confess+0x87)
..[0x2b0b575e62d…
ash_ moritz: for browsers without javascript? good idea, one sec, i'll add something 17:03
moritz right
ash_ has anyone considered a pre-built GC system for parrot before? like libauto 17:04
or maybe use it if systems have it, otherwise fallback to what it has 17:05
chromatic bacek experimented with Boehm GC, but it was a lot slower because it's not precise.
pmichaud chromatic: did you say that the for loop worked with r48727? 17:10
ash_ hmm, i wonder if libauto would be worse or better... maybe i can stumble around and see if anything improves
chromatic I haven't checked it, pmichaud. That seems like a likely candidate though.
pmichaud okay, I'll start checking.
17:27 patspam joined 17:32 jsut_ joined
atrodo chromatic> ping 17:35
chromatic pong 17:37
17:37 jsut left
pmichaud r48726 fails. 17:37
so must be before that 17:38
atrodo chromatic> I'm curious about your report from #ps when you mentioned lorito data structures
pmichaud trying 48715 17:39
chromatic I'm looking at a uniform header to represent primitives.
That is, everything is at least 16 bits long, and the two high bits indicate the type: PMC, STRING, Integer, or Float.
I figure we may have to use the next two bits for size.
Maybe not; not sure. 17:40
cotto_work something like Firefox's internal representation of js primitives?
chromatic allison suggested we look into a value-not-pointer representation like Smalltalk 80 used for its objects, where a PMC or STRING is an index into a table (like Unix file descriptors).
We still pay a dereferencing penalty for lookup, but we can move things around if we go through the tables. 17:41
cotto_work, something a lot like that.
atrodo that's probably not a bad idea
chromatic Seemed to work pretty well for me.
The code's straightforward to translate to what I think Lorito ops will be too. 17:42
atrodo but I wonder, would we do it for int and num? the table part
chromatic No, those can be absolute values.
... unless they're too big to fit, in which case autopromoting them is pretty easy.
Just flip the bit in the header that means "For an integer, this is now an index into a bigint table" 17:44
atrodo Wouldn't you auto promote it to a PMC?
oh, nope, scratch that
chromatic I even experimented with a scheme where we can use the size bits (the third and fourth highest) for PMCs and STRINGs to encode their scope instead of size. 17:46
That is, 0x00NN0000 00000000.
NN == 00 means "local to this context"
NN == 01 means "local to the caller context"
NN == 10 means "global to this execution context"
NN == 11 means "global to another execution context" 17:47
Not sure how much I like that, but it had possibilities.
It means flipping bits on GCables which escape to a higher context, but that makes GC really easy in other ways.
atrodo I might like the idea. 17:49
chromatic Not sure if I like that for GCables in general, but when referring to them in PBC it seems advantageous.
atrodo Certainly seems like it at first glance 17:50
chromatic The table representation is a pretty clear win. 17:52
Uniformity of access is also good. 17:53
Scope-separated tables seems like an easy way to partition generations.
A table representation for shared GCables also forms an interesting barrier. 17:54
atrodo I've debated doing that with my prototype. 17:56
The roadblock, for me, that I kept running into was that since my PMCs are just blocks of memory that form references to PMCs, the interp doesn't know the type of the bytes in memory
and therefore, doesn't know which PMCs it actually refers to
so I've localized my table to a per-PMC lookup table
chromatic I wanted to get away from the idea of C pointers. 17:57
17:57 ruoso joined
chromatic It's too tempting to treat them as C pointers, at which point you lose all of your safety. 17:57
atrodo Right. The block of memory contains indexes, no actual pointers 17:58
the lookup table associated with a PMC holds the actual C pointers
chromatic I mean no pointers *anywhere*.
atrodo So, huh... 17:59
pmichaud r48715 fails
chromatic Maybe in the interpreter context, but that's it.
ash_ what about the concept of references? 18:00
chromatic Hadn't reached the concept of references.
pmichaud, is r48715 the culprit?
That's odd.
pmichaud chromatic: no, that's just the place I'm at in checking.
I'm trying to find an earlier revision that passes 18:01
I know that star passes
chromatic Okay, good.
atrodo So would you just have a large allocated array of PMCs that forms the lookup table and everything else is an index into that?
pmichaud currently I'm using the 2010.08 compiler release, to confirm that it's not a recent change to Rakudo that is causing the issue
chromatic atrodo, that's as far as I made it. 18:02
atrodo And if that's it, you would not need any pointers, only array indexes. Interesting 18:03
chromatic You need a map somewhere of offsets for specific data structures, but you need that to do efficient object attributes anyway. 18:04
Oh, and you can add a "coalesce this table" step to the GC to improve cache locality. 18:05
atrodo You mean for mapping inside the PMC?
tcurtis Would the lookup table's values be pointers to the PMC's data?
18:06 mikehh joined
chromatic They'd be the PMC's data itself. 18:06
Just a chunk of memory.
tcurtis How would moving a PMC work, then? Or could you only move the entire table? Wouldn't moving a PMC's chunk of memory require modifying every index referring to it? 18:08
ash_ why would you need to move them?
chromatic Coalescing a table would mean fixing up indexes into the table, yes. 18:09
atrodo That would imply that the code that coalesces the PMCs table would be able to introspect all places that PMCs can be referenced, right? 18:10
chromatic Yes. 18:11
cotto_work PaFo needs to give masak++ a grant to write Parrot's release announcements. 18:16
moritz :-)
18:20 nwellnhof joined
Coke cotto_work: pafo needs $$ before that can happen. 18:20
ash_ well, the easy solution is to all win the lottery and then we can all donate to PaFo 18:21
moritz hey, maybe you can convince masak by fixing some rakudo memory bugs in exchange :-) 18:24
Coke msg chromatic - hey, once "using perl6" hits dead trees, hold a few copies to get signed (authors + larry?) and auction them off for pafo? 18:34
purl Message for chromatic stored.
chromatic Good idea.
18:34 patspam left
Coke (I'd be happy to buy one of the DT copies for said purpose.) 18:34
cotto_work too
pmichaud (rakudo bug) -- TimToady points out that this bug existed prior to latest star release (and I've confirmed it) 18:38
but it shows up less frequently there 18:39
chromatic Any other bisecting you can do is a big help.
pmichaud yes, I'll keep plugging away at it
TimToady 64 vs 32 bit is part of it 18:40
nwellnhof pmichaud: can you try the charset_masscare branch? it contains a GC-related bug fix in Parrot_str_join.
pmichaud I'm 64 bit here
sorear chromatic: how does smalltalk handle storage if an object's class gains or loses slots during the object's lifetime?
TimToady I believe it doesn't fail under 64
pmichaud it's failing for me under 64
TimToady or fails differently
pmichaud yes, it now fails much earlier.
chromatic sorear, not sure. I'll have to find the blue book somewhere around here.
Oh, there it is.
purl No it isn't!
18:40 whiteknight joined
TimToady are your ints 4-byte or 8 in the compiled image? 18:41
pmichaud intvalsize => '8'
TimToady well, probably just tweaks the random failure knob differently :) 18:42
sorear seen darbelo
purl darbelo was last seen on #parrot 3 days, 18 hours, 49 minutes and 49 seconds ago, saying: whiteknight: Is svn tied to Trac or drupal's auth? [Aug 29 23:52:30 2010]
aloha darbelo was last seen in #parrot 3 days 18 hours ago saying "whiteknight: Is svn tied to Trac or drupal's auth?".
ash_ seen plobsing 18:43
purl plobsing was last seen on #parrot 5 days, 15 hours, 24 minutes and 31 seconds ago, saying: msg chromatic nevermind, I was making the same mistake I made when I wrote that code [Aug 28 03:19:10 2010]
aloha plobsing was last seen in #parrot 5 days 4 hours ago joining the channel.
chromatic seen smash 18:57
purl smash was last seen on #parrot 9 hours, 1 seconds ago, saying: nods.
aloha smash was last seen in #parrot 9 hours 1 mins ago saying "11am here".
chromatic msg smash I'd love to see percentage improvements in your benchmark tables, if possible. 18:58
purl Message for smash stored.
NotFound Parrot_str_join uses a STRING ** allocated with Parrot_gc_allocate_fixed_size_storage. I don't think that things gets marked 19:05
nwellnhof NotFound: that's the bug fix i was talking about
NotFound The obvious solution is to use a StringBuilder instead of that specific code
nwellnhof or a ResizableStringArray 19:06
19:07 x3nU left
nwellnhof i meant a FixedStringArray: trac.parrot.org/parrot/browser/bran...pi.c#L3152 19:07
19:07 theory left
NotFound Using Parrot_gc_allocate_memory_chunk_with_interior_pointer can be quicker fix, but I don't know how reliable is. 19:08
nwellnhof NotFound: this doesn't make a difference 19:09
19:09 x3nU joined
nwellnhof you could store the whole STRING structs in the allocated memory. that would work. 19:09
chromatic Fixing the anonymous sub memory usage *does* require GCable packfiles. 19:11
Coke packfiles are pmcs now, yes? 19:16
chromatic Not entirely.
cotto_work not the ones imcc uses
19:19 particle left 19:22 particle joined
cotto_work bacek estimates that it'd take him a couple weeks to convert imcc to use the packfile pmcs. 19:23
whiteknight a couple of weeks for bacek? That means the task must be impossible 19:27
cotto_work that's how I read it 19:28
19:28 patspam joined
GeJ Bonjour everyone. 19:28
whiteknight hello GeJ 19:29
GeJ Good afternoon Andrew.
clock?
purl GeJ: LAX: Thu 12:29pm PDT / CHI: Thu 2:29pm CDT / NYC: Thu 3:29pm EDT / LON: Thu 8:29pm BST / BER: Thu 9:29pm CEST / IND: Fri 12:59am IST / TOK: Fri 4:29am JST / SYD: Fri 5:29am EST /
GeJ just checking.
19:33 robin-gvx joined 19:35 theory joined
whiteknight so what exactly is the problem with anon subs? I haven't dug into it too deeply 19:51
chromatic They're stored in the constant tables of packfiles. 19:52
whiteknight oh. So...how are they leaking memory?
chromatic They only go away on interpreter destruction.
nwellnhof afaics, the problem isn't that the subs are anon, it's that they're compiled dynamically 19:53
trac.parrot.org/parrot/ticket/783 19:54
chromatic Let's put it this way: they're not anchored as PMCs. They're anchored as PBC.
The PMC anchoring goes away and nothing in the system can call them, but they stick around in memory anyway. 19:55
whiteknight urg
chromatic See also TimToady's repeated point that "You can't assume everything has a name. Assume everything is anonymous, and then deal with the name when it gets a name." 19:56
19:57 ash_ left 20:03 whiteknight left, macroron left
nopaste "NotFound" at 192.168.1.3 pasted "patch: reimplement Parrot_str_join using a StringBuilder" (120 lines) at nopaste.snit.ch/23219 20:07
NotFound This patch pass parrot test 20:08
20:09 pyrimidine left
NotFound It can be improved by checking if ar is a String Array 20:09
20:10 preflex joined, theory left
NotFound Mmmm.. maybe not, the StringBuilder can even be faster 20:11
nwellnhof One downside of using StringBuilder is that doesn't know the total amount of memory needed in advance. 20:12
So it has to reallocate
particle for (i = 0; i < ar_len; ++i ) { if (i > 0) { ... } ... } # this logic looks less than ideal 20:15
NotFound particle: I think is better than segfaulting
particle ok, then it's confusing 20:16
chromatic Is i signed?
Coke chromatic: you'd know better than us.
chromatic Questions you don't want answered, I'm sure.
particle yes, for no good reason, i is signed
cotto_work I'd feel negative if someone signed me. 20:17
particle that is, i don't see a reason it should be.
NotFound This is a quick atempt of fix. If someone can vetify that it solves the rakudo problem I'll happily clean it.
particle oh, i see.
chromatic Seems like a reasonable request.
20:18 robin-gvx left
NotFound Sorry if I'm being rude, I'm tired with other things 20:18
20:22 jan joined 20:23 theory joined 20:25 NotFound left 20:26 NotFound joined
bacek Good morning, humans 20:41
dalek kudo: 3b2529b | shlomif++ | t/harness:
Add a --help/-h flag to t/harness.
20:43
kudo: a0e9d2f | kyleha++ | t/harness:
[t/harness] spelling fix
cotto_work helo bacek
bacek aloha, cotto_work
20:43 aloha left 20:44 aloha joined, aloha left
nwellnhof hey bacek, i had a look at that GHC paper 20:45
i think it doesn't help us with parrot
bacek nwellnhof, why?
20:45 aloha joined
nwellnhof it relies on the fact that in GHC every object is a closure 20:45
bacek I had prototype of vtable override at some point. 20:46
20:46 patspam left, patspam joined
bacek nwellnhof, no. It relies that all access to Objects go through vtables 20:46
aloha, msg bacek bang
aloha bacek: OK. I'll deliver the message.
bacek ~~
nwellnhof bacek: you mean two different vtables for every object?
bacek cotto, aloha now use privmsg for msg
nwellnhof, yes
cotto_work bacek++ 20:47
thanks
aloha, msg cotto_work HELO?
aloha cotto_work: OK. I'll deliver the message.
cotto_work: Dunno.
nwellnhof bacek: i have to think about that
cotto_work ~
bacek aloha, insult bacek 20:51
cotto_work karma foo
purl foo has karma of 21
aloha foo has karma of 0.
cotto_work karma bar
purl bar has karma of 12
aloha bar has karma of 0.
cotto_work foo++ bar++
karma foo
purl foo has karma of 22
aloha foo has karma of 1.
cotto_work karma bar 20:52
purl bar has karma of 13
aloha bar has karma of 0.
bacek insult bacek
meh... Doesn't work :)
20:52 aloha left 20:53 Ryan52 left
cotto_work purl used to not do that 20:53
purl cotto_work: i'm not following you...
20:53 aloha joined
bacek aloha, insult bacek 20:53
insult bacek 20:54
cotto_work really insult bacek
20:54 aloha left
atrodo really insult bacek, please 20:54
20:54 aloha joined
cotto_work -ENOALOHA 20:54
20:55 aloha left, aloha joined
bacek insult bacek 20:55
20:55 aloha left
cotto_work your bot is clearly too polite 20:55
which is surprising, knowing that English is your fourth language 20:56
20:56 aloha joined
bacek hmm. I can teach her some swear words 20:56
insult bacek
20:56 aloha left
bacek Can't locate object method "new" via package "Acme::Scurvy::Whoreson::BilgeRat" 20:56
strange...
purl somebody said strange was but true
sorear hello bacek 20:57
bacek aloha, sorear
20:57 aloha joined
bacek insult bacek 20:58
sorear bacek: any chance of getting aloha in #perl6 @ freenode.net? we could really use a non-spammy seenbot
bacek sorear, yes. I'll do it tonight. 20:59
20:59 aloha left 21:00 aloha joined 21:01 aloha left, aloha joined
bacek insult bacek 21:01
aloha You are nothing but a clapper-clawed half-mouthful of inept anal warts.
bacek hooray!
nwellnhof insult nwellnhof
aloha You are nothing but a petrified thimbleful of bawdy dung. 21:02
nwellnhof hilarious
cotto_work Does it do different languages?
insult aloha
aloha aloha is nothing but a humid enema-bucketful of malodorous dog balls.
cotto_work insult karma 21:03
aloha karma is nothing but a dizzy-eyed heap of antique seagull puke.
purl is nothing but a dizzy-eyed heap of antique seagull puke. has neutral karma
nwellnhof insult purl
aloha purl is nothing but an unoriginal bucket of cockered slurpee-backwash.
atrodo insult purl 21:04
aloha purl is nothing but a ruttish enema-bucketful of tickle-brained urine samples.
21:05 Paul_the_Greek joined
Paul_the_Greek Afternoon, kiddies. 21:05
cotto_work hio Paul_the_Greek
nwellnhof insult your mom
aloha your mom is nothing but a spongy accumulation of crook-pated fat-woman's stomach-bile.
21:05 aloha left
Paul_the_Greek Hey cotto. 21:05
aloha insult purl insult aloha 21:06
Hmm.
cotto_work fun as it is, isn't that part of the reason we're getting rid of purl?
Paul_the_Greek You mean the cross-talk between two zombies?
21:06 mikehh left
bacek sorear, sigh... Bot::BasicBot doesn't support multiple servers. 21:06
dalek kudo: 870efdb | masak++ | src/core/Set.pm:
[Set] replaced postcircumfix:<{ }> with at_key

Suggested by pmichaud++.
21:07 aloha joined
nwellnhof bacek: the vtable approach would only work if every assignment to a PMC pointer would go through the vtable, too. but that would be a kind of write barrier. 21:08
or the vtable could act like a read barrier 21:09
i think that's what you mean 21:10
21:11 ruoso left, aloha left 21:12 whiteknight joined, luben joined 21:15 mariano__ left
dukeleto 'ello 21:17
bacek nwellnhof, yes. vtable access can be treated both as write or read barrier 21:19
Paul_the_Greek Does anyone know if Francois Perrad hangs out in any chatroom?
Coke bacek: need 2 isntances, which is fine, because not all of us ahve the same nick anyway. 21:20
Paul_the_Greek Hey dukeleto.
purl well, dukeleto is mentoring a few peeps. can't remember everyone. sure. or jonathan at leeeeeeeeeeeeto dot net
Coke seen fperrad?
purl fperrad was last seen on purl 14 days, 11 hours, 15 minutes and 0 seconds ago, saying: <private message> [Aug 19 10:05:10 2010]
Coke Paul_the_Greek: there's your answer.
dukeleto Paul_the_Greek: he comes in here occasionally
Paul_the_Greek fperrad. Of course.
I guess I best email him.
dukeleto Paul_the_Greek: he is on the parrot-dev mailing list
Coke hai.
dukeleto what are people hacking on today? 21:21
Paul_the_Greek I'm looking at Boolean to see if it can be more efficient by not inheriting from Integer.
Tricky business, since HLLs may rely on the Integer-ness of it in odd ways. 21:22
Coke dukeleto: $DAYJOB!
purl i think $dayjob is interesting today. I found a couple of bugs in the JDK.
nwellnhof bacek: but write barriers through vtables would be still be write barriers. and read barriers work for incremental GC but not for generational GC, AFAIK.
Paul_the_Greek nwellnhof: I believe you are correct. 21:23
I believe Lua uses write barrier for incremental GC, in anticipation of implementing generational. 21:24
21:24 aloha joined
bacek nwellnhof, we can use write barriers to implement GenGC. 21:25
aloha, seen bacek
aloha bacek: Sorry, I haven't seen bacek.
cotto_work aloha, botsnack
purl thanks cotto_work :)
bacek aloha, seen bacek
aloha bacek: Sorry, I haven't seen bacek.
bacek aloha, seen cotto_work 21:26
aloha bacek: Sorry, I haven't seen cotto_work.
bacek meh...
karma cotto
purl cotto has karma of 1547
aloha cotto has karma of 0.
21:26 mikehh joined
bacek cotto++ 21:26
karma cotto
purl cotto has karma of 1548
aloha cotto has karma of 0.
bacek I broke her...
21:27 aloha left, aloha joined
bacek ~~ 21:28
aloha, foo is bar
aloha bacek: Okay.
bacek aloha, foo?
purl aloha, foo is bar
aloha bacek: Dunno.
purl: Okay.
purl Okay. is, like, there an example
bacek interesting...
21:29 aloha left
Paul_the_Greek What did I do the other day to get them to talk for six steps? 21:29
nwellnhof karma karma aloha purl 21:30
purl karma aloha purl has neutral karma
nwellnhof something like that
Paul_the_Greek purl karma aloha karma purl
purl aloha karma purl has neutral karma
nwellnhof but aloha os offline now
Paul_the_Greek It just mumbled up above. 21:31
nwellnhof it looks like bacek is testing it right now 21:32
21:32 aloha joined
bacek ~~ 21:33
aloha, seen bacek
aloha bacek: Sorry, I haven't seen bacek.
bacek aloha, seen bacek
aloha bacek: Sorry, I haven't seen bacek.
cotto_work karma purl karm aloha purl
purl purl karm aloha purl has neutral karma
aloha purl karm aloha purl has karma of 0.
purl aloha: excuse me?
aloha purl: Dunno.
purl Dunno. is there a command to show that?
cotto_work karma purl karm aloha purl 21:34
purl purl karm aloha purl has neutral karma
aloha purl karm aloha purl has karma of 0.
purl aloha: sorry...
nwellnhof karma purl aloha
purl purl aloha has neutral karma
aloha purl aloha has karma of 0.
purl aloha: sorry...
Paul_the_Greek purl purl karma aloha
purl Paul_the_Greek: sorry...
cotto_work aloha, buz is <reply>purl, quux? 21:35
aloha cotto_work: Okay.
cotto_work buz 21:36
aloha, buz?
purl purl, quux?
aloha cotto_work: Dunno.
cotto_work forget buz
purl cotto_work, I didn't have anything matching buz
cotto_work forget aloha, buz
purl cotto_work: I forgot aloha, buz
dalek kudo: 33e94e7 | masak++ | src/core/Set.pm:
[Set] implemented .hash
nwellnhof purl, quux is <reply>aloha, buz?
purl bugger all, i dunno, nwellnhof
nwellnhof quux is <reply>aloha, buz? 21:37
aloha, buz?
aloha nwellnhof: I give up.
nwellnhof aloha, buz is <reply>purl, quux?
aloha nwellnhof: Okay.
nwellnhof aloha, buz?
purl purl, quux?
aloha nwellnhof: I give up.
sorear purl: no, Dunno. is <reply> $who: excuse me? 21:38
purl i don't know, sorear
sorear purl: no, Dunno. =is= <reply> $who: excuse me?
purl wish i knew, sorear
dukeleto notices the bot fever today
nwellnhof insult dukeleto 21:39
hmm, doesn't seem to work
no offence meant, btw
dukeleto nwellnhof: no worries :) 21:40
21:41 patspam left 21:42 aloha left 21:44 aloha joined
bacek ~~ 21:45
aloha, seen bacek
aloha bacek: Sorry, I haven't seen bacek.
bacek cotto++ 21:47
aloha, karma cotto
aloha bacek: cotto has karma of 0.
sorear cotto-- 21:49
aloha, karma cotto
aloha sorear: cotto has karma of 0.
21:51 aloha left, aloha joined
cotto_work aloha: karma me 21:52
purl cotto_work has karma of 22
aloha cotto_work: me has karma of 0.
cotto_work me++
aloha: karma me
purl cotto_work has karma of 22
aloha cotto_work: me has karma of 1.
dukeleto does aloha do things that purl doesn't? 21:53
21:53 aloha left
cotto_work dukeleto: insults 21:53
21:53 aloha joined
bacek seen masak 21:54
purl masak was last seen on #parrot 3 days, 5 hours, 55 minutes and 22 seconds ago, saying: \\o/ [Aug 30 15:59:22 2010]
aloha Sorry, I haven't seen masak.
bacek seen purl
cotto_work seen purl
purl purl was last seen on #sao-paulo.pm 1 years, 349 days, 45 minutes and 0 seconds ago, saying: Kill them all; God will know his own. [Sep 18 21:09:59 2008]
aloha purl was last seen in #parrot 15 seconds ago saying "masak was last seen on #parrot 3 days, 5 hours, 55 minutes and 22 seconds ago, saying: \\o/ [Aug 30 15:59:22 2010]". 21:55
purl aloha: sorry...
aloha purl was last seen in #parrot 0 seconds ago saying "purl was last seen on #sao-paulo.pm 1 years, 349 days, 45 minutes and 0 seconds ago, saying: Kill them all; God will know his own. [Sep 18 21:09:59 2008]".
purl aloha: what?
aloha purl: Dunno.
purl Dunno. is, like, there a command to show that
dukeleto oh boy.
cotto_work botfight
21:55 aloha left, aloha joined
dukeleto Pull requests 2.0 on github are very sexy: github.com/blog/712-pull-requests-2-0 21:55
bacek seen dukeleto 21:56
purl dukeleto was last seen on #parrot 6 seconds ago, saying: Pull requests 2.0 on github are very sexy: github.com/blog/712-pull-requests-2-0
aloha dukeleto was last seen in #parrot 6 seconds ago saying "Pull requests 2.0 on github are very sexy: github.com/blog/712-pull-requests-2-0".
dukeleto we need to think about how our commit workflow will work when we go to git. i think pull requests on github just got a lot more useful 21:57
whiteknight ditto 21:58
Tene There's certainly something to be said for just granting everyone commit privileges on a centrally-owned repo. 22:00
cotto_work It's worked so far with svn but that doesn't mean there's not a better way to do it. 22:02
Tene Certainly.
I need to look into exactly what "organizations" mean on github. 22:03
cotto_work dukeleto: did you get an admin bit for the Parrot org on github?
22:05 preflex left 22:09 preflex joined
dukeleto cotto_work: i don't think so, but let me check 22:09
Tene: organizations are composed of teams
Tene: each team gets certain priveledges, and then you at people to teams 22:10
22:11 aloha left 22:12 aloha joined
bacek ~~ 22:12
seen aloha
purl aloha was last seen on #parrot 16 minutes and 49 seconds ago, saying: dukeleto was last seen in #parrot 6 seconds ago saying "Pull requests 2.0 on github are very sexy: github.com/blog/712-pull-requests-2-0".
aloha aloha was last seen in #parrot 30 seconds ago joining the channel.
bacek aloha, seen bacek 22:13
aloha bacek: Sorry, I haven't seen bacek.
bacek ~~
aloha, seen bacek
aloha bacek: Sorry, I haven't seen bacek.
22:13 tcurtis left 22:15 aloha left, aloha joined
bacek ~~ 22:15
aloha, seen bacek 22:16
aloha bacek: Sorry, I haven't seen bacek.
22:16 aloha left 22:18 aloha joined, aloha left, aloha joined
bacek ~~ 22:19
aloha, seen bacek
aloha bacek: Sorry, I haven't seen bacek.
bacek aloha, seen bacek
aloha bacek: Sorry, I haven't seen bacek.
22:21 aloha left, aloha joined
bacek aloha, seen bacek 22:21
aloha bacek: bacek was last seen in #parrot 0 seconds ago saying "seen bacek".
bacek oookey
cotto_work karma a\\ 22:22
purl a\\ has neutral karma
aloha a\\ has karma of 0.
22:22 aloha left
cotto_work karma b 22:22
purl b has karma of 14
22:22 bkuhn left, aloha joined
bacek aloha, seen bacek 22:23
aloha bacek: bacek was last seen in #parrot 0 seconds ago saying "seen bacek".
22:23 aloha left
cotto_work bacek: seen aloha 22:23
purl aloha was last seen on #parrot 31 seconds ago, saying: bacek: bacek was last seen in #parrot 0 seconds ago saying "seen bacek".
22:23 aloha joined
bacek seen pmichaud 22:24
purl pmichaud was last seen on #parrot 3 hours, 42 minutes and 28 seconds ago, saying: intvalsize => '8'
aloha Sorry, I haven't seen pmichaud.
bacek seen aloha
purl aloha was last seen on #parrot 17 seconds ago, saying: Sorry, I haven't seen pmichaud.
aloha aloha was last seen in #perl6 15 seconds ago joining the channel.
bacek seen sorear
purl sorear was last seen on #parrot 35 minutes and 11 seconds ago, saying: aloha, karma cotto
aloha sorear was last seen in #perl6 1 seconds ago saying "karma bacek".
bacek hooray! It works!
sorear \\o/ 22:25
nwellnhof bacek: is aloha open source? then we would have something interesting to hack on, instead of a stupid "virtual machine designed to efficiently compile and execute bytecode for dynamic languages"
bacek nwellnhof, :) 22:26
sorear nwellnhof: if you wanted to dust off ponie, we could combine them
bacek sorear++ # just for fun 22:27
karma sorear
purl sorear has karma of 149
aloha sorear has karma of 1.
bacek explain sorear
aloha positive: just for fun (bacek); negative: nothing; overall: 1.
cotto_work explain bacek
aloha positive: nothing; negative: nothing; overall: 0.
bacek cotto, I created new DB for aloha. Fresh start 22:28
nwellnhof sorear++ # for another reason
explain sorear
aloha positive: for another reason (nwellnhof), just for fun (bacek); negative: nothing; overall: 2.
nwellnhof insult purl 22:30
aloha, insult purl
bacek insult purl 22:31
aloha purl is nothing but a despicable gob of hugger-muggered snake bait.
bacek yay!
nwellnhof insult purl
aloha purl is nothing but a rude-snouted coagulation of vain chicken piss.
nwellnhof yippie!
cotto_work bacek, won't that get unwieldy after a while? 22:32
(explain) 22:33
nwellnhof sorear++ # for yet another reason 22:34
explain sorear
aloha positive: for another reason (nwellnhof), so basically, I can write anything I want here, and it'll show up in 'explain'? (masak), www.youtube.com/watch?v=_RyodnisVvU (Tene); negative: nothing; overall: 6.
22:35 Andy left
nwellnhof explain aloha 22:36
aloha positive: nothing; negative: nothing; overall: 0.
bacek afk # dayjob 22:37
nwellnhof insult dayjob 22:40
aloha dayjob is nothing but a penguin-molesting bag of squishy entrails.
dalek rtcl-nqp: 590cc4e | coke++ | src/Partcl/Compiler.pm:
extremely rudimentary tcl-like backtrace printer.
22:52
rtcl-nqp: 365a050 | coke++ | src/Partcl/Compiler.pm:
Remove duplicate line. try to actually print out file. (not that it's ever set)
22:58
whiteknight the poor, molested penguins 23:03
23:11 nwellnhof left
dukeleto what did penguins ever do to us? 23:12
dukeleto is reminded of a hilarious Futurama episode involving human-hunting robot-led penguins
cotto_work They made us use that linux thing. 23:13
Is that one of the new ones?
nm. I remember which one you're talking about. 23:14
I misread that as "robot penguins".
chromatic Isn't the phrase "hilarious Futurama episode" redundant in several ways? 23:15
23:16 tetragon joined
whiteknight forgot how long IRS form 1023 was 23:17
makes filing my normal taxes look like a walk in the park
cotto_work with or without ninjas? 23:18
chromatic Try renewing a driver's license. 23:21
dalek TT #1767 created by pmichaud++: join opcode causes segfaults and other memory corruption issues 23:29
TT #1767: trac.parrot.org/parrot/ticket/1767
23:32 fedov joined
cotto_work That bug won't last for long. 23:33
smash chromatic: hiya, wrer you looking for me ?
cotto_work pmichaud++ for getting it down to such a nice snippet 23:34
chromatic smash, is it possible to add +/- percentages to your benchmark page?
Comparing the averages alone would be useful. 23:35
smash chromatic: just saw your message, sure, i'll add it some time tomorrow
chromatic Very nice, thank you.
Tene rakudo.org/status/ has not been updated in quite a while.
smash chromatic: you're welcome, feel free to sugest anything else you find useful 23:36
chromatic A "here's the past week" would be very useful too, if it showed Parrot/Rakudo version numbers. 23:37
smash hmm, i can think of a way to get it n there too 23:39
chromatic It might be more useful as a separate page.
smash nods.
i'll look into it 23:40
but now, sleep time
23:41 smash left 23:45 kid51 joined 23:52 Patterner left 23:53 Paul_the_Greek left 23:57 Paul_the_Greek joined
Paul_the_Greek I wonder if it would help to declare certain PMC functions 'inline'. 23:58
dukeleto where is smash's benchmark page? 23:59
Paul_the_Greek I don't know.
chromatic gil.di.uminho.pt/users/smash/rakudo-bench.html