## 15 Credits

MLton was designed and implemented by Henry Cejtin, Matthew Fluet, Suresh Jagannathan, and Stephen Weeks.

- Henry Cejtin (`henry at sourcelight.com`) wrote the `IntInf` implementation, the original profiler, the original man pages, the `.spec` files for the RPMs, and lots of little hacks to speed stuff up.
- Matthew Fluet (`fluet at cs.cornell.edu`) implemented the X86 native code generator, ported `mlprof` 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, and updated the basis library implementation.
- Suresh Jagannathan (`suresh at cs.purdue.edu`) implemented some early inlining and uncurrying optimizations.
- Stephen Weeks (`sweeks at sweeks.com`) implemented most of the original version of MLton, and continues to keep his fingers in most every part.

Many people have helped us over the years. Here is an alphabetical list.

- Jesper Louis Andersen (`jlouis at mongers.org`) sent several patches to improve the runtime on FreeBSD and ported MLton to run on NetBSD.
- ÁNOQ of the Sun (`anoq at HardcoreProcessing.com`) implemented `BinIO`, modified MLton so it could cross compile to MinGW, and provided useful discussion about cross-compilation.
- Alain Deutsch (`deutsch at polyspace.com`) and PolySpace Technologies provided many bug fixes and runtime system improvements, as well as some code to help the Sparc port.
- Simon Helsen (`shelsen at acm.org`) has provided bug reports, suggestions, and helpful discussions.
- Joe Hurd (`joe.hurd at cl.cam.ac.uk`) provided useful discussion and feedback on source-level profiling.
- Richard Kelsey (`kelsey at research.nj.nec.com`) provided helpful discussions.
- Tom Murphy (`twm at andrew.cmu.edu`) wrote the original version of `MLton.Syslog` as part of his `mlftpd` project, and has sent many useful bug reports and suggestions.
- Michael Neumann (`uu9r at rz.uni-karlsruhe.de`) helped to patch the runtime to compile under FreeBSD.
- Barak Pearlmutter (`bap at cs.unm.edu`) built the original Debian packages for MLton, and helped us to take over the process.
- Sam Rushing (`rushing at nightmare.com`) ported MLton to FreeBSD.
- Jeffrey Mark Siskind (`qobi at purdue.edu`) provided helpful discussions and inspiration with his Stalin Scheme compiler.

We have also benefited from other software development tools and borrowed code from other sources.

- MLton was developed using Standard ML of New Jersey and the Compilation Manager (CM).
- MLton's lexer (`mlton/frontend/ml.lex`), parser (`mlton/frontend/ml.grm`), and precedence-parser (`mlton/elaborate/precedence-parse.fun`) are modified versions of code from the SML/NJ.
- MLton uses the SML/NJ library implementation of splay trees.
- The MLton basis library implementation of `Real.`{`fmt`, `fromDecimal`, `fromString`, `scan`, `toDecimal`, `toString`} uses David Gay's gdtoa library.
- The MLton basis library implementation uses modified versions of portions of the the SML/NJ basis library modules `OS.IO`, `Posix.IO`, `Process`, and `Unix`.
- The MLton basis library implementation uses modified versions of portions of the ML Kit Version 3 basis library modules `Path`, `Time`, and `Date`.
- Many of the benchmarks come from the SML/NJ benchmark suite.
- Many of the regression tests come from the ML Kit Version 3 distribution, which borrowed them from the Moscow ML distribution.
- MLton uses the GNU multiprecision library for its implementation of `IntInf`.