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:
-
- 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.