Skip to content

Commit

Permalink
* hw2005.txt - Allison's reviews.
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.pugscode.org/pugs@4456 c213334d-75ef-0310-aa23-eaa082d1ae64
  • Loading branch information
autrijus committed Jun 8, 2005
1 parent 79f1484 commit 11b7f10
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions docs/talks/hw2005.txt
Expand Up @@ -9,8 +9,8 @@
Perl is a general-purpose language, known for its vast number of freely
available extension libraries. The Perl 6 project was started in 2000
to create a more robust runtime environment and improve the language's
support for multi-paradigmic programming. However, attempts at producing a
concrete implementation failed to take off in the first 4 years.
support for multi-paradigmic programming. However, the attempt at producing a
concrete implementation remains a work in progress after 4 years of development.

This paper presents Pugs, a working implementation of Perl 6, written in
Haskell. We review the challenges posed by Perl 6's unusual execution model,
Expand Down Expand Up @@ -228,7 +228,7 @@ unsuitable as a basis for implementing the parser for Perl 6.

3.2. P6C

Started in 2002, P6C was the first concrete implementation of Perl 6. It is
Started in 2002, P6C was the first concrete prototype of Perl 6. It is
written in Perl 5 and distributed as one of the language prototypes in the
Parrot codebase. Instead of Perl6::Rules, P6C uses the Parse::RecDescent
module to construct a recursive-descent parser for Perl 6.
Expand All @@ -246,15 +246,15 @@ making it prohibitively difficult to reason about the execution. Because P6C
cannot check the resulting assembly code for correctness, subtle bugs often
go unnoticed for a long time.

P6C's development continued for two years, eventually stalled in 2004. As of
this writing, it can handle a few builtins, simple expressions, basic rules
matching and user-defined functions. It provides no support for BEGIN blocks,
"eval", modules and objects; code generated by P6C cannot interoperate with
other languages targetting Parrot.
P6C's development continued till 2004, at which time work on it was
discontinued in favor of PGE. In its final state, it could handle a few
builtins, simple expressions, basic rules matching and user-defined functions.
It provides no support for BEGIN blocks, "eval", modules and objects; code
generated by P6C cannot interoperate with other languages targetting Parrot.

3.3. PGE and PAST

In February 2005, Perl 6 developers announced a revised bootstrapping plan,
In July 2004, Perl 6 developers announced a revised bootstrapping plan,
based on two new projects:

* Parrot Grammar Engine (PGE), a compiler that takes Perl 6 Rules and
Expand All @@ -264,8 +264,9 @@ based on two new projects:
of PIR programs as Parrot objects.

The developers intend to define Perl 6's grammar as a set of Rules that produce
Parrot AST objects. Once PGE is capable of processing those rules, one can
reimplement PGE in Perl 6 to finish the bootstrapping process.
Parrot AST objects. Once PGE is capable of processing those rules, PGE/PAST
will effectively become a Perl 6 to Parrot compiler; from there we can make
their APIs available as Perl 6 modules, completing the bootstrapping process.

As of this writing, both PGE and PAST are under active development. A subset
of Python's AST has been ported to Parrot, along with a yacc/lex-based parser
Expand Down

0 comments on commit 11b7f10

Please sign in to comment.