Hi folks. I posted earlier in squeak-dev about a Smalltalk implementation I've been working on. The first post was a bit unwieldy, but there was at least some interest so I'm posting an update to vm-dev and pharo-dev.
Main strong points are that it's embeddable (like Lua or SQLite) and scalable (like Erlang). There are weak points too, of course (e.g. hot loop performance will be much worse than Squeak/Pharo at this point).
The VM itself is pure C and has no dependencies apart from libc and libm. It doesn't require a filesystem (you can pipe VM images through custom stream implementations or arrays) and it should run well in tight (~1MB) memory situations.
The extension system is similar to the Unix system call and virtual filesystem APIs, so it's kind-of object oriented but in a very "C" way. All extension resources are managed properly (so the system can clean up safely and/or warn you if you allocate memory
and don't deallocate it, for example).
Extensions are available for cells (threads/individual VMs), shared memory (so different cells can communicate efficiently - but also with memory protection and calling features for implementing domain-specific JIT compilers), windowing and event handling
(based on SDL2) and 2D graphics rendering (based on Cairo). There are some higher-level libraries (stylable GUI system, tight OS integration, 3D modelling, etc.).
It's polished in some ways (there's a test suite, an integrated help system, colour shell, etc.), but it needs a lot more refinement in others (the current GUI style is terrible, it needs more documentation, there's only minimal support for keyboard entry,
no networking library, etc.).
I'd like to release it (ideally as 100% public domain/CC0), but I don't want to do so without some way of funding development. The project promises a lot and I want to actually deliver with some ongoing updates and support (and being able to pay rent next
week would also be a plus), so I'm not interested in just dumping it on GitHub and calling it a day.
So I'm open to any suggestions as to how to fund this project at least in the short term and how it might fit into the wider Squeak/Pharo/Smalltalk ecosystems, as well as any technical criticism relating to the implementation itself.
I've put together a basic website describing the implementation in a bit more detail (sorry, no downloads yet):