4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <meta name="generator" content="AsciiDoc 8.6.9">
7 <link rel="stylesheet" href="./asciidoc.css" type="text/css">
8 <link rel="stylesheet" href="./pygments.css" type="text/css">
11 <script type="text/javascript" src="./asciidoc.js"></script>
12 <script type="text/javascript">
17 <link rel="stylesheet" href="./mlton.css" type="text/css">
19 <body class="article">
21 <div id="banner-home">
22 <a href="./Home">MLton 20180207</a>
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>
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.
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.
55 <a href="SureshJagannathan">SureshJagannathan</a> implemented some early inlining and uncurrying
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.
66 <div class="paragraph"><p>Many people have helped us over the years. Here is an alphabetical
68 <div class="ulist"><ul>
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.
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
84 Alexander Abushkevich extended support for OpenBSD.
89 Ross Bayer added the <span class="monospaced">-keep ast</span> compile-time option and experimented with
90 porting the build system to CMake.
95 Kevin Bradley added initial support for <a href="SuccessorML">SuccessorML</a> features.
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.
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>.
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.
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.
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.
135 Martin Elsman provided helpful discussions in the development of
136 the <a href="MLBasis">ML Basis system</a>.
141 Brent Fulgham ported MLton most of the way to MinGW.
146 <a href="AdamGoode">AdamGoode</a> provided a script to build the PDF MLton Guide and
148 <a href="https://admin.fedoraproject.org/pkgdb/acls/name/mlton">Fedora</a>
154 Simon Helsen provided bug reports, suggestions, and helpful
160 Joe Hurd provided useful discussion and feedback on source-level
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.
174 Richard Kelsey provided helpful discussions.
179 Ville Laurikari ported MLton to IA64/HPUX, HPPA/HPUX, PowerPC/AIX, PowerPC64/AIX.
184 Brian Leibig implemented the <a href="LLVMCodegen">LLVMCodegen</a>.
189 Geoffrey Mainland helped with FreeBSD packaging.
194 Eric McCorkle ported MLton to Intel Mac.
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
206 Michael Neumann helped to patch the runtime to compile under
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.
219 Filip Pizlo ported MLton to (PowerPC) Darwin.
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>.
230 Krishna Ravikumar added initial support for vector expressions and the
231 <span class="monospaced">Vector_vector</span> primitive.
236 John Reppy assisted in porting MLton to Intel Mac.
241 Sam Rushing ported MLton to FreeBSD.
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).
254 Jeffrey Mark Siskind provided helpful discussions and inspiration
255 with his Stalin Scheme compiler.
260 Matthew Surawski added <a href="LoopUnroll">LoopUnroll</a> and <a href="LoopUnswitch">LoopUnswitch</a> SSA optimizations.
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&searchon=names&suite=all&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&searchon=names&suite=all&section=all">Debian</a> and <a href="http://mingw.org">MinGW</a> packages.
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
282 Luke Ziarek assisted in porting MLton to (PowerPC) Darwin.
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>
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>
298 MLton’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
306 The MLton <a href="BasisLibrary">Basis Library</a> implementation of
307 conversions between binary and decimal representations of reals uses
308 David Gay’s <a href="http://www.netlib.org/fp/">gdtoa</a> library.
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>.
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>.
329 Many of the benchmarks come from the SML/NJ benchmark suite.
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.
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>.
346 MLton’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.
360 <div id="footnotes"><hr></div>
362 <div id="footer-text">
364 <div id="footer-badges">