Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / src / Release20180207.adoc
CommitLineData
7f918cf1
CE
1Release20180207
2===============
3
4Here you can download the latest public release of MLton, version 20180207.
5
6== Changes since the last public release ==
7
8* Compiler.
9 ** Added an experimental LLVM codegen (`-codegen llvm`); requires LLVM tools
10 (`llvm-as`, `opt`, `llc`) version ≥ 3.7.
11 ** Made many substantial cosmetic improvements to front-end diagnostic
12 messages, especially with respect to source location regions, type inference
13 for `fun` and `val rec` declarations, signature constraints applied to a
14 structure, `sharing type` specifications and `where type` signature
15 expressions, type constructor or type variable escaping scope, and
16 nonexhaustive pattern matching.
17 ** Fixed minor bugs with exception replication, precedence parsing of function
18 clauses, and simultaneous `sharing` of multiple structures.
19 ** Made compilation deterministic (eliminate output executable name from
20 compile-time specified `@MLton` runtime arguments; deterministically generate
21 magic constant for executable).
22 ** Updated `-show-basis` (recursively expand structures in environments,
23 displaying components with long identifiers; append `(* @ region *)`
24 annotations to items shown in environment).
25 ** Forced amd64 codegen to generate PIC on amd64-linux targets.
26* Runtime.
27 ** Added `gc-summary-file file` runtime option.
28 ** Reorganized runtime support for `IntInf` operations so that programs that
29 do not use `IntInf` compile to executables with no residual dependency on GMP.
30 ** Changed heap representation to store forwarding pointer for an object in
31 the object header (rather than in the object data and setting the header to a
32 sentinel value).
33* Language.
34 ** Added support for selected SuccessorML features; see
35 http://mlton.org/SuccessorML for details.
36 ** Added `(*#showBasis "file" *)` directive; see
37 http://mlton.org/ShowBasisDirective for details.
38 ** FFI:
39 *** Added `pure`, `impure`, and `reentrant` attributes to `_import`. An
40 unattributed `_import` is treated as `impure`. A `pure` `_import` may be
41 subject to more aggressive optimizations (common subexpression elimination,
42 dead-code elimination). An `_import`-ed C function that (directly or
43 indirectly) calls an `_export`-ed SML function should be attributed
44 `reentrant`.
45 ** ML Basis annotations.
46 *** Added `allowSuccessorML {false|true}` to enable all SuccessorML features
47 and other annotations to enable specific SuccessorML features; see
48 http://mlton.org/SuccessorML for details.
49 *** Split `nonexhaustiveMatch {warn|error|igore}` and `redundantMatch
50 {warn|error|ignore}` into `nonexhaustiveMatch` and `redundantMatch`
51 (controls diagnostics for `case` expressions, `fn` expressions, and `fun`
52 declarations (which may raise `Match` on failure)) and `nonexhaustiveBind`
53 and `redundantBind` (controls diagnostics for `val` declarations (which may
54 raise `Bind` on failure)).
55 *** Added `valrecConstr {warn|error|ignore}` to report when a `val rec` (or
56 `fun`) declaration redefines an identifier that previously had constructor
57 status.
58* Libraries.
59 ** Basis Library.
60 *** Improved performance of `Array.copy`, `Array.copyVec`, `Vector.append`,
61 `String.^`, `String.concat`, `String.concatWith`, and other related
62 functions by using `memmove` rather than element-by-element constructions.
63 ** `Unsafe` structure.
64 *** Added unsafe operations for array uninitialization and raw arrays; see
65 https://github.com/MLton/mlton/pull/207 for details.
66 ** Other libraries.
67 *** Updated: ckit library, MLLPT library, MLRISC library, SML/NJ library
68* Tools.
69 ** mlnlffigen
70 *** Updated to warn and skip (rather than abort) when encountering functions
71 with `struct`/`union` argument or return type.
72
73For a complete list of changes and bug fixes since
74<:Release20130715:>, see the
75<!ViewGitFile(mlton,on-20180207-release,CHANGELOG.adoc)> and
76<:Bugs20130715:>.
77
78== 20180207 binary packages ==
79
80* AMD64 (aka "x86-64" or "x64")
81** https://sourceforge.net/projects/mlton/files/mlton/20180207/mlton-20180207-1.amd64-darwin.gmp-homebrew.tgz[Darwin (.tgz)] 16.7 (Mac OS X Sierra), dynamically linked against <:GnuMP:> in `/usr/local/lib` (suitable for https://brew.sh/[Homebrew] install of <:GnuMP:>)
82** https://sourceforge.net/projects/mlton/files/mlton/20180207/mlton-20180207-1.amd64-darwin.gmp-static.tgz[Darwin (.tgz)] 16.7 (Mac OS X Sierra), statically linked against <:GnuMP:> (but requires <:GnuMP:> for generated executables)
83** https://sourceforge.net/projects/mlton/files/mlton/20180207/mlton-20180207-1.amd64-linux.tgz[Linux], glibc 2.23
84// ** Windows MinGW 32/64 https://sourceforge.net/projects/mlton/files/mlton/20180207/MLton-20180207-1.exe[self-extracting] (28MB) or https://sourceforge.net/projects/mlton/files/mlton/20180207/MLton-20180207-1.msi[MSI] (61MB) installer
85// * X86
86// ** https://sourceforge.net/projects/mlton/files/mlton/20180207/mlton-20180207-1.x86-cygwin.tgz[Cygwin] 1.7.5
87// ** https://sourceforge.net/projects/mlton/files/mlton/20180207/mlton-20180207-1.x86-linux.tgz[Linux], glibc 2.23
88// ** https://sourceforge.net/projects/mlton/files/mlton/20180207/mlton-20180207-1.x86-linux.static.tgz[Linux], statically linked
89// ** Windows MinGW 32/64 https://sourceforge.net/projects/mlton/files/mlton/20180207/MLton-20180207-1.exe[self-extracting] (28MB) or https://sourceforge.net/projects/mlton/files/mlton/20180207/MLton-20180207-1.msi[MSI] (61MB) installer
90
91== 20180207 source packages ==
92
93 * https://sourceforge.net/projects/mlton/files/mlton/20180207/mlton-20180207.src.tgz[mlton-20180207.src.tgz]
94
95== Also see ==
96
97* <:Bugs20180207:>
98* http://www.mlton.org/guide/20180207/[MLton Guide (20180207)].
99+
100A snapshot of the MLton website at the time of release.