[isabelle-dev] Interrupts Isabelle/ML
makarius at sketis.net
Fri Nov 5 20:18:16 CET 2010
After a2866dbfbe6b has come in this is one more attempt to draw attention
to this important issue. It has been on the list so many times that it
seems to be ignored.
Here is the short version again (from the NEWS posted some weeks ago):
* Parallel and asynchronous execution requires special care concerning
interrupts. Structure Exn provides some convenience functions that
avoid working directly with raw Interrupt. User code must not absorb
interrupts -- intermediate handling (for cleanup etc.) needs to be
followed by re-raising of the original exception. Another common
source of mistakes are "handle _" patterns, which make the meaning of
the program subject to physical effects of the environment.
The long version is in chapter 0 of the Isabelle/Isar implementation
manual, see http://www4.in.tum.de/~wenzelm/test/implementation.pdf section
0.5 in particular.
Tools that do not observe this specification cannot participate in the
asynchronous interaction model. (In Proof General it happens to work most
of the time -- like nobody has ever noticed the serious race conditions of
Poly/ML 5.2 until threads where used more heavily in Isabelle.)
Right now (96c37a685a13) the following tools limit themselves to the old
Proof General / TTY model:
The situation for Sledgehammer is more complex, since it still contains a
separate management component for asynchronous tools that is based on an
early implementation of mine, but needs to be replaced by a proper version
the new document model. I can't say when this will happen ... too many
other things are preventing this.
Quickcheck and Nitpick should be easy to fix right now. One merely needs
to observe the standard pattern used in the sources elsewhere: grepping
for Exn.is_interrupt should help, and looking at changes like
People who don't want their tools to be adopted for the asynchronous
interaction model should say so explicitly, so that they can be officially
deactivated for Isabelle/jEdit.
More information about the isabelle-dev