benabik's blog

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.

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...

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.

PACT: Infrastructure

Oh, right. Weekly blog posts. benabik-- In the same style as last year, I'm going to include what I said I'd do and what I have done.

May 30 Improvements to Key PMC: Creation/introspection of keys with register contents. This both a useful improvement to Parrot on its own and useful for later portions of this project.

GSoC: Here We Go Again

My proposal for Google's Summer of Code 2012 has been accepted!

PACT - Disassembler

The first step in generating a packfile is understanding the packfile. So I've been writing a Winxed disassembler. It's pretty fully featured at this point. It's showing constants, annotations, and symbolic instructions. Despite my fears, it turned out that PCC wasn't all that difficult to deal with.

PACT - Design Notes


So after my last blog post, I started a gist to keep track of "how would I write PCT". I called it PACT, the Parrot Alternate Compiler Toolkit. I suppose I could have called it PCT2, but I really don't want to try to claim it will 100% replace PCT. PCT's very valuable to the people using it right now, but there's no small desire to add to it and I'd like to help it be better. Parrot's main audience, to my mind, is prospective compiler writers and the easier we can make their lives the better.

End of GSoC, but not Time to Stop...

I've spent the last few days cleaning up my branch: adding documentation, checking that it passes the code standard tests, and trying compiling Rakudo nom. Don't get too excited, we can't compile nom directly to bytecode. Heck, it can't compile squaak directly yet. But I wanted to make sure that all my tinkering hasn't broken the original PIR generation path.

GSOC 12: Coming to an end

While I didn't implement everything I thought I would, there is now a basic framework for bytecode generation in the nqp_pct branch. I'm uncertain if it should be merged... While the bytecode generation doesn't fully work, it doesn't interfere with the existing usage of PCT and does have the nice feature that PAST::Compiler is now written in NQP for ease of hacking. I'll leave that up to the rest of the community to decide. The rest of this blog post is the contents of docs/pct/bytecode.pod, which I hope will be helpful if anyone want to explore what I've been working on all summer.

GSoC 11: Breaking Radio Silence

*tap, tap, tap* Is this thing on? It is? Drat, I had hoped it wasn't and I'd have something to blame for the long silence.

Due to the issues I'm about to describe, my old schedule is a little off. The important schedule note is that the official "pencils down" date is August 15th, aka next week. Current plan is to power through as much as I can in the next few days. At this point, I doubt that my branch will be merged into master before the end of GSoC, but I do intend to keep working on it.

The core of my problem is in this line from my last blog post:

Syndicate content