6.1 The Folks Who Made It Happen
“If I have seen further than others, it is
by standing upon the shoulders of giants.”
—Isaac Newton
Ten thousand years ago, DVDs were called "campfire stories". Every
night before sleeping, as the stars wheeled overhead and eyes
unknown gleamed then vanished out in the darkness, someone sitting
in the circle would say, "Tell us a tale." Each generation listened
rapt to their grandparents, reworked the stories, and retold them
to their grandchildren. When young Walt Disney wrought his
Snow White, he mined a cultural vein from millennia uncounted.
Today the folktale is an art largely lost, but open source code
carries on the folk culture tradition. Such code is folk code,
reworked by each successive generation until the names are lost
and only the code itself lives on.
Mythryl is a rewrite of the SML/NJ compiler which is the work of many,
many talented hands building on work earlier yet; I know the names
of but few of these digital storytellers.
The original ML language was designed and implemented by Robin Milner,
wellspring from which all subsequent developments flow.
The seminal SML document is The Definition of Standard ML by
Robin Milner, Mads Tofte, Robert Harper, and
David MacQueen, all of whom have made other major contributions,
Robert Harper for example going on the head the Fox project at CMU
to test SML/NJ as a practical programming language, to pioneer
mechanical verification of critical SML/NJ formal properties
and to supervise a succession of major PhD theses on fundamentals of
ML semantics.
The co-founders of the SML/NJ compiler project were
-
David MacQueen as language designer.
- Andrew W. Appel as compiler expert.
By 1991 contributors already included:
-
John H. Reppy: Runtime, signal handling, call/cc, foreign function interface.
- Trevor Jim: Nextcode representation, match compiler, closure converter, float library, assembly support code.
- Bruce F. Duba: Match compiler, FPS constant-folding, inline expansion, register spilling, call/cc ...
- James W. O’Toole: NS32032 code generator. (I have fond memories of the 32032 ...)
- Norman Ramsey: MIPS code generator.
- Andrew P. Tolmach: Debugger, pure-functional style static environments.
- Adam T. Dingle: Debugger emacs interface.
- James S. Mattson: First ML-Lex implementation.
- David R. Tarditi: ML-to-C compiler, debugger’s type reconstruction logic, production quality ML-Lex.
- Lal George: Floating point support, debugging. Later work included register spilling.
- Zhong Shao: Common subexpression elimination, callee-save convention, later on much good backend optimization work.
- Nick Rothwell, Mads Tofte: Initial separate compilation support.
- Gene Rollins: Improved separate compilation support.
As of roughly 2005, the core Fellowship of SML/NJ development team officially consisted of
the following. (I’ve added specific areas of contribution to the best of my knowledge; corrections
and additions most welcome.)
-
Allen Leung: Co-author with Lal George of the NYU MLRISC optimizing backend later merged into SML/NJ, now constituting the bottom half of the Mythryl compiler back end. Also support libraries, bindings for C libraries, regular expression support code.
- Bratin Saha: Much good work including on type analysis, garbage collection and the McRT-STM multicode software transactional memory.
- Christopher League: Much work on (for example) the YALE FLINT optimizer, a separate project later merged into the SML/NJ codebase.
- Emden Gansner: Co-author with John Reppy of the eXene multithreaded X widget set of which Mythryl’s x-kit is a port.
- John H. Reppy: Developer of eXene, Concurrent ML (of which Mythryl’s thread-kit is a port) Moby and way way too much other stuff to even list.
- Lal George: Senior author with Allen Leung of the above-mentioned NYU MLRISC optimizing back end. Much work including register allocation, spilling and coalescing.
- Lorenz Huelsbergen: The original SML/NJ C interface library and the original SML/NJ heap2exec utility.
- Matthias Blume: A succession of compilation managers — Mythryl’s Makelib is a Mythryl port of his CM — the brilliant NLFFIGEN C library binding generator of which Mythryl’s c-glue is a port, the new SML/NJ heap2exec, much else.
- Riccardo Pucella: Wrote Notes on Programming SML/NJ, work on phantom types and subtyping.
- Stefan Monnier: Work on garbage collection, typed intermediate languages and with Zhong Shao a very nice Inlining as Staged Computation paper.
- Valery Trifonov: Various work including some on type analysis and fate allocation.
- Zhong Shao: Lead developer of the YALE FLINT project which constitutes much of the Mythryl compiler back end upper half. Much good work on type analysis, inlining and deep-down backend optimization generally etc.
Other contributors I know of:
-
Stephen Weeks: Designed and implemented the MLton code annotation mechanism which inspired the similar SML/NJ and Mythryl mechanisms.
- Pierre Weis: Designed and implemented the CAML prettyprinter which inspired the John Reppy prettyprinter used by Mythryl.
I’ve no doubt that through sheer ignorance I’ve left out more SML/NJ
contributors than I’ve mentioned; I again apologize for all oversights.
Contributors to the ML and fp communities — and thus indirectly to
SML/NJ and ultimately Mythryl — number in the hundreds if not
thousands; I could
not hope to enumerate them, but it would be a crime not to mention
at least:
-
Xavier Leroy: Lead programmer of the Ocaml ML variant which has been SML’s friendly sparring partner for many years to the benefit of both languages. In addition
to being an ace hacker, Leroy is also a leading theoretician who has in particular made major contributions to the
development of the theory of ML module systems and of object-oriented programming in the ML context.
- Simon Peyton-Jones: Leading light of the pure-functional programming community centered on the Haskell programming language, which continually exchanges ideas with the ML community (those too weak to "wear the hair shirt").
If you ever find Mythryl useful for any task, if you ever derive
any enjoyment from Mythryl coding, if you ever learn
anything about programming from using Mythryl, then
you owe these gentlemen gratitude, a round of applause,
and perhaps a beer should you meet one in person. Without them
Mythryl would not exist.
Contributors specifically to Mythryl include (alphabetically):
-
Andrea Dallera: Set up the Mythryl git archive and convinced me to use it.
- Aurelien: Many improvements in the manual.
- Michele Bini: Set up and maintains the Mythryl .deb port and repository, and took over after Phil Rand’s death.
- Phil Rand: Created the original mythryl-mode.el.