Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2008-07-21

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:07 timbunce joined #perl6
00:25 Limbic_Region joined #perl6
00:26 Alias_ joined #perl6
00:27 justatheory joined #perl6
00:53 nnunley joined #perl6
00:53 Maddingue joined #perl6
00:53 audreyt joined #perl6
00:53 rakudo_svn joined #perl6
01:00 Psyche^ joined #perl6
01:03 Alias_ joined #perl6
01:05 arguile joined #perl6
01:07 pasteling joined #perl6
01:44 bsb joined #perl6
02:01 jeremy-wrk left #perl6
02:22 planofish joined #perl6
02:41 apeiron_ joined #perl6
02:46 * zamanfou is now away: In the rain my tears are forever lost.
02:46 Schwern joined #perl6
02:52 awwaiid joined #perl6
02:57 luqui joined #perl6
03:11 apple-gunkies joined #perl6
03:18 pbuetow joined #perl6
03:19 Schwern joined #perl6
03:38 pbuetow_ joined #perl6
04:10 eternaleye joined #perl6
04:24 josh- joined #perl6
04:37 penk joined #perl6
04:43 pugs_svn r21422 | Auzon++ | [gsoc_spectest] added tests to return.t and fudged for rakudo. (added 6 tests)
04:43 Auzon pugs/t/spec/S04-statements/return.t is ready for spectest_regression
05:08 alester joined #perl6
05:20 Redeemer joined #perl6
05:21 Redeemer left #perl6
05:23 Psyche^ joined #perl6
05:38 Alias_ joined #perl6
05:52 josh- joined #perl6
06:11 justatheory joined #perl6
06:22 jferrero joined #perl6
06:41 polettix joined #perl6
06:57 IRCMonkeydsss joined #perl6
07:12 barney joined #perl6
07:30 cosimo joined #perl6
07:31 iblechbot joined #perl6
07:38 timbunce joined #perl6
08:05 hanekomu joined #perl6
08:06 masak joined #perl6
08:09 timbunce joined #perl6
08:16 timbunce joined #perl6
08:53 jferrero joined #perl6
08:55 elmex joined #perl6
09:03 moritz_ re
09:16 Patterner hbock
09:16 baest_ joined #perl6
09:21 rakudo_svn r29647 | moritz++ | [rakudo] add S04-statements/return.t to spectest_regression, Auzon++
09:21 rakudo_svn r29647 | moritz++ |  +12 pass, +2 skip
09:29 masak moritz_: could you clarify to me what the advantage of fudge-skip is?
09:30 moritz_ masak: rakudo doesn't die if a test is skipped and it tests a not-yet-implemented feature ;)
09:30 masak and what happens once the feature is implemented?
09:30 moritz_ if it executes, and just yields the wrong results, a TODO is better
09:31 moritz_ masak: we run autounfudge.pl ;-)
09:31 moritz_ and hope it catches the skips
09:31 masak ah, that's new to me
09:31 * masak checks out autounfudge.pl
09:32 masak cool!
09:32 masak now the picture is clearer to me
09:32 masak moritz_: thanks
09:33 chris2 joined #perl6
09:33 moritz_ I just started it, and it found one passing todo test in S02-builtin_data_types/anon_block.t
09:40 masak autounfudge.pl++
09:42 moritz_ thanks ;)
10:08 pugs_svn r21423 | moritz++ | [spec] unfudge a few tests for rakudo, autounfudge++
10:10 masak moritz++
10:12 Jedai joined #perl6
10:26 rakudo_svn r29648 | moritz++ | [rakudo] add S04-statements/given.t to spectest_regression. Auzon++
10:27 pugs_svn joined #perl6
10:27 rakudo_svn joined #perl6
10:27 moritz_ perlbot: karma Auzon
10:27 perlbot Karma for Auzon: 137
10:39 pmurias joined #perl6
11:00 PZt joined #perl6
11:02 * zamanfou is now away: In the rain my tears are forever lost.
11:22 wknight8111 joined #perl6
11:25 barney joined #perl6
11:37 kanru joined #perl6
11:37 ruoso joined #perl6
11:50 a-jing joined #perl6
11:50 a-jing left #perl6
11:52 iblechbot joined #perl6
11:53 pmurias ruoso: hi
11:54 ruoso pmurias, hi
11:55 pmurias i'm still unsure if the object representation should store the metadata in a special way
11:57 pmurias ruoso: would a 'use v6' for switching from c to perl6 would be a good idea?
11:57 ruoso would it be easy to parse?
11:57 pmurias if we do it the pythonic way, easy
11:58 ruoso what do you mean? by using indentation?
11:58 pmurias ues
11:58 pmurias * yes
11:59 pmurias did a mockup even
12:00 ruoso seems fine to me
12:01 pmurias should the object representations be interchangable?
12:05 ruoso pmurias, yes...
12:05 ruoso pmurias, that's the entire point... you should be able to freely interchange WHAT/HOW/REPR
12:07 moritz_ @tell Auzon when you fudge files ready for inclusion into spectest_regression, just /msg or @tell me, I'll add them when I'm online again
12:07 lambdabot Consider it noted.
12:08 moritz_ @tell Auzon thinking a bit more, just adding a note in the commit log is also enough, since I read all your commit messages (big moritz is watching you ;-)
12:08 lambdabot Consider it noted.
12:11 meppl joined #perl6
12:13 ruoso pmurias, the REPR api is not implemented as a completely separated object because that requirement would be too much arbitrary... meaning... if you implement p5hash as a REPR you would have the methods and attributes being managed in a entirely different way...
12:14 ruoso pmurias, and having it as an explicit API makes it easier for non-p6opaque representations to be implemented.
12:18 pmurias under the current design (on the wiki) a metaclass instance needs to be available to interpret the metadata
12:20 ruoso yes...
12:20 ruoso the metaclass is REPR independent
12:20 ruoso because of the REPR API
12:20 pmurias what i would make sense would be to have the repr api seperated as a set of roles, the most basic providing only attribiute storage and .dispatch forwarding, others stuff as vtables
12:20 pmurias * what i think would
12:21 ruoso pmurias, oh sure... sure... nothingmuch had pointed me that direction before...
12:21 moritz_ pmurias: re v6.pm in evalbot: no. Would you benefit from it?
12:22 ruoso I think we lack the level of maturity to properly define this hierarchy
12:22 pmurias moritz_: not really
12:23 pmurias ruoso: we can just split it into basic and advanced for now ;)
12:23 ruoso pmurias, heh...
12:23 ruoso nothingmuch have some ideas about that...
12:50 pmurias what's the multi argument form of ``?
12:50 moritz_ in p5?
12:50 moritz_ open()
12:51 pmurias in p5, it's unspeced in p6
12:52 moritz_ open $handle, '|-', @args or die $!; local $/; my $data = <$handle>; close $handle
12:52 moritz_ or something along these lines
12:52 moritz_ but I can never remember if it's |- or -|
12:56 kolibrie joined #perl6
12:59 cmarcelo joined #perl6
12:59 pugs_svn r21424 | pmurias++ | [smop] sm0p.pl turns use v6;p6 code... into frame = q:sm0p {...}
13:00 pmurias moritz_: i just stuck it into a nearby open3
13:03 cmarcelo joined #perl6
13:09 pugs_svn r21425 | moritz++ | [spec] fixed POD
13:11 pugs_svn r21426 | moritz++ | [spec] more pod fixes
13:13 * moritz_ doesn't see a perlfix:sym<\> anywhere in STD.pm
13:13 moritz_ is it simply missing? or is it handled as a separate term?
13:14 pmurias you can run STD on \1?
13:14 moritz_ how do I do that?
13:16 ruoso pmurias, btw... about repr-api-hierarchy... I think the most basic one is the support for private storage. That should be enough to implement a pure-prototype-oo...
13:17 moritz_ moritz@lara:~/pugs/src/perl6>echo '\1;' > test.t
13:17 moritz_ moritz@lara:~/pugs/src/perl6>./tryfile test.t
13:17 moritz_ Starting...
13:17 moritz_ ############# PARSE FAILED #############
13:17 moritz_ ----> <<<HERE>>>\1;
13:19 ruoso pmurias, I think we should create a directory inside smop to document all the roles then...
13:21 pugs_svn r21427 | pmurias++ | [smop] how a "a basic" p6opaque will look like
13:22 masak ok, so t/spec/S12-class/inheritance-class-methods.t passes in rakudo if I shuffle a few lines around in the class definitions. should I commit that?
13:23 moritz_ masak: that depends on wether the order of declarations is being tested for
13:23 ruoso pmurias, are you planning to store the methods and attribute definitions in the storage itself?
13:23 pmurias ruoso: yes creating such a directory would make sense
13:23 masak moritz_: not in this particular test, no
13:23 pmurias ruoso: in the most basic case yes
13:23 moritz_ masak: the canonical answer is "yes, but make sure the failing behaviour is tested somewhere"
13:23 masak moritz_: I submitted a bug report for it
13:23 masak but I guess I could write a test as well, if needed
13:23 moritz_ masak++
13:23 ruoso pmurias, how would you answer to "defined"?
13:24 moritz_ masak: another test is always good ;-)
13:24 pmurias a defined bit maybe ;)?
13:24 * masak writes the test
13:24 ruoso pmurias, hmm...
13:24 pmurias or just see if the metadata is present like in the previous scheme
13:25 ruoso pmurias, you mean having it as a separated slot from the storage?
13:25 pmurias $objcje.^!private_storage('^METADATA').defined
13:25 pmurias * $object
13:26 ruoso pmurias, I think it might be ok to implement it that way in p6opaque for now...
13:26 ruoso pmurias, but that should not be exposed as the REPR API
13:27 donaldh joined #perl6
13:27 masak hm, I use lives_ok when something is syntactically correct but likely to fail, right?
13:27 pmurias exposed meaning part of the REPR API?
13:28 ruoso yes
13:28 ruoso pmurias, and I'm not sure about having "defined" inside "metadata", because you will require every object to have a metadata, even if it's a plain instance of a single proto-object
13:28 ruoso in the previous schema, the object was "defined" when it had a private storage...
13:29 ruoso and usually the prototypes would only have a metadata storage
13:29 ruoso (considering the restriction to avoid Object.BUILDALL() making undef defined
13:30 ruoso pmurias, what do you think about the following...
13:30 ruoso has Hash $.metadata; has Hash of Hash $.private_storage
13:35 pmurias_ joined #perl6
13:35 pugs_svn r21428 | masak++ | [declaration_order.t] new test file testing order-independent class declaration
13:36 pugs_svn r21429 | masak++ | [inheritance-class-methods.t] changed around the order of class declaration
13:36 pugs_svn r21429 | masak++ | due to a bug in rakudo, you must currently declare the base class first
13:36 pugs_svn r21429 | masak++ | the tests now run in rakudo
13:36 ruoso pmurias, then you'd have $obj.^!private_storage.{$package}{'$!a'} and $obj.^!metadata.{'methods'}
13:36 ruoso but we could then expose the API in more detailes...
13:36 ruoso like having a $obj.^!methods that would do the hash lookup directl
13:36 moritz_ masak: please use - to separate words in file names
13:36 masak oops
13:37 moritz_ masak: we're slowly moving to that conventioin (or at least try to)
13:37 masak moritz_: I remember the thread, but forgot the conclusion :/
13:37 masak I just saw that all the other test files in that folder used _
13:37 moritz_ yes :(
13:38 ruoso pmurias, but I would still keep  an "instanceof" to allow "diret delegation to a single prototype" which, afaics, is the most common case...
13:38 pugs_svn r21430 | masak++ | dashes, not underscores
13:38 masak moritz_++
13:38 ruoso pmurias, what do you think?
13:39 moritz_ maybe I should change the file names in one big rush in both the test suite and in rakudo's test files
13:39 moritz_ but then again I should coordinate that with other people first ;-)
13:41 * pmurias_ got sucked in some stupid blog posts from chromatics stupidity column
13:41 * ruoso where where?
13:42 pmurias ruoso: where where refered to?
13:42 * moritz_ suspects http://use.perl.org/~chromatic/journal/
13:42 lambdabot Title: Journal of chromatic (983)
13:43 ruoso pmurias, the blog post?
13:44 pmurias from planet.perl.org
13:44 ruoso pmurias, but... what do you think on what I've proposed?
13:45 pmurias the difference is slight
13:45 pmurias actually it was the top one from planet.parrotcode.org
13:47 pmurias ruoso: i don't think we should add convenience methods to the representation object
13:48 ruoso what do you mean "conveinence"?
13:48 ruoso *convenience
13:50 ruoso pmurias, you mean .^!methods is convenience?
13:50 pmurias methods which don't add any functionality but make some thing more convenient
13:51 pmurias yes
13:51 ruoso pmurias, the convenience in this case is the REPR api
13:52 ruoso the thing is we don't need to force every object repr implementation to implement a full Hash of Hash to access each method...
13:52 pmurias a Hash of Hash is equivalent to a Hash
13:52 ruoso p6opaque is designed in a way that .^!methods looks like convenience, but that might not be the case for other implementations
13:53 ruoso p5blessedhash, for instance...
13:53 pmurias the .^methods as currently wikied wouldn't map to perl5 methods
13:54 TJCRI joined #perl6
13:54 ruoso pmurias, I should update .^!methods to be Hash of Array of Method
13:54 pmurias p5blessedhash would have to use AUTOLOAD (or lowlevel equivalent) and redispatch to .how.dispatch
13:55 ruoso pmurias, yes... but .how.dispatch would need to ask the p5blessedhash for the methods
13:56 ruoso considering you implement a protoobject in p5...
13:56 ruoso I think the point of confusion here is about class-based × prototype-based OO
13:56 pmurias but the p5blessedhash would store them as any other data
13:56 jiing joined #perl6
13:57 ruoso pmurias, not really... it would look at the 'ref' the hash has, and look the methods available for that package...
13:58 ruoso then you can have a mixed hierarchy of protoobjects of different representations...
13:59 pmurias p5blessedhash would be incompatible with a lot of metaclasses
13:59 ruoso why would it?
14:00 pmurias if the metaclass has a different dispatching order
14:01 ruoso I didn't get it
14:01 ruoso the "methods storage" is "used by" whatever metaclass
14:02 ruoso the REPR is not responsible by the dispatch
14:03 * pmurias has to think
14:03 ruoso the repr delegates the dispatch to the how, the ho looks up the methods using the REPR api, and make the call
14:03 ruoso s/the ho /the how/
14:05 * ruoso drawing a sequence diagram
14:12 * pmurias can only find contrived examples of metaclasses not assuming a method list
14:14 pugs_svn r21431 | ruoso++ | [smop] sequence diagram on the invocation
14:14 pugs_svn r21432 | ruoso++ | [smop] ops, the last call was coming from the wrong object
14:15 ruoso pmurias, take a look at doc/InvocationSequence.png
14:16 jhorwitz joined #perl6
14:17 ruoso pmurias, this example would be a pure-prototype-oo case
14:18 alester joined #perl6
14:18 ruoso I also need to say that I'm in favour of making the default implementation for P6 prototype-based (by delegation...)
14:19 ruoso because class-based OO makes it very hard to adopt different dispatching mechanisms... Class::C3 × Single inheritance × whatever
14:19 ruoso if we make the protoobject the storage for the metadata, we can have a metaclass instance that is transversal to the entire hierarchy
14:20 ruoso and, more importantly, that can be easily replaced
14:23 ruoso pmurias, do you see what I mean?
14:23 pmurias yes
14:24 pmurias lunch&
14:26 Lorn joined #perl6
14:27 ruoso TimToady, would it be ok for a Perl 6 implementation to make the built-in types Prototype-based-by-delegation instead of class-based?
14:28 ruoso TimToady, or is 'class-based OO' part of the spec for the builtin types?
14:31 pmurias TimToady is away for a couple of days for OSCON
14:32 moritz_ but I guess he'll have internet access there, from time to time ;-)
14:33 moritz_ the last documented design minutes where 2008-06-11 - d'oh
14:46 ruoso pmurias, after all the reasoning, what do you think about p6opaque structure?
14:48 pmurias i would go for having .^!methods and .^!attributes (and perhaps .^!metadata) as separate roles with the default implemenation using .^!private_storage
14:50 polettix joined #perl6
14:50 ruoso and storing "isa", "does" etc as part of the private_storage?
14:50 hercynium joined #perl6
14:50 pmurias unless the representation overides that
14:52 ruoso so you mean making .^!storage.{'^METADATA'}.how as *the* REPR API
14:52 * ruoso renaming private_storage simply to "storage"...
14:53 pmurias dunno, ^!how might be better
14:54 ruoso and so for .^!storage.{'^METADATA'}.{'methods'}, doesn't it...
14:54 ruoso I mean...
14:54 ruoso you said Role, and I agree with you
14:54 ruoso if some representation doesn't support methods, it *doesn't support* them
14:54 ruoso it means that the how needs to fetch the methods elsewhere
14:55 ruoso and not that the how is going to traverse some hash to fetch it
14:55 ipw2008 joined #perl6
14:55 ruoso or...
14:55 ruoso it might mean that you have a pure-prototype-oo
14:55 ruoso with no delegation
14:56 ruoso and that your methods are slots in the private_storage
14:56 ruoso and your metaclass is aware of that
14:57 ruoso and in that case, this metaclass would be incompatible with other metaclasses
14:58 ruoso which is the syntax to specify the type of the key in a Hash?
14:59 pmurias Hash of something
14:59 ruoso that's for the value
14:59 pmurias ah key
15:00 pmurias my Any %hash{Str};
15:00 ruoso ahm...
15:00 ruoso that doesn't solve my problem...
15:00 pmurias that's the default hash
15:00 ruoso I have a
15:00 ruoso Hash{Package} of Hash
15:01 pmurias my Hash %hash{Package}
15:01 ruoso but how do I put that into a Signature?
15:01 ruoso (as the return value, I should say)
15:02 * pmurias is just looking up stuff from s* not from memory
15:02 * zamanfou is now away: In the rain my tears are forever lost.
15:03 * ruoso hate public away notices...
15:03 pmurias zamanfou seems to live in a rainy climate
15:04 pmurias ruoso: what's the benefit of not supporting methods if the can be supported (emulated) by storing stuff in private_storage
15:05 moritz_ and in a very verbose climate, if (s)he minds telling us all status changes
15:05 ruoso pmurias, because that would make your metaclass incompatible with representations that do have a way to support methods
15:05 * ruoso lunch &
15:06 * ruoso brb &
15:06 pmurias what i meant is that the emulation happens at the repr level, the metaclass just calls .^!methods
15:11 rakudo_svn r29654 | moritz++ | [rakudo] fiddled with spectest_regression:
15:11 rakudo_svn r29654 | moritz++ |  - added S12-class/inheritance-class-methods.t, masak++
15:11 rakudo_svn r29654 | moritz++ |  - fixed typo in name of S12-class/anonymous.t, jonathan++ for implementing
15:11 cmarcelo joined #perl6
15:18 rakudo_svn r29655 | moritz++ | [rakudo] whitespace fixes in spectest_regression.data
15:28 alester joined #perl6
15:30 pmurias fixing my mountain bike&
15:39 pl0d joined #perl6
15:50 justatheory joined #perl6
15:54 penk joined #perl6
16:14 dmq joined #perl6
16:16 mofino joined #perl6
16:28 Exodist joined #perl6
16:37 cls_bsd joined #perl6
16:43 justatheory joined #perl6
16:43 cls_bsd joined #perl6
16:46 kanru joined #perl6
16:59 Exodist joined #perl6
17:04 ruoso joined #perl6
17:11 penk left #perl6
17:22 justatheory joined #perl6
17:22 jfredett joined #perl6
17:32 alester joined #perl6
17:33 rindolf joined #perl6
17:42 BinGOs joined #perl6
17:44 Auzon thanks moritz_ :)
17:44 lambdabot Auzon: You have 2 new messages. '/msg lambdabot @messages' to read them.
17:46 Auzon moritz_: for some reason, the progress graph isn't updating on rakudo.de (or anywhere else that I've seen)
17:54 Chillance joined #perl6
17:55 pugs_svn r21433 | fglock++ | [v6.pm] requires perl 5.8.6
17:58 timbunce joined #perl6
18:21 TJCRI joined #perl6
18:21 pmurias joined #perl6
18:28 pmurias ruoso: do you agree with what i'm proposing?
18:37 kanru joined #perl6
18:54 pmurias ruoso: i'm not sure myself, so i'll implement it and will see if it's a good scheme
18:55 pmurias does anyone have examples of usefull custom metaclasses?
19:12 pmurias j
19:30 donaldh joined #perl6
19:51 meppl joined #perl6
19:54 moritz_ Auzon: yes, pmichaud didn't update spectest-progress.csvn for a while
19:55 Auzon I didn't know if it was that or the cronjob not working
19:55 moritz_ svn info languages/perl6/docs/spectest-progress.csv |grep Date
19:55 moritz_ Last Changed Date: 2008-07-15 16:01:39 +0200 (Tue, 15 Jul 2008)
20:03 * pmurias is tempted by a elf rewrite
20:03 justatheory joined #perl6
20:03 Auzon Why/
20:04 alester joined #perl6
20:05 pmurias beind constantly hindered by little bugs and misdesignes
20:06 pmurias * misdesigns
20:13 meppl joined #perl6
20:28 Alias_ joined #perl6
20:34 alester joined #perl6
20:52 jferrero joined #perl6
20:56 meppl joined #perl6
20:59 Schwern joined #perl6
21:04 jferrero joined #perl6
21:16 Alias_ joined #perl6
21:20 pugs_svn r21434 | Auzon++ | [gsoc_spectest] moved leave.t into spec, changed $?BLOCK to &?BLOCK, other cleanup
21:21 Auzon I could've sworn that Rakudo had a basic implementation of leave.
21:21 moritz_ control exceptions are still on the ROADMAP
21:21 moritz_ return() being the notable exception
21:22 meppl joined #perl6
21:22 Auzon on a side note, leave() is really cool, especially with being able to travel up multiple levels.
21:23 Auzon It's a good way to tangle up code if you're not careful, but most powerful constructs are like that.
21:24 moritz_ and &?BLOCK is cool for recursion into anonymous blocks ;-)
21:24 Auzon and @?BLOCK for recursion into the parent block.
21:25 wknight8111 joined #perl6
21:26 moritz_ .oO( @?BLOCK[(^@?BLOCK).pick].()  )
21:26 s1n joined #perl6
21:27 Auzon I can't even imagine what use that would be. Maybe obfu :)
21:28 moritz_ none at all, probably
21:28 moritz_ but it looks really nice ;-)
21:29 Auzon Why is it (^@?BLOCK) instead of just @?BLOCK ?
21:29 alester joined #perl6
21:29 moritz_ because it's too late and I'm playing chess at the same time ;-)
21:29 moritz_ @?BLOCKS.pick().()
21:30 [particle]1 try http://en.wikipedia.org/wiki/Chess_boxing
21:30 lambdabot Title: Chess boxing - Wikipedia, the free encyclopedia
21:30 Auzon @?BLOCKS.pick().() would be the same as &?BLOCK() for some types of recursion...
21:30 moritz_ for some ;-)
21:32 Auzon @?BLOCKS.unique.pick().() # ;)
21:32 Auzon (assuming that .unique does what I mean)
21:33 moritz_ I don't think there's a builtin .unique
21:33 Auzon Nope, I checked
21:34 moritz_ probably because it encourages usage of the "wrong" data structure
21:34 moritz_ does @?BLOCKS contain the lexical or the dynamic calling blocks?
21:34 moritz_ ah, lexical, otherwise the ? twigil would be wrong
21:35 moritz_ so no need for unique at all
21:35 Auzon also, @?BLOCK[0] === &?BLOCK
21:35 moritz_ but that's the same for both lexical and dynamic scopes
21:36 Auzon Ok, makes sense. I guess. ;)
21:37 [particle] @?BLOCKS.pick.clone.()
21:39 * ruoso going home &
21:41 [particle] who needs closures remembering state, anyway?
21:41 moritz_ continuations? ;-)
21:42 [particle] if i'm picking blocks at random, might as well make sure i get consistently inconsistent results
21:42 moritz_ when you call srand() first you might get a nice obfu from it
21:59 alester joined #perl6
22:01 Alias__ joined #perl6
22:01 meppl joined #perl6
22:15 alester joined #perl6
22:29 justatheory joined #perl6
22:36 Alias__ joined #perl6
22:40 cj joined #perl6
23:05 Limbic_Region joined #perl6
23:08 pbuetow joined #perl6
23:24 Sartak left #perl6
23:47 bacek joined #perl6
23:55 alester joined #perl6

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

Perl 6 | Reference Documentation | Rakudo