パール2 で ポーション

p2 on potion

         .ooo
          'OOOo
      ~ p ooOOOo 2 ~
          .OOO
           oO      %% a fast perl5
             Oo
            'O
             `
            (o)
        ___/ /          
       /`    \ 
      /v^  `  ,
     (...v/v^/
      \../::/
       \/::/ 
p2 is a she. She will be a perl5 frontend and possible perl6/nqp backend, based on why the luck stiff’s potion compiler and vm technology and a new extensible parser. Optionally perl6 might be parsed natively. (use v6;)
See the potion README why potion is exciting.
parrot examples/benchmarks/fib.pir 28  1.746s
perl   examples/benchmarks/fib.pl  28  0.439s
potion examples/benchmarks/fib.pn  28  0.013s

parrot examples/benchmarks/fib.pir 40  3m36.447s
perl   examples/benchmarks/fib.pl  40  2m19.752s
potion examples/benchmarks/fib.pn  40  0m3.512s

re benchmark: java/jvm is somewhere between perl and potion.
It has slow startup, fast calls and limited OO and dynamic type support.

p2's exciting points for perl folks are:

See p2-extensions for an overview on the planned perl5 language extensions, activated via the use p2; pragma.

See glossary for an overview on the potion/lua derived terminology.

See design-decisions why the code looks like asis, and what we want.


However, some warnings:

development

documentation

thankyous

why the lucky stiff left the ruby community. potion was his last public project. It’s a work of art and mastership. I could not think of anything better. I think it is better than go, if potion would have had dlcall, autothreads and channels, arbitrary precision numbers and exception handling.

Rob Pike for go, and the parrot community for parrot.

cPanel for letting me do what I consider important. Not just 10% of my time as with Google.

Larry Wall for perl5. We miss his leadership and technical excellence. Without him nothing got done, and *if* something was done it was wrong. Besides defined-or, which left Tom Christiansen behind.

why the lucky stiff thanks:

I am gravely indebted to Basile Starynkevitch, who fielded my questions about his garbage collector. I favor French hackers to an extreme (Xavier Leroy, Nicolas Cannasse, Guy Decoux, Mathieu Bochard to name only a portion of those I admire) and am very glad to represent their influence in Potion’s garbage collector.

Matz, for answering my questions about conservative GC and for encouraging me so much. Potion’s stack scanning code and some of the object model come from Ruby.

Steve Dekorte for the Io language, libgarbagecollector and libcoroutine — I referred frequently to all of them in sorting out what I wanted.

Of course, Mauricio Fernandez for his inspiring programming journal housed at eigenclass.org/R2/ and for works derived throughout the course of it — extprot most of all. Many of my thoughts about language internals (object repr, GC, etc.) are informed by him.

Ian Piumarta for peg/leg and id-objmodel. I use a re-entrant custom version of peg, but the original library is sheer minimalist parsing amazement.

Final appreciations to Jonathan Wright and William Morgan who pitched in, back in the wee hours of Potion’s history. Thanks.

license

See COPYING for legal information.
potion is an MIT license, which lets you do anything you want with this.
perl5 code is ARTISTIC and GPL dual licensed,
p2, parrot and perl6 code is ARTISTIC 2 licensed.