MLton 20180207
MatthewFluet
released this
07 Feb 11:12
·
2321 commits
to master
since this release
http://mlton.org/Release20180207
- 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
andval rec
declarations, signature constraints applied to a structure,sharing type
specifications andwhere 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.
- Added an experimental LLVM codegen (
- Runtime.
- Added
gc-summary-file file
runtime option. - Reorganized runtime support for
IntInf
operations so that programs that do not useIntInf
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).
- Added
- 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
, andreentrant
attributes to_import
. An unattributed_import
is treated asimpure
. Apure
_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 attributedreentrant
.
- Added
- 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}
andredundantMatch {warn|error|ignore}
intononexhaustiveMatch
andredundantMatch
(controls diagnostics forcase
expressions,fn
expressions, andfun
declarations (which may raiseMatch
on failure)) andnonexhaustiveBind
andredundantBind
(controls diagnostics forval
declarations (which may raiseBind
on failure)). - Added
valrecConstr {warn|error|ignore}
to report when aval rec
(orfun
) declaration redefines an identifier that previously had constructor status.
- Added
- Libraries.
- Basis Library.
- Improved performance of
Array.copy
,Array.copyVec
,Vector.append
,String.^
,String.concat
,String.concatWith
, and other related functions by usingmemmove
rather than element-by-element constructions.
- Improved performance of
Unsafe
structure.- Added unsafe operations for array uninitialization and raw arrays; see #207 for details.
- Other libraries.
- Updated: ckit library, MLLPT library, MLRISC library, SML/NJ library
- Basis Library.
- Tools.
- mlnlffigen
- Updated to warn and skip (rather than abort) when encountering functions with
struct
/union
argument or return type.
- Updated to warn and skip (rather than abort) when encountering functions with
- mlnlffigen
For a complete list of changes and bug fixes since Release20130715, see the CHANGELOG and Bugs20130715.