Results tagged “testing parrot plumage” from

Parrot Hacktivity Report

I hacked on various parts of the Parrot Virtual Machine and HLL's (High Level Languages) that run on it in the past weeks.

One new interesting project that has recently taken off is called Parrot Plumage, which allows you to install Parrot add-ons from the internet. Think of it as CPAN for Parrot. It lives on Gitorious, which I had never used before, but is easy to use and somewhat more stable than Github, because it has fewer features. It does not have an issue tracker (that would be awesome) and it does not keep track of who forked from whom, which is the clearest distinction from Github.

I added a very extremely naive test harness to Plumage, written in NQP (Not Quite Perl). No, I am not joking, there really is a language called Not Quite Perl. It is a subset of Perl 6 without all the bells and whistles. It is used as a bootstrap language that is slightly higher level than PIR. The Parrot Compiler Toolkit uses NQP for manipulating Parrot Abstract Syntax Trees and parsing/transforming the actual text of the program. A great introduction to NQP is available from wikibooks.

As soon as I started hacking on Plumage I thought to myself 'we need a test suite'. At first I fixed a build issue by reorganizing the source into logical directories (the build failed on case insensititive filesystems, like OS X). Plumage is written in NQP and PIR, so a test suite that depended on Perl being installed seems like an unnecessary dependency (yes, I am crazy). Since no one seems to have written a test harness in pure PIR, I set out to write one in NQP (with some PIR sprinkled in). With help from tene++ on how to import all of the function's from Parrot's Test::More library into NQP, I had a nice little test environment set up. Currently Plumage has 8 passing tests and now I can confidently change code and verify that I haven't totally borked the universe.

Further improvements to Plumage's test suite should definitely include a proper TAP parser written in NQP. Currently only passing and failing tests are supported. Comments are not parsed correctly and there is no concept of SKIP or TODO. These features will probably hold off until pmichaud++ can get the newer version of NQP that he has been working on merged in. Currently NQP does not support regular expressions (what!) natively, it must dig down to PIR with Q:PIR{ ... } and use Parrot regular expressions. The new version of NQP will have native support for regular expressions and make writing NQP much less bumpy.

I also recently helped coke++ migrate Partcl (TCL on Parrot) from a subversion repo on Google Code to a Github repo. This went surprisingly smoothly and will hopefully encourage more people to work on Partcl, which is one of the most mature languages being developed on Parrot.

Other recent ongoing hacktivity has been continuing to convert Parrot's test suite from Perl to PIR (lots of newcomers are helping with this, sweet!) and adding tests for CallSignature PMCs on the very-important pcc_reapply branch. The pcc_reapply branch is a large refactoring of Parrot's internal Calling Conventions and will most probably be merged in just after 1.7 is released. That reminds me, I will be releasing Parrot 1.7 next Tuesday, just before the Google Summer of Code 2009 Mentor Summit in Mountain View. Exciting times!

Until next time, happy hacking!
Clicky Web Analytics 42