I'm starting to think hard about rebooting the Xpost project using the real open-source tools on
code.google.com. In the short-term, that will involve working up just the virtual-memory module that's the foundation of everything. I think the execloop problem will solve itself once I get there, as it's been developing in my subconscious for several months now. For speed, there's nothing better than a separate function for each pattern of types to check on the stack. Whether to write these in straight C or some wild X-macros is still in the air.
But I just had a crazy idea that maybe I should skip Cairo and build Xpost completely differently. After VM comes the basic composite types: arrays, strings and dicts, then probably math. But then, I think, while it's simple, that's the ideal point to get the garbage collector working. Before there's even an interpreter loop. Because I think if I want it to work well at the end, it needs to be around from the beginning. Then save/restore.
Then, I want to work up a multiprocessing scheduler. I think `setjmp` and `longjmp` will do the job. This will follow the way NeWS worked.
Then I want to add networking operators and build the graphics within postscript acting as an X11 client. That should actually simplify working with X because I'd only need volume 0.
Building all the graphics code may be slow and painful, but it won't leave me in the same situation that Xpost2 did. At `definefont`. Up the creek, in the fog, no paddle, no compass.