Ch.4 Overview of SML#

§ 4.4. Acknowledgments

From its start in 2003, we have benefited from many pepples and ogranizations.

§ 4.4.1. Project funding

SML# development was started as a part of the 5 year project “e-Society leading project: highly productive reliable software development technologies (Project Director: Professor Takuya Katayama)” under the title “ reliable software development technology based on automatic program analysis (chief investigator: Atsushi Ohori) ” ( sponsored by the Japan ministry of science, education and technologies.

§ 4.4.2. Third-party code and software tool used in SML# development

Since version 1.0 had completed, SML# has been developed by the SML# compiler itself. Before the 2.0.0 version, we had used Standard ML of New Jersey compiler for development and MLTon compiler for building distributions.

The SML# compiler is a software developed by the SML# development team (4.3). We have wrote most of the code of SML# compiler from scratch, except for the following code:

contents location in SML# distribution source code
ML-Yacc src/ml-yacc Standard ML of New Jersey 110.73
ML-Lex src/ml-lex Standard ML of New Jersey 110.73
SML/NJ Library src/smlnj-lib Standard ML of New Jersey 110.73
TextIO, BinIO, OS, Timer structures src/smlnj Standard ML of New Jersey 110.73
floating point-string conversion (dtoa.c) src/runtime/netlib the Netlib
SML grammar definition used in SMLFormat tool src/smlformat/generator/main/ Standard ML of New Jersey 110.73

All of the above are open-source software that are compatible with SML# license. The SML# source distribution includes the license of each of them at the “location in SML# distribution” show above.

§ 4.4.3. Collaborators

Many people have contributed to research and development of SML#. In addition to the development team (Section 4.3), the following people directly contributed to SML# research.

  • Isao Sasano. With Atsushi Ohori, he investigated “Lightweight fusion by fixed point promotion” and developed an experimental inlining module that performs lightweight fusion. This feature is experimental and has not yet been integrated in SML# compiler, but we plan to adopt this method in a future version.

  • Toshihiko Otomo. With Atsushi Ohori and Katsuhiro Ueno, he investigated the possibility of non-moving collector and showed an initial experimental result indicating that a non-moving GC is viable in functional languages.

Many other people helped us through collaborative research with Atsushi Ohori and others to develop type-theory and compilation methods that underlie SML# compiler. SML# compiler is directly based on the following research results, some of them were collaboratively done.

  • record polymorphism [7, 8]

  • database type inference [9]

  • database language (Machiavelli)[10, 1]

  • rank-1 polymorphism [14]

  • unboxed semantics of ML [12]

  • natural data representation for ML [6]

  • efficient non-moving GC[15]

  • lightweight fusion [11].

We have also benefited from many other researchers from 1989. We refrain from compiling a comprehensive list, which seems to be impossible.