Mindy 1.3 Change Log

The following are enhancements added since release 1.2:

   Mindy now supports ratios.  For details, please see mindy.doc.

   Garbage collection reporting is now optional, with the default
   value being no reporting.  See mindy.doc for details.

   Added while: and until: syntax to for statement.  The old syntax is
   still supported.  Words like class, keyed-by, and module are now
   unresevered words.

   Added <string-table> to the Extensions module.  See mindy.doc for
   details.

   A new test, threaded-io-test, has been added to the tests
   directory.  This program tries to read from three different streams
   simultaneously.  However, the program is interactive, and for that
   reason is not run by the makefile.

   The constants in the File-Descriptors module of the Dylan library
   have been made POSIX conformant.  The seek constants L_SET, L_INCR,
   L_XTND have been replaced with the POSIX equivalents SEEK_SET,
   SEEK_CUR, SEEK_END.  ONDELAY has been changed to ONONBLOCK.  The
   non-POSIX constants FCREAT, FTRUNC, and FEXCL have been removed,
   since they already had POSIX equivalents.  ONDELAY, FNDELAY ELOOP,
   EDQUOT, EOPNOTSUPP, and ETXTBSY have been removed, since they are
   unused and cause portability problems.  See mindy.doc for more
   details.

   In the Streams library, modified read-line and write-line to make
   use of the constant $newlines-are-CRLF, which is exported from the
   System module of the Dylan library.  Whenever $newlines-are-CRLF is
   not #f, read-line drops any \r characters that appear before a
   linefeed character.  Neither the \r nor the linefeed appear in the
   resulting string that represents the line.  Whenever
   $newlines-are-CRLF, write-line writes a \r before writing the
   linefeed.


The following are bug fixes since release 1.2:

   Printing, formatting, and converting $minimum-fixed-integer now
   work correctly.

   make(<table>, size: 0) now works.

   NaN's now compare correctly.

   remove-key! now works on <self-organizing-list>s.

   Corrected the precedence of ^.  Brought the associativity of ^ into
   line with other languages; used to be left associative (as
   specified in the DIRM), now is right associative.

   Apply now makes sure the object being applied is really a function.

   as(<float>, extended-integer) now works correctly when the extended
   integer is negative.

   logbit? on extended integers now returns #f when given a negative
   index.

   ceiling and round now work for extended integers.

   every? for vectors now works.

   Random-uniform from the Random library now works in the presence of
   extended integers.

   Weak pointers now will not crash the garbage collector, even in
   obscure cases.

   applicable-method?, when called with the same arguments twice in a
   row, would always return #t.  That has been fixed.

   shrink! now works correctly.

   Fixed a bug in buffer-subsequences from the Streams library.  This
   function had worked only when the result type requested was a
   <byte-string>.  If you requested a result type of <buffer> or
   <byte-string>, you got a run-time type error.

   Fixed a bug in the Streams library that was triggered when reading
   to the end of a <random-access-stream> in one high-level call with
   the to-eof: keyword argument.


