Updated: 2008-08-16

Milestones
----------

This is a rough list of some of the major components to be added to Rakudo.
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.

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)
