(Originally posted as a reply to chromatic++'s How to Implement Perl 6 in 10 Years on PerlMonks.)
(Also thanks to Limbic_Region++ for forwarding the original thread link to me. :-))
Hi. This is 唐鳳, a.k.a. Audrey Tang.
For the record, I think what chromatic wrote above contains a fair
and accurate assessment to Pugs.hs
However, please note that it elided over our collective shift of
focus to the Perl 5 runtime during 2006 on #perl6, which resulted in the
first CPAN releases of Moose, Module::Compile, v6-alpha (now evolved
into Perlito), Pugs::Compiler::Rule, etc.
So while Pugs.hs was indeed suddenly unmaintained due to my '07
hepatitis outbreak, already by '06 we have redirected our main efforts
into coding Perl6-on-CPAN.
Concretely speaking, that means we took various Pugs.hs structures
(Signatures, MetaObject logic, Grammar parser, etc) and coded
counterparts for the Perl5 runtime.
I'm very happy with what turned out - indeed MooseX::Declare and Perl
5.12.0 went way far beyond our original vision, in a very good way.
As for Pugs.hs, the 6.2.x series has already fulfilled its goals.
In order to code the 6.28.x series (compile-time gradual typing)
without unreasonable pain, it required several significant changes in
the host language (Haskell).
Some of them were codified into Haskell 2010 (then known as
haskell-prime), such as PatternGuards; some were implemented in GHC,
such as Type Families and Quasi-Quoting.
In addition to the language changes, a better theoretical
understanding of GADTs (which was deep black magic when Pugs.hs 6.2.x
first used them), of OO+Functional type inference (Martin Odersky et
al), of sound STM semantics and gradual typing (Jeremy Siek et al), was
also essential in coding the type system of Perl 6 as originally
Also notable was basic groundworks for 6.28.x such as Parsec
Transformers, Dynamic-linkable binaries and Data Parallelism (to name a
few) has gradually materialized as of early 2010, so folks who'd like to
tackle type systems now have a significantly easier
compilation-environment support than even a year before.
However, speaking for myself, though Haskell became sufficiently
attractive to implement compile-time type analysis for Perl 6, the
success of Moose and Pluggable Keywords in Perl 5.12.0 has convinced me
that we can also fruitfully implement such analysis directly in Perl 6,
or in Perl6-flavoured CPAN modules, which is a much more straightforward
way to amass a developer ecosystem than coding it in Haskell.
As lambdamoose demonstrated, real programmers can write Perl 6 and/or
Haskell in any language, particularly if that language is as
polymorphically existentially recursive as Perl 5. :-)