MLton is an open-source, whole-program, optimizing compiler for the Standard ML programming language. As with any large and mature software system, there is a need to evaluate the design and architecture of the MLton software project, and to make any substantive changes required for continued research and development. This Computing Research Infrastructure project supports enhancements to position MLton as a vehicle for research in programming-language design and implementation. These enhancements will directly support research, while providing students and next-generation of researchers with a software development experience in the context of a production-level compiler, a complex software system that draws together many themes of Computer Science education, and encourages critical thinking. Finally, these enhancements will indirectly support both the broader programming-languages research community and industry software developers that use functional programming languages. The broader impacts of the project will be in training of student research assistants at all levels, the development of documentation and course materials for teaching compiler-related topics using the MLton infrastructure, and the continued support for MLton's industrial and academic users.
Specific infrastructure enhancements will include development of type-checking and optimization infrastructures, threading and garbage collection frameworks, configuration and benchmarking support systems, and documentation including course material. These enhancements will directly support research exploring whole-program compilation of next-generation language features (such as first-class polymorphism, generalized algebraic data types, and higher-order polymorphism) and research exploring programming for next-generation execution platforms (such as multi-core parallel systems, real-time embedded systems, and cloud-based distributed systems). One significant goal is to provide a single research vehicle that is easily configurable to scientifically compare and contrast research results, thereby enabling researchers to make stronger claims based on more meaningful comparisons, rather than relying on weaker claims across multiple system stacks.