Saturday, October 10, 2009


Sorry for the lack of posts lately. I got really busy with a new job and moving. I'm still not entirely moved in, but I have free time again, so tonight I'm hanging out at the Hacker Dojo (yay for living in Mountain View now) and trying to get some things done with Cardinal.

There have been a few small commits in the last few weeks, but nothing really worth mentioning, just Rakefile stuff.

Wednesday, September 2, 2009

Smolder Tests

Thanks to jdv79, Cardinal now has a place in smolder all to itself.

I've also added a new "smolder" target to the rakefile, which will run everything needed to generate the report and then upload it (uploading depends on curl being available).

One issue that shows up immediately is that smolder isn't recording failures for the three files that are currently failing to compile. I'm not sure how to fix that, so any assistance in that would be appreciated.

You should now be able to retest from the latest commit with:

rake clobber && git pull && rake smolder

(Assuming you don't need to pass in a parrot_config variable.)

Tuesday, August 25, 2009

Recent Changes Aug 26th-Aug 31st

There hasn't been a whole lot of work to hit master this last week. What little work I've done occurs on the iss41 branch.

Since August 26th, the following changes have occurred in cardinal/master:

Other changes:
  • Fixed the Rakefile so that test suites will still complete even if individual tests bail out.

Recent Changes Aug 16th-25th

So, I figure that I'll start writing entries detailing changes for the previous week. I'd prefer to do this on like a Sunday night, but I'll start now and kinda work back to that.

Since August 16th, the following changes have occurred in cardinal/master:

Parser fixes:
  • Postfix ++ and -- were removed; these exist in Perl6 but not in Ruby. (joeri)
  • Parens were enabled in the optable. (joeri)
  • Some cleanups and removal of rules that aren't used. (joeri)
  • Require float literals to have at least one digit prior to the radix point. (treed)
  • Fixed a problem with trailing whitespace causing parsefail. (joeri)
PIR fixes:
  • == now works with true and false properly. Tests added to that effect. (joeri, treed)
  • The GC class was changed to use the true and false constants, rather than 1 and 0. (joeri, treed)
  • puts and friends now return nil (joeri)
  • Array#nitems removed; no longer present in Ruby 1.9 (dtm)
  • Array#count added; new in Ruby 1.9.(dtm)
  • Array#select added. (dtm)
Other stuff:
  • Some miscellaneous Rakefile fixes. (treed)
  • Update Makefile build. (pfarrad)
  • Added "report" target to Rakefile, for generating a TAP archive for jdv79's smolder test stuff. (treed)

Where We Are

So, I figured for a first "real" entry, I'd make a post about the status of Cardinal as it stands.

Cardinal started out (AFAICT) as more or less Rakudo with a Ruby-ish parser. Right now, Cardinal is still very much in an alpha state.

The parser is horrifically slow. A test suite of ~90 files takes about 7-8 minutes to parse on my laptop. Once parsed, the actual execution (running PIR files directly on Parrot) is about 30 seconds.

The compiler is, on top of that, still rather incomplete. Off the top of my head, I can say that: function calls without either arguments or parens don't work; exception handling might parse, but won't work; there's no support for symbols; multiple assignment doesn't work. I'm sure there's much more.

The basic library is starting to take shape, but the object model on master is still P6object. I've been writing a new one and implementing Object/Module/Class on the iss41 branch. Since there's nothing that this doesn't touch, I suspect this will go a long way towards making Cardinal more Ruby-like, and will help enable further quick pushes to bring things up to speed faster. I expect that I'll be able to get Exceptions working shortly afterwards, and implementing Ruby's Method Resolution Order as well.

But this isn't at all an attempt to make things look dire. We're moving along at a decent pace. Besides myself, there are two common commiters: joeri, who's been concentrating on the parser and making sure that Cardinal behaves like Ruby; and dtm, who's been working on the stdlib. We could always use a little more help (although it'll be easier to integrate more help once I've got the object model in place), but I think we're moving along okay.

Since I started on the project in early July, we've written about 3000 new lines of code. It might not seem like much, but that's roughly 30% of the current codebase.

(That number also doesn't reflect the 2000 or so lines I've written in the last week or so on the iss41 branch.)

Coding Red - A Cardinal Blog

Hi folks!

I'm treed, the maintainer of Cardinal, a Ruby implementation for Parrot VM.

It was suggested to me that some people would be interested in reading about Cardinal development, so I've started this blog as a place to put that information. I'll try to keep it up to date with the latest developments on Cardinal, and maybe some information about the current status and the plans going forward.

Welcome aboard!