Front page | perl.perl5.porters |
Postings from April 2007
Perl 7.110.58 release.
April 2, 2007 03:10
Perl 7.110.58 release.
Message ID: E1HYAaV-0005i4-Sj@laurel.muq.org
As everyone knows, after completing Perl5 -- the Larry
Wall Rewrite of Perl -- Larry launched Perl6, the Perl
It can now be revealed that when he began Perl6, Larry
also started a top-secret Perl7 project: the Dead
Computer Scientists Rewrite!
The Pentagon, initially reluctant, grudgingly agreed to
provide a disused underground facility near Groom Lake
plus a few billion a year in funding once we explained
to them that a psychic software development gap of
terrifying dimensions was opening up between the US and
the Axis of Evil, imperilling national security and our
way of life. Once we cleaned out some odd biological
specimens and other assorted bric-a-brac, the
underground complex proved quite comfy. (We never were
able to convince the staff to switch from jumpsuits to
In the years since then, hundreds of top psychics,
specially renditioned from around the world, have been
laboring around the clock, channelling the spirits of
departed computer scientists in a massive effort to
develop the ultimate Perl implementation, an effort
officially dubbed Project MUQ -- "Mediums Under
We had the immense good fortune of obtaining at the
outset the services of the shades of Alonzo Church to
head the design team, and of Alan Turing to head the
implementation team. With them on board, lesser shades
flocked to our banners, and we soon filled out the rest
of the roster. Within weeks, code was pouring from the
Ouija boards at aggregate data rates often approaching
110 baud, shattering all previous records for sustained
astral plane data download. And such code -- code to
make women swoon and strong men weep!
Flash forward to today. The bad news is that changing
geopolitical conditions and budgeting priorities have
led the Pentagon to de-fund our project in favor of
buying Humvee armor. The good news is that the end of
DoD funding releases us from our secrecy agreements,
allowing us to make the fruits of our efforts available
to the open source world at large. Consequently, it is
now my great honor and privilege to announce the
availability for download of Perl 7.110.58 -- the first
public release of Perl7!
Perl-- not just for scripting any more!
With this release, Perl becomes not only the best
scripting language available, but also the best
application programming language. Incremental
compilation technology transparently compiles every
Perl7 script directly into memory as optimized native
code, resulting in a system that combines the
convenience of scripting languages with the power of
compiled languages. (Odd how Java manages to achieve
just the opposite...)
67 times faster than Perl5 -- 50% faster than C!
Benchmarks peg Perl7 execution speed at more than 67
times faster than than Perl -- and fully 50% faster
than C. (Feel free to re-run the benchmarks yourself
-- full code and directions are in the examples
subdirectory in the distribution tarball.) The
performance gap would be wider yet, were it not that
the gcc crew has done a magnificent job of fine-tuning
an antique design, while the Perl7 back-end, despite
including a wealth of optimizations based on
control-flow, data-flow and static-single-assignment
analyses, has as yet has essentially no serious tuning
How can Perl7 beat C by such a margin?
C was a brilliant engineering feat in its day -- in
1972, running in 64KB of ram on a PDP-11, mostly moving
integers around in static buffers.
But this isn't 1972, nobody is running on PDP-11s, and
Perl programs don't spend their time shuffling integers
between static buffers. In general, their workload is
dominated by dynamic allocation of small strings -- a
task for which the C design model is lamentably
ill-suited. In this setting, a modern multi-generation
copying garbage collector is not only faster than
malloc/free -- it is in general faster than stack
allocation. Why? Because every stack allocate/free
cycle inherently requires both a pointer advance to
allocate, and a pointer retreat to deallocate. A
copying garbage collector never touches garbage, and
thus effectively does only half of the work that the
stack allocator does -- the allocate half of the cycle.
All of this has been known since the 1970s, but it is
certainly nice to see it finally yielding significant
returns in practical operation!
(As a point of technical interest, the Perl7
implementation doesn't use stacks at all, outside of
some low-level signal handling logic. Running
stackless yields a call/cc speed nearly 50X faster than
the next-best implementation. Can you say "pre-adapted
to the multi-core era"? I knew you could!)
Beyond raw speed, Perl7 ofers a big basket of goodies
ranging from serious programming-in-the-large support
to a full plate of state-of-the-art support tools. Too
much to even summarize concisely, but here's a quick
o On-the-fly optimizing compiler for scripting convenience with native-code speed? Of course.
o State of the art multi-generation garbage collection? Naturally.
o Wrapperless direct calls to stock C libraries? Certainly.
o First-class closures? Mais oui.
o Package macros? Yup yup.
o Heap save and restore for effortless daemon checkpointing? Naturellement.
o Multiprogramming? Out of the box.
o Multiprocessing? On the way.
o Higher-order functors? Probably, if you'll explain that in English.
o "And much, much more"? Inevitably -- this *is* Perl, after all!
So, if you have the Laziness, Hubris and Impatience to skip
directly to Perl7, then "Don't delay -- click today!":
Perl7 -- deadly fun!
Perl 7.110.58 release.