Author: jesse Date: Sat Aug 16 07:29:53 2008 New Revision: 30269 Modified: trunk/languages/perl6/ROADMAP
Log: * Updates to the Rakudo roadmap - added difficultiy estimates, fleshed out dependencies a bit with pmichaud Modified: trunk/languages/perl6/ROADMAP ============================================================================== --- trunk/languages/perl6/ROADMAP (original) +++ trunk/languages/perl6/ROADMAP Sat Aug 16 07:29:53 2008 @@ -1,124 +1,158 @@ -Updated: 2008-04-28 +Updated: 2008-08-16 Milestones ---------- This is a rough list of some of the major components to be added to Rakudo. - -* list context, list assignment -* multi-argument return and control exceptions -* class, role, objects -* regex, token, rule, grammar -* selected libraries written in Perl 6 -* modules -* I/O -* junction auto-threading -* hyper, reduction and cross meta-operators -* lazy lists, gather and take -* slices and slice context -* captures and signature handling -* multi sub & multi-method dispatch -* currying -* operator overloading -* other S09 features (typed arrays, sized types) -* heredocs -* macros -* module versioning - -The list above also gives a sense of the rough prioritization +This list also gives a sense of the rough prioritization of things -- i.e., getting return and control exceptions to work is a higher priority than heredocs or macros. But it's also not intended to be rigid nor strictly sequential -- it's okay for people to work on some of the later milestones even if the earlier ones aren't complete. -Here's a more detailed list of current to-do items: - -* Implement Whatever (*) in array indexes - - need an implementation of Whatever - -* Implement Rat data type - - awaiting clearer spec/understanding of the relationship between Num and Rat - -* Implement infinite ranges - - awaiting Whatever implementation - -* Implement prefix:<\> operator - - Need some clarity in spec and spectests for Capture objects - -* Implement return type coercion ("as") and constraint ("of") - -* Fix issues with Int type constraint and Integer PMCs - - awaiting .HLL capabilities - -* Finish implementing radix notation (see S02-literals/radix.t for details) - - C code in Perl6Str.pmc needs refactoring and updating - -* Implement eqv and === operators - - No dependencies - -* Implement .perl on code objects - - Need a clarification of what .perl should return here - -* Comparison operators on junctions should return junction of True/False - - Needs junction dispatcher - -* Investigate junction of code object failures (S03-junctions/misc.t) - - Likely depends on junction dispatcher - -* Implement missing infix:<xx=> operator - - Awaiting parser improvements to properly parse and - handle infix_postfix_meta_operator - -* Fix modulo bugs and MMD-related bugs for += and -= (S03-operators\arith.t) - - Awaiting parser improvements to properly parse and - handle infix_postfix_meta_operator - -* Implement NaN and Inf - - Need to determine if Parrot will support NaN/Inf directly, or if - Rakudo should write these - -* Empty contextualizer @() should be same as @($/) - - File an RT ticket for this with test case - -* Fix MMD-related bugs in S03-operators\range.t - - Need to refactor comparison ops in rakudo to avoid or handle 'cmp' - -* Implement infix:<orelse> - - Requires some specialized structures, perhaps a new PAST::Op pasttype (PCT) - -* Fix bugs with nested ?? !! - - Awaiting parser improvements (PGE) - -* Implement state variables - - Need to fix lexical and initialization issues (Parrot) - -* Implement last/redo/next/continue control exceptions - - Needs last/redo/next/continue exceptions in PCT (PCT) - -* Fix .{"key"} parsefail when (hash index into $_) - - likely parser bug (Rakudo grammar.pg) - -* Finish implementing given and check/fix tests in S04-statements\given.t - - Need resumable exceptions (Parrot) - -* Implement CATCH blocks - - Need some parser improvements, updates to 'try' handling - -* Implement loops and conditionals taking pointy blocks - - Needs some minor PCT updates (PCT) - -* Make m/.../ syntax for constructing a regex work - - Update grammar.pg (short-term), or wait for STD.pm integration - -* Fix problem with using Str as a type constraint or in MMD - - File an RT ticket for this? - -* Fix lambda expression parse bug when used as rvalue - - Needs parser/PGE fix (PGE) - -* Implement ::?CLASS - - Update in actions.pm to define compiler variable - -* Implement/fix adverbial blocks - - Needs update to grammar, may need to wait for LTM in PGE +ON ESTIMATES: All hourly estimates in milestones B-W are rough first-cust estimates +IDEAL PROGRAMMER HOURS. Nobody should depend on them for anything other than relative +estimates of difficulty + + +A PGE needs to be refactored and updated to handle protoregexes and + longest token matching so we can use the STD grammar + Sub-milestones - each is 1 calendar month: + Not expected to fully block other milestones, except as indicated below + + + M1. PGE internal refactors and initial protoregex implementation (D1), + selected protoregex constructs added to Rakudo's grammar (D2), + interface design for pre-compilation and external libraries (D3, D4). + + M2. Completed protoregex implementation (D1), + initial implementation of longest token matching in PGE (D1), + completed Rakudo grammar migration to protoregexes (D2), + beginning of P6-based "Prelude" implementation for Rakudo (D3), + initial implementations of external HLL library support (D4). + + M3. Substantially complete longest token matching in PGE (D1), + Rakudo using protoregexes and longest token matching in grammar (D2), + full protoregex and LTM support in Rakudo (D3), + integrate P6-based Prelude into Rakudo implementation (D3), + continued improvement of HLL library support (D4). + + M4. Completed PGE protoregex and longest token matching implementation (D1), + update Rakudo bottom-up parser to align with STD.pm (D2), + Rakudo and/or compiler tools able to parse STD.pm directly (D2), + substantial implementation of a P6-based Prelude for Rakudo (D3), + substantially complete external HLL libraries support (D4). + updated documentation and tests for all work performed, final report. + +B signature handling + pm estimate: 8h + (jonathan implementing) + +C list assignment [depends on A, B] + PM Estimate: 2h + +D control exceptions + Can be done now + Requires adding exception types to PCT + pm estimate: 6h + Writing exception throwers in Rakudo + pm estimate: 0.5h + +E regex, token, rule, grammar (50% done) + We have an initial implementation + Implementaiton needs tweaking + Depends on grammar improvements + Some advanced bits depend on PGE improvements + + grammar improvements + 2h + advanced bits (depends on pge improvements) + 2h + +F Allow Perl 6 precompiled sources - write libraries in Perl 6 + PM Estimate 8h + +G modules + 50% done + subtask: better handling of namespaces + depends on a refactoring of namespaces in p6object (a MOP implementation) in parrot. + + pm estimate: 12h (including refactoring) + +H lazy lists + jw estimate: 8h + +I gather and take + depends on resumable exceptions from pir + pm estimate: 4h + +J I/O + + * Depends on an IO spec + * Depends on lazy lists + + Small matter of writing wrapper methods to implement spec. + +K junction auto-threading + writing dispatch operators + jw estimate: 8h + auto-threading + jw estimate: 24h + +L hyper, reduction and cross meta-operators + [depends on parser improvements] + pm estimate: 6h for hyper + 1h for reduction + 4h for cross + +M slices + * tests need writing + pm estimate: + 8h study S09 + 24h implement (VERY rough) + +N slice context + pm estimate: + 32h implement (VERY rough) + +O captures + PM needs to send mail to p6l. - current tests don't seem to match pm's understanding of the spec + + pm estimate: + 4h study spec + 6h implement + +P multi-argument return - return into named arguments [depends on captures] + PCT side + pm estimate: 8h + Rakudo side + pm estimate: 4h + +Q multi sub & multi-method dispatch + JW implementing + Depends on parrot implementation of MMD (implemented) + Depends on P6 Object update [Depends on G] + JW estimate: 16h + +R currying + PM estimate: 8h + +S operator overloading + Depends on the parser + + PM Estimate: 6h + +T heredocs including pod heredocs + Depends on the parser + PM Estimate: 2h + +U macros + Depends on the parser + PM Estimate: 6h + +V module versioning + (estimate for start: christmas) + +W other S09 features (typed arrays, sized types) + (estimate for start: christmas)