Parrot 0.9.0 "From Outer Space" Released!


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.


Colonel Tom Edwards: You speak of Solarbanite. But just what is 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!