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.

Interpreters with butterfly wings

I for one am totally for whimsical blog titles, wouldn't you agree? In other news, after a lull of two weeks (codewise at least) I've finally started to work on mod_parrot again. The big (dis)?advantage from not working on code is that you start to think more of what you could do (and should have done), rather than what you have done.

As it turns out, I handle interpreters in a rather confused manner. My goal for the next two weeks is to fix that. First, let me describe what should be done to correctly run a script on an interpreter using mod_parrot:

PACT: Adjusting the schedule

I appear to be continuing my weekly blogging every 14 days. Ah, well. My progress has been fairly intermittent as I work out this whole "getting sleep with a newborn around", but I'm starting to make real progress again. Today's blog will discuss what I've done in the last couple weeks and an updated schedule for the next month.

My progress can be split into a few topics: syntax highlighting, style changes, bug fixes, test helpers, and tests themselves.

As long as hope remains

So, this was rather an unproductive week, unfortunately. I'm completely busy with moving right now (and will be coming week). What did happen is that I poked a hole into parrot, and the community (nine) fixed it. The story: I started my 'loader' script by directly invoking a subroutine. That by-passed the starting of a green thread on the interpreter, which caused a crash when I tried to do something with that thread, such as sleeping. Nine fixed this issue by starting a green thread upon invocation using the api, which causes my tests to crash no more.

PACT: Spinning of the Wheels

So my 'vacation' was a visit to the hospital for the birth of my son. Now that this has happened, my schedule is going to be even more fun. Was in the hospital for most of a week and am now adjusting to life back home. I've been slowly turning my disassembler program into a "library" of sorts so I can call it repeatedly from tests.

Now to write some tests that convert PIR to Packfiles and Packfiles to PACT.Packfiles...

Security API Update.

Working on flags and permissions this past weekend in security api. Slow and steady progress. In terms of the timeline I am behind, but I am making every effort to get back on track. Monday should be an interesting day to show this past weekends progress.

Pandora's Box

Or, the internal Parrot C API. It is open, now. At least, parts of it anyway, and hopefully somewhat limited in scope.

When I set out to write mod_parrot it was my goal to use the 'new' embedding API - the one with all the Parrot_api_* calls. This is a limited API designed for loading and running the parrot interpreter and some scripts. It isn't perfect or even elegant but it works. Moreover, People have Promised it to be Stable. However, because it was designed to be used outside of the parrot runloop, these functions are not re-entrant in a rather subtle manner.

Progress till now

Till now was able to add the function to compute the eigenvalues. Also fixed the segmentation fault in the inverse function to do this has to edit the LU decomposition function to get results of couple of arrays. Now will be starting to work on the implementation of the function for eigenvectors and also try to develop the tests for inverse and eigenvalues functions.

PACT: Time flies when you're writing code.

How many days are in a week? Judging from my weekly blog posts, there are 14 days in a week. *sigh* Well, I knew my schedule was going to be a little erratic this summer but apparently underestimated slightly.

Now, to be fair, I'm actually not all that far behind schedule. It might have looked that way over the last couple of weeks, but that's because I tend to hold onto code and continue to revise commits until I have a large chunk of functionality working.

Progress report

I have been working on the api.c file that handles the functions for the security. Revising and editing functions with the help of Whiteknight and Dukeleto. Right now I am allocating, initializing and freeing memory for the functions as well as integrating the api.c and utility.c files I am working on into root.in. I expect to get much done this week in terms of the api.

What have we done for you lately

And by we, I mean myself, parrot, and mod_parrot. That is simple: cgi-style running LIVES AGAIN (almost, just need to fix headers ;-)). And with it, all the infrasturcture to implement more and nicer loaders, such as those for PSGI and / or WSGI, and the famous inline loader-in-the-sky I will be writing. Pretty nice, no?

For the technically interested, what has happened is that:

  • Loaders now accept 3 arguments: the request (as a PtrBuf). This is an opaque handle, that can be used to bind to the apache input / output handles.
Syndicate content