develooper 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:

    As everyone knows, after completing Perl5 -- the Larry
    Wall Rewrite of Perl -- Larry launched Perl6, the Perl
    Community Rewrite.

    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
    bluejeans, alas.)

    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 Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About