Skip to content

SML NJ Related Projects

John Reppy edited this page Dec 10, 2023 · 1 revision

SMLNJ Related Projects


Development/maintenance projects for the SML/NJ compiler, tools, and libraries

The following might be potential tasks for new volunteers joining the SML/NJ Fellowship, or opportunities to "steal" and adapt existing work.

  1. Reimplementation of the (classic) SML/NJ match compiler
  • presentation at ML Family Workshop, 2022

  • need to document in a tech report

  • [DBM: Done, 2021]

  1. Design,implementation, and documentation of a new, improved prettyprinting library
  • synthesis of ideas from Oppen, PPML, Hughes-Wadler-Leijen

  • [DBM: (Done), 2022-3]

  1. Revamping and modernizing the SML/NJ type checker
  • improved type error messages

  • new treatment of type variables and type constructor variables

  • [equality polymorphism elimination? (while retaining "equality types")]

  • [DBM: 2023- ...]

  1. Redesigning and reimplementing the SML/NJ module system
  • in conjunction with the reworking of the type system

  • Successor ML redesign

  • new formal semantics and its documentation

  • functor application "inlining" for optimization

  • [DBM: 2023- ...]

  1. Reimplementation and simplification of the FLINT type system
  • revision of hash-consing scheme

  • simplified approach to type closures (replacing semi-Nadathur closures)

  • elimination/replacement of deBruijn type variables (using only conventional "named" type variables)

  1. Revision or replacement of the FLINT middle end
  • Reppy-Shivers plans?

  • [JHR: ...]

  1. Support for the Windows port of SML/NJ
  • platform-specific libraries and OS interfaces

  • maintain Windows installer

  • investigate building on Linux for Windows

  • updating, documentation, etc.

  1. Simplification and documentation of the SML/NJ build process

  2. Revised compiler architecture

  • continuing evolution toward fully library-based compiler

  • more balanced support for interactive system and batch compilation

  • better support for stand-alone SML applications

  1. New memory management in runtime system
  • [JRH: ongoing]
  1. Preservation, maintenance, improvement of MLRISC code generation library
  • hedging the bet on llvm code generation
  1. RISCV code generator
  • based on llvm or MLRISC?
  1. New or improved tools and libraries
  • HTML5 support

  • porting selected Python libraries?

  1. Adding support for Unicode characters and strings

  2. Package manager and distribution system for libraries

  • Examples: Hackage for Haskell, OCaml package management?
  1. Compiler distribution and installation
  • maintain OS-specific compiler installers (Mac, Linux, Windows)

  • building packages for Linux package managers

  • Macports and Homebrew on macOS

  • improved support and documenation for building from source

  1. Microsoft LSP (Language Server Protocol) support for SML/NJ
  • interacts with front-end representations (types, absyn) and therefore is related to projects 3 and 4.

  • See Ariel Davis's Millet GitHub project.

  1. Hand-made recursive descent parser with good syntax error messages
  1. Revamping the compiler test suits and testing methodology.

  2. Recreate the index for "The Definition of Standard ML (Revised)". See https://github.com/SMLFamily/SML-The-Living-Language/issues/1.

  3. An SML/NJ Handbook

  • Chapters providing detailed documentation of the implementations of the main components of the compiler, the runtime system, and associated tools and libraries.

DBM, 2023.1.14