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.