The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
This document contains terse status information on major portions of Pugs.
Because development is rapid and anarchistic, details are omitted.  If you
would like current details, please ask on irc.freenode.net #perl6.


= Backends
[correct as of: 2005-10-24]

- Haskell-Old  Working (delta general pugs bugs)
- Haskell-PIL  Restarted 2005-10-03
- Java         Nonexistant; partial metamodel implementation nonetheless
- JavaScript   Passes >90% of main tests (no ext/); missing P6 rules, some
               builtins, state (needs PIL1 fixes), full OO (needs PIL2)
- Perl 5       Broken; once passed <50% of main tests (no ext/); inactive;
               will probably be rewritten around PIL2. [2006-01-30]
- PIR          Restarted 2005-10-04


= PIL Transition
[correct as of: 2005-10-05]

* autrijus redesigned PIL format (now 'PIL2') in late 2005-07 through 2005-08,
  but has decided on further improvements after ICFP (beginning of 2005-10)
* PIL2 infrastructure code restarted as of 2005-10-03
* PIL2 includes full typing, and is required for full OO, including packages,
  class declarations, and full use of metamodel
* Old PIL used by JavaScript and Perl 5 backends, as PIL2 not yet ready


= Perl 6 Object Metamodel
[correct as of: 2005-10-05]

* stevan working on MetalModel 2.0, based on MiniMetaModel, as of 2005-08-22
* MM2 designed to be cleaner, and as minimalist as possible internally,
  without significant changes to user-facing MM1 API
* Completion level varies by backend -- each requires its own variant of
  the metamodel implemented in the backend language:
-- Haskell     MM2 development and integration to begin after 6.2.10 release
-- Java        MM1 in early stages and stalled
-- JavaScript  MM1 integrated into JS backend, but not bootstrapped like
               Perl 5 version; needs PIL2 for full OO
-- Perl 5      MM2 fully integrated; also needs PIL2 for full OO
-- Perl 6      MM2 rewrite started as of 2005-10-02


= Embedding

[correct as of: 2005-10-05]
- Parrot   Works with Parrot 0.3.0
[correct as of: 2005-08-10]
- Perl 5   Works, except that it leaks heavily (refcounts inc but never dec),
           and exports don't happen -- workaround for latter is to use
           our &method1 := Perl5::Module::Name.can('method1')
               or
           our &method2 := eval('\&Perl5::Module::Name::method', :lang<perl5>)


= Laziness
[correct as of: 2005-10-05]

* Laziness doesn't currently work for some (most?) backends
* Some lazy functions do exist (e.g. gather/take), but are actually non-lazy
* Perl 5 backend (PIL-Run) supports laziness very well


= Rules

- Perl 5 regexen
[correct as of: 2006-01-30]
** Work well in default backend, handled by PCRE
** Mostly working in JS
** Specified via perl5 modifier, as in rx:perl5/\Afoo/

- Perl 6 rules
[correct as of: 2006-01-30]
** Current handled by parrot's PGE, under development; much works, but:
*** Rule names are global
*** No support for aliases
*** No support for embedded closures
*** Rules do not always behave correctly
** Other implementations have been started, but are currently inactive.

= Test Suite
[correct as of: 2006-01-30]

* Currently about 11000 tests, including module tests
* This is known to be only a small percentage of the total needed to cover
  the currently available Perl 6 design
* Automated posting to smoke server (http://smoke.pugscode.org/) now possible