The following is a summary of the changes made to the SML Basis Library specification. The changes are listed with the most recent first. This list only covers actual changes or clarifications to the specification; it does not cover changes to the prose or layout.
toNanoseconds to the
inputLinefunction in both
PRIM_IOdesign (this change also avoids a nasty portablility problem).
Sizewith a negative argument, rather than
setBufferModedoes not permit flushing when switching between
refto live in
Sizewith a negative second argument, rather than
Changed the names of the
PACK_WORD instances to
Time.toSeconds, etc. round towards 0.
IO.ClosedStreamexception. First, we note that this exception should be used if the output stream is terminated. (If we want to distinguish the cases, we could resurrect the
TerminatedStreamexception.) Second, we removed the requirement that the
IO.ClosedStreambe reported by the writer. Since we require that output on closed streams generate
IO.ClosedStream, if we want the writer to do this, the StreamIO.output function would be forced to do a write, or check somehow with the writer to see if it is closed. This is not reasonable. This still leaves open the case that the writer is closed without using the StreamIO.outstream, so the exception only occurs when the stream is flushed. But it is also possible to close the file descriptor without telling the writer.
Timeexception should be raised, not
Overflow, if a time value cannot be represented.
~is overloaded for
WORDsignature as synonyms for
WORD.fromLargeWord, and deprecate the latter. This is to be consistent with reals and ints.
Time.fmtto raise exception on negative precisions, to be consistent with
OS.FileSys.A_EXECshould be ignored by
OS.FileSys.accesson systems that have no notion of execute permission.
Socketstructure. Specifically, what exceptions get raised when and how closed connections are detected.
Word8Array2from the required structure list in the HTML version.
Subscriptif the integer argument is negative.
usefunction is optional.
0precision is specified.
TextIOas these are part of the
OS.FileSys.tmpNameto avoid a race condition.
platformWin32WindowsXP, and added
Windows.Config. Dave Matthews pointed out that the first 2 are identical to
platformWin32NTand can't be used to identify a platform. The last reflects the CE system documented by Microsoft.
select. We also replaced the
ioDesc. These changes were proposed in 1998 and agreed upon, but somehow never made it into the document before now.
iodescvalues not covered by
SysWordmodule may be provided by an implementation even when the
Posixstructure is not provided.
Windows.DDE.executeStringso that the delay is a
Posix.FileSys.fpathconfso that a return value of false is represented by
Posix.TTYinto the substructure
Posix.FileSys.pathconffunction to be more specific.
Windowsstructure to reflect the most recent proposals by Dave Matthews and Dave Berry.
TerminatedStreamexception from the
IOmodule, since the operation that uses it (
setPosIn) was removed previously (1998-10-05).
scantype. The affected signatures are
Realstructure to convert extreme values to
0or infinity, instead of raising the
Time.timeto allow negative time values.
BIT_FLAGS.allmay contain more set bits than those defined in a matching structure.
SUBSTRINGsignature, but depreciate its use.
BIT_FLAGS.clearspecification to return
optionmodifier to return type of
Real.fromDecimalto reflect the possibility of an ill-formed argument.
ListPairmodule that require equal length arguments.
MONO_ARRAY2signature (see 1998-07-21).
Real.scanto accept "inf" and "nan".
Timer.checkCPUTimerwas changed to not include GC time. A new function
OS.Process.statusis no longer an equality type.
Unix.proctype is now a type constructor. The return types of
Unix.reapwere changed accordingly.
binOutstreamOfwere added to the
mkTextWriterfunctions to the
Posix.FileSys.readdirto return a
string optionvalue instead of a
STREAM_IOsignature: more specification of the relationships between
input; changed type of
filePosIn, and deleted getPosIn, setPosIn, and in_pos, as ratified at ICFP '98.
IMPERATIVE_IOinterface: deleted getPosIn, and setPosIn; added new material at end about semantics of operations and about random access.
Real.fromLargeIntin the case where the argument does not map exactly to a real value.
OS.Path.mkRelativehave been changed to take record arguments, instead of pairs.
The question about when to include substructures versus when to include types has been resolved. We are adopting the convention of favoring types over substructures, which results in the following changes:
), that collect together text related structures.
There were many minor changes to the text and formatting. In addition, the following changes to the specification were made:
regiontype in the
IEEE_REAL.float_classtype, and eliminated the nan_mode type.
OS.IO.poll: the resulting list must respect the order of the argument list.
Char.toCString: always use three octal digits in escape sequences.
The SML Basis Library specification was re-released on the web. We do not have a list of changes prior to this release.
Generated October 02, 2003
Last Modified July 9, 2002
Comments to John Reppy.
This document may be distributed freely over the internet as long as the copyright notice and license terms below are prominently displayed within every machine-readable copy.
Copyright © 2003 AT&T and Lucent Technologies. All rights reserved.
Permission is granted for internet users to make one paper copy for their
own personal use. Further hardcopy reproduction is strictly prohibited.
Permission to distribute the HTML document electronically on any medium
other than the internet must be requested from the copyright holders by
contacting the editors.
Printed versions of the SML Basis Manual are available from Cambridge
To order, please visit
www.cup.org (North America) or
www.cup.cam.ac.uk (outside North America).