                             S  M  L   /   N  J

                       1  1  0  .  4  7      N  E  W  S

                                 August 4, 2004

                                    WARNING

            This working version is believed to be stable, but
            we have not run our full regression-test suite.

HOME:
  http://www.smlnj.org/index.html
FILES:
  http://smlnj.cs.uchicago.edu/dist/working/110.47/

## Summary:

The most important and noticable changes in 110.47 concern preliminary implementations of the NLFFI foreign-function interface under Mac OS X (PowerPC) and Win32 (x86). There are also a number of important bug fixes.

## Details:

NLFFI:
  - preliminary support for Mac OS X added
  - preliminary support for Win32 added (untested; currently can only interface with C functions using the stdcall calling conventions)
  - function arguments that are C unions are now handled
  - various minor bug fixes to ml-nlffigen
  - preliminary documentation for nlffi and ml-nlffigen (currently only describes the output of ml-nlffigen; see src/ml-nlffi-lib/Doc/manual/nlffi.tex)
Compilation Manager:
  - made `make` commend in CM's `make` tool configurable
  - added option (default: `on`) for passing the name of the SML/NJ's bin directory to `make`; This can be used by the Makefile to, e.g., pick the "right" version of ml-nlffigen.
Basis:
  - Changed the implementation of structure Unix so that the same stream is returned every time one of the `{text,bin}{In,Out}streamOf` functions is invoked on the same proc. (NOTE: This is not what the spec says, so it will probably change again. Don't rely on it!)
Windows port:
  - bug fixes:
    - NULL test in gmtime and localtime
    - `toSeconds` -> `toMilliseconds` in `win32-process.sml` (Basis implementation)
Installer:
  - eliminated some shell syntax not understood by `/bin/sh` under Solaris
Compiler internals:
  - low-level support for choosing C calling conventions by twiddling the type of of the `rawccall` primop (see `src/compiler/Semant/types/cproto.sml` for details)
  - use `paramAlloc` to report c-calls with too many arguments (for PPC version where parameter area is pre-allocated)
  - added `ccall_maxargspace` to machspec (to implement the above)
MLRISC:
  - redesigned c-calls interface
  - c-calls implementation for ppc-macosx added
  - Added these instructions to the PowerPC architecture: `LWARX`, `STWCX`, `LBZU(X)`, `LHZU(X)`, `LWZU(X)`, `STWU(X)`, `STFDU`, `STFSU`, etc. (Instruction encodings not added yet, though.)
  - loop-structure.sml has been rewritten