[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>
+ <a href = "Index">Index</a>
+
+</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>
+ <a href = "Index">Index</a>
+
+</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 <type>,
+ -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<N>.{scan,fromString} operations.
+ Real<N>.{scan,fromString} were using TO_NEAREST semantics, but
+ should obey current rounding mode. (Only Real<N>.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 <= 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<N>{Big,Little} using PackWord<N>{Big,Little}
+ and bit casts.
+
+* 2007-04-11
+ - Move all system header #include-s to platform/ os headers.
+ - Use C99 <assert.h>, rather than custom "assert.{h,c}".
+
+* 2007-03-13
+ - Implement PackWord<N>{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 <n>.
+ - Added expert command line switch -chunkify {coalesce<n>|func|one}.
+
+* 2007-02-20
+ - Fixed bug in PackReal<N>.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 "useless" 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 '<ty><N>' 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 ":", then the text preceding the ":" is meant to
+ denote a compiler. For MLton, if the text preceding the ":" is equal
+ to "mlton", then the remaining annotation is scanned as a normal
+ annotation. If the text preceding the ":" is not-equal to "mlton",
+ 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
+ "ElaborateEnv.functorClosure: firstTycons".
+
+--------------------------------------------------------------------------------
+
+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 "Type error: variable applied to wrong number of type args".
+
+* 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 "0x" and
+ "0X". 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 "missing flexInst".
+
+* 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 -> 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 -> string option) -> unit
+
+* 2004-06-23
+ - Runtime system options that take memory sizes now accept a "g"
+ 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
+ "datatype ... realized with scheme Unknown".
+
+* 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 "<type> has no
+ tyconInfo property".
+
+* 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 "and" 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 "stop" 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 "0.0000e123456789012345".
+ - 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 "-stop tc" 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 <= man * radix < 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 "cdecl" and "stdcall".
+
+--------------------------------------------------------------------------------
+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 => 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 "use".
+ + 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:
+ "x86Translate.translateChunk ... strange Offset: base: ..."
+ - 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 --> -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 (<10M) address. The bug
+ actually showed up on a Cygwin system.
+
+* 2003-05-08
+ - Fixed bug in HashType that raised "Vector.forall2" 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 --> -link
+ -L --> -lib-search
+ -o --> -output
+ -v --> -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,<<,~>>} 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 "-exn-history true" has been improved.
+ + Added IntInf.log2, MLton.GC.pack, MLton.GC.unpack.
+ + Fixed bug in load world that could cause "sread failed" on Cygwin.
+ + Fixed optimizer bug that could cause "no analyze var value property"
+ 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
+ "sread failed" 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 --> -degug {false|true}
+ -h n --> -fixed-heap n
+ -p --> -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 "file"*).
+ + 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 "a" not being handled correctly.
+ - Fixed the syntax of "val rec" 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 _ => ()
+ val rec a : unit -> unit : unit -> unit = fn () => ()
+ Thanks again to Andreas Rossberg's test files. This is now tested for in
+ valrec.sml.
+ - Fixed dynamic semantics of "val rec" so that if "val rec" 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 () => ()
+ 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 "open" declarations, which in the case of
+ "open A B" 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 "file"*)
+ 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 [] => f l | _ :: l => 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 "predict" 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 "exp ; program" are now accepted
+ + Added the "MLton.Rlimit" structure
+ + Added the "-keep dot" 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 "val rec 'a ..." instead of "val 'a rec ..."
+ o MLton had not accepted "val x = 13 and rec f = fn () => ()"
+ o MLton had not accepted "val rec rec f = fn () => ()"
+ o MLton had not accepted "val rec f = fn () => () and rec g = fn () => ()"
+
+* 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 ; <program>
+ 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 --> true
+ A = B --> false
+ A x = B y --> 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 "bug" 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 "finish infer" 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