Parrot 0.9.0 "From Outer Space" Released!

Greetings, my friend. We are all interested in the future, for that is where you and I are going to spend the rest of our lives.

Remember, my friend, future events such as these will affect you in the future.

You are interested in the unknown... the mysterious. The unexplainable. That is why you are here. My friend, we cannot keep this a secret any longer. Let us punish the guilty. Let us reward the innocent. My friend, can your heart stand the shocking facts of ....

— "Plan 9 From Outer Space"

On behalf of the Parrot team, I'm proud to announce Parrot 0.9.0 "From Outer Space." Parrot is a virtual machine aimed at running all dynamic languages.

Parrot 0.9.0 is available via CPAN (soon), or follow the download instructions. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion on our source code repository to get the latest and best Parrot code.

Eros: First was your firecracker, a harmless explosive. Then your hand grenade: you began to kill your own people, a few at a time. Then the bomb. Then a larger bomb: many people are killed at one time. Then your scientists stumbled upon the atom bomb, split the atom. Then the hydrogen bomb, where you actually explode the air itself. Now you can arrange the total destruction of the entire universe served by our sun: The only explosion left is the Solarbanite.

Colonel Tom Edwards: You speak of Solarbanite. But just what is it?

Eros: Take a can of your gasoline. Say this can of gasoline is the sun. Now, you spread a thin line of it to a ball, representing the earth. Now, the gasoline represents the sunlight, the sun particles. Here we saturate the ball with the gasoline, the sunlight. Then we put a flame to the ball. The flame will speedily travel around the earth, back along the line of gasoline to the can, or the sun itself. It will explode this source and spread to every place that gasoline, our sunlight, touches. Explode the sunlight here, gentlemen, you explode the universe. Explode the sunlight here and a chain reaction will occur direct to the sun itself and to all the planets that sunlight touches, to every planet in the universe. This is why you must be stopped. This is why any means must be used to stop you. In a friendly manner or as (it seems) you want it.

Lieutenant John Harper: He's mad.

Parrot 0.9.0 News:

- Implementation
  + Implemented bytecode annotations
  + Role composition is now aware of multi-subs
  + Unbuffered IO PMCs now autopromote when buffering is necessary
  + Installation parrot binary and libparrot shared library now supported
  + Class registry now respects HLLs
- Compilers
  + IMCC
    - removed keyed string indexing, e.g. $S0[1].
    - removed slice syntax, e.g. $P0[1..2]
    - removed .namespace /.endnamespace  pair
    - fixed 'new $P0, [classname]' syntax
  + PIRC
    - refactoring of various data structures
    - various bug fixes and updates
    - complete bytecode generation
    - add '-x' commandline option to run compiled code
  + PCT
    - add 'hll' and 'subid' attributes to PAST::Block
    - refactor loop handling code to handle last/redo/next
    - add :pasttype('stmts') and :pasttype('null')
    - improve "scope not found" error message
    - allow PAST::Val nodes to contain block references
  + PGE
    - add "skipkey" option to PGE::OPTable
    - allow spaces before modifiers in regexes
    - add '(' ~ ')' goal matching syntax
    - skip creating a class/grammar if it already exists
- Languages
  + Rakudo
    - improved error mesages in multi dispatch
    - implemented clone method for all objects
    - implemented MAIN sub
    - Unicode versions of infix hyper operators
    - refactored IO.readline
    - basic support for Inf and NaN
    - list and array slices with whatever star
    - hash slices
    - implemented last and redo
    - pointy blocks as terms
    - refactored variable and parameter passing
    - improved assignment semantics
    - improved parsing of type names and subs
    - mostly implemented parametric roles
    - separate types for blocks, subs and methods
    - basic support for submethods
    - implemented Junction autothreading of user code (not builtins yet)
    - eval supports :lang attribute
    - proto makes other subs in scope multis, including in role composition
  + Befunge
    - back to working state
    - ported to pir
  + Pipp
    - add support for predefined constant __CLASS__ and __METHOD__
    - add initial support for static members
    - add support for namespaced constants
    - constants are now handled as package vars
    - variables are now lexical variables
    - add support for superglobals in functions
    - Call the class __constructor when there is one
    - added incomplete support for closures
    - removed support for the alternative parsing strategies
    - added support for 'elsif'
    - added support for 'do-while'
  + HQ9+
    - left the nest and is now at
  + Eclectus
    - left the nest and is now at
  + m4
    - left the nest and is now at
  + Lua:
    - add a minimalist user back trace
  + PIR
    - "does" and "morph" VTABLE interfaces are now overridable from PIR
- Miscellaneous
  + Infrastructure
    - 'make smoke' now generates Smolder reports sent to
  + Improved const and null correctness for C function parameters
  + Sped up STRING manipulation (append, chop), improving PGE about 30%
  + BOOK
    - Added sections about Classes, OO programming, and methods.
    - Added information about Annotations, Exceptions, and Handlers
  + STM
    - Removed non-functional STM subsystem

Thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next release is 17 February 2009.

Colonel Tom Edwards: Why, a particle of sunlight can't even be seen or measured.

Eros: Can you see or measure an atom? Yet you can explode one. A ray of sunlight is made up of many atoms!

Jeff Trent: So what if we do develop this Solarbanite bomb? We'd be even a stronger nation than now.

Eros: [with disgust] Stronger. You see? You see? Your stupid minds! Stupid! Stupid!