Skip to content

Commit

Permalink
Merge pull request #244 from MatthewFluet/pre-201802-release
Browse files Browse the repository at this point in the history
Final work for 20180206 release.
  • Loading branch information
MatthewFluet authored Feb 6, 2018
2 parents 5311d54 + 6c90221 commit 4d4fb45
Show file tree
Hide file tree
Showing 40 changed files with 615 additions and 884 deletions.
123 changes: 93 additions & 30 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
@@ -1,19 +1,81 @@
= CHANGELOG

== Version YYYYMMDD
== Version 20180206

Here are the changes from version 20130715 to version YYYYMMDD.
Here are the changes from version 20130715 to version 20180206.

=== Summary

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

=== Details

* 2018-02-6
** Remove ancient and unused `cmcat` tool.

* 2018-02-03
** Upgrade `gdtoa.tgz`.

Expand All @@ -34,7 +96,7 @@ Here are the changes from version 20130715 to version YYYYMMDD.
** Propagate C compiler from `./configure` to `mlton` script.

* 2018-01-24
** Extend `-target-*-opt` options to support `__arch__-__os__` pairs.
** Extend `-target-*-opt` options to support `arch-os` pairs.
** Remove `./package/rpm/*` and corresponding targets in `./Makefile`;
upstream MLton has not produced RPMs for years.

Expand All @@ -49,7 +111,7 @@ Here are the changes from version 20130715 to version YYYYMMDD.
** Update SML/NJ libraries to SML/NJ 110.82.

* 2017-12-29
** Add support for `(*#showBasis "_file_"*)` directives. This feature is
** Add support for `(*#showBasis "file" *)` directives. This feature is
meant to facilitate auto-completion via
https://github.com/MatthewFluet/company-mlton[`company-mlton`] and similar
tools.
Expand All @@ -62,7 +124,7 @@ Here are the changes from version 20130715 to version YYYYMMDD.
** Updates to `-show-basis`:
*** `-show-basis-flat`: Recursively expand structures in environments,
displaying components with long identifiers.
*** `-show-basis-def`: Appends `(* @ _region_ *)` annotations to items shown
*** `-show-basis-def`: Appends `(* @ region *)` annotations to items shown
in environment.
*** `-show-basis-compact`: Tries to optimize vertical space (at the expense
of long lines).
Expand All @@ -77,7 +139,7 @@ Here are the changes from version 20130715 to version YYYYMMDD.

* 2017-12-06
** Remove `$PREFIX` and `$prefix` from top-level `Makefile.in`; use
`./configure --prefix _path_`. Thanks to Richard Laughlin for the pull
`./configure --prefix path`. Thanks to Richard Laughlin for the pull
request.

* 2017-12-03
Expand All @@ -102,11 +164,11 @@ Here are the changes from version 20130715 to version YYYYMMDD.
** Minor updates to `DirectedGraph` and `Tree` in MLton library.

* 2017-10-23
** Add `-seed-rand _w_` compile-time option, to seed the pseudo-random number
** Add `-seed-rand w` compile-time option, to seed the pseudo-random number
generator.
** Add a new MachineShuffle pass (disabled by default) that shuffles the
collection of chunks within the program and shuffles the collection of blocks
within a chunk. With the `-seed-rand _w_` compile-time option, can be used to
within a chunk. With the `-seed-rand w` compile-time option, can be used to
generate executables with distinct code placements.

* 2017-10-23
Expand Down Expand Up @@ -140,7 +202,7 @@ Here are the changes from version 20130715 to version YYYYMMDD.
time operation and the subsequent `Array_uninit` operations can be performed
in parallel.
*** Extend `structure Unsafe.Array` with additional operations. See
`basis-library/sml-nj/unsafe.sig`.
`./basis-library/sml-nj/unsafe.sig`.

* 2017-10-20
** Introduce ShareZeroVec SSA optimization to share zero-length vectors after
Expand All @@ -158,8 +220,8 @@ Here are the changes from version 20130715 to version YYYYMMDD.
** Fix bug in runtime argument option parsing.

* 2017-10-05
** Many updates and improvements to diagnostic messages. See commit 505a23c0
or https://github.com/MLton/mlton/pull/195 for details.
** Many updates and improvements to diagnostic messages. See
https://github.com/MLton/mlton/pull/195 for details.

* 2017-09-27
** Add rudimentary support for `./configure`; in particular, support
Expand All @@ -184,9 +246,11 @@ Here are the changes from version 20130715 to version YYYYMMDD.
* 2017-07-11
** Generalize the `subWord` primitives to
+
----
| WordArray_subWord of {seqSize:WordSize.t, eleSize: WordSize.t}
| WordArray_updateWord of {seqSize: WordSize.t, eleSize: WordSize.t}
| WordVector_subWord of {seqSize: WordSize.t, eleSize: WordSize.t}
----
+
Undertaken by Bryan Camp at RIT supported by NSF CISE Research Infrastructure
(CRI) award.
Expand All @@ -201,15 +265,14 @@ Undertaken by Bryan Camp at RIT supported by NSF CISE Research Infrastructure
at RIT supported by NSF CISE Research Infrastructure (CRI) award.

