I did something similar several years ago for Butterfly, where I pre-instantiate a pool of threads into the “stable”, and utilize a Grand Central Dispatch (real and / or simulated) to run various jobs. No sense killing the horses after they run the racetrack.
But this is still a far cry (a few dozen threads) from what Erlang and CML provide (numbering in the thousands).
- DM
On Aug 3, 2015, at 12:46 PM, Faré fahree@gmail.com wrote:
On Mon, Aug 3, 2015 at 3:36 PM, Attila Lendvai <attila@lendvai.name mailto:attila@lendvai.name> wrote:
How might we get equivalent cheap ephemeral processes into a contemporary Common Lisp implementation?
In short, you need to write from scratch a new CL implementation. Current ones are not designed with the Erlang constraints in mind.
well, Nikodemus had some plans for green threads for SBCL and it didn't sound like a rewrite.
and adding first class heaps would be a very useful addition with or without any of the other erlang stuff. i don't know how hard that is, but i assume it should be rather simple if the responsibility is pushed over to the user to make sure that there are no dangling pointers after destroying a heap.
or am i missing something?
Not Common Lisp (yet), but Racket has custodians for first-class resource allocation pool, and all kinds of concurrency primitives. Since it's a programming language designed to implement other programming languages on top of it, it would make a great basis for a "new" common lisp implementation.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org http://fare.tunes.org/ There are a thousand hacking at the branches of evil to one who is striking at the root. — Thoreau