Installation
-
Stabilizers currently require the MLton sources, this should be fixed by the next release
License
-
Stabilizers are released under the MLton License
Instructions
-
Download and build a source copy of MLton
-
Extract the tar.gz file attached to this wiki page
-
Some examples are provided in the "examples/" sub directory, more examples will be added to this page in the following week
Bug reports / Suggestions
-
Please send any errors you encounter to schatzp and lziarek at cs.purdue.edu
-
We are looking to expand the usability of stabilizers
-
Please send any suggestions and desired functionality to the above email addresses
Note
-
This is an alpha release. We expect to have another release shortly with added functionality soon
-
More documentation, such as signatures and descriptions of functionality, will be forthcoming
Documentation
signature STABLE = sig type checkpoint val stable: ('a -> 'b) -> ('a -> 'b) val stabilize: unit -> 'a val stableCP: (('a -> 'b) * (unit -> unit)) -> (('a -> 'b) * checkpoint) val stabilizeCP: checkpoint -> unit val unmonitoredAssign: ('a ref * 'a) -> unit val monitoredAssign: ('a ref * 'a) -> unit end
Stable provides functions to manage stable sections.
-
type checkpoint
handle used to stabilize contexts other than the current one. -
stable f
returns a function identical to f that will execute within a stable section. -
stabilize ()
unrolls the effects made up to the current context to at least the nearest enclosing {{stable}}} section. These effects may have propagated to other threads, so all affected threads are returned to a globally consistent previous state. The return is undefined because control cannot resume after stabilize is called. -
stableCP (f, comp)
returns a function f' and checkpoint tag cp. Function f' is identical to f but when applied will execute within a stable section. comp will be executed if f' is later stabilized. cp is used by stabilizeCP to stabilize a given checkpoint. -
stabilizeCP cp
same as stabilize except that the (possibly current) checkpoint to stabilize is provided. -
unmonitoredAssign (r, v)
standard assignment (:=). The version of CML distributed rebinds := to a monitored version so interesting effects can be recorded. -
monitoredAssign (r, v)
the assignment operator that should be used in programs that use stabilizers. := is rebound to this by including CML.