Parrot is a virtual machine designed to efficiently compile and execute bytecode for dynamic languages. Parrot currently hosts a variety of language implementations in various stages of completion, including Tcl, Javascript, Ruby, Lua, Scheme, PHP, Python, Perl 6, APL, and a .NET bytecode translator. Parrot is not about parrots, though we are rather fond of them for obvious reasons.

Inactive Parrot

The Parrot VM is no longer being actively developed.

Last commit: 2017-10-02

The role of Parrot as VM for Perl 6 (now "Raku") has been filled by MoarVM, supporting the Rakudo compiler.

Parrot, as potential VM for other dynamic languages, never supplanted the existing VMs of those languages.


New supported release 8.1.0 "Andean Parakeet"

On behalf of the Parrot team, I'm proud to announce Parrot 8.1.0, also known as "Andean Parakeet". Parrot is a virtual machine aimed at running all dynamic languages.

Parrot 8.1.0 News:

    - Core
        + Annotate needed -Wcast-align fixes (for early armv5 systems)
    - Documentation
        + Fixed typo in move_buffer_callback doc
        + Add missing hyperref package for latex
    - Tests
        + Restore make configure_tests, remove outdated t/steps/auto/labs-01.t

New release 7.11.0 "Amazonian parrotlet"

On behalf of the Parrot team, I'm proud to announce Parrot 7.11.0, also known as "Amazonian parrotlet". Parrot is a virtual machine aimed at running all dynamic languages.

Parrot 7.11.0 News:

    - Build
        + Improve darwin and cygwin build, seperate installable libparrot.
          GH #1212, 1096
        + Honor --disable-rpath on darwin, skip -install_name then
        + Update default cygwin compiler and linker to gcc with 1.7
        + Add darwin and windows smokers (travis + appveyor), prev. linux only
        + use a smaller default target: core (most parrot_utils, not all)
          make all builds now all, including docs and installables

Parrot 7.10.0 "Wyrd Parrot" released!

    And the band struck up.

    Hwel peered around a pillar and signalled to Wimsloe and Brattsley,
    who hobbled out into the glare of the torches.

    OLD MAN (an Elder): "What hath befell the land?"

    OLD WOMAN (a Crone): " 'Tis a terror—"

    The dwarf watched them for a few seconds from the wings,
    his lips moving soundlessly. Then he scuttled back to the guardroom
    where the rest of the cast were still in the last hasty stages of

    He uttered the stage manager's traditional scream of rage.

    "C'mon," he ordered. "Soldiers of the king, at the double! And the
    witches – where are the blasted witches?"

    Three junior apprentices presented themselves.

    "I've lost my wart!"

    "The cauldron's all full of yuk!"

    "There's something living in this wig!"

    "Calm down, calm down," screamed Hwel. "It'll all be all right
    on the night!"

    "This is the night, Hwel!"

On behalf of the Parrot team, I'm proud to announce Parrot 7.10.0, also known as "Wyrd Parrot". Parrot is a virtual machine aimed at running all dynamic languages.

New supported release 7.9.0 "Sangihe hanging parrot"

"The Sangihe hanging parrot (Loriculus catamene) is a small (length: 12-13.5 cm) parrot endemic to the small island of Sangihe, north of Sulawesi, Indonesia.

This is an arboreal parrot. It is predominantly green, with a red throat patch, rump, elongated uppertail-coverts and tip of tail.

In 2009 this parrot was downlisted from Endangered to Near Threatened because although it has a very small range within which there has been extensive forest loss and fragmentation, it apparently remains common in degraded and cultivated habitats and there is no evidence of a continuing decline. The current population is estimated at between 10000 and 46000 individuals."


On behalf of the Parrot team, I'm proud to announce Parrot 7.9.0, also known as "Sangihe hanging parrot".
Parrot is a virtual machine aimed at running all dynamic languages.

Parrot 7.9.0 News:

    - Core
        + StringBuilder.clone and ResizablePMCArray write barrier optimizations.
          1.14% faster, GH #1123
        + More StringBuilder optimizations with substr, set_pmc, push_pmc,
          i_concatenate, and do less overallocation. <1% faster. GH #1123
        + Support -D1 GC stats with --ccflags=-DMEMORY_DEBUG for --gc=ms
        + Added a Parrot_{un,}block_GC_move API for the 2 string compacting
          collectors ms and ms2, which are ~20% faster.
        + Fixed a --gc=ms segv in Parrot_io_write_s GH #1196
        + Fixed --gc=inf string header allocation and failing tests
        + const/ARGIN all read-only IO api arguments
        + Deprecated ListChunk GC API and src/list.c GH #1179
    - Build
        + --optimize: Replace -O2 from perl5 with -O3 on clang or gcc. GH #1185
          5% faster
        + Fixed make clean realclean and install which sometimes forgot pmc_default.h
          GH #1194, GH #1206
    - Tests
        + Use the faster travis docker infrastructure without sudo

GSoC 2014 - Final Report

Hey everyone!

I am extremely happy to announce that I have successfully completed my GSoC project!

I would like to take this opportunity to thank the community for this wonderful learning experience. It has really helped me to add a new dimension to my knowledge while at the same time introducing me to the world of open-source projects.

Most importantly, I would like to thank my mentor Reini Urban (rurban) for the tremendous help he offered me, ever since my first contact with the community. As a matter of fact, without his ideas and invaluable guidance, completing the project would have been an impossible task. I would also like to thank my co-mentor Bruce Gray (Util) for guiding us throughout the project and providing us with valuable inputs to overcome the many hurdles we faced.

In this blog, I will attempt to summarize the work I have completed through my project.

My project's primary objective was to improve the performance of the method signatures. My project was divided into three tasks:-

GSoC 2014 - Report 12

Hey everyone!

This week I ran the bench test on the three tasks to verify the performance gain. But due to my slow machine, I could only generate varied and unreliable data.

However, rurban confirms that all the tests are passing and the branch pcc-gh1083 is ready to be merged for the Parrot release scheduled on 19 August. Also, he soon plans to test it with a 32 bit machine as well.

GSoC 2014 - Report 11

Hey everyone!

I will be sharing what I have completed this week. Last week, I had mentioned that I would be fixing further problems in my branch to optimize pmc2c (
I am happy to share that I have successfully completed this work and believe that the issue GH #1083 ( is now resolved.

To elaborate on the work done --- a couple of weeks back, I started by omitting the obj check in the CallContext ATTR accessors in include/pmc/pmc_callcontext.h.

GSoC 2014 - Report 10

Hey everyone!

This week I completed the part of my task that required me to export the internally needed CallContext vtable methods ( These exported methods are now included in src/call/*.c to improve the performance, since these methods are now being directly called.

In the previous week, I had finished fixing the headers to omit the obj check for CallContext ATTR accessors. But I had made these changes manually by fixing include/pmc/pmc_callcontext.h.

GSoC 2014 - Report 9

Hey everyone!

Through this post, I will be sharing my progress towards the task -

I have completed the part of the task that required me to inline the CallContext ATTR accessors to omit the obj check. For now, I have manually edited include/pmc/pmc_callcontext.h to fix the macro definitions.
However, after completing the remaining task and ascertaining an improvement in speed performance, I plan to improve pmc2c to automatically generate this fix.

Syndicate content