Lambda the Ultimate

inactiveTopic Parrot In Detail
started 7/28/2002; 2:49:06 AM - last post 7/28/2002; 1:22:24 PM
jon fernquest - Parrot In Detail  blueArrow
7/28/2002; 2:49:06 AM (reads: 2354, responses: 2)
Parrot In Detail

Just to counter-balance the .NET coverage, here's an overview of Parrot, a highly reconfigurable multi-language virtual machine (Perl, Scheme, Python, BASIC, Jako, Cola). The VM provides a "single point of abstraction" for async I/O, threads, events, and objects. Uses "arena" Allocation of core structures (see David Hansen's Advanced C book Main, Arena.c) and three separate threading models. A register-based virtual machine, unlike the stack-based JVM and .NET CIL. (See this recently published VM book.) Dynamic opcodes allow the VM to run code from other virtual machines such as "JVM, .NET, Z machine, Python, Perl 5, Ruby." The VM has a regex engine that "can act as a parser as well as just a regex engine." Parrot has a tracing, compacting garbage collector, not the reference counting that scripting languages typically employ.

There is a tutorial at the main site and an O'Reilly book available. A recent questions answered session by a principal developer and an interesting thread. A Scheme port is included in the distribution but the presentation does not mention any of the features to support functional programming that the ILX extension to the .NET runtime adds like closures, thunks, and parametric polymorphism. In short, it's hard to get up to date information on the Parrot Virtual Machine and the link to the distribution at CPAN from the main site is broken so it's even a little hard to get your hands on it.


Posted to cross-language-runtimes by jon fernquest on 7/28/02; 3:01:32 AM

Ehud Lamm - Re: Parrot In Detail  blueArrow
7/28/2002; 10:14:57 AM (reads: 1191, responses: 0)
I found the ILX BABEL paper to be quite interesting.

Jeffrey Shell - Re: Parrot In Detail  blueArrow
7/28/2002; 1:22:24 PM (reads: 1202, responses: 0)
The O'Reilly Book linked to is actually part of the April Fools prank that preceeded and possibly inspired the real Parrot.

There is some experimentation going on in the nondist tree of the Python source that might be of interest to readers.