                         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
