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.

New faster release Parrot 6.11.0 "Fischer's Lovebird"

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

Parrot 6.11.0 is available on Parrot's FTP site, or by following the download instructions. For those who want to hack on Parrot or languages that run on top of Parrot, we recommend our organization page on GitHub, or you can go directly to the official Parrot Git repo on Github

Highlights: Performance: 15-25% faster, fixed GC, experimental VMS port.

Parrot 6.11.0 News:

    - Core
        + Rewrote ResizablePMCArray with moving offset, esp on shift.
          Even better than nqp/qrpa. 20% faster overall. #1152
        + Fixed wrong maybe_mark_and_sweep call in --gc ms #1142
        + Added GC maybe_gc_mark vtable function #1142
        + Fixed Memory_Block prolog access in --gc inf #1136
        + Added MEMORY_DEBUG tracing to --gc inf and ms2, added
          GC validation to ms2.
        + Fix bignum.i_substract and i_multiply #1144
        + Fix cmod_p_p_n* math dynops for NaN and Inf #1147
        + Fix floor, ceil and complex, integer math ops for NaN and Inf #422
        + Optimize printing of single numbers #828
        + More --debugging protections when accessing empty registers
          from :immediate #1024
        + Change ResizablePMCArray.delete to throw out of bounds errors,
          but just warn on deprecated delete[0] with size 0 for backcompat. #1153
        + Add check for illegal delete of capture blocks in PGE.match #1154
        + Add new traceflag -t20 for ResizablePMCArray states.
        + Add experimental vms support by mvorl. Untested. GH #866
        + Provide Parrot_new_string and Parrot_compile_string in the extend api
    - Build
        + Extend auto::infnan probe to other --floatval #1146
        + Warn in Configure on experimental flags intval, floatval and gc #1148
        + Die in Configure on unsupported intval sizes #1148, #642, ...
        + Renamed auto::labs to auto::mathl, probe and use more long math
          functions: fabsl powl ceill floorl fmodl expl logl #1111
        + Fixed pbc_to_exe and wrong Parrot_{g,s,uns}etenv declarations on windows #1156
    - Documentation
        + Rewrote docs/pmc/array.pod
    - Tests
        + Fix t/steps/auto/arch-01.t darwin regression #1142
        + Added bigger t/stress/gc.t test to catch most GC issues.
        + Add optional copyright year test on TEST_SLOW #719
        + Fix most --floatval='long double' tests, just embed API broken #1111
        + Adjust tests for VALGRIND=valgrind #1150
        + Added tests to t/pmc/resizablepmcarray.t to cover all offset cases. #1152
        + Replace included IO::CaptureOutput with our own capture function. #892
        + Fixed most embed and extend tests. #41511 #829
    - Community

Parrot 6.10.0 "New Caledonian lorikeet" released

    Now instead of four in the eights place
    You've got three,
    'Cause you added one,
    That is to say, eight, to the two,
    But you can't take seven from three,
    So you look at the sixty-fours...

    Sixty-four?  "How did sixty-four get into it?"  I hear you cry!
    Well, sixty-four is eight squared, don't you see?
        -- Tom Lehrer, "New Math"
            (Which starts in decimal, but ends in octal)

On behalf of the Parrot team, I'm proud to announce Parrot 6.10.0, also known as "New Caledonian lorikeet".


New supported release Parrot 6.9.0 "Rosy-faced Lovebird"

On behalf of the Parrot team, I'm proud to announce the new supported release Parrot 6.9.0, also known as "Rosy-faced Lovebird". Parrot is a virtual machine aimed at running all dynamic languages.
The name Lovebird stems from the parrots' strong, monogamous pair bonding and the long periods which paired birds spend sitting together. Lovebirds live in small flocks and eat fruit, vegetables, grasses and seed.

Parrot 6.9.0 is available on Parrot's FTP site, or by following the download instructions. For those who want to hack on Parrot or languages that run on top of Parrot, we recommend our organization page on GitHub, or you can go directly to the official Parrot Git repo on Github.

Parrot 6.9.0 News:

    - Core
        + Changed behavior with illegal escape sequences, GH #1103. Do not silently
          skip the \ anymore, throw an EXCEPTION_INVALID_CHARACTER error with
          "Illegal escape sequence \o in 'string\o'".
        + Add platform encoding functions for darwin, FreeBSD, OpenBSD and NetBSD,
          fixing rakudo problems with UTF-8 locales. #1092
        + Enable trap op (int3) on x86_64 also
        + Add const to env api STRING args
        + Do no pre-allocate 256 IO tables for the standard handles, only 3. #1093
        + Renamed ops2c to parrot-ops2c. Get the new name if exists in config
          key ops2c. #900
        + Reenable parrot -t [flags] traceflags to enable the flags 2 find_method and
          4 invoke/retcc/yield again.
        + Enable >2GB RAM on darwin also. #268
        + Fix crash with parrot -d8 DEBUG_IMC dump_instructions
        + Fix sprintf width count for unicode strings. #956
        + Fix sprintf width for NaN/Inf/-Inf [GH #1099/perl6 RT#116280]
        + Optimize utf8_substr. Do not use the slow utf8 iterator.
        + Regenerated and fixed the iso_8859_1_typetable. Add \x2028, \x2029
          and \v to be of cclass newline. [GH #1086, perl6 RT #122341].
          Several chars 160..191 are not in the [[:punct:]] class anymore.
          Removed defunct Parrot_ascii_typetable, unused since 2010.
        + Protect callmethod from an empty object, missed by fixup_subs
          immediate. #1024
        + Add Couroutine reset and autoreset methods. #564
        + Add -t8 trace flag for Coroutine states
        + Disabled trace flags -t4 and -t8 with --optimize. #1105
        + Harmonize parrot usage messages
    - Build
        + Fix all -Wshadow instances
        + Added bootstrap-tables make target
        + Configure options consistency: --{en,dis}able- for shared, rpath,
          threads, --with{,out}- for: llvm pcre ... + threads. [GH #1101]
        + Deprecated --parrot_is_shared in favor of --enable-shared. [GH #1101]
        + Change default of the config key debugging from 1 to 0, i.e. you need to
          provide now --debugging[=flags] for debugging. [GH #1099]
        + Enable --disable-shared (or --parrot_is_shared=0) to link against static
          libparrot [GH #1101]
    - Documentation
        + Add missing manpages for pbc_disassemble, pbc_dump, pbc_merge
        + Improved src/string/encoding/tables.c pod.
    - Tests
        + Run fulltests with the runcore=fast,-O1,-O2 fast, without -D040, --gc-debug
          [GH #1086]
        + Added tests for LexInfo.declare_lex_preg and .lex quoting roundtrips
          [GH #1095]
        + Simplify smolder resend usage
        + Fix mingw issues with \r\n
        + Updated the missing native_pbc 64-bit big-endian files on mips64 qemu.

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.

GSoC 2014 - Report 8

Hey everyone!

Let me share this week's progress.

Earlier this week, I finished my tests with Parrot for its releases 2.7 - 3.0. Including rurban's profiling, we now have data (reliable to some extent) for the commits in this range. The main objective for the profiling was to determine the highest overhead to be targeted next for refactor.

(For the list of all the identified overheads, please take a look at -

GSoC 2014 - Report 7

Hey everyone!

My this week's work involves testing. With this work, we are trying to figure out the commits that slowed down Parrot during its releases 2.7 - 3.0. To do this, I am running the tool provided in parrot-bench. rurban is helping me out with these tests to save time (since I have got a slow machine) and also to cross-check results.

Syndicate content