Perl 6
rakudo feature status: Revision 32
Please noted that this page is being migrated to http://rakudo.org/status, so please incorporate changes there.
Common things that are known to have problems or not work in Rakudo
(As of 2009-02-28.)
Where appropriate, provide a reference to the corresponding RT ticket. Note that we aren't trying to make a list of all known bugs -- that's what RT is for. This should just be for the common issues that people will want to be aware of or work around when playing with Rakudo.
- reading array/hash elements causes them to autovivify (RT #61882)
- accessing outer lexicals from eval
- handles handle only String and List of String, Tepy and Regex not work yet
- lazy lists
- lazy ranges
- prefix and postfix hyperoperators
- //= (RT #61880)
- operator overloading, defining new operators
- nested package/grammar/class declarations
- autothreading of methods over Junctions
- slices/indexing of Ranges (RT #61848)
- filling positional parameters by named argument (RT #54808)
- assigning values to %*ENV (RT #57400)
- methods on Match cannot be used as rule names (RT #57864)
- some things that should be readonly aren't
- autovivification of undefs to arrays/hashes
- my Int @a; (RT #61926)
- variables in regexes (RT #61960)
- .want on Routines, Blocks or Closure not implemented yet (but .arity works)
- Perl 6 closures in regexes (although it is possible to execute some PIR, on the form {{ PIR HERE }})
- code assertions in regexes -- i.e., <?{...}> and <!{...}> (but PIR forms are available, as <? {{ PIR HERE }}>)
- interpolations of arrays, hashes, and method calls in strings (RT #62198)
- Note that the { ... } form is a usable workaround
- what should be Regex objects are currently Code objects
Things that do (mostly?) work in Rakudo
See also the twitter feed at http://twitter.com/rakudoperl.
- $scalar, @array, %hash variables, my and our declaration
- sub, multi sub, sub and methods signatures with types and defaults
- OO stuff mostly works: classes, methods, submethod, roles; has, self, is, of, does, handles etc.
- for, loop, repeat, while
- if, elsif, else, unless, given, when
- junctions (auto-threading partiality works )
- selected infix hyperoperators, reduction operators, cross (X) and zip (Z) operators
- slicing syntax
- chained comparison operators ( if 1 < $a < 100 { ... } )
- whatever star in slices
- closures
- currying (i.e., .assuming)
- .arity (but .want not implemented yet)
- simple next/last/redo
- take/gather
- pointy blocks ( -> $foo { ... } )
- open (:w or :r) and slurpy files (and that is all, IO stuff mostly not implemented yet)
- eval and try/CATCH
- Ranges
- max, min built-ins (but minmax not implemented yet)
- m// .trans and .subst (s// not implemented yet)
- grammar and .parse method to match it
- pick() and .pick
- rand()
- set context: list and .list, item and .item, ~, hash and .hash (but @ and $ not implemented )
- ^ twigil, you can do { say $^a }('Yay');
|