Open
Description
A REPL is more useful if you can abort things that are taking too long.
This is immediate if you have threads (you can model an interrupted thread as never running again); conversely it might be as difficult as threads, since if you want to allow compiler transformations that reorder writes to heap objects (including various forms of dead store elimination and most advanced loop optimizations) the semantics need to include a memory model describing what could be visible out of order.
If this is thread-complete it's likely not worthy of further discussion but leaving this here in case anyone has clever ideas.