to make the core interpreter stackless is one thing. Turning functions which call the interpreter from some deep nesting level into versions, which return a frame object instead which is to be called, is possible in many cases.
Internals like apply are rather uncomplicated to convert. CallObjectWithKeywords is done.
What I have *no* good solution for is map. Map does an iteration over evaluations and keeps state while it is running. The same applies to reduce, but it seems to be not used so much. Map is.
I don't see at the moment if map could be a killer for Tim's nice mini-thread idea. How must map work, if, for instance, a map is done with a function which then begins to switch between threads, before map is done? Can one imagine a problem?
Maybe it is no issue, but I'd really like to know wether we need a stateless map. (without replacing it by a for loop :-)
ciao - chris