| 1 | WARNING - This file has been out of date for more than a year. |
|---|
| 2 | |
|---|
| 3 | This document contains terse status information on major portions of Pugs. |
|---|
| 4 | Because development is rapid and anarchistic, details are omitted. If you |
|---|
| 5 | would like current details, please ask on irc.freenode.net #perl6. |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | = Backends |
|---|
| 9 | [correct as of: 2005-10-24] |
|---|
| 10 | |
|---|
| 11 | - Haskell-Old Working (delta general pugs bugs) |
|---|
| 12 | - Haskell-PIL Restarted 2005-10-03 |
|---|
| 13 | - Java Nonexistant; partial metamodel implementation nonetheless |
|---|
| 14 | - JavaScript Passes >90% of main tests (no ext/); missing P6 rules, some |
|---|
| 15 | builtins, state (needs PIL1 fixes), full OO (needs PIL2) |
|---|
| 16 | - Perl 5 Broken; once passed <50% of main tests (no ext/); inactive; |
|---|
| 17 | will probably be rewritten around PIL2. [2006-01-30] |
|---|
| 18 | - PIR Restarted 2005-10-04 |
|---|
| 19 | |
|---|
| 20 | |
|---|
| 21 | = PIL Transition |
|---|
| 22 | [correct as of: 2005-10-05] |
|---|
| 23 | |
|---|
| 24 | * autrijus redesigned PIL format (now 'PIL2') in late 2005-07 through 2005-08, |
|---|
| 25 | but has decided on further improvements after ICFP (beginning of 2005-10) |
|---|
| 26 | * PIL2 infrastructure code restarted as of 2005-10-03 |
|---|
| 27 | * PIL2 includes full typing, and is required for full OO, including packages, |
|---|
| 28 | class declarations, and full use of metamodel |
|---|
| 29 | * Old PIL used by JavaScript and Perl 5 backends, as PIL2 not yet ready |
|---|
| 30 | |
|---|
| 31 | |
|---|
| 32 | = Perl 6 Object Metamodel |
|---|
| 33 | [correct as of: 2005-10-05] |
|---|
| 34 | |
|---|
| 35 | * stevan working on MetalModel 2.0, based on MiniMetaModel, as of 2005-08-22 |
|---|
| 36 | * MM2 designed to be cleaner, and as minimalist as possible internally, |
|---|
| 37 | without significant changes to user-facing MM1 API |
|---|
| 38 | * Completion level varies by backend -- each requires its own variant of |
|---|
| 39 | the metamodel implemented in the backend language: |
|---|
| 40 | -- Haskell MM2 development and integration to begin after 6.2.10 release |
|---|
| 41 | -- Java MM1 in early stages and stalled |
|---|
| 42 | -- JavaScript MM1 integrated into JS backend, but not bootstrapped like |
|---|
| 43 | Perl 5 version; needs PIL2 for full OO |
|---|
| 44 | -- Perl 5 MM2 fully integrated; also needs PIL2 for full OO |
|---|
| 45 | -- Perl 6 MM2 rewrite started as of 2005-10-02 |
|---|
| 46 | |
|---|
| 47 | |
|---|
| 48 | = Embedding |
|---|
| 49 | |
|---|
| 50 | [correct as of: 2005-10-05] |
|---|
| 51 | - Parrot Works with Parrot 0.3.0 |
|---|
| 52 | [correct as of: 2005-08-10] |
|---|
| 53 | - Perl 5 Works, except that it leaks heavily (refcounts inc but never dec), |
|---|
| 54 | and exports don't happen -- workaround for latter is to use |
|---|
| 55 | our &method1 := Perl5::Module::Name.can('method1') |
|---|
| 56 | or |
|---|
| 57 | our &method2 := eval('\&Perl5::Module::Name::method', :lang<perl5>) |
|---|
| 58 | |
|---|
| 59 | |
|---|
| 60 | = Laziness |
|---|
| 61 | [correct as of: 2005-10-05] |
|---|
| 62 | |
|---|
| 63 | * Laziness doesn't currently work for some (most?) backends |
|---|
| 64 | * Some lazy functions do exist (e.g. gather/take), but are actually non-lazy |
|---|
| 65 | * Perl 5 backend (PIL-Run) supports laziness very well |
|---|
| 66 | |
|---|
| 67 | |
|---|
| 68 | = Rules |
|---|
| 69 | |
|---|
| 70 | Multiple rules implementations exist. |
|---|
| 71 | |
|---|
| 72 | - On Perl 5: |
|---|
| 73 | [correct as of 2007-01-28] |
|---|
| 74 | Pugs::Compiler::Rule |
|---|
| 75 | http://search.cpan.org/search?query=Pugs%3A%3ACompiler%3A%3ARule&mode=all |
|---|
| 76 | |
|---|
| 77 | - On Parrot: |
|---|
| 78 | [correct as of 2007-01-28] |
|---|
| 79 | PGE |
|---|
| 80 | http://svn.perl.org/parrot/trunk/compilers/pge/STATUS |
|---|
| 81 | http://svn.perl.org/parrot/trunk/compilers/pge/README.pod |
|---|
| 82 | |
|---|
| 83 | - Perl 5 regexen |
|---|
| 84 | [correct as of: 2006-01-30] |
|---|
| 85 | ** Work well in default backend, handled by PCRE |
|---|
| 86 | ** Mostly working in JS |
|---|
| 87 | ** Specified via perl5 modifier, as in rx:perl5/\Afoo/ |
|---|
| 88 | |
|---|
| 89 | - Perl 6 rules |
|---|
| 90 | [correct as of: 2006-01-30] |
|---|
| 91 | ** Current handled by parrot's PGE, under development; much works, but: |
|---|
| 92 | *** Rule names are global |
|---|
| 93 | *** No support for aliases |
|---|
| 94 | *** No support for embedded closures |
|---|
| 95 | *** Rules do not always behave correctly |
|---|
| 96 | ** Other implementations have been started, but are currently inactive. |
|---|
| 97 | |
|---|
| 98 | = Test Suite |
|---|
| 99 | [correct as of: 2006-08-20] |
|---|
| 100 | |
|---|
| 101 | * Currently about 15000 tests, including module tests |
|---|
| 102 | * This is known to be only a small percentage of the total needed to cover |
|---|
| 103 | the currently available Perl 6 design |
|---|
| 104 | * Automated posting to smoke server (http://smoke.pugscode.org/) now possible |
|---|
| 105 | ** Many test reports seem to be very old or out of date. |
|---|