# see README # What are those "kludge" nodes? Adding edges to the parrot milestone # nodes results either in the parrot nodes being scattered, or in the # pugs task graph being unacceptably distorted. So "duplicate nodes" # were added and named kludge. digraph G { rankdir=LR; node [shape=none]; ### End game Xmas [shape=triangle,style="bold,filled",fillcolor=palegreen,color=red]; { edge [color=blue] node [fontcolor=blue] "6.28: Classes and traits" -> "6.283: Rules and Grammars" -> "6.2831: Type system and linking" -> "6.28318: Macros" -> "Pugs feature complete" -> "6.283185: Port Pugs to Perl 6" } { Documentation Testing "Releasable Perl6" } -> Xmas; "Pugs feature complete" -> { "Releasable on Haskell" } subgraph "cluster Releasable" { label="" "All Implementations" [label="*all"]; "Releasable on Haskell" "Releasable on Perl5" "Releasable on Parrot" "Releasable on X" } { edge[style=dashed]; { "Releasable on Haskell" "Releasable on Perl5" "Releasable on Parrot" "Releasable on X" } -> "Releasable Perl6" } ### Rules subgraph "cluster Rules Engine" { label="" edge[style=dashed]; "All grammar engines" [label="*all"]; { "Engine in P5" "Engine in Parrot" "Engine in Hs" "Engine in P6" } -> "Rules Engine in X" } "Rules Engine in X" -> { "Parser in P6" } "Engine in P6" -> "Parser in P6" "Perl6 Prelude" -> { "Perl6 in P6" "Tailored Preludes" } { "Prelude override mechanism" } -> "Tailored Preludes" -> {"All Implementations"} "Grammar for Perl6" "Rules Prelude" -> { "Perl6 Prelude" "Engine in P6" } "Grammar for Rules" -> { "Grammar for Perl6" "All grammar engines" "Engine in P6" } "Grammar for Perl6" -> "Parser in P6" "Parser in P6" -> "Compiler in P6" -> { "Perl6 in P6" } ### Testing { "Many more tests" "Platform specific todos" "YAML-based test framework" } -> Testing ### Specification Specification -> { "Perl6 Prelude" Testing } { "Spec Math" "Event model" "IO model" } -> Specification "Drive spec with backends" -> { "Event model" "IO model" } "Drive spec with pugs" -> { "Spec Math" } ### Documentation { "Docs processing and release mechanism" Specification } -> Documentation ### { "6.28: Classes and traits" } -> "Pugs parrot backend (with OO) **" kludge0 [label="Pugs parrot backend (with OO) **"] parrot_milestone_2 -> kludge0 parrot_milestone_3 -> kludge0 { "PIL2JS supports objects" "Pugs parrot backend (with OO) **" } -> "Have backends" -> "Drive spec with backends" "Move Hs primitives to Prelude" -> { "Perl6 Prelude" } "OO AST" -> "Typed AST" -> "Full AST" -> "Unified AST **" -> { "Compiler in P6" } "OO AST" -> { "Begin core of Compiler in P6" } "Begin core of Compiler in P6" -> "Compiler in P6" "OO AST" -> "PIL2JS supports objects" { "OO AST" "Meta-model" } -> "OO core defined" -> { "PIL2JS supports objects" } { "OO core defined" "Spec MMDispatch" MOP "unflatten primitive names" } -> "6.28: Classes and traits" -> { } { "Rules Engine in X" "Rules Prelude" } -> "6.283: Rules and Grammars" -> { } { "Typed AST" } -> "6.2831: Type system and linking" -> { } { "Full AST" } -> "6.28318: Macros" -> { } "6.283185: Port Pugs to Perl 6" -> "Perl6 in P6" -> "All Implementations" "v6-alpha" -> "Releasable on Perl5" ### fglock { "OO core defined" kp6 [URL="http://svn.pugscode.org/pugs/v6/v6-KindaPerl6/"] } -> "kp6 with real OO" -> { "6-on-6" "Have backends" } "6-on-6" -> { "v6-alpha" [URL="http://svn.pugscode.org/pugs/perl5/Pugs-Compiler-Perl6/"] "Perl6 in P6" } ### parrot # http://www.perlfoundation.org/gc/grants/2005-p6-proposal.html subgraph "cluster Parrot stuff" { URL="http://www.perlfoundation.org/gc/grants/2005-p6-proposal.html" label="" milestone_4 [label="Parrot 1.0\nParrot Milestone 4\nGrammar Engine\nMilestone 4"]; ge_milestone_1 [label="Grammar Engine\nMilestone 1\nengine/grammar/parser"] ge_milestone_2 [label="Grammar Engine\nMilestone 2\nemit AST"]; ge_milestone_3 [label="Grammar Engine\nMilestone 3\nconverge"]; parrot_milestone_1 [label="Parrot Milestone 1\nAPIs"]; parrot_milestone_2 [label="Parrot Milestone 2\nstubs"]; parrot_milestone_3 [label="Parrot Milestone 3\nworks"]; parrot_milestone_1 -> ge_milestone_2 ge_milestone_1 -> ge_milestone_2 -> ge_milestone_3 -> milestone_4 parrot_milestone_1 -> parrot_milestone_2 -> parrot_milestone_3 -> milestone_4 -> "Releasable on Parrot" } kludge1 [label="Unified AST **"] kludge1 -> ge_milestone_2 -> kludge1 kludge1 -> ge_milestone_3 -> kludge1 } # Q [shape=circle,style=filled,color=pink,label="?"];