| 17 | | Pugs is an interpreter for Perl6. |
| | 21 | Started at 2005-02-01, Pugs is an attempt at writing a Perl6 interpreter in |
| | 22 | Haskell. Currently it is in its very early stages. |
| | 23 | |
| | 24 | Although Pugs does not yet directly relate to PGE or Parrot, the hope is that |
| | 25 | it can flesh out corner cases in the Synopses during implementation, as well |
| | 26 | as contributing more test cases to the main Perl6 project. |
| | 27 | |
| | 28 | =head2 Featherweight Perl6 |
| | 29 | |
| | 30 | Featherweight Perl6 (FP6) is a simplified, side-effect-free subset of the |
| | 31 | Perl6 language, inspired by I<Featherweight Java>. It is the first-step |
| | 32 | target language of Pugs. |
| | 33 | |
| | 34 | Notable features in Perl6 that are I<not> in FP6: |
| | 35 | |
| | 36 | =over 4 |
| | 37 | |
| | 38 | =item * Assignments and mutable variables. |
| | 39 | |
| | 40 | =item * Grammar, Rules and Macros. |
| | 41 | |
| | 42 | =item * Unboxed types. |
| | 43 | |
| | 44 | =item * Run-time applications of "but" and "does". |
| | 45 | |
| | 46 | =item * I/O primitives. |
| | 47 | |
| | 48 | =item * Perl5 Compatibility Mode. |
| | 49 | |
| | 50 | =item * Non-ascii symbols: E<171>, E<187> and E<165>. |
| | 51 | |
| | 52 | =back |
| | 53 | |
| | 54 | The only ways to do I/O in FP6 are: |
| | 55 | |
| | 56 | =over 4 |
| | 57 | |
| | 58 | =item * C<@*ARGS>, C<$*PID>, C<$*PROGRAM_NAME>, etc.. |
| | 59 | |
| | 60 | =item * C<< <> >> (lazily-evaluated lines of input) |
| | 61 | |
| | 62 | =item * The toplevel evaluation result is printed under flattened list context with items stringified. |
| | 63 | |
| | 64 | =back |
| | 65 | |
| | 66 | =head2 Release Plans |
| | 67 | |
| | 68 | The major/minor version numbers of Pugs converges to 2*pi; each significant |
| | 69 | digit in the minor version represents a milestone. The third digit is |
| | 70 | incremented for each release. |
| | 71 | |
| | 72 | The current milestones are: |
| | 73 | |
| | 74 | =over 4 |
| | 75 | |
| | 76 | =item 6.0: Initial release. |
| | 77 | |
| | 78 | =item 6.2: Implement FP6, without user-defined subtypes. |
| | 79 | |
| | 80 | =item 6.28: Full FP6, with classes and traits. |
| | 81 | |
| | 82 | =item 6.283: Assignment and I/O primitives. |
| | 83 | |
| | 84 | =item 6.2831: Role composition and other runtime features. |
| | 85 | |
| | 86 | =item 6.28318: Rules and Grammars. |
| | 87 | |
| | 88 | =item 6.283185: Macros; full Perl6 bootstrapping. |
| | 89 | |
| | 90 | =back |