This has turned up a huge number of bugs, mostly related to the binary side of the compiler. None of them are particularly juicy, just mundane things like forgetting to place an operand on the stack and such. My hope last night was to get through the bug-hunt and leave today and Sunday free for working on the multiprocessing features.
My hope at this point is to finish the bug-hunt by GDC, and we'll be lucky if multiprocessing makes it. (OK, it's not that bad... but there's a lot of corner cases that still need testing.)
Progress
- Refactored the arithmetic code into a simpler, cleaner template
- Refactored list support code in several areas
- Fixed some bugs with arithmetic on lists
- Added serialization to new arithmetic code, including list support
- Added serialization for additional list-aware functions
- Implemented list support for concat() function
- Fixed several bugs in arithmetic operators
- Fixed quite a few glitches in the binary loader
- Fixed a bug in the bitwise and() function
- Fixed some bugs in the C/Epoch marshalling layer
- Fixed several issues with higher order functions
There still lurks a handful of bugs in higher order functions, plus most likely a half dozen other things I haven't even turned up yet.
Here's hoping I can move on past debugging and do some more interesting work today...