Ok. So, here's what happened. I did three weeks of homework the first night, and then I cleaned-up my Utah teapot challenge and posted that. And then I polished up my teapot code and posted that.
And then I had a fun honeymoon with APL. And wrote two drafts of an interpreter based on an obfuscated original source. But it was never able to do much with the teapot data.
So, now I'm back to xpost, and sadly, the efforts that might lead to moneymaking is not the fun NeWS stuff that I want to do, but filling-in out the level 1 behavior and making a decent start on level 2 stuff. In a few details, we're still at sub-level-1.
A supportive effort is continuing the untangling of intermodular dependencies and migrating more source files to the library, in a strict hierarchy of dependencies (no circles).
A third front is more considerations of the API. I've written a sample program xpost_client.c to see what it would look like. Exporting the raster data is something I need to figure out, somehow. It's locked up in a private data structure. A related issue is the semantics of showpage. For an external program generating pages of a document, it is not appropriate for showpage to wait for a newline on stdin. It needs a mode where xpost_run() returns with a code indicating that the executing context may be continued to produce subsequent pages. So I think the API needs a context handle of some sort, in case it wants to run multiple interpreters "in parallel" or some such.
... and now I've got segfaults when quitting after running
dancingmen.ps. So I've got to debug, ack! edit: added argument checks and error returns and now we get an ERR log message instead of a crash. So, that's better.