2.0.0 (2013/10/10) Interpreter functionality: - Print source location for uncaught exceptions. - Abort on errors in batch modes. - New command line option -b to switch standard basis path (or omit it). - Fixed bug in lexing of negative hex constants (thanks to Matthew Fluet). - Fixed missing identifier status check for variable in `as' patterns. - Fixed missing type arity check for structure sharing derived form. - Slightly more faithful checking of syntactic restrictions (ignore duplicate variables in matches). - Slightly more faithful handling of equality maximisation (don't substitute). - Slightly more faithful handling of sharing specifications (don't generate new type names). Interpreter implementation: - Restructured AST to include annotations in the form of typed property list (breaks all code based on HaMLet 1, sorry :( ). - Elaboration stores result of each rule as annotation in respective AST node. - Derived forms make sure to clone nodes where necessary. - Removed ad-hoc type annotation on SCons. - Split Library into StaticLibrary and DynamicLibrary, to support compilers. - Provide separate Elab/EvalProgram modules, to support compilers/interpreter. - Renamed *Grammar* structures to *Syntax*. - Tons of code clean-up and beautification. JavaScript compiler: - New HaMLet mode -j, "compile to JavaScript"". - Simple type-aware source-to-source translation into JavaScript. - JavaScript implementation of Standard Basis Library primitives. Basis: - Implemented CommandLine. - Skeletal implementation of OS.Process. - Implemented Substring.{position,tokens,fields}. Building: - Assume Moscow ML 2.10 by default. - Added String.concatWith and CharVector.all for (old versions of) Moscow ML. - Renamed hamlet-monolith.sml to hamlet-bundle.sml. Documentation: - Updated manual and man page. - Added lax datatype replication rules to issue list (suggested by Karl Crary). - Updated links. 1.3.1 (2008/04/28) Building: - Removed some shell-specific stuff from Makefile. - Added preliminary support for SML#. - Use @SMLcmdname option for SML/NJ instead of hacking. - Avoid name clash with SML/NJ lib >110.66. Documentation: - Added man page. 1.3 (2007/03/22) Interpreter: - Output abstract syntax tree in parsing mode. - Output type and signature environments in evaluation mode. - Fixed computation of tynames on a static basis. - Reorganised directory structure. - Some clean-ups. Documentation: - Updated a few out-of-sync sections. - Added typo in definition of cut-down operator (Section 7.2) to issues list. Test files: - Extended "sharing" and "where". - Updated conformance table. Building: - Support for Poly/ML 5.0. - Support for Alice ML 1.4. - Support for ML Kit 4.3.0. - Support for incremental batch compilation with Moscow ML and Alice ML. - Target to build a generic monolithic source file. - Work around calls to Unsafe structure in later versions of ML-Lex. 1.2.4 (2006/08/14) Documentation: - Clarified license. 1.2.3 (2006/07/18): Interpreter: - Fixed check for duplicate variables in records and layered patterns. - Added missing check for undetermined types in functor declarations. - Overhaul of line/column computation and management of source file names. Documentation: - Added principal typing problem with functors to issue list. Test files: - Added "fun-partial", "functor-poly" and "functor-poly2". - Updated conformance table. Building: - Improvements to Makefile. - Adapt to Basis library changes in newer versions of SML/NJ. - Adapt to ML-Lex in newer version of MLton that fix the token position bug. - Fixed time stamps for generated files. 1.2.2 (2005/12/09): Interpreter: - Simplified implementation of pattern checker. Test files: - Added "fun-infix". Building: - Fixed problem with sed under Mac OS. 1.2.1 (2005/07/27): Interpreter: - Fixed bug in implementation of rule 35. - Fixed bug in check for redundant match rules. Basis: - Fixed Substring.splitr. - Fixed border cases in OS.Path.{toString,joinBaseExt,mkAbsolute,mkRelative}. 1.2 (2005/02/04): Interpreter: - Refactored code to avoid cross-module recursion issues and make experiments with extensions more convenient: semantic objects are now collected in one structure for each part of the semantics; type variable scoping and closure computation (expansiveness check) are separated from elaboration module. - Made checking of syntactic restrictions a separate pass. This renders parsing and evaluation-only functionality more accurate, though it complicates things significantly, since it requires complete binding analysis. - Added missing check for bound variables in signature realisation. - Fixed precedence of environments for open declarations. - Fixed implementation of Abs operator for abstype. - Treat empty lines in sessions properly. - Print type name set T of inferred basis in elaboration mode. - Fixed parenthesisation in pretty printing type applications. Basis: - More correct path resolution for use function. - Added checkFloat to REAL signature so that bootstrapping actually works again. - Fixed ArraySlice.copy for overlapping ranges (test was the wrong way round). - Fixed ArraySlice.foldr[i]. - Fixed Char.isSpace. - Fixed octal escapes in Char.fromCString. - Updated treatment of trailing gap escapes in Char.scan. - Updated scanning of hex prefix in Word.scan. - Fixed traversal order in Vector.map. Documentation: - Updated. - Added typo in rule 28 to issue list. Test files: - Added "generalise". - Extended "poly-exception". Building: - Fixed building with Moscow ML and some versions of SML/NJ. - Fixed building on Windows. - Fixed bootstrapping. 1.1.2 (2005/01/14): Interpreter: - Fix parsing of sequential and sharing specs. - Add arity checks missing in rules 64 and 78 of the Definition. - Implement tyname equality as bool. Basis: - Fixed StringCvt.pad{Left,Right}. Workarounds: - Workaround for lack of ListPair.*Eq functions. - Workaround for type change in OS.Path.mkRelative. Documentation: - Add parsing ambiguity for sharing specs to issue list. - Add missing side conditions in rules 64 and 78 to issue list. - Added version history to appendix. Test files: - Added "poly-exception", "tyvar-shadowing", "where2". - Extended "id" and "valrec". - Updated conformance table (MLton 20041109, SML/NJ 110.52, Alice 1.0). 1.1.1 (2004/04/17): Interpreter: - Disallow undetermined types (a.k.a. "free type variables") on toplevel. - Implement accurate scope checking for type names. - Fixed soundness bug wrt undetermined types in type scheme generalisation test. - Reject out-of-range real constants. - Accept multiple line input. - Output file name and line/columns with error messages. - Improved pretty printing. Basis: - Sync'ed with updates to the specification: overloaded ~ on words, added Word.{from,to}Large[X], removed Substring.all, changed TextIO.inputLine, changed Byte.unpackString[Vec]. - Fixed String.isSubstring. - Fixed String.fields. - Fixed Vector.foldri. Workarounds: - Workaround for Mosml's broken real arithmetic (could raise Div). - Workarounds to adapt to recent changes in the Basis spec (fix-Word.sml, fix-TextIO.sml). Makefile: - Support for working versions of SML/NJ with new CM. - Support for newest MLton. Test files: - Added "abstype2", "dec-strdec", "flexrecord2", "tyname", "undetermined2", "undetermined3". - Split conformance table into different classes of deviation and updated to most recent compiler versions. 1.1 (2002/07/26): Basis: - Adapted signatures to latest version of the Basis spec. - Implemented library functions added to existing structures. - Adapted functions with changed semantics. - Implemented all signatures and structures dealing with array and vector slices. - Implemented Text structure, along with previously missing CharVector and CharArray structures. - Implemented previously missing Byte structure. - Removed SML90 structure and signature. - Opaque signature constraints where the spec uses them (with some necessary exceptions). - Implemented previously missing Bool.{scan,fromString}. - Implemented previously missing Real.{pos,neg}Inf. - Handle exceptions from Char.chr correctly. - Fixed generation of \^X-escapes in Char.toString. - Fixed treatment of gap escapes in Char.scan. (See http://SML.sourceforge.net/Basis/history.html for a list of changes to the Basis specification.) Test files: - Added "replication". - Updated conformance table (MLton 20020410). SML/NJ Workaround: - Forgot to propagate 1.0.1 fixes in basis/Char to fix-Char. 1.0.1 (2001/10/11): Some fixes in the Basis: - Ascii and Unicode escapes in Char.scan[C] (and thus Char.from[C]String, String.fromString). - Octal escapes in Char.toCString (and thus String.toCString). - Possible NaN's in Real.scan for mantissa 0 and large exponents. Documentation: - Added issue of obligatory formatting characters to Appendix. - Some minor additions/clarifications in Appendix. Test files: - Added "redundant". - Removed carriage returns from "asterisk", "semicolon" and "typespec". - Small additions to "semicolon" and "valrec". 1.0 (2001/10/04): Initial public release.