So today will likely end up being one of those days where you have a net loss of code (in terms of KLOC or whatever stupid metric you want to throw around) even though the codebase is now much cleaner and more flexible.
Thankfully, the only pressure I have on the project is to have a working release ready by GDC, so I can pimp it out to anyone I run across. That leaves me a little over a month to cram whatever awesomeness I can into things.
In terms of Release 5, I still want to grind through as much of the checklist as I can, and make sure all the example code is up to par. That's going to be a fairly tedious job as I'm sure there will be a lot of instructions that aren't properly handled by the assembler, or the disassembler, or the actual VM runtime.
Building the binary compiled code was a lot of fun, but the downside is it has introduced a series of potential gaps in the implementation. Keeping all the instructions and routines in sync can be a pain... there's the instruction emitter code in the compiler, the instruction evaluation and encoding routine in the assembler, the decoding and pretty-printing logic in the disassembler, and the decoder that loads the bytecode into the VM. So many points of failure, so little time...
I can't decide how much refactoring and general code cleanup I want to try to do for R5; it really depends on what I decide to tackle for R6. At the moment I'm thinking R6 will basically consist of the first rough build of the IDE, plus whatever additions/improvements/refactorings I can find (or end up needing) in the toolchain.
So... all this gibberish to say, I'm tentatively aiming at making Release 5 within the next week.