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.
Timer.checkCPUTimes function.
precision to count the hidden bit.
sinh, cosh, and tanh.
Added fromNanoseconds and toNanoseconds to the Time structure.
inputLine function in both TEXT_IO and TEXT_STREAM_IO.
unit.
PRIM_IO design (this change also avoids a nasty portablility problem).
realRound to the REAL signature.
Byte, PRIM_IO, PrimIO, Socket, and Posix.IO
Posix.IO.readVec raises Size with a negative argument, rather than Subscript.
setBufferMode does not permit flushing when switching between LINE_BUF and BLOCK_BUF.
ref to live in General
recvVec* raise Size with a negative second argument, rather than Subscript.
CharVectorSlice and CharArraySlice to TEXT.
ImperativeIO and StreamIO.
Changed the names of the PACK_WORD instances to PackWord<N>Big and PackWord<N>Little.
WordVector WordVectorSlice, WordArray, WordArraySlice, WordArray2, LargeIntVector LargeIntVectorSlice, LargeIntArray, LargeIntArraySlice, LargeIntArray2, LargeWordVector LargeWordVectorSlice, LargeWordArray, LargeWordArraySlice, LargeWordArray2, LargeRealVector LargeRealVectorSlice, LargeRealArray, LargeRealArraySlice, and LargeRealArray2.
Time.toSeconds, etc. round towards 0.
IO.ClosedStream exception. 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 TerminatedStream exception.) Second, we removed the requirement that the IO.ClosedStream be 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.
Time. The Time exception should be raised, not Overflow, if a time value cannot be represented.
Subscript exceptions for Windows.Reg.enumKeyEx and Windows.Reg.enumValueEx.
~ is overloaded for Word.word.
Substring.all, leaving Substring.full.
WORD.toLarge, WORD.toLargeX and WORD.fromLarge to the WORD signature as synonyms for WORD.toLargeWord, WORD.toLargeWordX and WORD.fromLargeWord, and deprecate the latter. This is to be consistent with reals and ints.
Time.fmt to raise exception on negative precisions, to be consistent with Real.fmt.
OS.FileSys.A_EXEC should be ignored by OS.FileSys.access on systems that have no notion of execute permission.
Socket structure. Specifically, what exceptions get raised when and how closed connections are detected.
Word8Array2 from the required structure list in the HTML version.
Posix.IO.readVec raises Subscript if the integer argument is negative.
use function is optional.
StringCvt.FIX when 0 precision is specified.
TextIO as these are part of the TEXT_STREAM_IO signature.
Error.errorName and Error.syserror.
BinIO.
OS.FileSys.tmpName to avoid a race condition.
platformWin32Window2000 and platformWin32WindowsXP, and added platformWin32CE to Windows.Config. Dave Matthews pointed out that the first 2 are identical to platformWin32NT and can't be used to identify a platform. The last reflects the CE system documented by Microsoft.
Socket.sock_desc with operations sockDesc, sameDesc, and select. We also replaced the Socket.pollDesc function with ioDesc. These changes were proposed in 1998 and agreed upon, but somehow never made it into the document before now.
Unix module.
iodesc values not covered by OS.IO.Kind.
SysWord module may be provided by an implementation even when the Posix structure is not provided.
Windows.executeWithNullStreams.
Windows.DDE.executeString so that the delay is a Time.time.
Posix.FileSys.pathconf and Posix.FileSys.fpathconf so that a return value of false is represented by SOME 0 rather than NONE.
getpgrp and setpgrp functions in Posix.TTY into the substructure Posix.TTY.TC for consistency.
OS.Path.toUnixPath.
Posix.FileSys.pathconf function to be more specific.
Windows structure to reflect the most recent proposals by Dave Matthews and Dave Berry.
TerminatedStream exception from the IO module, since the operation that uses it (setPosIn) was removed previously (1998-10-05).
scan type. The affected signatures are CHAR, DATE, IEEE_REAL, INTEGER, TIME, WORD.
Bool.scan to be StringCvt.reader (this is a cosmetic change).
OS.Process.sleep.
map and mapi in the MONO_VECTOR_SLICE signature.
scan, fromString and fromDecimal in Real structure to convert extreme values to 0 or infinity, instead of raising the Overflow exception.
Time.time to allow negative time values.
Date.date to -23..23.
BIT_FLAGS.all may contain more set bits than those defined in a matching structure.
all in the SUBSTRING signature, but depreciate its use.
BIT_FLAGS.clear specification to return flags.
Windows.Status.nocontinuableException to noncontinuableException.
BIT_FLAGS.
OS.Process.sleep.
option modifier to return type of Real.fromDecimal to reflect the possibility of an ill-formed argument.
Windows">Windows.executeWithNullStreams (later removed).
List.collate.
ListPair module that require equal length arguments.
String.isSubstring and Substring.isSubstring.
VECTOR and MONO_VECTOR.
Char.fromCString.
MONO_ARRAY2 signature (see 1998-07-21).
Real.scan to accept "inf" and "nan".
Timer.checkCPUTimer was changed to not include GC time. A new function Timer.checkGCTime was added.
OS.Process.status is no longer an equality type.
Unix.exit_status.
Unix.proc type is now a type constructor. The return types of Unix.execute, Unix.executeInEnv, Unix.streamsOf, and Unix.reap were changed accordingly.
textInstreamOf, textOutstreamOf, binInstreamOf, and binOutstreamOf were added to the Unix structure.
Unix.exit.
OS.Process.isSuccess for testing OS.Process.status values.
mkBinReader, mkTextReader, mkBinWriter, and mkTextWriter functions to the Posix.IO structure.
Posix.Process.fromStatus
OS.FileSys.readDir and Posix.FileSys.readdir to return a string option value instead of a string.
STREAM_IO signature: more specification of the relationships between inputAll, inputN, and input; changed type of inputAll and filePosIn, and deleted getPosIn, setPosIn, and in_pos, as ratified at ICFP '98.
IMPERATIVE_IO interface: deleted getPosIn, and setPosIn; added new material at end about semantics of operations and about random access.
Real.fromInt and Real.fromLargeInt in the case where the argument does not map exactly to a real value.
OS.Path.mkAbsolute and OS.Path.mkRelative have 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:
signature STRING
char.
signature SUBSTRING
char and string.
signature MONO_ARRAY
vector.
signature MONO_ARRAY2
vector.
Text : TEXT), 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:
region type in the MONO_ARRAY2 signature.
CommandLine.arguments function.
IEEE_REAL.float_class type, and eliminated the nan_mode type.
OS.IO.poll: the resulting list must respect the order of the argument list.
fromWord.
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 April 12, 2004
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 © 2004 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
University Press.
To order, please visit
www.cup.org (North America) or
www.cup.cam.ac.uk (outside North America). |