Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2007-04-03

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
01:14 pasteling joined perl6
01:17 fridim joined perl6
01:21 dolmans joined perl6
01:42 bonesss joined perl6
01:59 SubStack joined perl6
02:09 dduncan joined perl6
02:15 svnbot6 r15820 | audreyt++ | * Pugs.Prim: Add &stat(Str) and &lstat(Str) for Dan Kogai's
02:15 svnbot6 r15820 | audreyt++ |   YAPC::Asia presentation.  (It merely re-exports perl5:File::stat.)
02:20 H0LE joined perl6
02:26 Aankhen`` joined perl6
02:34 silug joined perl6
03:36 mj41_ joined perl6
03:40 mj41_ is now known as mj41
03:40 IllvilJa joined perl6
03:40 Patterner joined perl6
03:40 devbot6 joined perl6
03:40 jql joined perl6
03:40 bsb joined perl6
03:40 ofer joined perl6
03:40 kei5tnk joined perl6
03:40 idiotmax joined perl6
03:40 evalbot_r15816 joined perl6
03:40 wilx joined perl6
03:40 tokuhirom joined perl6
03:40 orafu joined perl6
03:44 idiotmax_ joined perl6
03:45 mr_ank joined perl6
03:46 offby1` joined perl6
03:47 wilx` joined perl6
03:49 ofer joined perl6
03:49 justatheory joined perl6
03:49 offby1` is now known as offby1
03:49 esstone joined perl6
03:50 justatheory joined perl6
03:51 BooK joined perl6
04:17 RHainsworth joined perl6
04:18 RHainsworth left perl6
04:22 justatheory joined perl6
04:23 iblechbot joined perl6
04:23 SubStack joined perl6
04:29 rashakil joined perl6
05:38 devogon joined perl6
05:44 svnbot6 r15821 | masak++ | [util/version_h.pl]
05:44 svnbot6 r15821 | masak++ | * typo
05:49 encryptio joined perl6
05:54 geoffb joined perl6
06:14 BooK joined perl6
06:17 svnbot6 r15822 | unobe++ | * updated all legacy smartlinks syntax in test suite
06:17 svnbot6 r15822 | unobe++ | * updated util/smartlinks.pl and its tests to no longer support legacy syntax
06:20 pasteling "evalbot_r15821" at 194.145.200.126 pasted "Pugs build failure" (25 lines, 1.1K) at http://sial.org/pbot/23963
06:23 rfordinal joined perl6
06:52 Psyche^ joined perl6
06:52 Psyche^ is now known as Patterner
06:54 buetow joined perl6
06:59 gaal unobe++, whoever you are, please add yourself to AUTHORS
07:20 RHainsworth joined perl6
07:20 RHainsworth left perl6
07:22 SubStack joined perl6
07:26 marmic joined perl6
07:29 jisom joined perl6
07:42 xinming_ joined perl6
07:46 the_dormant joined perl6
08:02 nothingmuch gaal: unobe == the guy next to you at my birthday party
08:03 Tene gaal: he's alread in AUTHORS
08:03 Tene line 67
08:03 nothingmuch ah yes, romano
08:03 * nothingmuch couldn't find the last name =(
08:04 * Tene found it!
08:04 nothingmuch Tene++
08:08 buetow joined perl6
08:08 esstone joined perl6
08:28 the_dormant joined perl6
08:40 mr_ank joined perl6
08:44 andara joined perl6
08:46 ayrnieu joined perl6
09:01 elmex joined perl6
09:05 lichtkind joined perl6
09:07 lichtkind Leibsle: moin
09:07 avarab joined perl6
09:12 DarkWolf84 I found thread bug
09:14 dduncan does anyone know if the next Pugs release is expected to happen this week, or whether it would definitely be next week or later?
09:14 lambdabot dduncan: You have 1 new message. '/msg lambdabot @messages' to read it.
09:14 dduncan okay lambdabot
09:15 DarkWolf84 dduncan, I don't now I use subversion
09:16 VanilleBert joined perl6
09:16 dduncan I mean, the release on CPAN
09:16 DarkWolf84 CPAN modules O_O
09:16 dduncan last ETA was march, but that didn't happen
09:16 DarkWolf84 that's great
09:17 dduncan anyway, if if the next release is no earlier than next week, then I anticipate making a significant contribution first
09:17 dduncan it will probably be done near the end of this week
09:18 dduncan my contrib that is
09:22 devogon_ joined perl6
09:31 Tene dduncan: what are you working on?
09:40 Leibsle lichtkind, moin :)
09:40 lichtkind aaaah
09:45 dduncan in 1-2 days I expect to make the first CPAN release of the Perl 5 version of QDRDBMS, my new database engine
09:45 dduncan after that, I plan to to s/// the necessary parts to make it valid Perl 6 code, and check that in under ext/ of Pugs
09:46 dduncan I would then delete ext/Rosetta/ , which it replaces
09:46 dduncan unlike Rosetta, the QDRDBMS rewrite can actually be used for something
09:46 buetow joined perl6
09:46 dduncan I won't go into further details now, better afterwards
09:47 dduncan Tene, that's what I was referring to
09:51 dduncan on a tangent, I'm following mugwump's example and now recommending that people try Git as their version control system rather than SVN or whatever ... Pugs et al may benefit from switching to it
09:52 dduncan see http://utsl.gen.nz/talks/git-svn/intro.html for one of his doc's on the subject
09:52 lambdabot Title: An introduction to git-svn for Subversion/SVK users and deserters
09:59 Tene kk
10:02 chris2 joined perl6
10:03 gaal your birthday party huh? you mean I got drunk with a guy I don't remember? how approporiate
10:05 ruoso joined perl6
10:18 avar joined perl6
10:21 Leibsle gaal, you should not drink too much, so you remember at least who was at the party :P
10:30 Alias_ joined perl6
10:33 araujo joined perl6
10:34 dduncan left perl6
10:38 rizzy joined perl6
10:45 Juerd Huh, why is there a temporary feather address in the topic?
10:45 Juerd Is this a very roundabout DNS spoofing attack? :P
10:46 moritz Juerd: no, it's because of the ICANN (or something) having trouble with registerfly...
10:46 Juerd moritz: So? feather is on a .nl address
10:47 Juerd That has nothing to do with registerfly, or...?
10:47 moritz Juerd: hm...
10:47 Juerd feather.perl6.nl
10:47 Juerd And afaik, it works well
10:47 moritz Juerd: I know that pugscode.org had problems resolving
10:47 Juerd pugscode.org is not feather's primary address. It's just some address that happens to point to the same machine :)
10:47 moritz Juerd: you're right, that makes no sense
10:48 Juerd Feather isn't configured to receive email on perl6.wall.org
10:48 moritz Juerd: ask allbery_b (set the topic)
10:48 Juerd allbery_b: ping
10:57 moritz does anybody know a decent open source blog system in perl?
10:57 Juerd Depends on your definitions for decent, open source, blog, and system.
10:57 Juerd And perhaps also perl.
10:57 Juerd :)
10:57 gaal livejournal's pretty decent. :)
10:58 Juerd Mostly "decent" is a bit vague
10:59 prism joined perl6
11:01 moritz Juerd: blog = something like a CMS with online editing facillities that provides RSS Feeds, track/pingbacks and comments...
11:02 moritz Juerd: Open Source = OSI-Approved (or better: DFSG)
11:02 moritz Juerd: perl = perl 5 (perhaps mod_perl 2)
11:03 moritz gaal: do you have a link for me? googling for livejournal only brings up livejournal.com, but that doesn't look like open source
11:05 lumi moritz: http://www.livejournal.com/code/
11:05 lambdabot Title: Code
11:07 moritz lumi: thanks
11:10 jisom_ joined perl6
11:14 lichtkind joined perl6
11:14 prism joined perl6
11:14 VanilleBert left perl6
11:15 lichtkind audreyt: ping?
11:23 TimToady joined perl6
11:30 devbot6 joined perl6
11:42 devbot6 joined perl6
11:42 avar didn't p6 have some feature to assign to captures thus modifying the matched string?
11:46 the_dormant joined perl6
11:47 RHainsworth joined perl6
11:49 RHainsworth left perl6
12:05 prism joined perl6
12:06 fglock joined perl6
12:22 Limbic_Region joined perl6
12:34 buetow joined perl6
12:39 kolibrie avar: http://dev.perl.org/perl6/doc/design/syn/S05.html#Modifiers 'The new :rw modifier'
12:39 lambdabot Title: Synopsis 5: Regexes and Rules - perl6:
12:53 fglock joined perl6
12:56 qmole joined perl6
12:56 avar $ perl5.9.5 -Mblib -E 'use re::engine::Plugin (exec => sub { my ($re, $str) = @_; $re->captures( sub { sub { $$str = shift } } ); 1 }); my $str = "foo"; if (\$str =~ /eek/) { $1->("ook"); warn $str }'
12:56 avar ook at -e line 1.
12:57 moritz ?
12:57 moritz "ook" is a nice message ;-)
13:05 avar that'll allow you to implement :rw in p5 space
13:09 moritz how cool ;-)
13:18 araujo joined perl6
13:26 avar I'm bugging the core people for a better interface to numbered and named matches:)
13:26 Schwern joined perl6
13:46 cls_bsd joined perl6
13:50 cognominal joined perl6
13:53 mdiep joined perl6
13:56 forsaken joined perl6
13:57 perlmonkey2 joined perl6
14:02 RHainsworth joined perl6
14:06 araujo joined perl6
14:13 vel joined perl6
14:14 nusgnaf joined perl6
14:16 mdiep joined perl6
14:30 vel6608 joined perl6
14:39 nusgnaf left perl6
14:50 frobnitz joined perl6
14:58 kanru joined perl6
14:58 fglock joined perl6
15:00 Jedai joined perl6
15:10 gnuvince left perl6
15:18 vel joined perl6
15:30 nescafe joined perl6
15:50 nescafe left perl6
16:13 kanru joined perl6
16:19 bonesss joined perl6
16:27 deq` joined perl6
16:46 andara left perl6
16:49 ashleyb joined perl6
16:56 justatheory joined perl6
16:58 bernhard joined perl6
16:58 diakopter joined perl6
16:59 prism joined perl6
17:06 lisppaste3 joined perl6
17:08 wilx` is now known as wilx
17:11 macli joined perl6
17:11 fglock joined perl6
17:14 fglock for people coming to YAPC::SA - http://fisl.softwarelivre.org/8.0/www/?q=en/arena (perl5/6 and haskell is probably ok)
17:14 lambdabot Title: Programming Arena | 8th International Free Software Forum
17:17 wolverian no internet use? is there a local CPAN mirror? :)
17:17 fglock hmm - right :)
17:19 fglock I can ask them to preinstall CPAN modules
17:19 fglock though it's hard to predict what would be useful :)
17:24 diotalevi joined perl6
17:32 justatheory joined perl6
17:36 IllvilJa joined perl6
17:41 fglock how much of perl6-in-parrot is implemented? I wonder if I can rewrite mp6 to bootstrap with what we already have
17:43 moritz fglock: perhaps you should ask in #parrot ;-)
17:44 fglock hmm - no, it's a perl6 question :)
17:44 moritz fglock: ok, you're right ;)
17:45 [particle] fglock: shouldn't be too much effort to get there
17:48 fglock [particle]: this could be a task for the YAPC::SA hackathon
17:48 fglock next week
17:50 [particle] sounds great to me!
17:51 Psyche^ joined perl6
17:51 Psyche^ is now known as Patterner
17:51 fglock ok - then I've got a few days for planning
17:55 IllvilJa is now known as IllvilJaDinner
17:59 kanru joined perl6
18:02 kanru joined perl6
18:02 kanru joined perl6
18:23 kanru joined perl6
18:24 prly joined perl6
18:30 chris2 joined perl6
18:32 elmex joined perl6
18:41 prism joined perl6
19:21 jfoutz joined perl6
19:42 geoffb joined perl6
19:52 Aankhen`` joined perl6
19:59 fglock joined perl6
20:00 fglock re kp6-in-parrot: the simplest implementation would be through a perl6-in-parrot emitter
20:01 fglock although it apparently doesn't make sense, but it would make it possible to evolve the p6regex-in-perl6 implementation
20:01 fglock which is a possible path to STD compilation
20:06 pmurias joined perl6
20:06 pmurias fglock: hi
20:07 forsaken joined perl6
20:08 fglock pmurias: hey
20:10 dduncan joined perl6
20:14 pmurias why doing kp6-in-parrot thought a perl6-in-parrot emitter dosn't make sense?
20:15 pmurias you mean emitting perl6 code which compiles under the parrot perl6 compiler?
20:15 fglock pmurias: yes, because in the end, it would be a perl6-to-perl6 transformation
20:17 fglock which really smells like duplicate/throwaway work
20:19 pmurias is emitting PAST much harder?
20:20 fglock yes - the perl6 compiler does a lot of transformations already
20:23 fglock I think what I'm really trying to do is to avoid duplicate work, by using pugs, p6-on-parrot, and p6-on-perl5 as virtual machines for perl6-on-perl6
20:25 fglock 6-on-6 makes less sense, as the bottom-up implementations evolve
20:25 __Ace__ joined perl6
20:26 __Ace__ why dont I get some error msg by doing:
20:26 __Ace__ perl_eval_pv("use strict; $a = 3;", TRUE);
20:27 fglock <__Ace__>: maybe the message is in $@ - you need to print it?
20:28 __Ace__ I get complaints if I add eg: use adsfsdfk;
20:30 fglock <__Ace__>: maybe try a perl5 list or perlmonks.org?
20:31 ron_ joined perl6
20:32 ron_ is now known as tuna
20:35 pmurias fglock: every time i look pir code 6-on-6 makes a *lot* sense to me
20:36 pmurias s/look/look on/ #I wouldn't want to look like pir code for anything :)
20:39 the_dormant joined perl6
20:39 prly_ joined perl6
20:40 pmurias a big advantage of perl6-on-parrot(for me) would be that it's compile time is a fraction of pugs
20:43 devbot6 planet6: Stevan Little: Moose is turning 1yr old soon <http://use.perl.org/~Stevan/journal/32891?from=rss>
20:46 thorat joined perl6
20:46 [particle] left perl6
20:47 [particle] joined perl6
20:47 avar joined perl6
20:48 fglock pmurias: that's the compile time for 6-on-parrot; 6-on-6 should be much slower
20:48 fglock even on parrot
20:51 pbuetow joined perl6
20:51 [particle] joined perl6
21:02 explorer joined perl6
21:08 pmurias left perl6
21:11 forsaken joined perl6
21:14 fglock left perl6
21:14 Limbic_Region joined perl6
21:19 SubStack joined perl6
21:28 eric__ joined perl6
21:31 __Ace___ joined perl6
21:34 svnbot6 r15823 | kudra++ | Completed the week
21:43 devbot6 planet6: Audrey Tang: Weekly Perl 6 mailing list summary for 11-17 March, 2007 <http://pugs.blogs.com/pugs/2007/04/weekly_perl_6_m.html>
21:52 svnbot6 r15824 | kudra++ | Placeholders
21:52 jferrero joined perl6
21:56 prly joined perl6
22:06 lichtkind joined perl6
22:06 explorer joined perl6
22:15 perlmonkey2 what is the <<== operator do?
22:15 perlmonkey2 s/is/does/
22:16 [particle] a pipe that appends? i'd have to check S03
22:17 [particle] S03?
22:17 [particle] hrmm. thought there might be a factoid for thta
22:18 [particle] yep, it's a feed operator that appends
22:19 perlmonkey2 So this:@w <<== $i; is equiv to push(@w,$i); ?
22:19 moritz that looks... unfamiliar ;-)
22:19 [particle] yep
22:19 lichtkind audreyt: are you awake?
22:19 perlmonkey2 cool
22:20 moritz ?eval my @a = 1 .. 2; @a <<== 3, 4
22:20 evalbot_r15816 is now known as evalbot_r15824
22:20 evalbot_r15824 Error: ␤Unexpected "<<=="␤expecting operator
22:20 [particle] moritz, it's a ENOIMPL pugsbug
22:21 moritz [particle]: I can see that, <<== is not recognized as an op ;-)
22:21 perlmonkey2 "Note, as of today, append feed is now <<== rather than <==. "
22:22 overkordbaever joined perl6
22:23 Limbic_Region .seen stevan__
22:23 Limbic_Region ?seen stevan__
22:23 lambdabot stevan__ is in #perl6. I don't know when stevan__ last spoke.
22:24 overkordbaever Seems like stevan__ is online at least
22:27 Limbic_Region stevan ping
22:27 Limbic_Region or rather
22:27 Limbic_Region stevan__ ping
22:28 [particle] it's somewhat unfortunate that @a ==>> $s is not equivalent to pop
22:45 perlmonkey2 is it equivalent to shift?
22:46 justatheory joined perl6
22:47 [particle] it depends what's in $s
22:47 perlmonkey2 it would be weird having the assignment go from left to right.
22:47 [particle] if $s does array, it would append every item from @a to $s
22:48 [particle] if $s is scalar only, it may fail because it can't append, but i'm not sure
22:48 perlmonkey2 you can assign basic type roles to your classes?
22:49 [particle] my int $dog;
22:49 [particle] types, or roles?
22:49 perlmonkey2 you said "does" array.
22:49 perlmonkey2 package MyAPP{ does array;}
22:50 perlmonkey2 probably not correct syntax.
22:50 [particle] i'm not 100% sure what the base role names will be
22:50 [particle] class Dog is Mammal does Pet { ... }
22:51 [particle] check out http://spec.pugscode.org/
22:51 Limbic_Region particle, I don't care if your Dog is a Mammal - it should, in no way, be doing my Pet
22:51 lambdabot Title: Official Perl 6 Documentation
22:51 perlmonkey2 so: class Dog is Mammal does array{ ... } and array's operators would have to be overloaded?
22:51 [particle] dogs will be dawgs
22:56 * perlmonkey2 thinks Multiple Dispatch is groovy.
22:57 jfoutz left perl6
22:58 perlmonkey2 Ahah, you don't say "does array", you do Type Casting.
22:58 Limbic_Region perlmonkey2 - indeed, but keep in mind that multi-method dispatch goes by different names in different groups
22:59 dduncan joined perl6
23:02 macli left perl6
23:03 perlmonkey2 CharLingua?  Wow, Perl6 really will become the tool of choice...this stuff is like magic fairy dust for people working the web.
23:04 lichtkind Leibsle: ?
23:06 Leibsle lichtkind, guguck :)
23:09 * diotalevi wondered that of  class Dog is Mammal does Pet { ... }, not all Dogs do Pet.
23:11 moritz diotalevi: just name it PetDog ;-)
23:14 silug joined perl6
23:15 perlmonkey2 S29 is like reading a wish list for every shortcut you've ever wanted.
23:18 BooK_ joined perl6
23:18 moritz perlmonkey2: actually the changes in the builtins are small compared to most other changes ;-)
23:19 moritz perlmonkey2: just read S05 ;-)
23:21 perlmonkey2 If the regexps are upgraded too much, won't p6 allow anyone who cares to, to take over the entire world?
23:22 moritz perlmonkey2: when _everybody_ takes over the world, that's communism ;-)
23:22 moritz OSS developers are all freaking communists, didn't you know? *bg*
23:22 moritz "World domination, fast" -- Linus Torvalds
23:24 Aankhen`` joined perl6
23:27 perlmonkey2 Reading these synopsis takes me back about a decade to when I read the introduction to the Camel book and realized I was about to see something cooler than I'd ever seen before.
23:27 imperator joined perl6
23:29 perlmonkey2 m:c??? come on?  how cool is that?  if that exists in p5 and I don't know about it, I'll cry.
23:31 dduncan on the contrary, OSS development is the closest software model to true capitalism
23:31 dduncan there, everything is driven by supply and demand, rather than copyright laws that artificially change the balance of things
23:31 moritz dduncan: I know that, I'm paraphrasing trolls ;-)
23:38 Aankhen`` You know what would be a great idea?
23:38 Aankhen`` Porting Params::Validate to Perl 6!
23:38 * Aankhen`` ducks.
23:41 dduncan I have an opinion question.  If I were to declare a generalized Str subtype, say NEStr, that includes all Str values except for the empty string, then what might be the best default value of such type, since the empty string is the default value of Str?
23:42 geoffb space?
23:42 dduncan Also assume that Undef is also not allowed, or alternately, that Undef when used as a string would default to the type's default value, but that can't be the empty string here.
23:42 dduncan geoffb, that was actually my first thought, that space could work well
23:43 dduncan but I was wondering if some people thought other alternatives, such as perhaps the digit zero, may be better?
23:43 dduncan I figure, 1 of those 2 options, unless a third is suggested
23:43 geoffb space has the advantage of non-jarring interpolation
23:43 moritz dduncan: smells like a design - a non-empty type that needs a default (just an opinion ;-)
23:43 dduncan sounds reasonable
23:44 moritz s/a/ill/
23:44 dduncan I'm designing a type system that has no concept of undefined ... every variable of that type always contains a valid value of the type
23:44 dduncan Perl 6 sort of does this by that Undef can pretend to be a default value for a type, eg, zero-but-undef or some such
23:45 dduncan the type system has a normal Str equivalent, but I thought it would be useful to also include a subtype that couldn't be an empty string, since that's what lots of people use
23:45 dduncan for the normal type, the empty string is the default of course
23:46 dduncan the distinction of these 2 types is similar to having numeric types that can either be only all numbers, vs a subtype that can only be >= 0, and another that can only be > 0
23:47 dduncan all 3 of those are common scenarios
23:47 dduncan anyway, I'll go with [space] as I was before, unless I'm convinced otherwise
23:47 dduncan for NEStr, and the empty string for Str as usual
23:48 dduncan with the 3 numeric types mentioned, the default values would be 0, 0, 1 respectively
23:48 * polettix throws a x{00}
23:49 dduncan thank you for your feedback
23:49 [particle] joined perl6
23:49 * moritz throws a string with negative length and quickly ducks bevor it detonates ;-)
23:49 dduncan I think in Perl 5 that is actually possible
23:50 dduncan eg, hash keys that are str with a utf8 flag on are indicated as such with negative lengths, or something?
23:50 * polettix wonders what would happen doing    ${moritz' string} x -1
23:51 dduncan that way, 2 different keys that otherwise have the same bit pattern, but 1 is text and the other binary, don't collide
23:51 moritz polettix: it turns upside down
23:51 polettix then, I wonder what would happen feeding it to an inside-out object
23:52 [particle] @eval sqrt $negative_string
23:52 [particle] er, wrong evalbot, but you get the point :)
23:52 moritz polettix: it vomits ;-)
23:52 polettix $i * $something
23:52 polettix :)
23:53 dduncan ?eval sqrt $negative_string
23:53 perlmonkey2 left perl6
23:53 evalbot_r15824 0.0
23:54 dduncan there you go particle
23:54 moritz ?eval sqrt -1i
23:54 evalbot_r15824 0.7071067811865476 + -0.7071067811865475i
23:54 dduncan dood!
23:54 polettix ?eval sqrt -1
23:54 evalbot_r15824 NaN
23:54 moritz polettix: that's on purpose..
23:54 [particle] ?eval NaN ** NaN
23:54 evalbot_r15824 NaN
23:55 moritz polettix: not to frighten mathematically non-inclined programmers ;-)
23:55 polettix ?eval sqrt (-1 + 0i)
23:55 evalbot_r15824 0.0 + 1.0i
23:55 polettix :)
23:55 polettix is there a less work-aroundish mechanism to trigger complex computing?
23:56 moritz ?eval sqrt(-1 + 0i)**2
23:56 evalbot_r15824 0/1
23:56 dduncan cast arguments as Complex ?
23:56 dduncan ?eval sqrt Complex(-1,0)
23:56 evalbot_r15824 Error: No such subroutine: &Complex
23:56 dduncan I would expect something like that to work
23:56 Aankhen`` joined perl6
23:57 polettix what does 0/1 mean?
23:57 dduncan it means zero
23:57 dduncan dividing anything by 1 is a trivial situation
23:58 dduncan ?eval 0/1i
23:58 evalbot_r15824 0.0 + 0.0i
23:58 polettix ah, it's a division sign. so the result is wrong?
23:58 moritz I assume, yes
23:58 polettix ?eval 1i**2
23:58 evalbot_r15824 0/1
23:59 polettix ?eval (1i + 0)**2
23:59 evalbot_r15824 0/1
23:59 BooK joined perl6
23:59 polettix ok, complex computations are still a bit too "complex"
23:59 dduncan mind you, I can't assert whether a number of those results were correct or not, since I don't know too much about complex math

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

Perl 6 | Reference Documentation | Rakudo