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.

June 13 Basic Classes: The classes that represent the packfile. Write documentation and code.

This was mostly done in pact/packfile.winxed. The documentation is a bit lacking, I admit. There are a lot of notes on what various fields and functions are intended to do. The current plan is to flesh out a lot of functionality inside src/disasm.winxed and migrate the most general portions back into the classes. The classes may split out into separate files at some point, although they should still be in a single PBC file.

June 20 Disassemble to Objects: Write a program that disassembles PBC files to the above classes to prove that they can accurately represent a packfile. Can use the disasm.winxed file from PACT as a basis.

Mostly done! There's still functionality I need to handle, but it actually builds a PACT.Packfile structure. I need to handle more features of Subs (multi, outer, tags, etc), but the rough outline is there. The only current output is from Parrot's Data.Dumper, which is ugly, but makes handling complex structures fairly easy.

I've posted some example output as a gist.

June 27 Unit Tests: Write unit tests that check for PIR to objects and objects to bytecode. Half of these should work.

Hm. Testing. Right... Now that I have the basic structure in place, I'll start building test cases. Things like multis and such should be done in a more TDD method from now on.

The next week on my schedule is listed as "Vacation". I'm not actually going anywhere, but may be forced offline for several days at some point in the near future. I'm not wholly in control of when, but it should be soon. I'll keep working on the tests until that happens..