* 2017-06-29
** Replace `-drop-pass _regex_` compile-time option with `-disable-pass
_regex_` compile option and add `-enable-pass _regex _` compile option.
Various XML, SXML, SSA, SSA2, RSSA, and Machine IR optimization passes are
initialized with a default status, which can be overriden by
`-{disable,enable}-pass`. In particular, it is now easy to add a
work-in-progress (and potentially buggy) pass to the simplification pipeline
with `execute = false` default status, to be selectively executed with
`-enable-pass`. Undertaken by Bryan Camp at RIT supported by NSF CISE
Research Infrastructure (CRI) award.
** Replace `-drop-pass regex` compile-time option with `-disable-pass regex`
compile option and add `-enable-pass regex` compile option. Various XML,
SXML, SSA, SSA2, RSSA, and Machine IR optimization passes are initialized with
a default status, which can be overriden by `-{disable,enable}-pass`. In
particular, it is now easy to add a work-in-progress (and potentially buggy)
pass to the simplification pipeline with `execute = false` default status, to
be selectively executed with `-enable-pass`. Undertaken by Bryan Camp at RIT
supported by NSF CISE Research Infrastructure (CRI) award.
** Add LoopUnswitch and LoopUnroll SSA optimizations (undertaken by Matthew
Surawski as an RIT CS MS Capstone Project). Initial evaluation demonstrates
some non-trivial performance gains, no non-trivial performance losses, and
Expand Down Expand Up @@ -241,8 +304,8 @@ Undertaken by Bryan Camp at RIT supported by NSF CISE Research Infrastructure
* 2017-04-20
** Updates to SSA, SSA2, and RSSA IR support infrastructure
*** Display more context when reporting SSA and SSA2 IR type errors.
*** Add `-layout-width _n_` compile expert option to control the target
width for the pretty printer.
*** Add `-layout-width n` compile expert option to control the target width
for the pretty printer.
*** Make cosmetic improvments to SSA and SSA2 IR display (uses of global
variables bound to small constants and conapps are commented with the
corresponding value; include loop forest for functions with `-keep dot`).
Expand All @@ -251,10 +314,10 @@ Undertaken by Bryan Camp at RIT supported by NSF CISE Research Infrastructure
function.

* 2017-04-15
** Add `gc-summary-file _file_` runtime option.
** Add `gc-summary-file file` runtime option.

* 2017-04-15
** Rename and add `smlnjmlton-x{2,4,8,16}` top-level `Makefile` targets.
** Rename and add `smlnj-mlton-x{2,4,8,16}` top-level `Makefile` targets.
** Update SML/NJ librarys to SML/NJ 110.80 (making use of supported
SuccessorML features).
** Not support for SML/NJ extensions via SuccessorML MLB annotations on
Expand Down Expand Up @@ -434,10 +497,10 @@ Undertaken by Bryan Camp at RIT supported by NSF CISE Research Infrastructure
report.

* 2014-10-24
** Added `pure` and `impure attributes to `_import`. An unattributed
** Added `pure` and `impure` 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
elimiation). Undertaken by Vedant Raiththa at RIT supported by NSF CISE
elimination). Undertaken by Vedant Raiththa at RIT supported by NSF CISE
Research Infrastructure (CRI) award.

* 2014-10-22
Expand Down Expand Up @@ -478,8 +541,8 @@ Undertaken by Bryan Camp at RIT supported by NSF CISE Research Infrastructure

* 2014-07-31
** Refactor array and vector implementation in Basis Library into a primitive
implementation (sing `SeqInt.int` for indexing) and a wrapper implementation
(ising the default `Int.int` for indexing). Thanks to Rob Simmons for the
implementation (using `SeqInt.int` for indexing) and a wrapper implementation
(using the default `Int.int` for indexing). Thanks to Rob Simmons for the
pull request.
** Correct description of `MLton.{Vector,Array}.unfoldi` on website. Thanks
to Rob Simmons for the pull request.
Expand Down Expand Up @@ -557,9 +620,9 @@ Here are the changes from version 20100608 to version 20130715.
*** Use bit operations for `REAL.class` and other low-level operations.
*** Support additional variables with `Posix.ProcEnv.sysconf`.
*** Bug fixes: see changelog
** `MLton` structure.
** `MLton` structure.
*** Removed: `MLton.Socket`
** Other libraries.
** Other libraries.
*** Updated: ckit library, MLRISC library, SML/NJ library
*** Added: MLLPT library
* Tools.
Expand Down
1 change: 0 additions & 1 deletion LICENSE

This file was deleted.

26 changes: 26 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
This is the license for MLton, a whole-program optimizing compiler for
the Standard ML programming language. Send comments and questions to
[email protected].

MLton COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.

Copyright (C) 1999-2018 Henry Cejtin, Matthew Fluet, Suresh
Jagannathan, and Stephen Weeks.
Copyright (C) 1997-2000 by the NEC Research Institute

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both the copyright notice and this permission notice and warranty
disclaimer appear in supporting documentation, and that the name of
the above copyright holders, or their entities, not be used in
advertising or publicity pertaining to distribution of the software
without specific, written prior permission.

The above copyright holders disclaim all warranties with regard to
this software, including all implied warranties of merchantability and
fitness. In no event shall the above copyright holders be liable for
any special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether in an
action of contract, negligence or other tortious action, arising out
of or in connection with the use or performance of this software.
Loading

0 comments on commit 4d4fb45

Please sign in to comment.