## MLton 20241230

# Release20200817

This is an archived public release of MLton, version 20200817.

## Changes since MLton 20200722

- Compiler.

  - Fixed bug in `RssaShrink` optimization that would result in an unbound variable and an internal compiler error.

- Other.

  - Fixes for Solaris and MinGW platforms.

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

## 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.

## 20200817 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 (.tgz), glibc 2.27 (Ubuntu 18.04)

  - MinGW (.tgz), gcc 10.1.0, statically linked against GMP; contributed by Bernard Berthomieu; see http://projects.laas.fr/tina/software.php for details and installation instructions

  - MinGW (.tgz), gcc 10.1.0, dynamically linked against GMP; contributed by Bernard Berthomieu; see http://projects.laas.fr/tina/software.php for details and installation instructions

  - Solaris (.tgz) 11.4, dynamically linked against GMP; contributed by Bernard Berthomieu

- x86

  - MinGW (.tgz), gcc 10.1.0, statically linked against GMP; contributed by Bernard Berthomieu; see http://projects.laas.fr/tina/software.php for details and installation instructions

  - MinGW (.tgz), gcc 10.1.0, dynamically linked against GMP; contributed by Bernard Berthomieu; see http://projects.laas.fr/tina/software.php for details and installation instructions

  - Solaris (.tgz) 11.4, dynamically linked against GMP; contributed by Bernard Berthomieu

### Binary packages available at other sites

- TINA toolbox: Includes binary releases for: amd64-darwin Mac OS X Sierra (both statically and dynamically linked against GMP), amd64-linux Ubuntu 14 (both statically and dynamically linked against GMP), amd64-mingw and x86-mingw MSys2 (both statically and dynamically linked against GMP), amd64-solaris and x86-solaris Solaris 11.4 (both statically and dynamically linked against GMP), and x86-linux Ubuntu 16 (both statically and dynamically linked against GMP).

## 20200817 source packages

- mlton-20200817.src.tgz

## Also see

- Bugs20200817

- MLton Guide (20200817).

  A snapshot of the MLton website at the time of release.