Annotation of researchv10no/cmd/sml/doc/NEWS, revision 1.1

1.1     ! root        1: Standard ML of New Jersey version 0.44, 4 December 1989
        !             2: 
        !             3: New release:
        !             4: 
        !             5: Starting with this release, the compiler source code is covered by an AT&T
        !             6: copyright notice, which is included in each source code file.  The file
        !             7: doc/COPYRIGHT contains the official copyright notice, license, and
        !             8: disclaimer.  The file doc/release-form contains a release form that our
        !             9: lawyer would like you to sign if you contribute software or modifications
        !            10: that are included in the distribution.  Whether you sign it as an
        !            11: individual or get your institution to sign it is your decision, but it is
        !            12: undoubtedly quicker and simpler to sign as an individual.  The release form
        !            13: is not necessary for simple bug fixes.
        !            14: 
        !            15: Mailing list:
        !            16: 
        !            17: There is now a Standard ML mailing list for messages and queries of general
        !            18: interest to the ML community.  You can join by sending a request to
        !            19: [email protected], and you can send a message to the list by mailing
        !            20: to [email protected].  This mailing list will be the main vehicle for
        !            21: distributing announcements about Standard ML of New Jersey.
        !            22: 
        !            23: Modules:
        !            24: 
        !            25: All known major bugs in the module system have been fixed, so please report
        !            26: any new bugs or old bugs we missed.  The full module syntax from the
        !            27: Definition, Version 3 is now implemented with minor limitations or
        !            28: extensions, including let structure expressions and local and open
        !            29: signature specs (see comments in doc/localspec).  Include specs work
        !            30: properly once again.
        !            31: 
        !            32: Local and open specs:
        !            33: 
        !            34: David MacQueen has some comments about "local" and "open" specifications
        !            35: in signatures; see doc/localspec.
        !            36: 
        !            37: Weak type variable syntax:
        !            38: 
        !            39: Standard ML of New Jersey has a more precise system for weak typing
        !            40: (i.e. typechecking of programs that use semi-polymorphic reference
        !            41: variables).  Other compilers denote weak type variables with an underscore,
        !            42: i.e. '_abc, while ours uses an initial integer to denote level of weakness,
        !            43: i.e. '2abc.  See doc/weak-types for a fuller explanation.  However,
        !            44: for compatibility:
        !            45:   The notation for weak type variables using an initial underscore is now
        !            46: supported for input and output.  A weak type variable of the form '_a
        !            47: is equivalent to the numeric form '1a.  On output, weak type variables
        !            48: are printed using an initial integer.  However, if the ref variable 
        !            49: System.Control.weakUnderscore is set to true, then weak type variables
        !            50: of all levels are printed with an underscore.
        !            51: 
        !            52: Equality types:
        !            53: 
        !            54: Equality types are still broken.  Fixing these is the next order of business.
        !            55: 
        !            56: Import:
        !            57: 
        !            58: Nested imports do not work reliably in this version.
        !            59: 
        !            60: Optimizing compiler:
        !            61: 
        !            62: Hints on making your programs run faster are in doc/optimize.
        !            63: 
        !            64: Miscellaneous:
        !            65: 
        !            66: The SPARC code generator has been completely rewritten by John Reppy.
        !            67: 
        !            68: Bruce Duba continues to make improvements to the CPS code generator.
        !            69: 
        !            70: Andrew Appel is re-writing the parser to use David Tarditi's newest
        !            71: version of the ML parser generator; this re-write is not complete but
        !            72: the source files are included (along with the working recursive descent
        !            73: parser) in src/parse/.
        !            74: 
        !            75: Linkdata:
        !            76: 
        !            77: The "linkdata" program, used for making a sharable version of the ML
        !            78: compiler by putting all the .mo files into the text segment, did not work
        !            79: on all operating systems.  There is a more portable, albeit much less
        !            80: efficient, version of linkdata called "slinkdata".  Look in "src/makeml" to
        !            81: see how it is used for the NeXT operating system, and you can use it that
        !            82: way for your operating system too.  (Admittedly, this is very minimal
        !            83: documentation!)
        !            84: 
        !            85: Bug fixes:
        !            86: 
        !            87: See latest doc/bugs file for remaining bugs.  This has been brought more or
        !            88: less up to date.  We appreciate your bug reports and hope you will be 
        !            89: patient as we work our way through them.  There is a new version of the
        !            90: bug report format file (doc/bug.form), including a new "Severity:" field
        !            91: that you should use to indicate how serious the bug is from your point of
        !            92: view.  We get a lot of bug reports (which is good!) but we may not assign
        !            93: the right priority to them without your help.
        !            94: 
        !            95: Version 1 plan:
        !            96: 
        !            97: Our tentative schedule calls for the release of version 1 of the compiler in
        !            98: mid-January 1990.  There will probably be one more beta release between now
        !            99: and then.  This is a more or less arbitrary deadline, and we will try to fix
        !           100: as many bugs as possible before version 1 is released.  Development of the
        !           101: compiler will continue as usual following this milestone, and major, widely
        !           102: publicized releases will occur on a more regular and less frequent schedule,
        !           103: e.g. perhaps three times a year.  Interim developmental versions can be made
        !           104: available to those who have a special need for them.
        !           105: 
        !           106: ------------------------------------------------------------------------------
        !           107: Standard ML of New Jersey version 0.42, 27 October 1989
        !           108: 
        !           109: Release notes by Andrew Appel, covering changes since version 0.39.
        !           110: 
        !           111: Bug fixes:
        !           112: 
        !           113: Large floating point literals do the right thing now, at least on the Vax.
        !           114: 
        !           115: Duplicate constructor names and field names are again detected.
        !           116: 
        !           117: Printing of records like {1="abc"} works correctly.
        !           118: 
        !           119: Reading 1025 bytes from standard input works.
        !           120: 
        !           121: Large list expressions of the form [(0,0),(0,0),(0,0), ..... (0,0)] no longer
        !           122:    cause the compiler to blow up.
        !           123: 
        !           124: Previous versions have run on Sun-3s with Mach, this version might work
        !           125: on Vaxes with Mach.  The next version should run on anything with Mach.
        !           126: 
        !           127: Compile-time processing of functors has been extensively rewritten,
        !           128: and should be more robust.  There are still some remaining bugs, however,
        !           129: which should now be easy to iron out.
        !           130: 
        !           131: The Io exception now carries a much more useful string value, containing
        !           132: all sorts of information.
        !           133: 
        !           134: Other changes since version 0.39 are mostly of interest to implementors.
        !           135: VALvars and STRvars now have qualids instead of ids, lexer interface
        !           136: parametrized more cleanly.  Page-faulting is no longer used to detect
        !           137: end-of-memory on most machines.
        !           138: 
        !           139: ---------------------------------------------------------------------------
        !           140: Standard ML of New Jersey version 0.39, 8 September 1989
        !           141: 
        !           142: This notes overlap with the 0.36 release notes, since 0.36 was not
        !           143: widely distributed [neither were 0.37 or 0.38].
        !           144: 
        !           145: Release notes by Andrew Appel.
        !           146: 
        !           147: Changes since version 0.33:
        !           148: 
        !           149: 1.  Support for Sun-4 (SPARC) thanks to John Reppy at Cornell;
        !           150:     Encore (NS32032), NeXT (also Mach on other 68020 machines), and 
        !           151:     Sony NEWS (68020-based workstation), thanks to James O'Toole at MIT.
        !           152: 
        !           153: 2.  An interpreter for faster compilation (4x) but slower execution (18x).
        !           154:     Set System.Control.interp := true to enable this mode.  Use the -i
        !           155:     or -ionly to makeml to set this option as the default.
        !           156: 
        !           157: 3.  Delay and Force primitives (meant for internal use only) for research
        !           158:     in lazy evaluation.
        !           159: 
        !           160: 4.  Bug fixes:   reading 2049-byte files works now.  Separate compilation
        !           161:     shouldn't dump core.  Miscellaneous others.
        !           162: 
        !           163: 5.  A code generator generator implemented by Johan Lilius,
        !           164:     Jari Porra, & Jussi Rintanen of Helsinki University of Technology 
        !           165:     is include in the Standard ML Software Library: see lib/twig.
        !           166: 
        !           167: 6.  Various internal efficiency improvements; the CMACHINE signature was
        !           168:     simplified a bit; the format of generational-gc update lists was changed;
        !           169:     the CPS optimizer was beefed up.
        !           170: 
        !           171: 7.  Separate compilation has been improved.  The compiled version of a 
        !           172:     separately compiled file has the extension ".bin", and internally
        !           173:     identifies the version of SML-NJ and also the machine type it 
        !           174:     runs on.  The command "head -1 foo.bin" will print this information.
        !           175: 
        !           176: 8.  Many functor bugs have been fixed.
        !           177: 
        !           178: 9.  An improved version of ML-Yacc by David Tarditi at Princeton is provided,
        !           179:     more efficient and with a better interface, and with sophisticated syntax
        !           180:     error recovery.
        !           181: 
        !           182: Forthcoming in future releases:
        !           183: 
        !           184: - Mach support for Vax and other machines.
        !           185: 
        !           186: - Some work has been done on a MacIntosh II port, and we are hoping for
        !           187: volunteers to continue this work.
        !           188: 
        !           189: - Our MIPS code generator almost works now (thanks to Norman Ramsey at
        !           190: Princeton).
        !           191: 
        !           192: -----------------------------------------------------------------------------
        !           193: What's new in SML of NJ Version 0.33, 1 April 1989
        !           194: 
        !           195: 1. CPS code generator
        !           196: 
        !           197: This version uses a new CPS (Continuation Passing Style) code
        !           198: generator.  The CPS code generator differs from the older code
        !           199: generator in the following ways:
        !           200: 
        !           201:    (i) The code produced is about 50% faster.
        !           202: 
        !           203:    (ii) The compiler generates code about half as quickly (this should
        !           204: gradually improve with future releases).
        !           205: 
        !           206:    (iii) the new code generator does not use a stack.  This makes it easier
        !           207: to support experimental features like callcc and multiple processes.
        !           208: It also makes efficient garbage collection even more critical.
        !           209: 
        !           210:    (iv) The cps code generator tends to build larger intermediate
        !           211: representations, so tuning of the runtime system becomes more
        !           212: important.  See the discussion of memory management in doc/INSTALL.
        !           213: 
        !           214: 
        !           215: 2. The runtime system
        !           216: 
        !           217: The runtime system has been extensively rewritten and cleaned up.  The
        !           218: amount of assembly code has been reduced (only 220 lines for the Vax,
        !           219: 385 for the Sun), and the system call interface has been simplified.  The
        !           220: mechanism for initiating garbage collection has been made more robust.
        !           221: In the m68 version (for Sun 3), exhaustion of free space is detected
        !           222: by an explicit comparison rather than by trapping a segmentation fault.
        !           223: This finally eliminates persistent flakiness caused by the way the 68020
        !           224: recovers from segmentation faults.
        !           225: 
        !           226: LaTeX source for a new paper describing the runtime system can be
        !           227: found in doc/papers/runtime.  This is still an early draft, but it should
        !           228: be helpful in understanding internals of the run time system.
        !           229: 
        !           230: 
        !           231: 3. The pervasive environment
        !           232: 
        !           233: The initial environment has been reorganized to make it possible to
        !           234: build a system whose pervasives (i.e., built-in bindings) correspond
        !           235: closely to those described in "The Definition of Standard ML, Version
        !           236: 2" by R. Harper, R. Milner, and M. Tofte (ECS-LFCS-88-62, August 1988,
        !           237: hereafter referred to as the "Definition").  Note that in our humble
        !           238: opinion the "standard" environment is somewhat brain-damaged and is
        !           239: missing many important features (like arrays, bytearrays, etc).  See
        !           240: the file doc/environ for discussion of specific deficiencies of the
        !           241: environment described in the Definition and our proposed fixes, some
        !           242: of which are incorporated in the "New Jersey" environment.
        !           243: 
        !           244: The default initial environment set up by the bootstrapping process is
        !           245: the richer, and more efficient, New Jersey environment.  However,
        !           246: loading the source file src/lib/standard.sml defines a structure named
        !           247: Standard that provides a close approximation to the "standard"
        !           248: environment.  Opening the structure Standard at the top level replaces
        !           249: any nonstandard bindings in the New Jersey environment.  The New
        !           250: Jersey environment is still there in the background, so any New Jersey
        !           251: bindings not rebound in Standard will still be visible.  In the future
        !           252: we may provide a mechanism (e.g. a function switchEnv: string -> unit)
        !           253: for completely replacing the base environment with a different version
        !           254: specified by a structure.  For example, `switchEnv "Standard"' would
        !           255: replace the existing base environment with the contents of Standard.
        !           256: 
        !           257: The initial environment also contains:
        !           258: 
        !           259: (1) The signatures ARRAY, BASICIO, BITS, BOOL, BYTEARRAY, GENERAL, IO,
        !           260:     INTEGER, LIST, REF, STRING, and REAL as defined in src/boot/perv.sig, 
        !           261:     and the signature SYSTEM as defined in src/boot/system.sig
        !           262: 
        !           263: (2) The structures Array : ARRAY, BasicIO : BASICIO, Bits : BITS, etc.
        !           264:     These contain the New Jersey versions of bindings.
        !           265: 
        !           266: (3) The structure NewJersey, which contains the complete New Jersey initial
        !           267:     environment except for the signatures in (1) above and the structure
        !           268:     NewJersey itself.
        !           269: 
        !           270: It follows that even if Standard has been defined and opened, all New Jersey
        !           271: bindings are available via the structure NewJersey, or alternatively via
        !           272: the structures Array, IO, etc.
        !           273: 
        !           274: Here are some differences between the New Jersey and Standard environments:
        !           275: 
        !           276:   a.  The functions +, /, *, -, div, mod are an order of magnitude 
        !           277:       slower in Standard than in the New Jersey environment.  This is
        !           278:       because they are required to raise distinct exceptions (according
        !           279:       to the Definition), and because the treatment of negative arguments
        !           280:       of div and mod doesn't match what the hardware provides; that
        !           281:       complicates their implementation.  The NewJersey functions all raise
        !           282:       Overflow on results that won't fit in 31 bits (and Div on zero divisor
        !           283:       for div and mod).
        !           284: 
        !           285:   b.  The functions div and mod return different results.
        !           286: 
        !           287:   c.  input and output are curried in NewJersey (and in the IO structure),
        !           288:       but not in Standard.
        !           289: 
        !           290:   d.  The New Jersey environment has many more functions in it, as described
        !           291:       in the appendix of our reference manual or the signatures in the files
        !           292:       src/boot/perv.sig and src/boot/system.sig.
        !           293: 
        !           294: The New Jersey environment has changed slightly from previous releases,
        !           295: mostly to make the it more compatible with the Definition [IMPORTANT --
        !           296: THESE CHANGES MAY BREAK SOME PROGRAMS]:
        !           297: 
        !           298:   a.  The exception Io_failure has been renamed Io for consistency
        !           299:       with the Definition.
        !           300: 
        !           301:   b.  The exception Float has been renamed Real.  Float is still defined
        !           302:       as a synonym for Real.
        !           303: 
        !           304:   c.  The identifier "length" is no longer overloaded: use "size" or
        !           305:       "String.size" for string lengths, "length" or "List.length" for
        !           306:       list lengths, and "Array.length" for array lengths.
        !           307: 
        !           308:   d.  The functions "cd" and "system" are now components of the
        !           309:       System structure.
        !           310: 
        !           311:   e.  Various components of the System structure have been moved
        !           312:       into the System.Unsafe substructure, and are not recommended for
        !           313:       casual use.
        !           314: 
        !           315:   f.  The print functions (Integer.print, Real.print, String.print,
        !           316:       and the overloaded print), now return unit rather than their
        !           317:       argument.  This is because we found that in our code virtually
        !           318:       every call of print was followed by "; ()".
        !           319: 
        !           320: We plan to provide a definition of the NewJersey structure in terms of
        !           321: the "standard" environment (analogous to the definition of Standard in
        !           322: lib/src/standard.sml).  This structure would enable any Standard ML
        !           323: system to run programs based on the New Jersey environment.  Such
        !           324: programs should not reference the System structure, of course.
        !           325: 
        !           326: 4. Command line arguments and Shell environment
        !           327: 
        !           328: System.argv : unit -> string list
        !           329: System.environ : unit -> string list
        !           330:  
        !           331: are new functions that return the list of command line arguments and
        !           332: the Unix shell environment, respectively.
        !           333: 
        !           334: 5. First-class continuations: callcc, throw, and cont (experimental)
        !           335: 
        !           336: These are new experimental primitives to allow one to capture and use
        !           337: "first-class continuations".  See the file doc/callcc for
        !           338: documentation of these new facilities.
        !           339: 
        !           340: 6. Separate compilation (experimental)
        !           341: 
        !           342: We have integrated code written by Nick Rothwell and Mads Tofte of
        !           343: Edinburgh that provides a preliminary, experimental form of secure (type
        !           344: checked) separate compilation.  There is a special declaration form:
        !           345: 
        !           346:    import "filename"
        !           347: 
        !           348: where "filename" is a string literal designating either a source file
        !           349: filename.sml or a binary file filename.bin.  If only the source file
        !           350: exists in the current directory, then it is compiled and the binary
        !           351: version is created.  If the binary version exists, it is loaded
        !           352: instead of the source file.
        !           353: 
        !           354: As a consequence of adding this new facility, the identifier "import"
        !           355: has become a reserved word.  This may cause incompatibilities with
        !           356: existing code.
        !           357: 
        !           358: 7. mlyacc
        !           359: 
        !           360: The new directory src/lib/mlyacc contains a yacc-like parser generator
        !           361: written in ML, with documentation.  The parser generator is used much
        !           362: like the Unix yacc utility, and the grammar specification language is
        !           363: essentially that of yacc.  The parser generator was written by David
        !           364: Tarditi of Princeton, based on an earlier effort by Nick Rothwell.
        !           365: Other, more sophisticated, interfaces to the parser generator will
        !           366: probably be provided in future releases.  As before, the directory
        !           367: src/lib/lexgen contains a lexical analyzer generator.
        !           368: 
        !           369: 8. Fixes
        !           370: 
        !           371: A number of things that have been broken are now fixed.  This includes
        !           372: the garbage collector for the Sun 3, floating point operations on the
        !           373: Sun 3, exportFn, sqrt, and execute.  Unfortunately, many old bugs
        !           374: remain and the error messages are just as bad as ever.  We expect the
        !           375: next release to fix many of these problems.  Bug reports are welcome as
        !           376: ever, as are bug fixes.
        !           377: 
        !           378: 9. Things to come
        !           379: 
        !           380: John Reppy has ported SML of NJ to the Sun 4 (SPARC) architecture and
        !           381: his code generator will be included in the next release.  A port to
        !           382: the MIPS architecture (DECstation 3100 under Ultrix) is in the works
        !           383: at Princeton, and a NeXT port is likely.  A port to the Mac II under
        !           384: the native Mac OS may also appear soon.
        !           385: 
        !           386: We are working on a new licensing scheme similar to that used by the
        !           387: Free Software Foundation.  We hope to have this approved within three
        !           388: months, and we will keep you informed of new developments.
        !           389: 
        !           390: ------------------------------------------------------------------------------
        !           391: New features of SML of NJ Version 0.24 (November 22, 1988)
        !           392: 
        !           393: 1. Profiler
        !           394: 
        !           395: A call-count and statistical profiler has been implemented.  See
        !           396: operating instructions in the README file, and the paper provided in
        !           397: src/doc/papers/profiling.
        !           398: 
        !           399: 
        !           400: 2. Runtime reorganization
        !           401: 
        !           402: The runtime system has been reorganized to reduce the need for assembly
        !           403: language and provide a standard interface for Unix system calls and
        !           404: C code.  It should become possible to add special purpose C code to
        !           405: the runtime system, for instance to provide an X windows interface.
        !           406: Many of the assembly language functions have been replaced by more
        !           407: portible C implementations and uses of the system call interface.
        !           408: See src/doc/VERSION.24 for some more details.
        !           409: 
        !           410: 
        !           411: 3. Memory Management tuning
        !           412: 
        !           413: The variable
        !           414: 
        !           415:   System.Control.Runtime.ratio : int ref
        !           416: 
        !           417: can be used to control the garbage collection behavior to some extent,
        !           418: in conjunction with the Unix limit variable (in the csh).  See the
        !           419: discussion in README.
        !           420: 
        !           421: 
        !           422: 4. Simple gnu emacs sml mode
        !           423: 
        !           424: A simple gnu emacs sml mode was contributed by Mitch Wand.  It can be
        !           425: found in src/lib/sml.el.  If you have a better mode or make improvements
        !           426: on this version, please send them in to [email protected] for
        !           427: inclusion in future releases.
        !           428: --------------------------------------------------------------------------
        !           429: New features of SML of NJ Version 0.22 (October 10, 1988)
        !           430: 
        !           431: This file describes the most notable changes since version 0.20.  (Version 0.21
        !           432: was a local version that was not distributed.)
        !           433: 
        !           434: 
        !           435: 1. Bugs
        !           436: 
        !           437: A few bugs have been fixed; exportFn works again; the system runs under the
        !           438: latest version (4.0) of Sun Unix on a Sun-3.  See src/doc/bugs for the
        !           439: remaining known bugs.  The next release with many more bug fixes will
        !           440: probably follow fairly shortly.
        !           441: 
        !           442: 
        !           443: 2. Sharable text segments
        !           444: 
        !           445: We now have an option to run sml with the compiler read-only and sharable
        !           446: (in the Unix text segment).  This should help on systems where several
        !           447: people are running sml at once, and also improves garbage-collector performance.
        !           448: See src/doc/INSTALL for more info.
        !           449: 
        !           450: 
        !           451: 3. CPS code generator
        !           452: 
        !           453: We are including the source code for the new cps code generator with
        !           454: this release for those who would like an early look at it.  This code
        !           455: generator is still under development and works only on Vaxes at this
        !           456: point.
        !           457: 
        !           458: 
        !           459: 4. Installation
        !           460: 
        !           461: The maker script for building the interactive image has been reorganized
        !           462: and new scripts maker.batch and maker.run have been added to simplify
        !           463: making batch systems and compiling the runtime system.  See src/doc/INSTALL
        !           464: and src/doc/BATCHINSTALL for details.
        !           465: 
        !           466: 
        !           467: 5. Lexer generator
        !           468: 
        !           469: The directory src/lib is a new directory for contributed software.
        !           470: The programs included here do not come under the terms of the AT&T
        !           471: license.  The first contributed software is a lexical analyzer
        !           472: generator similar to the Unix lex utility.  It is in src/lib/lexgen.
        !           473: lexgen has been used to generate a new lexical analyzer for the
        !           474: compiler.  The specification is in src/lex/ml.lex.
        !           475: 
        !           476: 
        !           477: ----------------------------------------------------------------------------
        !           478: New features of SML of NJ Version 0.20
        !           479: 
        !           480: This file describes the most notable changes since version 0.18.  (Version 0.19
        !           481: was a local version that was not distributed.)
        !           482: 
        !           483: 1. Bugs
        !           484: 
        !           485: Quite a few bugs have been fixed, mostly relating to type checking and modules.
        !           486: See src/doc/bugs for the remaining known bugs.  
        !           487: 
        !           488: 
        !           489: 2. Reference types
        !           490: 
        !           491: The typing of references and arrays is less restrictive.  For
        !           492: instance, the following is now permitted, whereas it used to cause an
        !           493: error message:
        !           494: 
        !           495:    let val r = ref [] in r := [1]; !r end;
        !           496: 
        !           497: Thus locally declared reference variables like r in this example do not
        !           498: need to be explicitly constrained to have a monotype.
        !           499: 
        !           500: 
        !           501: 3. Equality types
        !           502: 
        !           503: Equality types are now implemented.  Equality types are those
        !           504: "hereditarily concrete" types whose values admit structural equality.
        !           505: The implementation of equality types involves the new signature
        !           506: specification keyword "eqtype" indicating that the specified type
        !           507: constructor admits equality, and special equality type variables
        !           508: starting with double single quotes (e.g. ''a) that are restricted to
        !           509: range over equality types.  
        !           510: 
        !           511: An equality type is one containing only type constructors that "support
        !           512: equality".  The following type constructors support equality:
        !           513: 
        !           514:    int, string, real
        !           515:    
        !           516:    any datatype whose constuctor argument types are equality types
        !           517:    (disregarding parameter type variables)
        !           518: 
        !           519:    record type constructors
        !           520: 
        !           521:    type constructors from functor parameters that are specified as eqtypes
        !           522: 
        !           523: In addition, any reference or array type is an equality type.
        !           524: 
        !           525: Abstract type constructors, "->", and exn do not support equality.
        !           526: 
        !           527: 
        !           528: 4. Include specifications in signatures
        !           529: 
        !           530: Include specifications allow one to include the specifications of a previously
        !           531: defined signature in a new signature.  The syntax is 
        !           532: 
        !           533:    include SIG
        !           534: 
        !           535: where SIG is the name of a signature.  For example, given the declaration
        !           536: 
        !           537:    signature AA =
        !           538:    sig 
        !           539:      type t
        !           540:      val x : t
        !           541:    end
        !           542: 
        !           543: the declaration 
        !           544: 
        !           545:    signature BB =
        !           546:    sig
        !           547:      include AA
        !           548:      val y : t -> int
        !           549:    end
        !           550: 
        !           551: is equivalent to
        !           552: 
        !           553:    signature BB =
        !           554:    sig
        !           555:      type t
        !           556:      val x : t
        !           557:      val y : t -> int
        !           558:    end
        !           559: 
        !           560: 
        !           561: 5. Free identifiers in signatures and structures
        !           562: 
        !           563: Structure definitions can now contain free identifiers of any sort
        !           564: (values, constructors, exceptions, types), not just free signatures,
        !           565: structures and functors.  Signature definitions can contain free
        !           566: structure and type identifiers, as well as free signature identifiers.
        !           567: 
        !           568: 
        !           569: 6. Printing of signatures and structures
        !           570: 
        !           571: Signatures defined at top level are printed.  Structures defined at
        !           572: top level have their signatures printed (currently in full -- in the
        !           573: future only the name of the signature will be printed if it has one).
        !           574: Printing of signatures can be turned off by setting the flag
        !           575: System.Control.Print.signatures to false.
        !           576: 
        !           577: 
        !           578: 7. Memory management improvements
        !           579: 
        !           580: The runtime system manages memory better.  The system automatically
        !           581: resizes the heap on startup and during collections, allowing the
        !           582: system to perform more gracefully on systems with limited memory.
        !           583: 
        !           584: The behavior and type of the flag controlling gc messages has changed:
        !           585: 
        !           586:   System.Control.Runtime.gcmessages: int ref
        !           587:     when 0, no messages are printed
        !           588:     when 1, only major collections are reported
        !           589:     when 2, major collections and heap resizings are reported
        !           590:     when 3, minor and major collections and heap resizings are reported

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.