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)