[MLton-commit] r5913

Matthew Fluet fluet at mlton.org
Tue Aug 21 06:28:20 PDT 2007


Ran grab-wiki
----------------------------------------------------------------------

A   mlton/trunk/doc/guide/Bugs200708XX
A   mlton/trunk/doc/guide/Changelog
A   mlton/trunk/doc/guide/Download20051202
A   mlton/trunk/doc/guide/Download200708XX
D   mlton/trunk/doc/guide/PageSize

----------------------------------------------------------------------

Added: mlton/trunk/doc/guide/Bugs200708XX
===================================================================
--- mlton/trunk/doc/guide/Bugs200708XX	2007-08-21 13:25:57 UTC (rev 5912)
+++ mlton/trunk/doc/guide/Bugs200708XX	2007-08-21 13:28:19 UTC (rev 5913)
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta name="robots" content="index,nofollow">
+
+
+
+<title>Bugs200708XX - MLton Standard ML Compiler (SML Compiler)</title>
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="common.css">
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="screen.css">
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="print.css">
+
+
+<link rel="Start" href="Home">
+
+
+</head>
+
+<body lang="en" dir="ltr">
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
+<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
+  <tr>
+    <td style = "
+		border: 0px;
+		color: darkblue; 
+		font-size: 150%;
+		text-align: left;">
+      <a class = mltona href="Home">MLton MLTONWIKIVERSION</a>
+    <td style = "
+		border: 0px;
+		font-size: 150%;
+		text-align: center;
+		width: 50%;">
+      Bugs200708XX
+    <td style = "
+		border: 0px;
+		text-align: right;">
+      <table cellspacing = 0 style = "border: 0px">
+        <tr style = "vertical-align: middle;">
+      </table>
+  <tr style = "background-color: white;">
+    <td colspan = 3
+	style = "
+		border: 0px;
+		font-size:70%;
+		text-align: right;">
+      <a href = "Home">Home</a>
+      &nbsp;<a href = "Index">Index</a>
+      &nbsp;
+</table>
+<div id="content" lang="en" dir="ltr">
+Here are the known bugs in MLton 200708XX, listed in reverse chronological order of date reported. <p>
+
+</p>
+</div>
+
+
+
+<p>
+<hr>
+Last edited on 2007-08-16 01:01:15 by <span title="c-71-57-91-146.hsd1.il.comcast.net"><a href="MatthewFluet">MatthewFluet</a></span>.
+</body></html>

