Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / src / Credits.adoc
CommitLineData
7f918cf1
CE
1Credits
2=======
3
4MLton was designed and implemented by HenryCejtin,
5MatthewFluet, SureshJagannathan, and <:StephenWeeks:>.
6
7 * <:HenryCejtin:> wrote the `IntInf` implementation, the original
8 profiler, the original man pages, the `.spec` files for the RPMs,
9 and lots of little hacks to speed stuff up.
10
11 * <:MatthewFluet:> implemented the X86 and AMD64 native code generators,
12 ported `mlprof` to work with the native code generator, did a lot
13 of work on the SSA optimizer, both adding new optimizations and
14 improving or porting existing optimizations, updated the
15 <:BasisLibrary:Basis Library> implementation, ported
16 <:ConcurrentML:> and <:MLNLFFI:ML-NLFFI> to MLton, implemented the
17 <:MLBasis: ML Basis system>, ported MLton to 64-bit platforms,
18 and currently leads the project.
19
20 * <:SureshJagannathan:> implemented some early inlining and uncurrying
21 optimizations.
22
23 * <:StephenWeeks:> implemented most of the original version of MLton, and
24 continues to keep his fingers in most every part.
25
26Many people have helped us over the years. Here is an alphabetical
27list.
28
29 * <:JesperLouisAndersen:> sent several patches to improve the runtime on
30 FreeBSD and ported MLton to run on NetBSD and OpenBSD.
31
32 * <:JohnnyAndersen:> implemented `BinIO`, modified MLton so it could
33 cross compile to MinGW, and provided useful discussion about
34 cross-compilation.
35
36 * Alexander Abushkevich extended support for OpenBSD.
37
38 * Ross Bayer added the `-keep ast` compile-time option and experimented with
39 porting the build system to CMake.
40
41 * Kevin Bradley added initial support for <:SuccessorML:> features.
42
43 * Bryan Camp added `-disable-pass _regex_` and `enable-pass _regex_` compile
44 options to generalize `-drop-pass _regex_` and added `Array_copyArray` and
45 `Array_copyVector` primitives.
46
47 * Jason Carr added a parser combinator library and a parser for the <:SXML:>
48 IR, extended compilation to start with a `.sxml` file, and experimented with
49 alternate control-flow analyses for <:ClosureConvert: closure conversion>.
50
51 * Christopher Cramer contributed support for additional
52 `Posix.ProcEnv.sysconf` variables, performance improvements for
53 `String.concatWith`, and Debian packaging.
54
55 * Alain Deutsch and
56 http://www.polyspace.com/[PolySpace Technologies] provided many bug
57 fixes and runtime system improvements, code to help the Sparc/Solaris
58 port, and funded a number of improvements to MLton.
59
60 * Armando Doval updated `mlnlffigen` to warn and skip functions with
61 `struct`/`union` arguments.
62
63 * Martin Elsman provided helpful discussions in the development of
64 the <:MLBasis:ML Basis system>.
65
66 * Brent Fulgham ported MLton most of the way to MinGW.
67
68 * <:AdamGoode:> provided a script to build the PDF MLton Guide and
69 maintains the
70 https://admin.fedoraproject.org/pkgdb/acls/name/mlton[Fedora]
71 packages.
72
73 * Simon Helsen provided bug reports, suggestions, and helpful
74 discussions.
75
76 * Joe Hurd provided useful discussion and feedback on source-level
77 profiling.
78
79 * <:VesaKarvonen:> contributed `esml-mode.el` and `esml-mlb-mode.el` (see <:Emacs:>),
80 contributed patches for improving match warnings,
81 contributed `esml-du-mlton.el` and extended def-use output to include types of variable definitions (see <:EmacsDefUseMode:>), and
82 improved constant folding of floating-point operations.
83
84 * Richard Kelsey provided helpful discussions.
85
86 * Ville Laurikari ported MLton to IA64/HPUX, HPPA/HPUX, PowerPC/AIX, PowerPC64/AIX.
87
88 * Brian Leibig implemented the <:LLVMCodegen:>.
89
90 * Geoffrey Mainland helped with FreeBSD packaging.
91
92 * Eric McCorkle ported MLton to Intel Mac.
93
94 * <:TomMurphy:> wrote the original version of `MLton.Syslog` as part
95 of his `mlftpd` project, and has sent many useful bug reports and
96 suggestions.
97
98 * Michael Neumann helped to patch the runtime to compile under
99 FreeBSD.
100
101 * Barak Pearlmutter built the original
102 http://packages.debian.org/mlton[Debian package] for MLton, and
103 helped us to take over the process.
104
105 * Filip Pizlo ported MLton to (PowerPC) Darwin.
106
107 * Vedant Raiththa extended the <:ForeignFunctionInterface:> with support for
108 `pure` and `impure` attributes to `_import`.
109
110 * Krishna Ravikumar added initial support for vector expressions and the
111 `Vector_vector` primitive.
112
113 * John Reppy assisted in porting MLton to Intel Mac.
114
115 * Sam Rushing ported MLton to FreeBSD.
116
117 * Rob Simmons refactored the array and vector implementation in the
118 <:BasisLibrary: Basis Library:> into a primitive implementation (using
119 `SeqInt.int` for indexing) and a wrapper implementation (using the default
120 `Int.int` for indexing).
121
122 * Jeffrey Mark Siskind provided helpful discussions and inspiration
123 with his Stalin Scheme compiler.
124
125 * Matthew Surawski added <:LoopUnroll:> and <:LoopUnswitch:> SSA optimizations.
126
127 * <:WesleyTerpstra:> added support for `MLton.Process.create`, made
128 a number of contributions to the <:ForeignFunctionInterface:>,
129 contributed a number of runtime system patches,
130 added support for compiling to a <:LibrarySupport:C library>,
131 ported MLton to http://mingw.org[MinGW] and all http://packages.debian.org/search?keywords=mlton&searchon=names&suite=all&section=all[Debian] supported architectures with <:CrossCompiling:cross-compiling> support,
132 and maintains the http://packages.debian.org/search?keywords=mlton&searchon=names&suite=all&section=all[Debian] and http://mingw.org[MinGW] packages.
133
134 * Maksim Yegorov added rudimentary support for `./configure` and other
135 improvements to the build system and implemented the <:ShareZeroVec:> SSA
136 optimization.
137
138 * Luke Ziarek assisted in porting MLton to (PowerPC) Darwin.
139
140We have also benefited from other software development tools and
141used code from other sources.
142
143 * MLton was developed using
144 <:SMLNJ:Standard ML of New Jersey> and the
145 <:CompilationManager:Compilation Manager (CM)>
146
147 * MLton's lexer (`mlton/frontend/ml.lex`), parser
148 (`mlton/frontend/ml.grm`), and precedence-parser
149 (`mlton/elaborate/precedence-parse.fun`) are modified versions of
150 code from SML/NJ.
151
152 * The MLton <:BasisLibrary:Basis Library> implementation of
153 conversions between binary and decimal representations of reals uses
154 David Gay's http://www.netlib.org/fp/[gdtoa] library.
155
156 * The MLton <:BasisLibrary:Basis Library> implementation uses
157 modified versions of portions of the the SML/NJ Basis Library
158 implementation modules `OS.IO`, `Posix.IO`, `Process`,
159 and `Unix`.
160
161 * The MLton <:BasisLibrary:Basis Library> implementation uses
162 modified versions of portions of the <:MLKit:ML Kit> Version 4.1.4
163 Basis Library implementation modules `Path`, `Time`, and
164 `Date`.
165
166 * Many of the benchmarks come from the SML/NJ benchmark suite.
167
168 * Many of the regression tests come from the ML Kit Version 4.1.4
169 distribution, which borrowed them from the
170 http://www.dina.kvl.dk/%7Esestoft/mosml.html[Moscow ML] distribution.
171
172 * MLton uses the http://www.gnu.org/software/gmp/gmp.html[GNU multiprecision library] for its implementation of `IntInf`.
173
174 * MLton's implementation of <:MLLex: mllex>, <:MLYacc: mlyacc>,
175 the <:CKitLibrary:ckit Library>,
176 the <:MLLPTLibrary:ML-LPT Library>,
177 the <:MLRISCLibrary:MLRISC Library>,
178 the <:SMLNJLibrary:SML/NJ Library>,
179 <:ConcurrentML:Concurrent ML>,
180 mlnlffigen and <:MLNLFFI:ML-NLFFI>
181 are modified versions of code from SML/NJ.