<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.10">
<title>Credits</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 20201002</a>
</div>
</div>
<div id="header">
<h1>Credits</h1>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph"><p>MLton was designed and implemented by HenryCejtin,
MatthewFluet, SureshJagannathan, and <a href="StephenWeeks">StephenWeeks</a>.</p></div>
<div class="ulist"><ul>
<li>
<p>
<a href="HenryCejtin">HenryCejtin</a> wrote the <span class="monospaced">IntInf</span> implementation, the original
 profiler, the original man pages, the <span class="monospaced">.spec</span> files for the RPMs,
 and lots of little hacks to speed stuff up.
</p>
</li>
<li>
<p>
<a href="MatthewFluet">MatthewFluet</a> implemented the X86 and AMD64 native code generators,
 ported <span class="monospaced">mlprof</span> to work with the native code generator, did a lot
 of work on the SSA optimizer, both adding new optimizations and
 improving or porting existing optimizations, updated the
 <a href="BasisLibrary">Basis Library</a> implementation, ported
 <a href="ConcurrentML">ConcurrentML</a> and <a href="MLNLFFI">ML-NLFFI</a> to MLton, implemented the
 <a href="MLBasis"> ML Basis system</a>, ported MLton to 64-bit platforms,
 and currently leads the project.
</p>
</li>
<li>
<p>
<a href="SureshJagannathan">SureshJagannathan</a> implemented some early inlining and uncurrying
 optimizations.
</p>
</li>
<li>
<p>
<a href="StephenWeeks">StephenWeeks</a> implemented most of the original version of MLton, and
 continues to keep his fingers in most every part.
</p>
</li>
</ul></div>
<div class="paragraph"><p>Many people have helped us over the years.  Here is an alphabetical
list.</p></div>
<div class="ulist"><ul>
<li>
<p>
<a href="JesperLouisAndersen">JesperLouisAndersen</a> sent several patches to improve the runtime on
 FreeBSD and ported MLton to run on NetBSD and OpenBSD.
</p>
</li>
<li>
<p>
<a href="JohnnyAndersen">JohnnyAndersen</a> implemented <span class="monospaced">BinIO</span>, modified MLton so it could
 cross compile to MinGW, and provided useful discussion about
 cross-compilation.
</p>
</li>
<li>
<p>
Alexander Abushkevich extended support for OpenBSD.
</p>
</li>
<li>
<p>
Ross Bayer added the <span class="monospaced">-keep ast</span> compile-time option and experimented with
 porting the build system to CMake.
</p>
</li>
<li>
<p>
Kevin Bradley added initial support for <a href="SuccessorML">SuccessorML</a> features.
</p>
</li>
<li>
<p>
Bryan Camp added <span class="monospaced">-disable-pass _regex_</span> and <span class="monospaced">enable-pass _regex_</span> compile
 options to generalize <span class="monospaced">-drop-pass _regex_</span> and added <span class="monospaced">Array_copyArray</span> and
 <span class="monospaced">Array_copyVector</span> primitives.
</p>
</li>
<li>
<p>
Jason Carr added a parser combinator library and a parser for the <a href="SXML">SXML</a>
 IR, extended compilation to start with a <span class="monospaced">.sxml</span> file, experimented with
 alternate control-flow analyses for <a href="ClosureConvert"> closure conversion</a>,
 added new <a href="DuplicateGlobals">DuplicateGlobals</a> and <a href="SplitTypes">SplitTypes</a> <a href="SSA">SSA</a> optimization passes,
 improved <a href="RSSAShrink">RSSAShrink</a>, added a new <a href="BounceVars">BounceVars</a> <a href="RSSA">RSSA</a> optimization pass,
 added <span class="monospaced">-llvm-aamd {none|tbaa}</span> to control including alias-analysis metadata
 when compiling with LLVM, implemented static allocation and initialization of
 global objects.
</p>
</li>
<li>
<p>
Christopher Cramer contributed support for additional
 <span class="monospaced">Posix.ProcEnv.sysconf</span> variables, performance improvements for
 <span class="monospaced">String.concatWith</span>, and Debian packaging.
