[MLton] MLton 20180207 release
Matthew Fluet <[email protected]> Wed, 7 Feb 2018 10:58:24 -0500
| Newsgroups | gmane.comp.lang.ml.mlton.devel |
|---|---|
| Message-ID | <CAMrhFL5X7Yia2f6_+aiE-b6+jOjvYD8G=tuU_RM6KJc+BiYLgA__9104.38847863606$1518019032$gmane$org@mail.gmail.com> |
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-20180207-release).
* Compiler.
* Added an experimental LLVM codegen (`-codegen llvm`); requires
LLVM tools (`llvm-as`, `opt`, `llc`) version ≥ 3.7.
* Made many substantial cosmetic improvements to front-end
diagnostic messages, especially with respect to source location
regions, type inference for `fun` and `val rec` declarations,
signature constraints applied to a structure, `sharing type`
specifications and `where type` signature expressions, type
constructor or type variable escaping scope, and nonexhaustive pattern
matching.
* Fixed minor bugs with exception replication, precedence parsing of
function clauses, and simultaneous `sharing` of multiple structures.
* Made compilation deterministic (eliminate output executable name
from compile-time specified `@MLton` runtime arguments;
deterministically generate magic constant for executable).
* Updated `-show-basis` (recursively expand structures in
environments, displaying components with long identifiers; append `(*
@ region *)` annotations to items shown in environment).
* Forced amd64 codegen to generate PIC on amd64-linux targets.
* Runtime.
* Added `gc-summary-file file` runtime option.
* Reorganized runtime support for `IntInf` operations so that
programs that do not use `IntInf` compile to executables with no
residual dependency on GMP.
* Changed heap representation to store forwarding pointer for an
object in the object header (rather than in the object data and
setting the header to a sentinel value).
* Language.
* Added support for selected SuccessorML features; see
http://mlton.org/SuccessorML for details.
* Added `(*#showBasis "file" *)` directive; see
http://mlton.org/ShowBasisDirective for details.
* FFI:
* Added `pure`, `impure`, and `reentrant` attributes to `_import`.
An unattributed `_import` is treated as `impure`. A `pure` `_import`
may be subject to more aggressive optimizations (common subexpression
elimination, dead-code elimination). An `_import`-ed C function that
(directly or indirectly) calls an `_export`-ed SML function should be
attributed `reentrant`.
* ML Basis annotations.
* Added `allowSuccessorML {false|true}` to enable all SuccessorML
features and other annotations to enable specific SuccessorML
features; see http://mlton.org/SuccessorML for details.
* Split `nonexhaustiveMatch {warn|error|igore}` and
`redundantMatch {warn|error|ignore}` into `nonexhaustiveMatch` and
`redundantMatch` (controls diagnostics for `case` expressions, `fn`
expressions, and `fun` declarations (which may raise `Match` on
failure)) and `nonexhaustiveBind` and `redundantBind` (controls
diagnostics for `val` declarations (which may raise `Bind` on
failure)).
* Added `valrecConstr {warn|error|ignore}` to report when a `val
rec` (or `fun`) declaration redefines an identifier that previously
had constructor status.
* Libraries.
* Basis Library.
* Improved performance of `Array.copy`, `Array.copyVec`,
`Vector.append`, `String.^`, `String.concat`, `String.concatWith`, and
other related functions by using `memmove` rather than
element-by-element constructions.
* `Unsafe` structure.
* Added unsafe operations for array uninitialization and raw
arrays; see https://github.com/MLton/mlton/pull/207 for details.
* Other libraries.
* Updated: ckit library, MLLPT library, MLRISC library, SML/NJ library
* Tools.
* mlnlffigen
* Updated to warn and skip (rather than abort) when encountering
functions with `struct`/`union` argument or return type.
* Changelog: https://github.com/MLton/mlton/blob/on-20180207-release/CHANGELOG.adoc
Binary packages for amd64-darwin and amd64-linux 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.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot