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.

Parrot 5.7.0 "Azure-rumped Parrot" Released!

Rock Concert Movement #237 - Taking the audience on a Jungian journey
into the collective unconscious by using the shadow as a metaphor for the
primal self that gets repressed by the modern persona and also by using an
underground setting and labyrinth office design to represent both the depths
of the psyche and the dungeon-like isolation of our increasingly mechanistic
society which prevents people from finding satisfying work or meaningful
connections with others.
It's Time to Start!
    -- "Rock Concert Instruction Manual" Narrator, Blue Man Group

On behalf of the Parrot team, I'm proud to announce Parrot 5.7.0, also known as "Azure-rumped Parrot".


GSoc progress report

All tests in nqp/t/nqp with the exception of test 49 are passing.

Test 49 among other things requires compiling regexes at runtime.

my $regex := "a+";
"aaaaa" ~~ /<$regex>/;

This is easy to do after bootstraping (when we have the whole compiler avaliable at runtime) or a bunch of crafty hacks.
After attempting to quick hack a workaround (which would involve starting up a new parrot process to cross compile a regex) it turned out our current cross compiling solution won't work. I decided to avoid waisting time on that and leave it to after the boostrap.

t/nqp directory in the nqp repository contains all the tests for the NQP language features.
There are also tests in t/qregex which are really a whole bunch of regex and their expected results on a suplied string.
(in a tab separated format + a harness).
And 3 tests in t/serialization which would involve a boring translation of serialization code from a different backend.

What seems to be a good direction is to get all the tests qast tests (which were written by Jonathan while porting nqp to the jvm) under JavaScript. They test the backend without requiring a parser. Doing that has uncovered a number of bugs in nqp-js. Major things like multi methods seem to work correctly but I have encoutered many small bugs. Which seems to imply that the nqp test suit needs to be more exaustive.
A few examples of those and their fixes:

nqp::null() was tested for truthfullness is some places, we are currently doing that using a .Bool method so I had instead of using a native javascript null switch to using a custom singleton for that.

Objects being false by default caused if $slurp {...emit some code for slurp...} not to work

\n not being implemented in regexes caused subst(/\n/,"\\n",:global) to loop infinitly:

Currently in nqp-js I'm using JavaScript arrays as nqp arrays (with a bunch of methods monkey patched on top of them).
That caused a problem as JavaScript alread has a push and unshift methods (hinting that it was somewhat inspired by Perl 5).
The tests thus far where using the nqp::push op for adding elements to arrays.
However QAST::Compiler::JavaScript uses the .push method
Example: nqp::push(@foo,$value) vs @foo.push($value).

My current calling convention is that $"named"),1) is translated to $,{"a":"named"},1).

Which ended up in strange things being added into arrays (Which resulted in some fun debugging).

Parrot-libgit2 report

This report comes rather late, so let me give an overview of what's been happening.
The last report talked about an unified buildsystem. Since then the project has made a little progress. There were bugs in the unified buildsystem which meant that that the pir file which was generated from the nci file was stale at best, representing older versions of libgit2. This made a lot of work go down the drain, as a lot of my debugging was aimed at sending the correct datastructures. However this was a good step in finding my mistakes and moving ahead.

app-parrot-create weekly report

A few last weeks, I'm working to support build system with different languages. Such as PIR, NQP, Winxed and Perl5. At this day a build system supported PIR, NQP and Winxed languages with pmc, ops and doc optioms each other. shows a changes which need to support a build system with nqp language. shows a changes which need to support a build system with winxed language.

app-parrot-create weekly report

At this week I'm working with different deploy systems.
Such dotCloud, gnu Compile Farm. I'm changing my project for that deploy systems.
As a result of this work is

So I can continue my work for providing a different build and test system on my project.
I'm going to continue my work on support a winxed build and test system on my hll template file.

Progress Report

While trying to get QASTNode.nqp to compile I noticed a strange error claiming that some code refs where missing from the serialization context.
By binarysecting the file (deleting line till the error goes away) it turned out that roles in modules where causing problems. Serializing roles requires serializing a closure, and modules are special that they require to be compiled twice, both to JavaScript and PIR (that is untill we are fully boostraped).
The thing that turned out to be causing trouble is that the JavaScript backend is using a slightly different bootstraping procedure.

parrot-libgit2: Unified Build System

One of the objectives before the midterms was to unify the buildsystem. Earlier the build process consisted of a separate Makefile and a setup.winxed file, and yet manually required people to go and build Rosella themselves.

app-parrot-create weekly report

At this week I start to deploy my project on real server.
My project is going to deploy on and dotCloud servers.
The stable version will deploy on The development version will deploy on dotCloud machine.
For this I've updated dependencies of my project.
These changes are shown on that commit.
At this week I'm going to continue my work on support a winxed build and test system on my hll template file.

Parrot 5.6.0 "Psittacosaurus" Released!

    Psittacosaurus (...from the Greek for "parrot lizard")...
    notable for being the most species-rich dinosaur genus.

    Psittacosaurus is not as familiar to the general public
    as its distant relative Triceratops but it is one of the
    most completely known dinosaur genera.

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


GSoC weekly report

Another slow week, with much work being blocked by a simple bug that I am debugging with the help of the several people now (Details below). The uncompleted objectives of this week would mean that I would need to reschedule some of my future efforts. I tried to schedule my project as best as I can with previous knowledge, but its hard to predict the problems that will come up. I am reminded of this blog post, where optimism in scheduling a project is cautioned against.

Syndicate content