|
From: Matthew F. <mat...@gm...> - 2020-07-23 17:54:57
|
I'm pleased to announce a new release of MLton, the whole-program optimizing compiler for Standard ML, available at http://mlton.org/Release20180207 (and https://github.com/MLton/mlton/releases/tag/on-20200722-release). * 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. Binary packages for amd64-linux and amd64-darwin are currently available from the release page (and are the platforms tested). Additional binary packages will be made available as they are contributed by users. We'd like to encourage downstream maintainers for the various Linux and *BSD distributions to update to the new release. |