diff --git a/devel/ChangeLog b/devel/ChangeLog index c4b074bce..6d6c09813 100644 --- a/devel/ChangeLog +++ b/devel/ChangeLog @@ -1,3 +1,8 @@ +2001-11-28 Gary Houston + + * added extension directory and extension/dynamic-root.text with + a description of the problem. + 2001-11-14 Thien-Thi Nguyen * policy/api.text: Initial revision. diff --git a/devel/README b/devel/README index 6fb2b4ca5..e69de29bb 100644 --- a/devel/README +++ b/devel/README @@ -1,13 +0,0 @@ -Directories: - -policy Guile policy documents - -build Build/installation process - -string Strings and characters - -translation Language traslation - -vm Virtual machines - -vm/ior Mikael's ideas on a new type of Scheme interpreter diff --git a/devel/extension/dynamic-root.text b/devel/extension/dynamic-root.text new file mode 100644 index 000000000..edf714f78 --- /dev/null +++ b/devel/extension/dynamic-root.text @@ -0,0 +1,28 @@ +The Problem +=========== + +Certain applications embedding Guile (Scwm, Guppi) have found it +necessary to include hacked versions of scm_call_with_dynamic_root. + +They want to run user callbacks, but don't want the callback to be +able to longjmp (via exceptions or continuations) randomly in and out, +since the C code hasn't been written to dynamically wind/unwind local +state. This is likely to be a common problem for users of Guile as an +extension language. + +libguile/root.c:scm_call_with_dynamic_root seems to almost do this, +but it has the apparently undesirable behaviour of unwinding the +dynamic state when the protected procedure is called. In addition +the implementation looks a bit heavy for use in every callback. + +scm_call_with_dynamic_root was implemented to support threading, so +the needs of libguile itself should be considered. Other +considerations are how any new interface interacts with error handling +and reporting; whether a new interface is convenient to use from C; +whether a new interface should also be available to Scheme code. + +Discussion +========== + +Proposal +========