TinyScheme Revived

Just a brief note to let people know that the TinyScheme project has been revived. Dimitrios has graciously allowed me to adopt the project.

My sense is that TinyScheme needs to be a good scripting language first, and a conformant Scheme implementation second. Regrettably, there are features of Scheme that are very hard to support in an environment where Scheme calls out to C and C must be able to call back into Scheme. In particular, "call/cc" is a true nightmare in this context, and I am (reluctantly) considering removing it (more precisely: leaving call/cc and dynamic-wind out when TinyScheme is compiled for scripting use).

I would be very interested in discussion and advice on this point, since I don't want to walk any further away from conformance than is necessary.

Best regards,

Jonathan Shapiro

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

allow call/cc until you realize its structs have been dirtied

and at that point disallow it,
or allow the user to set a flag that says

"error out and quit when call/cc 's enabling scaffolding is borked"
"log an error message when call/cc can't be honored"
"quietly disable call/cc (make it a null operation) for the remainder of the program run"

If some fomulation will give predictable results, why abandon the feature?

(suggestion made by someone who has no idea of how much work is involved).

Delimited continuations

How about lazily-created delimited continuations? If the program wants to capture a section of the continuation that isn't in the C-stack, where's the problem? In the same spirit, what's wrong with allowing continuations that contain some C stack frames if they're one shot and have dynamic extent (~longjmp)? Instead of a flag, it'd probably be simpler to have a variable containing an error handling closure.

I guess the problem with

I guess the problem with that is that it still doesn't make it a conformant Scheme implementation.

What do others do?

I'm guessing you've looked at things like Guile, Chicken, etc.? I don't know details about them so they might be irrelevant, but perhaps they have some insight.