|
From: Matthias B. <bl...@tt...> - 2007-06-01 19:33:22
|
Standard ML of New Jersey
Version 110.64 NEWS
May 31, 2007
------------------------------------------------------------------------
-----
SML/NJ HOME: http://www.smlnj.org/index.html
FILES: http://smlnj.cs.uchicago.edu/dist/working/110.64/
------------------------------------------------------------------------
-----
Summary:
Many of the changes affect FLINT and its interaction with the front
end, and particularly the system for supporting primops (primitive
operations). Additional bugs have been fixed, and ml-lpt as well as
AMD64 support have been updated.
Details:
* Front End and FLINT:
- Implemented a new scheme for defining primops and tracking and
analyzing their types in the type checker and in FLINT. Improved the
way that the type checker captures type information used by the
translate phase to calculate FLINT types.
- Improved signature printing by making it faithfully reflect the
original order of specifications or (for inferred signatures)
definitions.
- First phase of streamlining the type system of the plambda and flint
intermediate languages.
- Fixed some bugs in the type checker and module system.
- Infinite loop in FLINT (tests/typing/tests/25.sml) (fix by Stefan
Monnier).
- Implemented integer and word division operations (div, mod, rem,
quot) with an explicit test for zero division. This fixes several
previously open bugs related to the treatment of divide-by-zero
errors.
* SML Basis library:
- Fixed a bug in the implementation of order operations and min and
max for Int32. Fixed several other bugs in the Basis that were
revealed by running the regression tests.
- A number of fixes related to the formatting of dates. These include
fixes for bugs #1415 and #1416. We also now correctly handle format
characters that lie outside the specified set.
- Timer.cpu_timer, etc. type printing corrected (by making Timer have
opaque sig constraint in basis/Implementation/timer.sml)
- Added missing toLarge/fromLarge operations to WordN modules.
- Added missing InvalidArc to OS.Path.
- Fixed bug in printing negative time values.
- Char.fromString now handles the \uxxxx escape sequence.
* CM:
- Added a boolean control named cm.tolerate-tool-failures
(env. variable name: CM_TOLERATE_TOOL_FAILURES). The default is
false and makes CM fail if a shell tool reports a non-success exit
status. If the control is set to true, then CM will press on after
tool failures in the event that all target files exist (even when
some of them are considered outdated). Turning the control to true
can be useful for bootstrapping.
- Changed the installation mechanism for CM tool plugins. These are
just libaries and now get installed like ordinary libaries.
- There are now a number of new installation targets that give some
fine-grain control over what classes and suffixes are known, and
what they will map to. See config/targets for details.
- The code that caused plugin installation as part of running a tool's
"build" script has been removed. (The build script is for building,
not for installing.)
* SML/NJ Library
- Added next function to Fifo and Queue modules.
* ml-lpt:
- The name of several ml-lpt-lib modules has changed:
Repair => AntlrRepair
StreamPos => AntlrStreamPos
ErrHandlerFn => AntlrErrHandler
EBNF => AntlrEBNF
- The ml-antlr specification format has changed: declarations such as
%tokens and nonterminal definitions can occur *multiple* times in
the same specification. The semantics are such that each new
declaration extends the previous ones. This does not apply to %start
or %name, of course.
- Importing a grammar via %import now includes all declarations in
from the imported grammar, except for %name, %entry, and
%start. Tokens and nonterminals can be dropped using the new
%dropping clause of the %import directive; the separate %drop and
%extend have been removed.
- We now allow optional type annotations on nonterminals, using the
%nonterms directive as in ml-yacc.
- The refcell construct is now implemented using SML's regular
reference cells, so the :== and !! notation has been deprecated.
- The ml-antlr tool now does much more checking of specifications, and
its error messages have been greatly improved. Error repair for
generated parsers has been completely rewritten, and is now both
much faster and more accurate.
- ml-ulex is now more lenient with escape codes (non-SML-standard
escape codes are now interpreted literally, so e.g. \| denotes
"|"). Also, character classes may now include a "-" character at the
beginning as is standard in most other regexp tools.
- All of these changes are documented in the user guide, which has
been updated and improved.
* AMD64 support:
- Added the new MLRISC code generator for the AMD64. This version, in
contrast to the previous one, uses SSE registers and instructions
for all floating-point computations.
- Added FSQRT instructions for the AMD64 code generator.
* Regression Tests:
- Revised the regression test suite and brought the tests and
reference outputs up to date. Added a few new tests. Cleaned up the
test scripts.
|