I haven't been doing much work on Parrot or even the Perl 6 book this week, instead focusing most of my efforts on Matrixy. Matrixy, which I introduced in my last post, is an M (Matlab/Octave) compiler for Parrot.
Progress has been going well, and just this morning I got a few more tricky features working. "working" is, of course, open to multiple definitions. This is especially true for such an idiomatic language as M.
I got nargin and nargout mostly working, along with varargin. These are the tools for doing variadic argument lists in M. Implementation isn't perfect still, but at least it's a start. I'm still fighting with lots of issues when it comes to function/variable dispatching. I finally have a fix ready that does what we need it to do, but it relies on the use of lexical variables which terribly breaks interactive mode because of issues with PCT.
Blair has been doing some great work on the libraries, and he's got some NCI stubs in place for interfacing with the BLAS and CLAPACK libraries, and converting our ResizablePMCArray-based matrices into the forms needed for use with these libraries. Linear algebra power is coming to Parrot!
I realize that a lot of people aren't familiar with M, it's a pretty specialized language that's used primarily for engineering modeling and scientific research. Maybe in my next few posts here I'll give a quick tutorial on the language and try to show some of the weird/cool idiosncracies that simultaneously make it an interesting language to work with and a difficult language to write a compiler for.
Matrixy project page