</p>
</li>
<li>
<p>
Alain Deutsch and
 <a href="http://www.polyspace.com/">PolySpace Technologies</a> provided many bug
 fixes and runtime system improvements, code to help the Sparc/Solaris
 port, and funded a number of improvements to MLton.
</p>
</li>
<li>
<p>
Armando Doval updated <span class="monospaced">mlnlffigen</span> to warn and skip functions with
 <span class="monospaced">struct</span>/<span class="monospaced">union</span> arguments.
</p>
</li>
<li>
<p>
Martin Elsman provided helpful discussions in the development of
 the <a href="MLBasis">ML Basis system</a>.
</p>
</li>
<li>
<p>
Brent Fulgham ported MLton most of the way to MinGW.
</p>
</li>
<li>
<p>
<a href="AdamGoode">AdamGoode</a> provided a script to build the PDF MLton Guide and
 maintains the
 <a href="https://admin.fedoraproject.org/pkgdb/acls/name/mlton">Fedora</a>
 packages.
</p>
</li>
<li>
<p>
Simon Helsen provided bug reports, suggestions, and helpful
 discussions.
</p>
</li>
<li>
<p>
Joe Hurd provided useful discussion and feedback on source-level
 profiling.
</p>
</li>
<li>
<p>
Manan Joshi added a parser for the <a href="SSA2">SSA2</a> IR.
</p>
</li>
<li>
<p>
<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>),
 contributed patches for improving match warnings,
 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
 improved constant folding of floating-point operations.
</p>
</li>
<li>
<p>
Richard Kelsey provided helpful discussions.
</p>
</li>
<li>
<p>
Ville Laurikari ported MLton to IA64/HPUX, HPPA/HPUX, PowerPC/AIX, PowerPC64/AIX.
</p>
</li>
<li>
<p>
Brian Leibig implemented the <a href="LLVMCodegen">LLVMCodegen</a>.
</p>
</li>
<li>
<p>
Geoffrey Mainland helped with FreeBSD packaging.
</p>
</li>
<li>
<p>
Eric McCorkle ported MLton to Intel Mac.
</p>
</li>
<li>
<p>
Daman Morris introduced new <span class="monospaced">Overflow</span>-checking primitives and removed old
 <span class="monospaced">Overflow</span>-checking primitives and special-case code required (e.g., <span class="monospaced">Arith</span>
 transfers in IRs) to support them.
</p>
</li>
<li>
<p>
<a href="TomMurphy">TomMurphy</a> wrote the original version of <span class="monospaced">MLton.Syslog</span> as part
 of his <span class="monospaced">mlftpd</span> project, and has sent many useful bug reports and
 suggestions.
</p>
</li>
<li>
<p>
Michael Neumann helped to patch the runtime to compile under
 FreeBSD.
</p>
</li>
<li>
<p>
Barak Pearlmutter built the original
 <a href="http://packages.debian.org/mlton">Debian package</a> for MLton, and
 helped us to take over the process.
</p>
</li>
<li>
<p>
Filip Pizlo ported MLton to (PowerPC) Darwin.
</p>
</li>
<li>
<p>
Vedant Raiththa extended the <a href="ForeignFunctionInterface">ForeignFunctionInterface</a> with support for
 <span class="monospaced">pure</span> and <span class="monospaced">impure</span> attributes to <span class="monospaced">_import</span>.
</p>
</li>
<li>
<p>
Krishna Ravikumar added initial support for vector expressions and the
 <span class="monospaced">Vector_vector</span> primitive.
</p>
</li>
<li>
<p>
James Reilly added a parser for the <a href="SSA">SSA</a> IR.
</p>
</li>
<li>
<p>
John Reppy assisted in porting MLton to Intel Mac.
</p>
</li>
<li>
<p>
Sam Rushing ported MLton to FreeBSD.
</p>
</li>
<li>
<p>
Rob Simmons refactored the array and vector implementation in the
 <a href="BasisLibrary"> Basis Library:</a> into a primitive implementation (using
 <span class="monospaced">SeqInt.int</span> for indexing) and a wrapper implementation (using the default
 <span class="monospaced">Int.int</span> for indexing).
