Here you can download the latest public release of MLton, version 20200722.

Changes since MLton 20180207

  • Compiler.

    • Added expert -pi-style {default|npi|pic|pie} and -native-pic {false|true} options, which can be used to override a target-determined default.

    • Fix a number of instances of excessive live data during compilation.

    • Disable Zone SSA optimization pass by default; the Zone pass is known to not be safe-for-space.

    • Statically allocate and initialize some global objects.

    • Many updates and improvements to C and LLVM codegens.

    • Add new BounceVars RSSA optimization pass to split the live ranges of RSSA variables.

    • Improve RssaShrink optimization.

    • Add support for alternate globalization strategies in ConstantPropagation.

    • Strengthen Useless optimization with respect to a number of primitives.

    • Add new DuplicateGlobals and SplitTypes SSA optimization passes.

    • Introduce new Overflow-checking primitives and remove old Overflow-checking primitives and special-case code required (e.g., Arith transfers in IRs) to support them.

    • Add parsers for XML, SXML, SSA, and SSA2 IRs.

  • Runtime.

    • Detect and report incompatible use of ASLR/PIE on load-world.

    • Added support for RISC-V architecture.

  • Language.

  • Libraries.

    • Basis Library.

      • Change OS.IO.poll to not be restarted when interrupted by a signal. (This is consistent with Socket.select.)

      • Add MLton.sizeAll: unit -> IntInf.int that returns the size of reachable live data.

      • Change type of MLton.size from 'a -> int to 'a -> IntInf.int, because with 64-bit systems, the size of a single object can exceed that representable by a signed 32-bit integer.

    • Other libraries.

      • Updated: ckit library, MLLPT library, MLRISC library, SML/NJ library

  • Tools.

  • Other.

    • Updates to simplify porting MLton.

    • Support parallel build (i.e., make -j). This mainly supports platforms/packagers that use a parallel make by default; it does not obtain significant build speedups.

    • Various updates to Makefile-s. See Makefile.config for common and user-customizable configuration.

    • Characterize MLton-LICENSE as an instance of the Historical Permission Notice and Disclaimer (HPND) license, rather than BSD-style.

For a complete list of changes and bug fixes since Release20180207, see the CHANGELOG.adoc and Bugs20180207.

20200722 binary packages

  • AMD64 (aka "x86-64" or "x64")

    • Darwin (.tgz) 19.6 (Mac OS X Catalina), dynamically linked against GMP in /usr/local/lib (suitable for Homebrew install of GMP)

    • Darwin (.tgz) 19.6 (Mac OS X Catalina), statically linked against GMP (but requires GMP for generated executables)

    • Darwin (.tgz) 17.7 (Mac OS X High Sierra), dynamically linked against GMP in /usr/local/lib (suitable for Homebrew install of GMP)

    • Darwin (.tgz) 17.7 (Mac OS X High Sierra), statically linked against GMP (but requires GMP for generated executables)

    • Linux, glibc 2.27 (Ubuntu 18.04)

20200722 source packages

Also see