File: Stabilizers

package info (click to toggle)
mlton 20130715-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 60,900 kB
  • ctags: 69,386
  • sloc: xml: 34,418; ansic: 17,399; lisp: 2,879; makefile: 1,605; sh: 1,254; pascal: 256; python: 143; asm: 97
file content (223 lines) | stat: -rw-r--r-- 9,507 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.8">
<title>Stabilizers</title>
<link rel="stylesheet" href="./asciidoc.css" type="text/css">
<link rel="stylesheet" href="./pygments.css" type="text/css">


<script type="text/javascript" src="./asciidoc.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
asciidoc.install();
/*]]>*/
</script>
<link rel="stylesheet" href="./mlton.css" type="text/css"/>
</head>
<body class="article">
<div id="banner">
<div id="banner-home">
<a href="./Home">MLton 20130715</a>
</div>
</div>
<div id="header">
<h1>Stabilizers</h1>
</div>
<div id="content">
<div class="sect1">
<h2 id="_installation">Installation</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Stabilizers currently require the MLton sources, this should be fixed by the next release
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_license">License</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Stabilizers are released under the MLton License
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_instructions">Instructions</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Download and build a source copy of MLton
</p>
</li>
<li>
<p>
Extract the tar.gz file attached to this page
</p>
</li>
<li>
<p>
Some examples are provided in the "examples/" sub directory, more examples will be added to this page in the following week
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_bug_reports_suggestions">Bug reports / Suggestions</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Please send any errors you encounter to schatzp and lziarek at cs.purdue.edu
</p>
</li>
<li>
<p>
We are looking to expand the usability of stabilizers
</p>
</li>
<li>
<p>
Please send any suggestions and desired functionality to the above email addresses
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_note">Note</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
This is an alpha release. We expect to have another release shortly with added functionality soon
</p>
</li>
<li>
<p>
More documentation, such as signatures and descriptions of functionality, will be forthcoming
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_documentation">Documentation</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content"><div class="highlight"><pre><span class="k">signature</span><span class="w"> </span><span class="n">STABLE</span><span class="w"> </span><span class="p">=</span><span class="w"></span>
<span class="w">  </span><span class="k">sig</span><span class="w"></span>
<span class="w">     </span><span class="k">type</span><span class="w"> </span><span class="n">checkpoint</span><span class="w"></span>

<span class="w">     </span><span class="k">val</span><span class="w"> </span><span class="n">stable</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">&#39;a</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">&#39;b</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="p">(</span><span class="n">&#39;a</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">&#39;b</span><span class="p">)</span><span class="w"></span>
<span class="w">     </span><span class="k">val</span><span class="w"> </span><span class="n">stabilize</span><span class="p">:</span><span class="w"> </span><span class="n">unit</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">&#39;a</span><span class="w"></span>

<span class="w">     </span><span class="k">val</span><span class="w"> </span><span class="n">stableCP</span><span class="p">:</span><span class="w"> </span><span class="p">((</span><span class="n">&#39;a</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">&#39;b</span><span class="p">)</span><span class="w"> </span><span class="n">*</span><span class="w"> </span><span class="p">(</span><span class="n">unit</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">unit</span><span class="p">))</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"></span>
<span class="w">                    </span><span class="p">((</span><span class="n">&#39;a</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">&#39;b</span><span class="p">)</span><span class="w"> </span><span class="n">*</span><span class="w">  </span><span class="n">checkpoint</span><span class="p">)</span><span class="w"></span>
<span class="w">     </span><span class="k">val</span><span class="w"> </span><span class="n">stabilizeCP</span><span class="p">:</span><span class="w"> </span><span class="n">checkpoint</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">unit</span><span class="w"></span>

<span class="w">     </span><span class="k">val</span><span class="w"> </span><span class="n">unmonitoredAssign</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">&#39;a</span><span class="w"> </span><span class="n">ref</span><span class="w"> </span><span class="n">*</span><span class="w"> </span><span class="n">&#39;a</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">unit</span><span class="w"></span>
<span class="w">     </span><span class="k">val</span><span class="w"> </span><span class="n">monitoredAssign</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">&#39;a</span><span class="w"> </span><span class="n">ref</span><span class="w"> </span><span class="n">*</span><span class="w"> </span><span class="n">&#39;a</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="n">unit</span><span class="w"></span>
<span class="w">  </span><span class="k">end</span><span class="w"></span>
</pre></div></div></div>
<div class="paragraph"><p><span class="monospaced">Stable</span> provides functions to manage stable sections.</p></div>
<div class="ulist"><ul>
<li>
<p>
<span class="monospaced">type checkpoint</span>
</p>
<div class="paragraph"><p>handle used to stabilize contexts other than the current one.</p></div>
</li>
<li>
<p>
<span class="monospaced">stable f</span>
</p>
<div class="paragraph"><p>returns a function identical to <span class="monospaced">f</span> that will execute within a stable section.</p></div>
</li>
<li>
<p>
<span class="monospaced">stabilize ()</span>
</p>
<div class="paragraph"><p>unrolls the effects made up to the current context to at least the
nearest enclosing <em>stable</em> 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.</p></div>
</li>
<li>
<p>
<span class="monospaced">stableCP (f, comp)</span>
</p>
<div class="paragraph"><p>returns a function <span class="monospaced">f'</span> and checkpoint tag <span class="monospaced">cp</span>.  Function <span class="monospaced">f'</span> is
identical to <span class="monospaced">f</span> but when applied will execute within a stable
section.  <span class="monospaced">comp</span> will be executed if <span class="monospaced">f'</span> is later stabilized.  <span class="monospaced">cp</span>
is used by <span class="monospaced">stabilizeCP</span> to stabilize a given checkpoint.</p></div>
</li>
<li>
<p>
<span class="monospaced">stabilizeCP cp</span>
</p>
<div class="paragraph"><p>same as stabilize except that the (possibly current) checkpoint to
stabilize is provided.</p></div>
</li>
<li>
<p>
<span class="monospaced">unmonitoredAssign (r, v)</span>
</p>
<div class="paragraph"><p>standard assignment (<span class="monospaced">:=</span>).  The version of CML distributed rebinds
<span class="monospaced">:=</span> to a monitored version so interesting effects can be recorded.</p></div>
</li>
<li>
<p>
<span class="monospaced">monitoredAssign (r, v)</span>
</p>
<div class="paragraph"><p>the assignment operator that should be used in programs that use
stabilizers. <span class="monospaced">:=</span> is rebound to this by including CML.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_download">Download</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
<a href="Stabilizers.attachments/stabilizers_alpha_2006-10-09.tar.gz"><span class="monospaced">stabilizers_alpha_2006-10-09.tar.gz</span></a>
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_also_see">Also see</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
<a href="References#ZiarekEtAl06">ZiarekEtAl06</a>
</p>
</li>
</ul></div>
</div>
</div>
</div>
<div id="footnotes"><hr></div>
<div id="footer">
<div id="footer-text">
</div>
<div id="footer-badges">
</div>
</div>
</body>
</html>