</p>
</li>
<li>
<p>
Jeffrey Mark Siskind provided helpful discussions and inspiration
 with his Stalin Scheme compiler.
</p>
</li>
<li>
<p>
Matthew Surawski added <a href="LoopUnroll">LoopUnroll</a> and <a href="LoopUnswitch">LoopUnswitch</a> SSA optimizations.
</p>
</li>
<li>
<p>
<a href="WesleyTerpstra">WesleyTerpstra</a> added support for <span class="monospaced">MLton.Process.create</span>, made
 a number of contributions to the <a href="ForeignFunctionInterface">ForeignFunctionInterface</a>,
 contributed a number of runtime system patches,
 added support for compiling to a <a href="LibrarySupport">C library</a>,
 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,
 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.
</p>
</li>
<li>
<p>
Maksim Yegorov added rudimentary support for <span class="monospaced">./configure</span> and other
 improvements to the build system and implemented the <a href="ShareZeroVec">ShareZeroVec</a> SSA
 optimization.
</p>
</li>
<li>
<p>
Luke Ziarek assisted in porting MLton to (PowerPC) Darwin.
</p>
</li>
</ul></div>
<div class="paragraph"><p>We have also benefited from other software development tools and
used code from other sources.</p></div>
<div class="ulist"><ul>
<li>
<p>
MLton was developed using
 <a href="SMLNJ">Standard ML of New Jersey</a> and the
 <a href="CompilationManager">Compilation Manager (CM)</a>
</p>
</li>
<li>
<p>
MLton&#8217;s lexer (<span class="monospaced">mlton/frontend/ml.lex</span>), parser
 (<span class="monospaced">mlton/frontend/ml.grm</span>), and precedence-parser
 (<span class="monospaced">mlton/elaborate/precedence-parse.fun</span>) are modified versions of
 code from SML/NJ.
</p>
</li>
<li>
<p>
The MLton <a href="BasisLibrary">Basis Library</a> implementation of
 conversions between binary and decimal representations of reals uses
 David Gay&#8217;s <a href="http://www.netlib.org/fp/">gdtoa</a> library.
</p>
</li>
<li>
<p>
The MLton <a href="BasisLibrary">Basis Library</a> implementation uses
 modified versions of  portions of the the SML/NJ Basis Library
 implementation modules <span class="monospaced">OS.IO</span>, <span class="monospaced">Posix.IO</span>, <span class="monospaced">Process</span>,
 and <span class="monospaced">Unix</span>.
</p>
</li>
<li>
<p>
The MLton <a href="BasisLibrary">Basis Library</a> implementation uses
 modified versions of portions of the <a href="MLKit">ML Kit</a> Version 4.1.4
 Basis Library implementation modules <span class="monospaced">Path</span>, <span class="monospaced">Time</span>, and
 <span class="monospaced">Date</span>.
</p>
</li>
<li>
<p>
Many of the benchmarks come from the SML/NJ benchmark suite.
</p>
</li>
<li>
<p>
Many of the regression tests come from the ML Kit Version 4.1.4
 distribution, which borrowed them from the
 <a href="http://www.dina.kvl.dk/%7Esestoft/mosml.html">Moscow ML</a> distribution.
</p>
</li>
<li>
<p>
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>.
</p>
</li>
<li>
<p>
MLton&#8217;s implementation of <a href="MLLex"> mllex</a>, <a href="MLYacc"> mlyacc</a>,
 the <a href="CKitLibrary">ckit Library</a>,
 the <a href="MLLPTLibrary">ML-LPT Library</a>,
 the <a href="MLRISCLibrary">MLRISC Library</a>,
 the <a href="SMLNJLibrary">SML/NJ Library</a>,
 <a href="ConcurrentML">Concurrent ML</a>,
 mlnlffigen and <a href="MLNLFFI">ML-NLFFI</a>
 are modified versions of code from SML/NJ.
</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>
