Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / localhost / Credits
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <meta name="generator" content="AsciiDoc 8.6.9">
6 <title>Credits</title>
7 <link rel="stylesheet" href="./asciidoc.css" type="text/css">
8 <link rel="stylesheet" href="./pygments.css" type="text/css">
9
10
11 <script type="text/javascript" src="./asciidoc.js"></script>
12 <script type="text/javascript">
13 /*<![CDATA[*/
14 asciidoc.install();
15 /*]]>*/
16 </script>
17 <link rel="stylesheet" href="./mlton.css" type="text/css">
18 </head>
19 <body class="article">
20 <div id="banner">
21 <div id="banner-home">
22 <a href="./Home">MLton 20180207</a>
23 </div>
24 </div>
25 <div id="header">
26 <h1>Credits</h1>
27 </div>
28 <div id="content">
29 <div id="preamble">
30 <div class="sectionbody">
31 <div class="paragraph"><p>MLton was designed and implemented by HenryCejtin,
32 MatthewFluet, SureshJagannathan, and <a href="StephenWeeks">StephenWeeks</a>.</p></div>
33 <div class="ulist"><ul>
34 <li>
35 <p>
36 <a href="HenryCejtin">HenryCejtin</a> wrote the <span class="monospaced">IntInf</span> implementation, the original
37 profiler, the original man pages, the <span class="monospaced">.spec</span> files for the RPMs,
38 and lots of little hacks to speed stuff up.
39 </p>
40 </li>
41 <li>
42 <p>
43 <a href="MatthewFluet">MatthewFluet</a> implemented the X86 and AMD64 native code generators,
44 ported <span class="monospaced">mlprof</span> to work with the native code generator, did a lot
45 of work on the SSA optimizer, both adding new optimizations and
46 improving or porting existing optimizations, updated the
47 <a href="BasisLibrary">Basis Library</a> implementation, ported
48 <a href="ConcurrentML">ConcurrentML</a> and <a href="MLNLFFI">ML-NLFFI</a> to MLton, implemented the
49 <a href="MLBasis"> ML Basis system</a>, ported MLton to 64-bit platforms,
50 and currently leads the project.
51 </p>
52 </li>
53 <li>
54 <p>
55 <a href="SureshJagannathan">SureshJagannathan</a> implemented some early inlining and uncurrying
56 optimizations.
57 </p>
58 </li>
59 <li>
60 <p>
61 <a href="StephenWeeks">StephenWeeks</a> implemented most of the original version of MLton, and
62 continues to keep his fingers in most every part.
63 </p>
64 </li>
65 </ul></div>
66 <div class="paragraph"><p>Many people have helped us over the years. Here is an alphabetical
67 list.</p></div>
68 <div class="ulist"><ul>
69 <li>
70 <p>
71 <a href="JesperLouisAndersen">JesperLouisAndersen</a> sent several patches to improve the runtime on
72 FreeBSD and ported MLton to run on NetBSD and OpenBSD.
73 </p>
74 </li>
75 <li>
76 <p>
77 <a href="JohnnyAndersen">JohnnyAndersen</a> implemented <span class="monospaced">BinIO</span>, modified MLton so it could
78 cross compile to MinGW, and provided useful discussion about
79 cross-compilation.
80 </p>
81 </li>
82 <li>
83 <p>
84 Alexander Abushkevich extended support for OpenBSD.
85 </p>
86 </li>
87 <li>
88 <p>
89 Ross Bayer added the <span class="monospaced">-keep ast</span> compile-time option and experimented with
90 porting the build system to CMake.
91 </p>
92 </li>
93 <li>
94 <p>
95 Kevin Bradley added initial support for <a href="SuccessorML">SuccessorML</a> features.
96 </p>
97 </li>
98 <li>
99 <p>
100 Bryan Camp added <span class="monospaced">-disable-pass _regex_</span> and <span class="monospaced">enable-pass _regex_</span> compile
101 options to generalize <span class="monospaced">-drop-pass _regex_</span> and added <span class="monospaced">Array_copyArray</span> and
102 <span class="monospaced">Array_copyVector</span> primitives.
103 </p>
104 </li>
105 <li>
106 <p>
107 Jason Carr added a parser combinator library and a parser for the <a href="SXML">SXML</a>
108 IR, extended compilation to start with a <span class="monospaced">.sxml</span> file, and experimented with
109 alternate control-flow analyses for <a href="ClosureConvert"> closure conversion</a>.
110 </p>
111 </li>
112 <li>
113 <p>
114 Christopher Cramer contributed support for additional
115 <span class="monospaced">Posix.ProcEnv.sysconf</span> variables, performance improvements for
116 <span class="monospaced">String.concatWith</span>, and Debian packaging.
117 </p>
118 </li>
119 <li>
120 <p>
121 Alain Deutsch and
122 <a href="http://www.polyspace.com/">PolySpace Technologies</a> provided many bug
123 fixes and runtime system improvements, code to help the Sparc/Solaris
124 port, and funded a number of improvements to MLton.
125 </p>
126 </li>
127 <li>
128 <p>
129 Armando Doval updated <span class="monospaced">mlnlffigen</span> to warn and skip functions with
130 <span class="monospaced">struct</span>/<span class="monospaced">union</span> arguments.
131 </p>
132 </li>
133 <li>
134 <p>
135 Martin Elsman provided helpful discussions in the development of
136 the <a href="MLBasis">ML Basis system</a>.
137 </p>
138 </li>
139 <li>
140 <p>
141 Brent Fulgham ported MLton most of the way to MinGW.
142 </p>
143 </li>
144 <li>
145 <p>
146 <a href="AdamGoode">AdamGoode</a> provided a script to build the PDF MLton Guide and
147 maintains the
148 <a href="https://admin.fedoraproject.org/pkgdb/acls/name/mlton">Fedora</a>
149 packages.
150 </p>
151 </li>
152 <li>
153 <p>
154 Simon Helsen provided bug reports, suggestions, and helpful
155 discussions.
156 </p>
157 </li>
158 <li>
159 <p>
160 Joe Hurd provided useful discussion and feedback on source-level
161 profiling.
162 </p>
163 </li>
164 <li>
165 <p>
166 <a href="VesaKarvonen">VesaKarvonen</a> contributed <span class="monospaced">esml-mode.el</span> and <span class="monospaced">esml-mlb-mode.el</span> (see <a href="Emacs">Emacs</a>),
167 contributed patches for improving match warnings,
168 contributed <span class="monospaced">esml-du-mlton.el</span> and extended def-use output to include types of variable definitions (see <a href="EmacsDefUseMode">EmacsDefUseMode</a>), and
169 improved constant folding of floating-point operations.
170 </p>
171 </li>
172 <li>
173 <p>
174 Richard Kelsey provided helpful discussions.
175 </p>
176 </li>
177 <li>
178 <p>
179 Ville Laurikari ported MLton to IA64/HPUX, HPPA/HPUX, PowerPC/AIX, PowerPC64/AIX.
180 </p>
181 </li>
182 <li>
183 <p>
184 Brian Leibig implemented the <a href="LLVMCodegen">LLVMCodegen</a>.
185 </p>
186 </li>
187 <li>
188 <p>
189 Geoffrey Mainland helped with FreeBSD packaging.
190 </p>
191 </li>
192 <li>
193 <p>
194 Eric McCorkle ported MLton to Intel Mac.
195 </p>
196 </li>
197 <li>
198 <p>
199 <a href="TomMurphy">TomMurphy</a> wrote the original version of <span class="monospaced">MLton.Syslog</span> as part
200 of his <span class="monospaced">mlftpd</span> project, and has sent many useful bug reports and
201 suggestions.
202 </p>
203 </li>
204 <li>
205 <p>
206 Michael Neumann helped to patch the runtime to compile under
207 FreeBSD.
208 </p>
209 </li>
210 <li>
211 <p>
212 Barak Pearlmutter built the original
213 <a href="http://packages.debian.org/mlton">Debian package</a> for MLton, and
214 helped us to take over the process.
215 </p>
216 </li>
217 <li>
218 <p>
219 Filip Pizlo ported MLton to (PowerPC) Darwin.
220 </p>
221 </li>
222 <li>
223 <p>
224 Vedant Raiththa extended the <a href="ForeignFunctionInterface">ForeignFunctionInterface</a> with support for
225 <span class="monospaced">pure</span> and <span class="monospaced">impure</span> attributes to <span class="monospaced">_import</span>.
226 </p>
227 </li>
228 <li>
229 <p>
230 Krishna Ravikumar added initial support for vector expressions and the
231 <span class="monospaced">Vector_vector</span> primitive.
232 </p>
233 </li>
234 <li>
235 <p>
236 John Reppy assisted in porting MLton to Intel Mac.
237 </p>
238 </li>
239 <li>
240 <p>
241 Sam Rushing ported MLton to FreeBSD.
242 </p>
243 </li>
244 <li>
245 <p>
246 Rob Simmons refactored the array and vector implementation in the
247 <a href="BasisLibrary"> Basis Library:</a> into a primitive implementation (using
248 <span class="monospaced">SeqInt.int</span> for indexing) and a wrapper implementation (using the default
249 <span class="monospaced">Int.int</span> for indexing).
250 </p>
251 </li>
252 <li>
253 <p>
254 Jeffrey Mark Siskind provided helpful discussions and inspiration
255 with his Stalin Scheme compiler.
256 </p>
257 </li>
258 <li>
259 <p>
260 Matthew Surawski added <a href="LoopUnroll">LoopUnroll</a> and <a href="LoopUnswitch">LoopUnswitch</a> SSA optimizations.
261 </p>
262 </li>
263 <li>
264 <p>
265 <a href="WesleyTerpstra">WesleyTerpstra</a> added support for <span class="monospaced">MLton.Process.create</span>, made
266 a number of contributions to the <a href="ForeignFunctionInterface">ForeignFunctionInterface</a>,
267 contributed a number of runtime system patches,
268 added support for compiling to a <a href="LibrarySupport">C library</a>,
269 ported MLton to <a href="http://mingw.org">MinGW</a> and all <a href="http://packages.debian.org/search?keywords=mlton&amp;searchon=names&amp;suite=all&amp;section=all">Debian</a> supported architectures with <a href="CrossCompiling">cross-compiling</a> support,
270 and maintains the <a href="http://packages.debian.org/search?keywords=mlton&amp;searchon=names&amp;suite=all&amp;section=all">Debian</a> and <a href="http://mingw.org">MinGW</a> packages.
271 </p>
272 </li>
273 <li>
274 <p>
275 Maksim Yegorov added rudimentary support for <span class="monospaced">./configure</span> and other
276 improvements to the build system and implemented the <a href="ShareZeroVec">ShareZeroVec</a> SSA
277 optimization.
278 </p>
279 </li>
280 <li>
281 <p>
282 Luke Ziarek assisted in porting MLton to (PowerPC) Darwin.
283 </p>
284 </li>
285 </ul></div>
286 <div class="paragraph"><p>We have also benefited from other software development tools and
287 used code from other sources.</p></div>
288 <div class="ulist"><ul>
289 <li>
290 <p>
291 MLton was developed using
292 <a href="SMLNJ">Standard ML of New Jersey</a> and the
293 <a href="CompilationManager">Compilation Manager (CM)</a>
294 </p>
295 </li>
296 <li>
297 <p>
298 MLton&#8217;s lexer (<span class="monospaced">mlton/frontend/ml.lex</span>), parser
299 (<span class="monospaced">mlton/frontend/ml.grm</span>), and precedence-parser
300 (<span class="monospaced">mlton/elaborate/precedence-parse.fun</span>) are modified versions of
301 code from SML/NJ.
302 </p>
303 </li>
304 <li>
305 <p>
306 The MLton <a href="BasisLibrary">Basis Library</a> implementation of
307 conversions between binary and decimal representations of reals uses
308 David Gay&#8217;s <a href="http://www.netlib.org/fp/">gdtoa</a> library.
309 </p>
310 </li>
311 <li>
312 <p>
313 The MLton <a href="BasisLibrary">Basis Library</a> implementation uses
314 modified versions of portions of the the SML/NJ Basis Library
315 implementation modules <span class="monospaced">OS.IO</span>, <span class="monospaced">Posix.IO</span>, <span class="monospaced">Process</span>,
316 and <span class="monospaced">Unix</span>.
317 </p>
318 </li>
319 <li>
320 <p>
321 The MLton <a href="BasisLibrary">Basis Library</a> implementation uses
322 modified versions of portions of the <a href="MLKit">ML Kit</a> Version 4.1.4
323 Basis Library implementation modules <span class="monospaced">Path</span>, <span class="monospaced">Time</span>, and
324 <span class="monospaced">Date</span>.
325 </p>
326 </li>
327 <li>
328 <p>
329 Many of the benchmarks come from the SML/NJ benchmark suite.
330 </p>
331 </li>
332 <li>
333 <p>
334 Many of the regression tests come from the ML Kit Version 4.1.4
335 distribution, which borrowed them from the
336 <a href="http://www.dina.kvl.dk/%7Esestoft/mosml.html">Moscow ML</a> distribution.
337 </p>
338 </li>
339 <li>
340 <p>
341 MLton uses the <a href="http://www.gnu.org/software/gmp/gmp.html">GNU multiprecision library</a> for its implementation of <span class="monospaced">IntInf</span>.
342 </p>
343 </li>
344 <li>
345 <p>
346 MLton&#8217;s implementation of <a href="MLLex"> mllex</a>, <a href="MLYacc"> mlyacc</a>,
347 the <a href="CKitLibrary">ckit Library</a>,
348 the <a href="MLLPTLibrary">ML-LPT Library</a>,
349 the <a href="MLRISCLibrary">MLRISC Library</a>,
350 the <a href="SMLNJLibrary">SML/NJ Library</a>,
351 <a href="ConcurrentML">Concurrent ML</a>,
352 mlnlffigen and <a href="MLNLFFI">ML-NLFFI</a>
353 are modified versions of code from SML/NJ.
354 </p>
355 </li>
356 </ul></div>
357 </div>
358 </div>
359 </div>
360 <div id="footnotes"><hr></div>
361 <div id="footer">
362 <div id="footer-text">
363 </div>
364 <div id="footer-badges">
365 </div>
366 </div>
367 </body>
368 </html>