Added: mlton/trunk/doc/guide/Changelog
===================================================================
--- mlton/trunk/doc/guide/Changelog	2007-08-21 13:25:57 UTC (rev 5912)
+++ mlton/trunk/doc/guide/Changelog	2007-08-21 13:28:19 UTC (rev 5913)
@@ -0,0 +1,2177 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta name="robots" content="index,nofollow">
+
+
+
+<title>Changelog - MLton Standard ML Compiler (SML Compiler)</title>
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="common.css">
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="screen.css">
+<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="print.css">
+
+
+<link rel="Start" href="Home">
+
+
+</head>
+
+<body lang="en" dir="ltr">
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-833377-1";
+urchinTracker();
+</script>
+<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
+  <tr>
+    <td style = "
+		border: 0px;
+		color: darkblue; 
+		font-size: 150%;
+		text-align: left;">
+      <a class = mltona href="Home">MLton MLTONWIKIVERSION</a>
+    <td style = "
+		border: 0px;
+		font-size: 150%;
+		text-align: center;
+		width: 50%;">
+      Changelog
+    <td style = "
+		border: 0px;
+		text-align: right;">
+      <table cellspacing = 0 style = "border: 0px">
+        <tr style = "vertical-align: middle;">
+      </table>
+  <tr style = "background-color: white;">
+    <td colspan = 3
+	style = "
+		border: 0px;
+		font-size:70%;
+		text-align: right;">
+      <a href = "Home">Home</a>
+      &nbsp;<a href = "Index">Index</a>
+      &nbsp;
+</table>
+<div id="content" lang="en" dir="ltr">
+<pre class=code>Here are the changes from version 20051202 to version 200708??.
+
+Summary:
+  + New platforms:
+   o amd64-linux, amd64-freebsd, ...
+   o hppa-hpux, ...
+   o powerpc-aix, ...
+   o x86-darwin (Mac OS X)
+  + Compiler.
+   o Support for 64-bit platforms.
+    * Native amd64 codegen.
+   o Command-line switches.
+    * Added: -codegen amd64, -codegen x86, -default-type &lt;type&gt;,
+        -profile-val {false|true}.
+    * Changed: -stop f (file listing now includes .mlb files)
+   o Bytecode codegen.
+    * Support for profiling.
+    * Support for exception history.
+  + Language.
+  + Libraries.
+   o Basis Library.
+    * Added: PackWord16Big, PackWord16Little, PackWord64Big,
+	PackWord64Little.
+    * Bug Fixes: see changelog.
+   o MLton structure.
+    * Added: MLTON_MONO_ARRAY, MLTON_MONO_VECTOR, MLTON_REAL, 
+        MLton.BinIO.tempPrefix, MLton.CharArray, MLton.CharVector,
+        MLton.IntInf.BigWord, MLton.IntInf.SmallInt,
+        MLton.Exn.defaultTopLevelHandler,
+        MLton.Exn.getTopLevelHandler, MLton.Exn.setTopLevelHandler,
+        MLton.LargeReal, MLton.LargeWord, MLton.Real, MLton.Real32,
+        MLton.Real64, MLton.Rlimit.Rlim, MLton.TextIO.tempPrefix,
+        MLton.Vector.create, MLton.Word.bswap, MLton.Word8.bswap,
+        MLton.Word16, MLton.Word32, MLton.Word64, MLton.Word8Array,
+        MLton.Word8Vector.
+    * Changed: MLton.Array.unfoldi, MLton.IntInf.rep, MLton.Rlimit,
+        MLton.Vector.unfoldi. 
+    * Deprecated: MLton.Socket
+   o Other libraries.
+    * Added: MLRISC libary.
+    * Updated: ckit library, SML/NJ library.
+  + Tools.
+
+* 2007-08-06
+   - Fixed bug in treatment of Real&lt;N&gt;.{scan,fromString} operations.
+     Real&lt;N&gt;.{scan,fromString} were using TO_NEAREST semantics, but
+     should obey current rounding mode.  (Only Real&lt;N&gt;.fromDecimal is
+     specified to always have TO_NEAREST semantics.)  Thanks to Sean
+     McLaughlin for the bug report.
+
+* 2007-07-27
+   - Fixed bugs in constant-folding of floating-point operations with C
+     codegen.
+
+* 2007-07-26
+   - Fixed bug in treatment of floating-point operations.  FP ops
+     depend on the current rounding mode, but were being treated as
+     pure.  Thanks to Sean McLaughlin for the bug report.
+
+* 2007-07-13
+   - Added MLton.Exn.{default,get,set}TopLevelHandler.
+
+* 2007-07-12
+   - Restored native option to -codegen flag.
+
+* 2007-07-11
+   - Fixed bug in Real32.toInt: conversion of real values close to
+     Int.maxInt could be incorrect.
+
+* 2007-07-07
+   - Updates to bytecode code generator: support for amd64-* targets,
+     support for profiling (including exception history).
+   - Fixed bug in Socket module of Basis Library; unmarshalling of
+     socket options (for get* functions) used andb rather than orb.
+     Thanks to Anders Petersson for the bug report (and patch).
+
+* 2007-07-06
+   - Fixed bug in Date module of Basis Library; some functions would
+     erroneously raise Date when given a year &lt;= 1900.  Thanks to Joe
+     Hurd for the bug report.
+   - Fixed a long-standing bug in monomorphisation pass.  Thanks to
+     Vesa Karvonen for the bug report.
+
+* 2007-05-18
+   - Native amd64 code generator for amd64-* targets.
+   - Eliminate native option from -codegen flag.
+   - Add x86 and amd64 options to -codegen flag.
+
+* 2007-04-29
+   - Improved type checking of RSSA and Machine ILs.
+
+* 2007-04-14
+   - Fixed aliasing issues with basis/Real/*.c files.
+   - Added real/word casts in MLton structure.
+
+* 2007-04-12
+   - Added primitives for bit cast of word to/from real.
+   - Implement PackReal&lt;N&gt;{Big,Little} using PackWord&lt;N&gt;{Big,Little}
+     and bit casts.
+
+* 2007-04-11
+   - Move all system header #include-s to platform/ os headers.
+   - Use C99 &lt;assert.h&gt;, rather than custom &quot;assert.{h,c}&quot;.
+
+* 2007-03-13
+   - Implement PackWord&lt;N&gt;{Big,Little} entirely in ML, using an ML
+     byte swap function.
+
+* 2007-02-25
+   - Change amd64-* target platforms from 32-bit compatability mode
+     (i.e., -m32) to 64-bit mode (i.e., -m64).  Currently, only the C
+     codegen is able to generate 64-bit executables.
+
+* 2007-02-23
+   - Removed expert command line switch -coalesce &lt;n&gt;.
+   - Added expert command line switch -chunkify {coalesce&lt;n&gt;|func|one}.
+
+* 2007-02-20
+   - Fixed bug in PackReal&lt;N&gt;.toBytes.  Thanks to Eric McCorkle for the
+     bug report (and patch).
+
+* 2007-02-18
+   - Added command line switch -profile-val, to profile the evaluation of
+     val bindings; this is particularly useful with exception history for
+     debugging uncaught exceptions at the top-level.
+
+* 2006-12-29
+   - Added command line switch -show {anns|path-map} and deprecated command
+     line switch -show-anns {false|true}.  Use -show path-map to see the
+     complete MLB path map as seen by the compiler.
+
+* 2006-12-20
+   - Changed the output of command line switch -stop f to include mlb-files.
+     This is useful for generating Makefile dependencies.  The old output is
+     easy to recover if necessary (e.g. grep -v '\.mlb$').
+
+* 2006-12-8
+   - Added command line switches -{,target}-{as,cc,link}-opt-quote, which
+     pass their argument as a single argument to gcc (i.e., without
+     tokenization at spaces).  These options support using headers and
+     libraries (including the MLton runtime headers and libraries) from a
+     path with spaces.  
+
+* 2006-12-02
+   - Extensive reorganization of garbage collector, runtime system, and
+     Basis Library implementation. (This is in preparation for future
+     64bit support.)  They should be more C standards compliant and easier
+     to port to new systems.
+   - FFI revisions
+     Disallow nested indirect types (e.g., int array array).
+
+* 2006-11-30
+   - Fixed a bug in elaboration of FFI forms; unary FFI types (e.g.,
+     array, ref, vector) could be used in places where MLton.Pointer.t was
+     required.  This would later cause the compiler to raise the TypeError
+     exception, along with a lot of XML IL.
+
+* 2006-11-19
+   - On *-darwin, work with GnuMP installed via Fink or MacPorts.
+
+* 2006-10-30
+   - Ported to x86-darwin.
+
+* 2006-09-23
+   - Added missing specification of find to the MONO_VECTOR signature.
+
+* 2006-08-03
+   - Fixed a bug in the &quot;useless&quot; SSA optimization, caused by calling
+     an imported C function and then ignoring the result.
+
+* 2006-06-24
+   - Fixed a bug in pass to flatten data structures.  Thanks to Joe Hurd
+     for the bug report.
+	
+* 2006-06-08
+  - Fixed a bug in the native codegen's implementation of the C-calling
+    convention.
+
+* 2006-05-11
+  - Ported to PowerPC-AIX.
+  - Fixed a bug in the runtime for the cases where nonblocking IO with
+    sockets was implemented using MSG_DONTWAIT.  This flag does not
+    exist on AIX, Cygwin, HPUX, and MinGW and was previously just
+    ignored.  Now the runtime simulates the flag for these platforms
+    (except MinGW, yet, where it's still ignored).
+
+* 2006-05-06
+  - Added -default-type '&lt;ty&gt;&lt;N&gt;' for specifying the binding of default
+    types in the Basis Library (e.g., Int.int).
+
+* 2006-04-25
+  - Ported to HPPA-HPUX.
+  - Fixed PackReal{,32,64}{Big,Little} to follow the Basis Library
+    specification. 
+
+* 2006-04-19
+  - Fixed a bug in MLton.share that could cause a segfault.
+
+* 2006-03-30
+  - Changed MLton.Vector.unfoldi to return the state in addition to the
+    result vector.
+
+* 2006-03-30
+  - Added MLton.Vector.create, a more powerful vector-creation function
+    than is available in the basis library.
+
+* 2006-03-04
+  - Added MLRISC from SML/NJ 110.57 to standard distribution.
+
+* 2006-03-03
+  - Fixed bug in SSA simplifier that could eliminate an irredundant test.
+
+* 2006-03-02
+  - Ported a bugfix from SML/NJ for a bug with the combination of withNack
+    and never in CML. 
+
+* 2006-02-09
+  - Support compiler specific annotations in ML Basis files.  If an
+    annotation contains &quot;:&quot;, then the text preceding the &quot;:&quot; is meant to
+    denote a compiler.  For MLton, if the text preceding the &quot;:&quot; is equal
+    to &quot;mlton&quot;, then the remaining annotation is scanned as a normal
+    annotation.  If the text preceding the &quot;:&quot; is not-equal to &quot;mlton&quot;,
+    then the annotation is ignored, and no warning is issued.
+
+* 2006-02-04
+  - Fixed bug in elaboration of functors; a program with a very large
+    number of functors could exhibit the error
+    &quot;ElaborateEnv.functorClosure: firstTycons&quot;.
+	
+--------------------------------------------------------------------------------
+
+Here are the changes from version 20041109 to version 20051202.
+
+Summary:
+  + New license: BSD-style instead of GPL.
+  + New platforms:
+   o hppa: Debian Linux.
+   o x86: MinGW.
+  + Compiler.
+   o improved exception history.
+   o Command-line switches.
+    * Added: -as-opt, -mlb-path-map, -target-as-opt, -target-cc-opt.
+    * Deprecated: none.
+    * Removed: -native, -sequence-unit, -warn-match, -warn-unused.
+  + Language.
+   o FFI syntax changes and extensions.
+    * Added: _symbol.
+    * Changed: _export, _import.
+    * Removed: _ffi.
+   o ML Basis annotations.
+    * Added: allowFFI, nonexhaustiveExnMatch, nonexhaustiveMatch,
+        redundantMatch, sequenceNonUnit.
+    * Deprecated: allowExport, allowImport, sequenceUnit, warnMatch.
+  + Libraries.
+   o Basis Library.
+    * Added: Int1, Word1.
+   o MLton structure.
+    * Added: Process.create, ProcEnv.setgroups, Rusage.measureGC, 
+        Socket.fdToSock Socket.Ctl.getError.
+    * Changed: MLton.Platform.Arch.
+   o Other libraries.
+    * Added: ckit library, ML-NLFFI library, SML/NJ library.
+  + Tools.
+   o updates of mllex and mlyacc from SML/NJ.
+   o added mlnlffigen.
+   o profiling supports better inclusion/exclusion of code.
+
+* 2005-11-19
+  - Updated SML/NJ Library and CKit Library from SML/NJ 110.57.
+
+* 2005-11-15
+  - Fixed a bug in MLton.ProcEnv.setgroups.
+
+* 2005-11-11
+  - Fixed a bug in the interleaving of lexing/parsing and elaborating of
+    ML Basis files, which would raise an unhandled Force exception on
+    cyclic basis references.  Thanks to John Dias for the bug report.
+
+* 2005-11-10
+  - Fixed two bugs in Time.scan.  One would raise Time on a string with a
+    large fractional component.  Thanks to Carsten Varming for the bug
+    report.  The other failed to scan strings with an explicit sign
+    followed by a decimal point.
+
+* 2005-11-03
+  - Removed MLton.GC.setRusage.
+  - Added MLton.Rusage.measureGC.
+
+* 2005-09-11
+  - Fixed bug in display of types with large numbers of type
+    variables, which could cause unhandled exception Chr.
+
+* 2005-09-08
+  - Fixed bug in type inference of flexible records that would show up
+    as &quot;Type error: variable applied to wrong number of type args&quot;.
+
+* 2005-09-06
+  - Fixed bug in Real.signBit, which had assumed that the underlying
+    C signbit returned 0 or 1, when in fact any nonzero value is
+    allowed to indicate the signbit is set.
+
+* 2005-09-05
+  - Added -mlb-path-map switch.
+
+* 2005-08-25
+  - Fixed bug in MLton.Finalizable.touch, which was not keeping alive
+    finalizable values in all cases.
+
+* 2005-08-18
+  - Added SML/NJ Library and CKit Library from SML/NJ 110.55 to 
+    standard distribution.
+  - Fixed bug in Socket.Ctl.*, which got the endianness wrong on
+    big-endian machines.  Thanks to Wesley Terpstra for the bug report
+    and fix.
+  - Added MLton.GC.setRusage.
+  - Fixed bug in mllex, which had file positions starting at 2.  They
+    now start at zero.
+
+* 2005-08-15
+  - Fixed bug in LargeInt.scan, which should skip leading &quot;0x&quot; and
+    &quot;0X&quot;.  Thanks to Wesley Terpstra for the bug report and fix.
+
+* 2005-08-06
+  - Additional revisions of FFI.
+    Deprecated _export with incomplete annotation.
+    Added _address for address of C objects.
+    Eliminated address component of _symbol.
+    Changed the type of the _symbol* expression.
+    See documentation for more detail.
+
+* 2005-08-06
+  - Annotation changes.
+    Deprecated: sequenceUnit
+    Added: sequenceNonUnit
+
+* 2005-08-03
+  - Annotation changes.
+    Deprecated: allowExport, allowImport, warnMatch
+    Added: allowFFI, nonexhaustiveExnMatch, nonexhaustiveMatch, 
+      redundantMatch
+
+* 2005-08-01
+  - Update mllex and mlyacc with SML/NJ 110.55+ versions.  This 
+    incorporates a small number of minor bug fixes.
+
+* 2005-07-23
+  - Fixed bug in pass to flatten refs into containing data structure.
+
+* 2005-07-23
+  - Overhaul of FFI.
+    Deprecated _import of C base types.
+    Added _symbol for address, getter, and setter of C base types.
+    See documentation for more detail.
+
+* 2005-07-21
+  - Update mllex and mlyacc with SML/NJ 110.55 versions.  This 
+    incorporates a small number of minor bug fixes.
+
+* 2005-07-20
+  - Fixed bug in front end that allowed unary constructors to be used
+    without an argument in patterns.
+
+* 2005-07-19
+  - Eliminated _ffi, which has been deprecated for some time.
+
+* 2005-07-14
+  - Fixed bug in runtime that caused getrusage to be called on every
+    GC, even if timing info isn't needed.
+
+* 2005-07-13
+  - Fixed bug in closure conversion tickled by making a weak pointer
+    to a closure.
+
+* 2005-07-12
+  - Changed {OS,Posix}.Process.sleep to call nanosleep() instead of
+    sleep().
+  - Added MLton.ProcEnv.setgroups.
+
+* 2005-07-11
+  - InetSock.{any,toAddr} raise SysErr if port is not in [0, 2^16).
+
+* 2005-07-02
+  - Fixed bug in Socket.recvVecFrom{,',NB,NB'}.  The type was too 
+    polymorphic and allowed the creation of a bogus sock_addr.
+
+* 2005-06-28
+  - The front end now reports errors on encountering undefined or
+    cyclicly defined MLB path variables.
+
+* 2005-05-22
+  - Fixed bug in Posix.IO.{getlk,setlk,setlkw} that caused a link-time
+    error: undefined reference to Posix_IO_FLock_typ.
+  - Improved exception history so that the first entry in the history
+    is the source position of the raise, and the rest is the call
+    stack.
+
+* 2005-05-19
+  - Improved exception history for Overflow exceptions.
+
+* 2005-04-20
+  - Fixed a bug in pass to flatten refs into containing data structure.
+
+* 2005-04-14
+  - Fixed a front-end bug that could cause an internal bug message of the
+    form &quot;missing flexInst&quot;.
+
+* 2005-04-13
+  - Fixed a bug in the representation of flat arrays/vectors that
+    caused incorrect behavior when the element size was 2 or 4 bytes 
+    and there were multiple components to the element (e.g. (char *
+    char) vector).
+
+* 2005-04-01
+  - Fixed a bug in GC_arrayAllocate that could cause a segfault.
+
+* 2005-03-22
+  - Added structures Int1, Word1.
+
+* 2005-03-19
+  - Fixed a bug that caused Socket.Ctl.{get,set}LINGER to raise
+    Subscript.  The problem was in the use of PackWord32Little.update,
+    which scales the supplied index by bytesPerElem.
+
+* 2005-03-13
+  - Fixed a bug in CML mailboxes.
+
+* 2005-02-26
+  - Fixed an off-by-one error in mkstemp defined in mingw.c.
+
+* 2005-02-13
+  - Added mlnlffigen tool (heavily adapted from SML/NJ).
+
+* 2005-02-12
+  - Added MLNLFFI Library (heavily adapted from SML/NJ) to standard 
+    distribution.
+
+* 2005-02-04
+  - Fixed a bug in OS.path.toString, which did not raise InvalidArc
+    when needed.
+
+* 2005-02-03
+  - Fixed a bug in OS.Path.joinDirFile, which did not raise InvalidArc
+    when passed a file that was not an arc.
+
+* 2005-01-26
+  - Fixed a front end bug that incorrectly rejected expansive valbinds
+    with useless bound type variables.
+
+* 2005-01-22
+  - Fixed x86 codegen bug which failed to account for the possibility that
+    a 64-bit move could interfere with itself (as simulated by 32-bit
+    moves).
+
+* 2004-12-22
+  - Fixed Real32.fmt StringCvt.EXACT, which had been producing too
+    many digits of precision because it was converting to a
+    Real64.real.
+
+* 2004-12-15
+  - Replaced MLB path variable MLTON_ROOT with SML_LIB, to use a more
+    compiler-independent name.  We will keep MLTON_ROOT aliased to
+    SML_LIB until after the next release.
+
+* 2004-12-02
+  - Unix.create now works on all platforms (including Cygwin and MinGW).
+
+* 2004-11-24
+  - Added support for MLton.Process.create, which works on all
+    platforms (including Windows-based ones like Cygwin and MinGW) and
+    allows better control over std{in,out,err} for child process.
+
+--------------------------------------------------------------------------------
+
+Here are the changes from version 20040227 to 20041109.
+
+Summary:
+  + New platforms:
+   o x86: FreeBSD 5.x, OpenBSD
+   o PowerPC: Darwin (MacOSX)
+  + Support for MLBasis files.
+  + Support for dynamic libraries.
+  + Support for Concurrent ML (CML).
+  + New structures: Int2, Int3, ..., Int31 and Word2, Word3, ..., Word31.
+  + A new form of profiling, -profile count.
+  + A bytecode generator.
+  + Data representation improvements.
+  + MLton structure changes.
+    o Added: share, shareAll
+    o Changed: Exn, IntInf, Signal, Thread.
+  + Command-line switch changes.
+    o Deprecated: 
+        -native (use -codegen)
+        -sequence-unit (use -default-ann)
+        -warn-match (use -default-ann)
+        -warn-unused (use -default-ann)
+    o Removed: 
+        -detect-overflow
+        -exn-history (use -const)
+        -safe
+        -show-basis-used
+    o Added: 
+        -codegen
+        -const
+        -default-ann
+        -disable-ann
+        -profile-branch
+        -target-link-opt
+
+* 2004-09-22
+  - Extended _import to support indirect function calls.
+
+* 2004-09-13
+  - Made Date.{fromString,scan} accept a space (treated as zero) in
+    the first character of the day of the month.
+
+* 2004-09-12
+  - Fixed bug in IntInf that could cause a seg fault.
+  - Remove MLton.IntInf.size.
+
+* 2004-09-05
+  - Made -detect-overflow and -safe expert options.
+
+* 2004-08-30
+  - Added val MLton.share: 'a -&gt; unit, which maximizes sharing in a
+    heap object.
+
+* 2004-08-27
+  - Fixed bug in Real.toLargeInt.  It would incorrectly raise Option
+    instead of Overflow in the case when the real was not an INF, but
+    rounding produced an INF.
+  - Fixed bugs in Date.{fmt,fromString,scan,toString}.  They
+    incorrectly allowed a space for the first character in the day of
+    the month.
+
+* 2004-08-18
+  - Changed MLton.{Thread,Signal,World} to distinguish between 
+    implicitly and explicitly paused threads.
+
+* 2004-07-28
+  - Added support for programming in the large using the ML Basis
+    system.
+
+* 2004-07-11
+  - Fixed bugs in ListPair.*Eq functions, which incorrectly raised
+    the UnequalLengths exception.
+
+* 2004-07-01
+  - Added val MLton.Exn.addExnMessager: (exn -&gt; string option) -&gt; unit
+
+* 2004-06-23
+  - Runtime system options that take memory sizes now accept a &quot;g&quot;
+    suffix indicating gigabytes.  They also now take a real instead of
+    an integer, e.g. fixed-heap 0.5g.  They also now accept uppercase,
+    e.g. 150M.
+
+* 2004-06-12
+  - Added support for OpenBSD.
+
+* 2004-06-10
+  - Added support for FreeBSD 5.x.
+
+* 2004-05-28
+  - Deprecated the -native flag.  Instead, use the new flag
+    -codegen {native|bytecode|C}.  This is in anticipation of adding a
+    bytecode compiler.
+
+* 2004-05-26
+  - Fixed a front-end bug that could cause cascading error to print a
+    very large and unreadable internal bug message of the form
+    &quot;datatype ... realized with scheme Unknown&quot;.
+
+* 2004-05-17
+  - Automatically restart functions in the Basis Library that correspond
+    directly to interruptable system calls.
+
+* 2004-05-13
+  - Added -profile count, for dynamic counts of function calls and branches.
+  - Equate the types Posix.Signal.signal and Unix.signal.
+
+* 2004-05-11
+  - Fixed a bug with -basis 1997 that would cause type errors due to
+    differences between types in the MLton structure and types in the
+    rest of the basis library.
+
+* 2004-05-01
+  - Fixed a bug with sharing constraints in signatures that would
+    sometimes mistakenly treat two structures as identical when they
+    shouldn't have been.  This would cause some programs to be
+    mistakenly rejected. 
+
+* 2004-04-30
+  - Added MLton.Signal.{handled,restart}.
+
+* 2004-04-23
+  - Added Timer.checkCPUTimes, and updated the Timer structure to
+    match the latest basis spec.  Also fixed totalCPUTimer and
+    totalRealTimer, which were wrong.
+
+* 2004-04-13
+  - Added MLton.Signal.Mask.{getBlocked,isMember}.
+
+* 2004-04-12
+  - Fix bug that mistakenly generalized variable types containing
+    unknown types when matching against a signature.
+  - Reasonable front-end error message when unification causes
+    recursive (circular) type.
+
+* 2004-04-03
+  - Fixed bug in sharing constraints so that A = B = C means that all
+    pairs AB, AC, BC are shared, not just AB and BC.  This matters in
+    some situations.
+
+* 2004-03-20
+  - Fixed Time.now which was treating microseconds as nanoseconds.
+
+* 2004-03-14
+  - Fixed SSA optimizer bug that could cause the error &quot;&lt;type&gt; has no
+    tyconInfo property&quot;.
+
+* 2004-03-11
+  - Fixed Time.fromReal to raise Time, not Overflow, on
+    unrepresentable times.
+
+* 2004-03-04
+  - Added structures Word2, Word3, ..., Word31.
+
+* 2004-03-03
+  - Added structures Int2, Int3, ..., Int31.
+  - Fixed bug in elaboration of &quot;and&quot; with signatures, structures, and
+    functors so that it now evaluates all right-hand sides before
+    binding any left-hand sides.
+
+--------------------------------------------------------------------------------
+Here are the changes from version 20030716 to 20040227.
+
+Summary:
+  + The front end now follows the Definition of SML and produces
+    readable error messages.
+  + Added support for NetBSD.
+  + Basis library changes tracking revisions to the specification.
+  + Added structures: Int64, Real32, Word64.
+  + File positions use Int64.
+  + Major improvements to -show-basis, which now displays the basis in
+    a very readable way with full type information.
+  + Command-line switch changes.
+    o Deprecated: -basis.
+    o Removed: -lib-search, -link, -may-load-world, -static.
+    o Added: -link-opt, -runtime, -sequence-unit, -show-def-use,
+             -stop tc, -warn-match, -warn-unused. 
+    o Changed: -export-header, -show-basis, -show-basis-used.
+    o Renamed: -host to -target.
+  + FFI changes.
+    o Renamed _ffi as _import.
+    o Added cdecl and stdcall attributes to _import and _export
+      expressions. 
+  + MLton structure changes.
+    o Added: Pointer.
+    o Removed: Ptrace.
+    o Changed: Finalizable, IntInf, Platform, Random, Signal, Word.
+
+* 2004-02-16
+  - Changed -export-header, -show-basis, -show-basis-used to take a
+    file name argument, and they no longer force compilation to halt.
+  - Added -show-def-use and -warn-unused, which deal with def-use
+    information.
+
+* 2004-02-13
+  - Added flag -sequence-unit, which imposes the constraint that in
+    the sequence expression (e1; e2), e1 must be of type unit.
+
+* 2004-02-10
+  - Lots of changes to MLton.Signal: name changes, removal of
+    superfluous functions, additional functions.
+
+* 2004-02-09
+  - Extended -show-basis so that when used with an input program, it
+    shows the basis defined by the input program.
+  - Added &quot;stop&quot; runtime argument.
+  - Made -call-graph {false|true} an option to mlprof that determines
+    whether or not a call graph file is written.
+
+* 2004-01-20
+  - Fixed a bug in IEEEReal.{fromString,scan}, which would improperly
+    return INF instead of ZERO for things like &quot;0.0000e123456789012345&quot;.
+  - Fixed a bug in Real.{fromDecimal,fromString,scan}, which didn't
+    return an appropriately signed zero for ~0.0.
+  - Fixed a bug in Real.{toDecimal,fmt}, which didn't correctly handle
+    ~0.0.
+  - Report a compile-time error on unrepresentable real constants.
+
+* 2004-01-05
+  - Removed option -may-load-world.  You can now use -runtime
+    no-load-world instead.
+  - Removed option -static.  You can now use -link-opt -static
+    instead.
+  - Changed MLton.IntInf.size to return 0 instead of 1 on small ints.
+
+* 2003-12-28
+  - Fixed horrible bug in MLton.Random.alphaNumString that caused it
+    to return 0 for all characters beyond position 11.
+
+* 2003-12-17
+  - Removed -basis as a normal flag.  It is still available as an
+    expert flag, but its use is deprecated.  It will almost certainly
+    disappear after the next release.
+
+* 2003-12-10
+  - Allow multiple @MLton -- runtime args in sequnce.  This makes it
+    easier for scripts to prefix @MLton args without having to splice
+    them with other ones.
+
+* 2003-12-04
+  - Added support for files larger than 2G.  This included changing
+    Position from Int32 to Int64.
+
+* 2003-12-01
+  - Added structure MLton.Pointer, which includes a type t for
+    pointers (memory addresses, not SML heap pointers) and operations 
+    for loading from and storing to memory.
+
+* 2003-11-03
+  - Fixed Timer.checkGCTime so that only the GC user time is included,
+    not GC system time.
+
+* 2003-10-13
+  - Added -warn-match to control display nonexhaustive and redundant
+    match warnings. 
+  - Fixed space leak in StreamIO causing the entire stream to be
+    retained.   Thanks to Jared Showalter for the bug report and fix.
+
+* 2003-10-10
+  - Added &quot;-stop tc&quot; switch to stop after type checking.
+
+* 2003-09-25
+  - Fixed Posix.IO.getfl, which had mistakenly called fcntl with
+    F_GETFD instead of F_GETFL.
+  - Tracking basis library changes: 
+    o Socket module datagram functions no longer return amount
+      written, since they always write the entire amount or fail.  So,
+      send{Arr,Vec}To{,'} now return unit instead of int.
+    o Added nonblocking versions of all the send and recv functions,
+      as well as accept and connect.  So, we now have:
+      acceptNB, connectNB, recv{Arr,Vec}{,From}NB{,'},
+      send{Arr,Vec}{,To}NB{,'}
+
+* 2003-09-24
+  - Tracking basis library changes:
+    o TextIO.inputLine now returns a string option.
+    o Slices used in Byte, PRIM_IO, PrimIO, Posix.IO, StreamIO
+    o Posix.IO.readVec raises Size, not Subscript, with negative
+      argument. 
+
+* 2003-09-22
+  - Fixed Real.toManExp so that the mantissa is in [0.5, 1), 
+    not [1, 2).  The spec says that 1.0 &lt;= man * radix &lt; radix, which
+    since radix is 2, implies that the mantissa is in [0.5, 1).
+  - Added Time.{from,to}Nanoseconds.
+
+* 2003-09-11
+  - Added Real.realRound.
+  - Added Char{Array,Vector}Slice to Text.
+
+* 2003-09-11
+  - OS.IO.poll and Socket.select now raise errors on negative
+    timeouts.
+  - Time.time is now implemented using IntInf instead of Int, which
+    means that a much larger range of time values is representable.
+
+* 2003-09-10
+  - Word64 is now there.
+
+* 2003-09-09
+  - Replaced Pack32{Big,Little} with PackWord32{Big,Little}.
+  - Fixed bug in OS.FileSys.fullPath, which mistakenly stopped as soon
+    as it hit a symbolic link.
+
+* 2003-09-08
+  - Fixed @MLton max-heap, which was mistakenly ignored.  Cleaned up
+    @MLton fixed-heap.  Both fixed-heap and max-heap can use copying
+    or mark-compact collection.
+
+* 2003-09-06
+  - Int64 is completely there.
+  - Fixed OS.FileSys.tmpName so that it creates the file, and doesn't
+    use tmpnam.  This eliminates an annoying linker warning message.
+
+* 2003-09-05
+  - Added structures {LargeInt,LargeReal,LargeWord,Word}
+                     {Array,Array2,ArraySlice,Vector,VectorSlice}
+  - Fixed bug in Real.toDecimal, which return class NORMAL for
+    subnormals.
+  - Fixed bug in Real.toLargeInt, which didn't return as precise an
+    integer as possible.
+
+* 2003-09-03
+  - Lots of fixes to Real functions.
+    o Real32 is now completely in place, except for Real32.nextAfter
+      on SunOS. 
+    o Fixed Real.Math.exp on x86 to return the right value when
+      applied to posInf and negInf.
+    o Changed Real.Math.{cos,sin,tan} on x86 to always use a call to
+      the C math library instead of using the x86 instruction.  This
+      eliminates some anomalies between compiling -native false and
+      -native true.
+    o Change Real.Math.pow to handle exceptional cases in the SML
+      code. 
+    o Fixed Real.signBit on Sparcs.
+
+* 2003-08-28
+  - Fixed PackReal{,64}Little to work correctly on Sparc.
+  - Added PackReal{,64}Big, PackReal32{Big,Little}.
+  - Added -runtime switch, which passes arguments to the runtime via
+    @MLton.  These arguments are processed before command line
+    switches.
+  - Eliminated MLton switch -may-load-world.  Can use -runtime
+    combined with new runtime switch -no-load-world to disable load
+    world in an executable.
+
+* 2003-08-26
+  - Changed -host to -target.
+  - Split MLton.Platform.{arch,os} into MLton.Platform.{Arch,OS}.t.
+
+* 2003-08-21
+  - Fixed bug in C codegen that would cause undefined references to
+    Real_{fetch,move,store} when compiling on Sparcs with -align 4.
+
+* 2003-08-17
+  - Eliminated -link and -lib-search, which are no longer needed.
+    Eliminated support for passing -l*, -L*, and *.a on the command
+    line.  Use -link-opt instead. 
+
+* 2003-08-16
+  - Added -link-opt, for passing options to gcc when linking.
+
+* 2003-07-19
+  - Renamed _ffi as _import.  The old _ffi will remain for a while,
+    but is deprecated and should be replaced with _import.
+  - Added attributes to _export and _import.  For now, the only
+    attributes are &quot;cdecl&quot; and &quot;stdcall&quot;.
+
+--------------------------------------------------------------------------------
+Here are the changes from version 20030711 to 20030716.
+
+Summary:
+  + Fixed several serious bugs with the 20030711 release.
+
+* 2003-07-15
+  - Fixed bug that caused a segfault when attempting to create an
+    array that was too large, e.g
+       1 + Array.sub (Array.tabulate (valOf Int.maxInt, fn i =&gt; i), 0)
+  - mlton now checks the command line arguments following the file to
+    compile that are passed to the linker to make sure they are
+    reasonable.
+
+* 2003-07-14
+  - Fixed packaging for Cygwin and Sparc to include libgmp.a.
+  - Eliminated bootstrap target.  The Makefile automatically
+    determines whether to bootstrap or not.
+  - Fixed XML type checker bug that could cause error: empty tyvars in
+    PolyVal dec.
+
+* 2003-07-12
+  - Turned off FORCE_GENERATIONAL in gc.  It had been set, which
+    caused the gc to always use generational collection.  This could
+    seriously slow apps down that don't need it.
+
+--------------------------------------------------------------------------------
+Here are the changes from version 20030312 to 20030711.
+
+Summary:
+  + Added support for Sparc/SunOS using the C code generator.
+  + Completed the basis library implementation.  At this point, the
+    only missing basis library function is &quot;use&quot;.
+  + Added _export, which allows one to call SML functions from C.
+  + Added weak pointers (via MLton.Weak) and finalization (via
+    MLton.Finalizable).
+  + Added new integer modules: Int8, Int16.
+  + Better profiling call graphs
+  + Fixed conversions between reals and their decimal representations
+    to be correct using the gdtoa library.
+
+* 2003-07-07
+  - Profiling improvements
+    o Eliminated mlton -profile-split.  Added mlprof -split.  Now the
+      profiling infrastructure keeps track of the splits and allows
+      one to decide which splits to make (if any) when mlprof is run,
+      which is much better than having to decide at compile time.
+    o Changed mlprof -graph to mlprof -keep, and changed the behavior
+      so that -keep also controls which functions are displayed in the
+      table.
+    o Eliminated mlprof -ignore: it's behavior is now subsumed by
+      -keep, whose meaning has changed to be more like -ignore on
+      nodes that are not kept.
+  - When calling gcc for linking, put -link args in same order as they
+    appeared on the MLton command line (they used to be reversed).
+
+* 2003-07-03
+  - Making OS.Process.{atExit,exit} conform to the basis library spec
+    in that exceptions raised during cleaners are caught and ignored.
+    Also, calls to exit from cleaners cause the rest of cleaners to
+    run.
+
+* 2003-07-02
+  - Fixed bug with negative IntInf constants that could cause compile
+    time error message:
+    &quot;x86Translate.translateChunk ... strange Offset: base: ...&quot;
+  - Changed argument type of MLton.IntInf.Small from word to int.
+  - Added fix to profiling so that the mlmon.out file is written even
+    when the program terminates due to running out of memory.
+
+* 2003-06-25
+  - Added {Int{8,16},Word8}{,Array,ArraySlice,Vector,VectorSlice,Array2}
+    structures.
+
+* 2003-06-25
+  - Fixed bug in IntInf.sign, which returned the wrong value for zero.
+
+* 2003-06-24
+  - Added _export, for calling from C to SML.
+
+* 2003-06-18
+  - Regularization of options.
+        -diag --&gt; -diag-pass
+        -drop-pass takes a regexp
+
+* 2003-06-06
+  - Fixed bug in OS.IO.poll that caused it to return the input event
+    types polled for instead of what was actually available.
+
+* 2003-06-04
+  - Fixed bug in known case SSA optimization that could case incorrect 
+    results in compiled programs.
+
+* 2003-06-03
+  - Fixed bug in SSA optimizer that could cause the error message
+        Type error: Type.equals
+        {from = char vector, to = unit vector}
+        Type error: analyze raised exception loopStatement: ...
+        unhandled exception: TypeError
+
+* 2003-06-02
+  - Fixed Real.rem to work correctly on infs and nans.
+  - Fixed bug in profiling that caused the function name to be omitted
+    on functions defined by val rec.
+
+* 2003-05-31
+  - Fixed Real.{fmt,fromString,scan,toString} to match the basis
+    library spec.
+  - Added IEEEReal.{fromString,scan}.
+  - Added Real.{from,to}Decimal.
+
+* 2003-05-25
+  - Added Real.nextAfter.
+  - Added OS.Path.{from,to}UnixPath, which are the identity function
+    on Unix.
+
+* 2003-05-20
+  - Added type MLton.pointer, the type of C pointers, for use with the
+    FFI.
+
+* 2003-05-18
+  - Fixed two bugs in type inference that could cause the compiler to
+    raise the TypeError exception, along with a lot of XML IL.
+    The type-check.sml regression contains simple examples of what
+    failed.
+  - Fixed a bug in the simplifier that could cause the message:
+    shrinker raised Prim.apply raised assertion failure: SmallIntInf.fromWord
+
+* 2003-05-15
+  - Fixed bug in Real.class introduced on 04-28 that cause many
+    regression failures with reals when using newer gccs.
+  - Replaced MLton.Finalize with MLton.Finalizable, which has a more
+    robust approach to finalization.
+
+* 2003-05-13
+  - Fixed bug in MLton.FFI on Cygwin that caused Thread_returnToC to
+    be undefined.
+
+* 2003-05-12
+  - Added support for finalization with MLton.Finalize.
+
+* 2003-05-09
+  - Fixed a runtime system bug that could cause a segfault.  This bug
+    would happen after a GC during heap resizing when copying a heap,
+    if the heap was allocated at a very low (&lt;10M) address.  The bug
+    actually showed up on a Cygwin system. 
+
+* 2003-05-08
+  - Fixed bug in HashType that raised &quot;Vector.forall2&quot; when the 
+    arity of a type constructor is changed by simplifyTypes, but
+    a newly constructed type has the same hash value.
+
+* 2003-05-02
+  - Switched over to new layered IO implementation, which completes
+    the implementation of the BinIO and TextIO modules.
+
+* 2003-04-28
+  - Fixed bug that caused an assertion failure when generating a jump 
+    table for a case dispatch on a non-word sized index with non-zero
+    lower bound on the range.
+
+* 2003-04-24
+  - Added -align {4|8}, which controls alignment of objects.  With
+    -align 8, memory accesses to doubles are guaranteed to be aligned
+    mod 8, and so don't need special routines to load or store.
+
+* 2003-04-22
+  - Fixed bug that caused a total failure of time profiling with
+    -native false.  The bug was introduced with the C codegen
+    improvements that split the C into multiple files.  Now, the C
+    codegen declares all profile labels used in each file so that they
+    are global symbols. 
+
+* 2003-04-18
+  - Added MLton.Weak, which supports weak pointers.
+
+* 2003-04-10
+  - Replaced the basis library's MLton.hostType with
+    MLton.Platform.arch and MLton.Platform.os.
+
+* 2003-04
+  - Added support for SPARC/SunOS using the C codegen.
+
+* 2003-03-25
+  - Added MLton.FFI, which allows callbacks to SML from C.
+
+* 2003-03-21
+  - Fixed mlprof so that the default -graph arg for data from
+    -profile-stack true is '(thresh-stack x)', not '(thresh x)'.
+
+--------------------------------------------------------------------------------
+Here are the changes from version 20020923 to 20030312.
+
+Summary:
+  + Added source-level profiling of both time and allocation.
+  + Updated basis library to 2002 specification.  To obtain the old
+    library, compile with -basis 1997.
+  + Added many modules to basis library: 
+    BinPrimIO, GenericSock, ImperativeIO, INetSock, NetHostDB,
+    NetProtDB, NetServDB, Socket, StreamIO, TextPrimIO, UnixSock.
+  + Completed implementation of IntInf and OS.IO.
+
+* 2003-02-23
+  - Replaced -profile-combine wih -profile-split.
+
+* 2003-02-11
+  - Regularization of options.
+        -l --&gt; -link
+        -L --&gt; -lib-search
+        -o --&gt; -output
+        -v --&gt; -verbose
+
+* 2003-02-10
+  - Added option to mlton: -profile-combine {false|true}
+
+* 2003-02-09
+  - Added options to mlprof: -graph-title, -gray, -ignore, -mlmon,
+        -tolerant.
+
+* 2002-11 - 2003-01
+  - Added source-level allocation and time profiling.  This includes
+        the new options to mlton: -profile and -profile-stack.
+
+* 2002-12-28
+  - Added NetHostDB,NetProtDB,NetServDB structures.
+  - Added Socket,GenericSock,INetSock,UnixSock structures.
+
+* 2002-12-19
+  - Fixed bug in signal check insertion that could cause some signals
+    to be missed.  The fix was to add a signal check on entry to each
+    function in addition to at each loop header.
+
+* 2002-12-10
+  - Fixed bug in runtime that might cause the message
+        Unable to set cardMapForMutator.
+
+* 2002-11-23
+  - Added support for the latest Basis Library specification.
+  - Added option -basis to choose Basis Library version.  Currently available
+    basis libraries are 2002, 2002-strict, 1997, and none.
+  - Added IntInf.{orb,xorb,andb,notb,&lt;&lt;,~&gt;&gt;} values.
+  - Added OS.IO.{poll_desc,poll_info} types.
+  - Added OS.IO.{pollDesc,pollToIODesc,infoToPollDesc,Poll} values.
+  - Added OS.IO.{pollIn,pollOut,pollPri,poll,isIn,isOut,isPri} values.
+  - Added BinPrimIO,TextPrimIO structures.
+  - Added StreamIO,ImperativeIO functors.
+
+* 2002-11-22
+  - Fixed bug that caused time profiling to fail (with a segfault) when resuming
+    a saved world. 
+
+* 2002-11-07
+  - Fixed bug in MLton.eq that could arise when using eq on functions.
+
+* 2002-11-05
+  - Improvements to polymorphic equality.  Equality on IntInfs, vectors,
+    and dataypes all do an eq test first before a more expensive comparison.
+
+* 2002-11-01
+  - Added allocation profiling.  Now, can compile with either -profile alloc
+    or -profile time.  Renamed MLton.Profile as MLton.ProfileTime.  Added
+    MLton.ProfileAlloc.  Cleaned up and changed most mlprof option names.
+
+* 2002-10-31
+  - Eliminated MLton.debug.
+  - Fixed bug in the optimizer that affected IntInf.fmt.  The optimizer
+    had been always using base 10, instead of the passed in radix.
+
+* 2002-10-22
+  - Fixed Real.toManExp so that the mantissa is in [1, 2), not [0.5, 1).
+  - Added Real.fromLargeInt, Real.toLargeInt.
+  - Fixed Real.split, which would return an incorrect whole part due to
+    the underlying primitive, Real_modf, being treated as functional instead
+    of side-effecting.
+
+* 2002-09-30
+  - Fixed rpath problem with packaging.  All executables in packages previously
+    made had included a setting for RPATH.
+
+--------------------------------------------------------------------------------
+
+Here are the changes from version 20020410 to 20020923.
+
+Summary:
+  + MLton now runs on FreeBSD.
+  + Major runtime system improvements.  The runtime now implements
+    mark-compact and generational collection, in addition to the copying
+    collection that was there before.  It automatically switches between
+    the the collection strategies to improve performance and to try to avoid
+    paging.
+  + Performance when compiling &quot;-exn-history true&quot; has been improved.
+  + Added IntInf.log2, MLton.GC.pack, MLton.GC.unpack.
+  + Fixed bug in load world that could cause &quot;sread failed&quot; on Cygwin.
+  + Fixed optimizer bug that could cause &quot;no analyze var value property&quot;
+    message. 
+
+* 2002-09
+  - Integrated Sam Rushing's changes to port MLton to FreeBSD.
+
+* 2002-08-25
+  - Changed the implementation of exception history to be completely functional.
+    Now, the extra field in exceptions (when compiling -exn-history true) is a
+    string list instead of a string list ref, and raise conses a new exception
+    with a new element in the list instead of assigning to the list.  This 
+    changes the semantics of exception history (for the better) on some
+    programs. See regression/exnHistory3.sml for an example.  It also
+    significantly improves performance when compiling -exn-history true.
+
+* 2002-07 and 2002-08
+  - Added generational GC, and code to the runtime that automatically turns it
+    on and off.
+
+* 2002-08-20
+  - Fixed SSA optimizer bug that could cause the following error message
+        x_0 has no analyze var value property 
+
+* 2002-07-28
+  - Added MLton.GC.{pack,unpack}.  pack shrinks the heap so that other processes
+    can use the RAM, and its dual, unpack, resizes the heap to the desired size.
+
+* 2002-06 and 2002-07
+  - Added mark compact GC.
+  - Changed array layout so that arrays have three, not two header words.
+      The new word is a counter word that preceeds the array length and header.
+  - Changed all header words to be indices into an array of object descriptors.
+
+* 2002-06-27
+  - Added patches from Michael Neumann to port runtime to FreeBSD 4.5.
+
+* 2002-06-05
+  - Output file and intermediate file are now saved in the current directory
+    instead of in the directory containing the input file.
+
+* 2002-05-31
+  - Fixed bug in overloading of / so that the following now type checks:
+        fun f (x, y) = x + y / y
+
+* 2002-04-26
+  - Added back max-heap runtime option.
+
+* 2002-04-25
+  - Fixed load/save world so that they use binary mode.  This should fix the
+    &quot;sread failed&quot; problem that Byron Hale saw on Cygwin that caused mlton to
+    fail to start.
+  - Added IntInf.log2.
+  - Changed call to linker to use libgmp.a (if it exists) instead of libgmp.so.
+    This is because the linker adds a dependency to a shared library even if
+    there are no references to it
+
+* 2002-04-23
+  - Rewrote heap resizing code.  This fixed bug that was triggered with large
+    heaps and could cause a spurious out of memory error.
+  - Removed gmp from MLton sources (again :-).
+
+--------------------------------------------------------------------------------
+
+Here are the changes from version 20011006 to version 20020410.
+
+* 2002-03-28
+  - Added BinIO.
+
+* 2002-03-27
+  - Regularization of options
+        -g      --&gt;     -degug {false|true}
+        -h n    --&gt;     -fixed-heap n
+        -p      --&gt;     -profile {false|true}
+
+* 2002-03-22
+  - Set up the stubs so that MLton can be compiled in the standard basis
+    library, with no MLton structure.  Thus it is now easy to compile MLton
+    with an older (or newer) version of itself that has a different MLton 
+    structure.
+
+* 2002-03-17
+  - Added MLton.Process.{spawn,spawne,spawnp}, which use primitives when 
+    running on Cygwin and fork/exec when running on Linux.
+
+* 2002-02 - 2002-03
+  - Added the ability to cross-compile to Cygwin/Windows.
+
+* 2002-02-24
+  - Added gmp back for use with Cygwin.
+
+* 2002-02-10
+  - Reworked object header words so that Array.maxLen = valOf Int.maxInt.  
+    Also fixed a long-standing minor bug in MLton, where
+    Array.array (Array.maxLen, ...) would raise Size instead of attempting
+    to allocate the array.  It was an off-by-one error in the meaning of 
+    Array.maxLen.
+
+* 2002-02-08
+  - Modifications to runtime to behave better in situations where the amount of
+    live data is a signifant fraction of the amount of RAM, based on code from
+    PolySpace.  MLton executables by default can now use more than the
+    available amount of RAM.  Executables will still respect the max-heap
+    runtime arg if it is set. 
+
+* 2002-02-04
+  - Improvements to runtime so that it fails to get space, it attempts to get 
+    less space instead of failing.  Based on PolySpace's modifications.
+  - Added MLton.eq.
+
+* 2002-02-03
+  - Added MLton.IntInf.gcd.
+  - Removed gmp from MLton sources.  We now link with /usr/lib/gmp.a.
+  - Added TextIO.getPosOut.
+  - Renamed type MLton.Itimer.which to MLton.Itimer.t and 
+    MLton.Itimer.whichSignal to MLton.Itimer.signal.
+  - Added -coalesce flag, for use with the C backend.
+
+* 2002-01-26
+  - Added -show-basis-used, which prints out the parts of the basis library 
+    that the input program uses.
+  - Changed several other flags (-print-at-fun-entry, -show-basis, -static)
+    to follow the {false|true} convention.
+
+* 2002-01-22
+  - Improved MLton.profile so that multiple profile arrays can exist
+    simultaneously and so that the current one being used can be set from
+    the SML side.
+
+* 2002-01-18
+  - The MACHINE IL has been replaced with an RSSA (representation explicit SSA)
+    IL and an improved MACHINE IL.  
+
+* 2002-01-16
+  - Added known case SSA optimization
+
+* 2002-01-14
+  - Added rudimentary profiling control from with a MLton compile program via the
+    MLton.Profile structure.
+
+* 2002-01-09
+  - Fixed bug in match compiler that caused case expressions on datatypes
+    with redundant cases to be compiled incorrectly.
+
+* 2002-01-08
+  - Added redundant tuple construction elimination to SSA shrinker.
+  - Improved flatten SSA optimization.
+
+* 2001-12-06
+  - Changed the interface for MLton.Signal.  There is no longer a separate
+    Handler substructure.  This was done so that programs that just use
+    default and ignore signal handlers don't bring in the entire thread
+    mechanism.
+
+* 2001-12-05
+  - Added local ref elimination SSA optimization.
+
+* 2001-11-19
+  - The CPS IL has been replaced with an SSA (static-single assignment) IL.
+    All of the optimizations have been ported from CPS to SSA.
+
+* 2001-10-24
+  - Fixed bug in Thread_atomicEnd -- limit was mistakenly set to base instead of
+    to 0.  This caused assertion failures when for executables compiled -g
+    because GC_enter didn't reset the limit.
+  - Fixed bug in register allocation of byte registers.
+
+* 2001-10-23
+  - Added -D option to cmcat for preprocessor defines.  Thanks to Anoq for
+    sending the code.
+  - Changed limit check insertion so that limit checks are only coalesced within
+    a single basic block -- not across blocks.  This slows many benchmarks down,
+    but is needed to fix a bug in the way that limit checks were coalesced across
+    blocks.  Hopefully we will figure out a better fix soon.
+
+* 2001-10-18
+  - Fixed type inference of flexrecord so that it now follows the Definition.
+    Many programs containing flexrecords were incorrectly rejected.  Added many
+    new tests to regression/flexrecord.sml.
+  - Changed the behavior of -keep dot combined with -keep pass for SSA passes.
+    Dot files are now saved for the program before and after, instead of just
+    after.
+
+* 2001-10-11
+  - Fixed a bug in the type inference that caused type variables to be
+    mistakenly generalized.  The bug was exposed in Norman Ramsey's sled.sml.
+    Added a test to regression/flexrecord.sml to catch the problem.
+
+--------------------------------------------------------------------------------
+
+Here are the changes from version 20010806 to version 20011006.
+
+Summary:
+   + Added MLton.Exn.history, which is similar to SMLofNJ.exnHistory.
+   + Support for #line directives of the form (*#line line.col &quot;file&quot;*).
+   + Performance improvements in native codegenerator.
+   + Bug fixes in front-end, optimizer, register allocator,
+     Real.{maxFinite, minPos, toManExp}, and in heap save and restore.
+
+* 2001-10-5
+  - Fixed a bug in polymorphic layered patterns, like
+        val 'a a as b = []
+    These would always fail due to the variable &quot;a&quot; not being handled correctly.
+  - Fixed the syntax of &quot;val rec&quot; so that a pattern is allowed on the left-hand
+    side of the =.  Thus, we used to reject, but now accept, the following.
+        val rec a as b as c = fn _ =&gt; ()
+        val rec a : unit -&gt; unit : unit -&gt; unit = fn () =&gt; ()
+    Thanks again to Andreas Rossberg's test files.  This is now tested for in
+    valrec.sml.
+  - Fixed dynamic semantics of &quot;val rec&quot; so that if &quot;val rec&quot; is used to
+    override constructor status, then at run time, the Bind exception is raised
+    as per rule 126 of the Definition.  So, for example, the following program
+    type checks and compiles, but raises Bind at run time.
+        val rec NONE = fn () =&gt; ()
+        val _ = NONE ()
+    Again, this is checked in valrec.sml.
+  - Added '\r\n' to ml.lex so that Windows style newlines are acceptable in 
+    input files.
+
+* 2001-10-4
+  - Fixed bug in the implementation of &quot;open&quot; declarations, which in the case of
+    &quot;open A B&quot; had opened A and then looked up B in the resulting environment.  
+    The correct behaviour (see rule 22 of the Definition) is to lookup each
+    longstrid in the current environment, and then open them all in sequence. 
+    This is now checked for in the open.sml regression test.  Thanks to Andreas
+    Rossberg for pointing this bug out.
+  - Fixed bug that caused tyvars of length 1 (i.e. ') to be rejected.  This is
+    now checked in the id.sml regression test.  Again, thanks to Andreas
+    Rossberg for the test.
+
+* 2001-10-2
+  - Fixed bugs in Real.toManExp (which always returned the wrong result because
+    the call to frexp was not treated as side-effecting by the optimizer) and
+    in Real.minPos, which was zero because of a mistake with extra precision
+    bits.
+
+* 2001-10-1
+  - Added MLton.Exn.history.
+  - Fixed register allocation bug with fucom instruction.  Was
+    allowing fucomp when the first source was not removable.
+  - Changed Real.isFinite to use the C math.h finite function.  This fixed the
+    nontermination bug which occurred in any program that used Real.maxFinite.
+
+* 2001-9-22
+  - Bug fixes found from Ramsey's lrtl in contify.fun and unused-args.fun, both
+    of which caused compile-time exceptions to be raised.
+
+* 2001-9-21
+  - Fixed MLton.World.{load,save} so that the saved world does not store the
+    max heap size.  Instead, the max heap size is computed upon load world in
+    exactly the same way as at program startup.  This fixes a long-standing (but
+    only recently noticed) problem in which mlton (which uses a saved world)
+    would attempt to use as much memory as was on the machine used to build
+    world.mlton.
+
+* 2001-8-29
+  - Overlow checking is now on by default in the C backend.  This is a huge
+    performance hit, but who cares, since we never use the C backend except for
+    testing anyways.
+
+* 2001-8-22
+  - Added support for #line directives of the form
+        (*#line line.col &quot;file&quot;*)
+    These directives only affect error messages produced by the parser and 
+    elaborator.   
+
+* 2001-8-17
+  - Fixed bug in removeUnused optimzation that caused the following program to
+    fail to compile.
+        fun f l = case l of [] =&gt; f l | _ :: l =&gt; f l
+        val _ = f [13]
+
+* 2001-8-14
+  - New x86-codegen infrastructure.
+    o support for tracking liveness of stack slots and carrying them 
+       in registers across basic blocks
+    o more specific Entry and Transfer datatypes to make calling convention
+       distinctions more explicit
+    o new heuristic for carrying values in registers across basic blocks
+       (look Ma, no Overflows!)
+    o new &quot;predict&quot; model for generating register allocation hints
+    o additional bug fixes
+
+* 2001-8-7
+  - MLton.Socket.shutdownWrite flushes the outstream.
+
+--------------------------------------------------------------------------------
+
+Here are the changes from version 20010706 to version 20010806.
+
+Summary:
+    + Word.andb (w, 0xFF) now works correctly
+    + MLton.Rusage.rusage has a patch to work around a linux kernel bug
+    + Programs of the form &quot;exp ; program&quot; are now accepted
+    + Added the &quot;MLton.Rlimit&quot; structure
+    + Added the &quot;-keep dot&quot; flag, which produces call graphs,
+      intraprocedural control-flow graphs, and dominator trees
+
+* 2001-8-6
+  - Added simple common block elimination CPS optimization.
+
+* 2001-8-2
+  - Took out -keep il.
+
+* 2001-7-31
+  - Performance improvements to TextIO.{input, output, output1}
+
+* 2001-7-25
+  - Added redundant-test elimination CPS optimization.
+
+* 2001-7-21
+  - Added common-subexpression elimination CPS optimization.
+
+* 2001-7-20
+  - Bug fix to x86 codegen.  The commuteBinALMD peephole optimization would
+    rewrite  mov 2,Y; add Y,Y  as  mov Y,Y; add 2,Y.  Now the appropriate
+    interference checks are made.
+  - Added intraprocedural unused argument removal.
+  - Added intraprocedural flattener.  This avoids some stupid tuple
+    allocations in loops.  Decent speedup on a few benchmarks
+    (count-graphs, psdes-random, wc-scanStream) and no noticeable
+    slowdowns.
+  - Added -keep dot flag.
+
+* 2001-7-17
+  - Modified grammar to properly handle val rec.  There were several problems.
+    o MLton had accepted &quot;val rec 'a ...&quot; instead of &quot;val 'a rec ...&quot;
+    o MLton had not accepted &quot;val x = 13 and rec f = fn () =&gt; ()&quot;
+    o MLton had not accepted &quot;val rec rec f = fn () =&gt; ()&quot;
+    o MLton had not accepted &quot;val rec f = fn () =&gt; () and rec g = fn () =&gt; ()&quot;
+
+* 2001-7-16
+  - Workaround for Linux kernel bug that can cause getrusage to return a wrong
+    system time value (low by one second).  See fixedGetrusage in gc.c.
+  - Bug fix to x86 codegen.  The register allocator could get confused when
+    doing comparisons of floating point numbers and use the wrong operand. 
+    The bug seems to have never been detected because it only happens when both
+    of the operands are already on the floating point stack, which is rare,
+    since one is almost always in memory since we don't carry floating point
+    values in the stack across basic blocks.
+  - Added production to the grammar on page 58 of the Definition that had been
+    missing from MLton since day one.
+                program ::= exp ; &lt;program&gt;
+    Also updated docs to reflect change.
+  - Modified grammar to accept the empty program.
+  - Added -type-check expert flag to turn on type checking in ILs.
+
+* 2001-7-15
+  - Bug fix to the algebraic simplifier.  It had been rewriting
+                Word32.andb (w, 0wxFF) to w
+    instead of  Word32.andb (w, 0wxFFFFFFFF) to w.
+
+* 2001-7-13
+  - Improved CPS shrinker so that if-tests where the then and else branch jump
+    to the same label is turned into a direct jump.
+  - Improved CPS shrinker (Prim.apply) to handle constructors
+        A = A --&gt; true
+        A = B --&gt; false
+        A x = B y --&gt; false
+  - Rewrote a lot of loops in the basis library to use inequalities instead of
+    equality for the loop termination test so that the (forthcoming) overflow
+    detection elimination will work on the loop index variable.
+
+* 2001-7-11
+  - Fixed minor bugs in Array2.{array,tabulate}, Substring.{slice} that caused 
+    the Overflow exception to be raised instead of Size or Subscript
+  - Fixed bug in Pack32Big.update that caused the wrong location to be updated.
+  - Fixed several bugs in Pack32{Big,Little}.{subArr,subVec,update} that caused
+    Overflow to be raised instead of Subscript.  Also, improved the
+    implementation so that bounds checking only occurs once per call (instead of
+    four times, which was sometimes happening.
+  - Fixed bugs in Time.{toMilliseconds,toMicroseconds} that could cause 
+    a spurious Overflow exception.
+  - Fixed bugs in Time.{fromMilliseconds,fromMicroseconds} that could cause
+    a spurious Time exception.
+  - Improved Pack32.sub* by reordering the orbs.
+  - Improved {Int,IntInf}.mod to increase chances of constant folding.
+  - Switched many uses of +, -, * in basis library to the non-overflow checked
+    versions.  Modules changed were: Array, Array2, Byte, Char, Int, IntInf, 
+    List, Pack32{Big,Little}, Util, String, StringCvt, Substring, TextIO, Time,
+    Vector.
+  - Added regression tests for Array2, Int (overflow checking), Pack32, 
+    Substring, Time.
+  - Changed CPS output so that it includes a dot graph for each CPS function.
+
+* 2001-7-9
+  - Change OS.Process.exit so that it raises an exception if the exit status
+    is not in [0, 256).
+  - Added MLton.Rlimit to provide access to getrlimit and setrlimit.
+
+--------------------------------------------------------------------------------
+
+Here are the changes from the 20000906 version to the 20010706 version.
+
+Summary:
+    + Native X86 code generator (instead of using gcc)
+    + Significantly improved compile times 
+    + Significantly improved run times for generated executables
+    + Many bug fixes
+    + Correct raising of the Overflow exception for integer arithmetic
+    + New modules in the MLton structure
+
+* 2001-7-6
+  - GC mods from Henry.  Mostly adding inline declarations.
+
+* 2001-7-5
+  - Fixed several runtime bugs involving threads, critical sections, and
+    signals.
+
+* 2001-6-29
+  - Fixed performance bug in cps/two-point-lattice.fun that caused quadratic
+    behavior.  This affects the raise-to-jump and useless analayses.  In
+    particular, the useless analysis was blowing up when compiling fxp.
+
+* 2001-6-27
+  - Henry improved wordAlign -- this sped up GC by 27% (during a self compile).
+
+* 2001-6-20
+  - Moved MLton.random to MLton.Random.rand and added other stuff to
+    MLton.Random
+  - Added MLton.TextIO.mkstemp.
+  - Made Int.{div,quot} respect the -detect-overflow switch.
+
+* 2001-6-20
+  - Added MLton.Syslog.
+
+* 2001-6-7
+  - Fixed bug in MLton.Socket.accept that was in the runtime implementation
+    Socket_accept.  It did a setsockopt SO_REUSEADDR after the accept.  It
+    should have been after the call to socket in Socket_listen.  Thanks to
+    Doug Bagley for the fix.
+
+* 2001-5-30
+  - Fixed bug in remove-unused that caused polymorphic equality to return 
+    true sometimes when constructors were never used in a pattern match.
+    For example, the following (in which A and B are not used as patterns):
+        datatype t = A | B
+        datatype u = C of t
+        val _ = if C A = C B then raise Fail &quot;bug&quot; else ()
+
+* 2001-3-27
+  - Fixed bug that caused all of the following to fail
+        {LargeWord,Word,SysWord}.{toLargeInt,toLargeIntX,fromLargeInt}
+    The problem was the basis library file integer/patch.sml which fixed Word32
+    but not the other structures that are the same.
+
+* 2001-2-12
+  - Fixed bug in match compiler that caused it to spend a lot of extra time in
+        deep patterns.  It still could be exponential however.  Hopefully this
+        will get fixed in the release after next.
+        This bug could cause very slow compile times in some cases.
+        Anyways, this fix cut the &quot;finish infer&quot; time of a self compile down
+        from 22 to under 4 seconds.  I.E. most of the time used to be spent due
+        to this bug.
+
+* 2001-2-6
+  - Fixed bug in frontend that caused the wrong file and line number to be
+        reported with errors in functor bodys.
+
+* 2001-1-3 - 2000-2-5
+  - Changes to CoreML, XML, SXML, and CPS ILs to replace lists by vectors in
+        order to decrease space usage.
+
+* 2001-1-16
+  - Fixed a bug in constant propagation where the length of vectors was not
+        propagated properly.
+
+* 2000-12-11 - 2001-1-3
+  - Major rewrite of elaborator to use a single hash table for each namespace
+        instead of a hash table for every environment.
+
+* 2000-12-20
+  - Fixed 



More information about the MLton-commit mailing list