Perl 6
Parrot: Revision 23

Parrot is the VM (a software virtual machine) that was originally designed for only Perl 6. It's design and evolution is driven by 3

Core Ideas

  • Optimized for dynamic languages like Perl, Python and Ruby. Dynamic languages know during runtime much more about a program. Let's take advantage of that.
  • Interoperability: any part of any program can written in any implemented language. Your program can use the libraries of all languages.
  • Modularity: all parts can be changed independently and there are on several levels API to plug in optimizer.


  • its register based unlike other major VM (JavaVM, .Net) that are stack based. That can make switches between routines, threads and programs much faster.
    • some registers like int (integer) and num (floating point) can be maped to hardware CPU register
    • string and PMC (Parrot magic cookie or polymorphic container) allow to do more higlevel stuff with registers
  • it has several native languages: PASM (Parrot Assembler) and PIR (Parrot Intermediate Representation) which will be of course compiled to Parrot bytcode. In some cases distribution of a program as one bytecode file will be much easier and also attractive for companies, which don't like to reveal there Perl source code.


To make an implementation of a HLL (high level language) for Parrot very easy, the Parrot design team developed the PCT (Parrot Compiler Toolkit) including NQP, a subset of Perl 6 in which not only people, who are more used to HLL, can code far more productive, than in PIR.


PCT is used by many implmentations, most important of them is naturally Rakudo, the Perl 6 compiler. But there are also others like Python, Ruby, PHP, over 30 in total. For more detailed info see Parrot Compiler.

Also the Perl 6 compiler Pugs, that is written in Haskell, can emit back end cod for several targets, including Parrot.

Blizkost is not a compiler but the original Perl 5.10 interpreter, incorporated into Parrot.


Because Parrot's user base extends well beyond the Perl community that created it, the Parrot Foundation was founded in late 2008. This simplifies some organization and funding issues for Perl Foundation folks, while likewise making life easier for Parrot Foundation folks. Here are the new homes for these Parrot-related pages:


The idea came from Simon Cozens, former editor of In 2001 he installed there a carefully prepared April Fools' joke about Larry Wall and Guido van Rossum announcing to join Perl and Python and calling the new language Parrot. And as life follows art Parrot will join Perl and Parrot in a way both communities can life with.

Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.