.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;)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.
my $a[3]; print $a[3]; => compile-time error: array out of bounds
my int $i[3]; print $a[2] => 0
my num $n[3]; print $n[2] => 0.0
my str $s[3]; print $a[2] => ""
{
no magic;
use Config;
print $Config{’ccflags’};
}
=> compile-time error: Invalid use of tie with no magic
use
{
no magic;
use Config;
print $Config::Config{’ccflags’};
}
instead.
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.


use p2;)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.