The following are enhancements added since release 1.1:

   Mindy now runs on even more Unix platforms.  See ``INSTALL'' for a
   listing of known successful builds.  Thanks are due to Roger
   Critchlow for doing the bulk of the portability enhancements.

   Mindy installation now only requires an ANSI C compiler, any ``make''
   utiltiy, and ``/bin/sh''.  Previous versions of Mindy required GNU CC
   (gcc), GNU flex, GNU bison, and GNU make (gmake).

   Mindy now uses a ``configure'' script to handle configuration.
   See ``INSTALL'' for more details.

   Mindy now comes with several files that have been compiled for you
   (they compile into portable C).  There is no need to re-compile these
   files, but if you should desire to do so you will need GNU flex, GNU
   bison, and Perl.

   Mindy now contains a new subdirectory ``compat'', which in
   combination with the configure script is used to smooth out the
   differences between the different kinds of Unix machines.

   There is now a Mindy test suite in the ``tests'' subdirectory.  The
   tests cover the Dylan module of the Dylan library and the
   Regular-Expressions module of the String-Extensions library.

   ``mc'' has been renamed ``mindycomp''.

   main() now has a required parameter argv0 which contains the name
   of the file that was executed (similar to C's argv[0]).  See
   mindy.doc for details.

   Added the Print library, which contains extendable code for
   printing arbitrary objects.  If an object has a Dylan literal
   syntax, then it is printed with that syntax.  All other objects are
   printed in an implementation-dependent manner.  See
   $INSTALL/doc/print.{ps,txt} for more information.

   Added the Format library, which contains extendable code for
   concisely expressing formatted output.  The format control strings
   supported by this library are upwardly compatibile with the error
   function's format strings.  See $INSTALL/doc/format.{ps,txt} for
   more information.

   Moved all the Extensions module I/O routines to the Cheap-IO module
   of the Dylan library.  Added fflush to the Cheap-IO module.  See
   $INSTALL/doc/mindy.{ps,txt} for more information.

   The Streams library now exports stream locking functions.  The
   generic functions used to extend the streams protocol to new
   streams have changed slightly.  The Streams interface now returns
   no values for functions that are called purely for side-effects;
   these functions used to return a meaningless #f value.  See
   $INSTALL/doc/streams.{ps,txt} for more information.

   Added the String-Extensions library, which contains code to deal
   with regular expressions, substring searches, and other string and
   character related issues.  Moved the string searching functions
   from Collection-Extensions to the Substring-Search module of
   String-Extensions.  Renamed the String-Search module of the
   Collection-Extensions library to Vector-Search.  See
   collection-extensions.txt and string-extensions.doc for details. 

   <so-list> and the Solist module of Collection-extensions have been
   renamed <self-organizing-list> and Self-organizing-list,
   respectively.

   There is a new abstract collection class called <dictionary>.
   <table> from the Dylan module and <self-organizing-list> from the
   Self-Organizing-List module of Collection-extensions are now
   subclasses of <dictionary>.  Remove-key! is now a generic function 
   on <dictionary>s.  <Dictionary> is exported from the Extensions
   module; see mindy.doc for details.

   Mindy now gives warnings about undefined variables.

   Mindy now has infinite precision integer arithmetic.  Added <fixed-integer>,
   <extended-integer>, $minimum-fixed-integer, and $maximum-fixed-integer
   to the Extensions module.

   Mindy now has Unicode support.  <byte-character> is now exported
   from the Extensions module, and is a subclass of <character>
   (<character> is really a unicode character).

   When searching for a library, Foo, Mindy first looks for foo-lib.dbc
   in $MINDYPATH, and failing to find that file, searches for foo.dbc.

   Added key-exits?(collection, key) to the Extensions module.  See
   mindy.doc for details.

   Created the Introspective module in the Dylan library.  See
   mindy.doc for deatils.

   An error is now signalled if the parent of a subclass has not yet
   been initialized when the subclass is defined.


The following are bug fixes since release 1.1:

   Can no longer add methods to things that aren't generic functions.

   Logbit now takes its arguments in the correct order.

   Logand, logxor, and logior are now binary operators.

   size: on a <table> now does the right thing.

   Fixed a pair of bugs in the garbage collection.

   
The following are enhancements added since release 1.0:

   Mindy now compiles under SunOS, Ultrix, and Linux.

   Inherited and keyword class slot options are now supported.

   Added support for \a, \e, and \0 in string and character literals.

   Added some additional error checking.

   Added a "describe" debugger command.  See debug.doc for details.

   The debugger "module" command now annotates the listing of modules with
   "i"s and "x"s to indicate modules that are imported, exported, or both.


The following are bug fixes since release 1.0:

   Return type declarations such as "#rest foo :: <integer>" are interpreted
   correctly now.

   "Large functions" no longer trigger an internal error in the compiler.

   Literal list syntax inside 'if' bodies no longer cause the compiler to
   die.

   Fixed an off-by-one error that made it impossible to debug source files
   longer than 1000 lines.

   Fixed 'define class' to generate correct implicit generic function
   signatures for the slot getters and setters.  Mindy used to define the
   generic function as returning one value, but now Mindy defines it to
   return "#rest results :: <object>".  This new behavior corresponds to a
   proposal for how implicit generic function signatures should be generated
   in Dylan.  The basic idea is that implicit generic function signatures
   should be as general as possible to allow methods added later by users
   the greatest chance of matching the generic function's signature.

   Slot-initialized? works now.

   Fixed a typo bug that caused a setter to be called instead of a getter
   for some slots of classes that had multiple direct superclasses.

   Mindy no longer gets a segmentation violation when it is invoked with a
   -f switch that is not followed by a filename.

   Error's format control strings were previously case-sensitive with
   respect to format directives.  Now the directives are case-insensitive.

   The Dylan module of the Dylan library now exports the identifiers
   row-major-index, rank, and dimension.

   The arguments for adjust-stream-position on <fd-file-stream>s were
   backwards, and now they agree with the stream specification.

   The arguments for write and write-line were backwards in the
   documentation, and now the documentation agrees with the code.
