I scraped together a couple of hours this evening and knocked out the remaining work for thread pooling support. The big caveat to using worker thread pools is that you can't pass messages to a pooled thread, because there is no way to identify which thread(s) are actually idle and ready to receive such a message.
You can send a message from a worker thread, and the target thread can reply to sender(), so it isn't impossible to communicate with pooled threads - just slightly less convenient than with task threads.
This brings R8 down to only a few outstanding items; another thing I got done today is support for building a runnable .EXE given just a standalone .epoch code file. There is no longer any need to set up a project in order to build a distribution-ready Epoch binary.
I also added a compiler switch which lets you choose whether or not to spawn a debug console when the program begins. Console apps can use this flag to get their own console space as they expect, and GUI apps can rest at ease knowing that there won't be an empty console window hovering around in the background.
There's a whopping four outstanding issues for R8, roughly prioritized as follows:
- Fix bug in the Scribble project (possible parser bug)
- Ensure that projects, compilation, assembly, disassembly, and binary generation are all functional
- Improve build configurations in the Epoch project
- Fix bug in Exegen which can mangle filenames/paths
You can watch the work list for Epoch at any time via our issue tracker. If you're more of an RSS person, check out our feed list. Live previews of the development fork can be browsed via our Mercurial repository, or directly on the web.
R8 will not have a particularly potent implementation of the CUDA integration yet, mainly because I just haven't had the time to play with the cross-compiler much. I intend to get much better support in place for R9/GDC'10 - enough to do a non-trivial demo of using CUDA threads on the GPU vs. using CPU threading.
I also need to implement failover support so that if CUDA is not available on the host machine, the VM falls back to CPU threads rather than trying to use the GPU. There are still a few architectural and syntax questions left to be solved before I can do that, but nothing major.
All in all, assuming I manage to avoid being hit by a bus and/or flying rhinoceros, R8 should be out Very Soon(TM) and R9 will be hot on its heels. With any luck the GDC'10 preview kit will have some nice goodies that'll really turn some heads [smile]