Rakudo Roadmap -------------- Last updated: 2015-07-26 This document serves as a guide to the major goals for Rakudo development, as things stood in December 2011. They have been roughly categorized. Each has been given a 1-3 priority indicator, where 1 is "fairly pressing", 2 is "desirable", and 3 is "wanted, but not a key goal right now". Each item also has from one to five asterisks indicating the estimated "degree of effort" required for the item. A lower priority does not mean, "don't work on this". If you want to hack on a priority 3 item, go right ahead. It is, after all, wanted. And things that are priority 3 now will eventually work their way up to the top anyway. Mostly, -Ofun. Some items are marked with the names of people likely to either work on them OR serve as a "contact person" for the goal. Again, don't let a name already being against a goal stop you working on it - though it would be wise that you check where the marked person is at with it to avoid any duplicated effort, or to pick up hints about how to jump in. :-) Patches to this document are welcome - to add missing goals, remove completed ones, re-prioritize, volunteer for a goal, rescue yourself from a goal, etc. Compiler Performance/Portability Improvements (jnthn) 3 ** Optimizing multis for `[+] 1..10` and `[<=] 1..10` etc. Macros (masak) 2 ** hygienic macros and the COMPILING:: pseudopackage 2 **** "delayed" declarations of routines and types within quasiquotes 3 ? Textual macros Operators 3 ** logical cascades Regexes 2 ** ~~ inside regexes 2 * @< > (force a capture to be an array) 3 ** <*foo> 3 ** <~~0>, <~~foo> 3 *** explicit backtracking control (::, :::) 3 ** and Built-ins/Data Structures 2 *** packed arrays (jnthn) 2 ** Rat/FatRat/Rational cleanup 2 ** sized/shaped arrays (jnthn) 2 ** Correct type smiley support (:U, :D, etc.) (jnthn) 3 *** arrays with custom keys 3 *** complete LoL and slice context implementation 3 *** Cat and stream matching Language Features 2 * $=DATA and friends (tadzik) 2 ** module versioning (lizmat,FROGGS) 2 *** new syntax/semantics for coercion (jnthn) 3 *** domain specific languages -- slang and grammar tweaks (FROGGS) 3 **** more advanced Perl interop (lexical embedding, etc.) (FROGGS) 2 ** label handling using goto 2 ? leave for leading blocks Optimizer (jnthn) 2 ** ro/rw variable tracking, related transforms 2 ** context/non-context variable tracking 2 *** :D/:U constraint tracking and integration with dispatch analysis 2 * topic preservation elimination on simple block inlines Other things (to be organized into above groups) 3 ? AUTOLOAD, including possibly AUTOLOADING setting components