Here are the changes from version 20051202 to version 20070826. 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. o ML Basis annotations. * Removed: allowExport, allowImport, sequenceUnit, warnMatch. + 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-12 - Removed deprecated ML Basis annotations. * 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. Floating-point operations 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".