[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

# A. Release Notes

The previous full release of MIT Scheme was version 7.4.7 in 1998. This section describes major changes that have occurred since that time. For more detailed information, see the ``RCS.log'` files in the source code.

Note that MIT Scheme still conforms to the Revised^4 Report on the Algorithmic Language Scheme, but not to the Revised^5 Report on the Algorithmic Language Scheme.

> A.1 Recent Changes |  |
> A.2 Overall Changes |  |
> A.3 Base System Changes |  |
> A.4 Edwin Changes |  |
> A.5 Windows Changes |  |

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## A.1 Recent Changes

These are the changes since release 7.5.0:

- Release 7.5.10 fixes numerous bugs, and offers significant speed improvements to the basic operation of IMAIL. This release also provides a shell script to build the system from source code (works on GNU/Linux and FreeBSD systems only).

- Release 7.5.9 adds the IMAIL mail reader; IMAIL is a new Rmail-like mail reader that supports IMAP and MIME. Edwin's mail-sending support has also been enhanced to understand MIME, so that it is now possible to send MIME attachments. Numerous changes to the runtime system and to Edwin have been made to support these changes.

  Additional changes:

  - Edwin now has rudimentary support for a mouse wheel.

  - Edwin buffer-menu now does better job aligning its columns.

  - In Edwin, M-x vc-version-other-window now defaults the version if unspecified.

  - `string->decoded-time` (and consequently other procedures that convert RFC-822 time strings) now accepts two-digit years, pivoting around 1970. This is a crock, but we have seen recent email messages utilizing such strings.

  - New procedure `set-string-maximum-length!`.

- Release 7.5.8 fixes a nasty uninitialized-memory bug in the Win32 event-handling code. No other system is affected.

- Release 7.5.7 changes: add support for the mhash library under GNU/Linux; fix bug in international keyboard support under Windows (thanks to Jacques Herry); beep now works properly in Edwin under Windows 9x; fix a fatal Edwin bug triggered by deleting a continued line at the top of the window; fix assorted bugs in Edwin's VC mode.

- Release 7.5.6 has a number of changes mostly having to do with CVS: sources converted from RCS to CVS; change logs converted to GNU ChangeLog format; VC now support CVS; VC program logic cleaned up; several bugs fixed in abbrev support; new procedures convert times to/from ISO C ctime() format.

- Release 7.5.5 changes the implementation of `sort` (and `merge-sort`) when applied to lists: previously this procedure was recursive to a depth of half the length of the list being sorted; the new implementation recurses only to a depth of lg(N). Additionally, this release provides new procedures `flo:<=`, `flo:>=`, `flo:max` and `flo:min`.

- Release 7.5.4 fixes some bugs in the SOS object instantiation code (reported by Joe Marshall). It also includes several improvements to Edwin: implementation of abbrevs; implementation of adaptive fill; change incremental search to terminate on `RET` rather than `ESC`; show mode-specific key bindings in `C-h m`.

- Release 7.5.3 fixes problems in the Windows port that caused errors when trying to read gzipped Info files. This release also fixes a bug that prevented the code from compiling properly when using egcs or GCC 2.95.x under GNU/Linux.

- Release 7.5.2 adds support for FreeBSD; no other system is affected. The code for GNU/Linux has been re-compiled but should otherwise be unchanged.

- Release 7.5.1 fixes some bugs in Edwin RMAIL and in how Edwin displays characters with codes between `#x80` and `#xA0`.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## A.2 Overall Changes

The following changes affect the entire system:

- MIT Scheme has been re-released under the GNU General Public License.

- With this release we no longer support Windows 3.1 or any form of DOS. The only supported Microsoft operating systems are Windows 95, Windows 98, and Windows NT. We have tested on Windows 95, Windows 98, and Windows NT 4.0.

- Although there have been no significant changes to the compiler, there have been some low-level representation changes to records and structures that make compiled code in this release incompatible with that from the previous release.

- SOS object-oriented programming extensions are now included in the base release. They are not loaded by default; evaluate `(load-option 'sos)` to load them.

- The documentation has been overhauled. The Reference Manual has sections describing both new facilities and also some older facilities that were never properly documented. The User's Manual has new material in the Installation, Debugging, and Edwin chapters, and has been revised throughout.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## A.3 Base System Changes

These are the major changes to the base system:

- Command-line options:

  - The `-compiler` and `-edwin` command-line options can now be specified together, meaning that a band containing both compiler and Edwin support should be loaded.

  - The heap-sizing code now automatically defaults the `-constant` command-line option to the correct size for the band being loaded, and adds the heap used by the band to the requested heap size. In consequence, it should rarely be necessary to specify `-constant`. An additional benefit is that the `-heap` command-line option now specifies exactly how much heap space is available when Scheme is started; previously the available amount was less than the specified amount due to the band's heap usage.

  - Command-line arguments can now be defined by user code.

- Numeric input/output:

  - Several changes to the number reader and printer have resulted in greatly improved performance, particularly for floating-point numbers.

  - The variable `flonum-unparser-cutoff` can now specify the format in which the numbers are to be printed, e.g. `scientific` or `engineering`.

  - The parser now treats `*parser-radix*` differently: if it is set to a value other than `10` and the parser encounters radix-10 syntax (e.g. a decimal point), an error is signalled.

- Strings and characters:

  - Regular-expression match and search are now available for strings.

  - String search procedures are now implemented, using Boyer-Moore search when appropriate.

  - Characters now have 16 bits of character code (instead of 7) to allow 8-bit ISO latin and Unicode characters. Strings are still based on 8-bit characters.

- Ports:

  - The `fresh-line` operation is now supported by all common port types.

  - `close-input-port` and `close-output-port` now close only one side of a bidirectional port; previously they closed both sides.

  - The following port operations have been eliminated: `write-string`, `read-chars`, and `write-chars`.

  - The low-level port data abstraction has been overhauled. The new design has port types that implement the operations for the port, and are shared between all ports of a given type.

- Operating-system interface:

  - Synchronous subprocesses can now be run from Scheme code.

  - Date and time support has been fleshed out and now provides a rich set of representations and conversions. Unfortunately, this support depends on underlying support of the C library, which is sometimes of low quality.

  - A bug in socket support has been fixed: port numbers are now specified normally and automatically translated to network order. Previously it was necessary to translate them to network order by hand.

  - `open-tcp-stream-socket` and `open-unix-stream-socket` now return one I/O port rather than an input port and an output port. TCP sockets now use `"\r\n"` end-of-line marker regardless of the operating system.

  - Under Linux, Scheme now detects various foreign filesystems such as `msdos`, `vfat`, `ntfs`, and `hpfs`, and sets the default line translation for files on those systems to `"\r\n"`.

- Red-black trees now support operations to read or delete the minimum or maximum element of a tree.

- Both `merge-sort` and `quick-sort` are now available. As before, `sort` defaults to `merge-sort`.

- Pathname objects can now be written (using `fasdump`) on one operating system and read (using `fasload`) on another. Previously this didn't work between unlike operating systems, such as Windows and unix, because Scheme only loaded the pathname support for the operating system it was running on. Now support for all operating systems is loaded, no matter what system is being used.

- Numerous fixes to stream code, eliminating premature dereferencing of streams, and dropping pointers to streams as soon as possible.

- Transcripts (i.e. `transcript-on`) are now local to a particular REPL. This is usually relevant only when using Edwin, where there can be several REPL buffers. Previously transcripts only recorded activity on the Scheme console, and ignored any other REPLs, including Edwin REPL buffers.

- `bkpt` is no longer a macro. Instead, it extracts an environment from the continuation it is called with, by looking at the innermost stack frame. In order for this to work properly, it must not be called in a tail-recursive position. Calling it in a tail-recursive position will not generate any errors, but will cause the breakpoint to be visiting the wrong environment.

- Under X11, the BackSpace keysym is treated as Delete, as long as BackSpace is bound to ASCII backspace.

- The ``hppacach'` program knows how to find kernel files for HP-UX 10.x and later.

- OS/2:

  - Under OS/2, the default font for the Scheme console window has been changed to `"8.Courier"`.

  - More sophisticated heuristics are used to discover the user's home directory on OS/2 systems.

  - Under OS/2 Warp 4.0, Scheme now reports the operating-system version correctly.

- A new undocumented generic-procedure dispatch mechanism and its associated tagged data structures provides a high-performance substrate for building CLOS-like object-oriented programming systems. This mechanism has been fully integrated into the existing record and `defstruct` code. The SOS system (which is documented) has been added as a load option to allow writing object-oriented code.

- Undocumented interfaces now provide support for `gdbm`, MD5 checksums, and blowfish encryption. The blowfish encryption is disabled by default, but we may later distribute a key to enable it.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## A.4 Edwin Changes

These changes affect only Edwin:

- The following are new language modes: HTML, Java, PHP, Verilog, VHDL. Some of these modes are pretty sketchy, consisting of little more than syntax and indentation -- they are not to be confused with the more powerful modes provided by Emacs.

- Edwin can read and write files compressed with `bzip2`, `gzip`, or `compress`. It can also read and write files encrypted with blowfish (but this is currently disabled due to export restrictions).

- On PC systems, compressed files, encrypted files, and Rmail files do not have line translation; they are stored in Scheme's native format (i.e. with newlines as line terminators).

- Edwin now indirects through symbolic links to find the true file being edited, and backup files go in the directory of the true file rather than the link.

- Commands that read arguments from the minibuffer now have prompt histories, which can be accessed by using `M-p` and `M-n`.

- The command `eval-expression` is now bound to `M-:` for compatibility with newer versions of Emacs.

- A new command `insert-filename`, bound to `C-c C-i`, prompts for a filename in the minibuffer, then inserts it at point. The formatting of the filename is controlled by the variable `insert-filename-format`, which by default uses Scheme string format.

- Shell buffers now implement command completion. This is overloaded onto the filename-completion command `C-M-i` just as in Emacs.

- A new command-line option `-edit` causes the editor to start up when Scheme is started.

- A new command `inferior-repl-flush-output`, bound to `C-c C-o`, deletes output from the previous command. This works similarly to the corresponding command in shell buffers.

- Errors in the REPL buffer now prompt in the REPL buffer itself, rather than in the minibuffer as previously. The new prompts are less intrusive.

- The evaluation commands now permit the evaluation environment to be set to the name of a package, and use the package's environment if available. If the package's environment is unavailable, or if the package doesn't exist, the global environment is used instead.

- The command `repl` now treats its argument differently, simplifying the creation of multiple inferior REPL buffers. A new command `set-inferior-repl-buffer` associates a Scheme buffer with an arbitrary inferior REPL buffer, so that evaluation commands in that Scheme buffer use the specified REPL buffer.

- Info now supports the variable `info-directory-list`, which works like that in Emacs.

- The command `manual-entry` now uses multiple buffers with Emacs 19 naming conventions.

- Frame-related commands are now bound to `C-x 5` as in Emacs, e.g. `C-x 5 f` finds a file in another frame. The command `split-window-horizontally` has been moved to `C-x 3`, again as in Emacs.

- All commands operating on frames now use the noun "frame" in their names, for consistency with Emacs. Previously they used "screen".

- New commands `show-frame-size`, `show-frame-position`, `set-frame-size`, and `set-frame-position`.

- Under X11, Edwin now distinguishes between its primary frame and all other frames when finding resources. The new X resource name for these secondary frames is `edwinSecondary`.

- Sending mail is now supported through a direct SMTP interface. This interface will work on any operating system that supports sockets (all of the systems we current distribute for). See the variables `mail-relay-host` and `smtp-require-valid-recipients`.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## A.5 Windows Changes

Many substantial changes have been made to the Windows port, mostly to bring it up to par with the other ports.

- There is now a single input queue for events, which fixes various small but annoying bugs having to do with events not being read at times when they should have been.

- The command-line parser has been improved so that it will accept arguments with spaces in them. In order for this to work properly, the argument must be surrounded by double quotes. This fix allows Scheme to be installed in a directory whose name contains spaces.

- Scheme now understands about Windows 98 version strings, and furthermore provides more detailed information about specifics of the platform.

- Scheme now more aggressively allocates low memory, and consequently is able to allocate slightly larger heaps. Unfortunately there are inherent limitations on the heap size that cannot easily be worked around in this fashion. If you need more memory, you must use a friendlier operating system, or wait for Windows 64-bit addressing support.

- The Scheme microcode now compiles using Visual C++ 5.0 or later. However it is probably not desirable to do this, because Visual C++ links in certain libraries at key places in the memory image, and consequently limits the heap to fairly small sizes. The microcode we distribute is compiled with Watcom C/C++ 11.0, which does not restrict our heap allocation as much.

- Various pop-up error dialogs are now suppressed, e.g. for inaccessible floppy devices.

- International keyboards should now work properly. However, this hasn't been tested properly; we'd appreciate information about how well it works.

- Subprocesses and sockets are now supported. However, Edwin's shell mode works only under Windows NT; there is something wrong with the Windows 9x subprocess support that we don't yet understand.

- Scheme now uses more sophisticated heuristics to discover the user's home directory on Windows systems. It is no longer necessary to bind the `HOME` environment variable under Windows NT.

- Edwin has its own copy of ``gzip.exe'` to guarantee that there's support for `gzip`-compressed files.

- Edwin now recognizes the standard Windows shell prompt in shell buffers.

- Edwin printing commands now work.

- Edwin now supports cut and paste using the kill and yank commands.

- All Dired commands are now supported. Dired formats directory listings in native format rather than unix format. The `M` command changes mode bits, which are specified much like arguments to the `attrib` command. The `S` command toggles whether or not hidden/system files are shown; by default these files do not appear in Dired listings.

- New undocumented primitives provide access to the registry.

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by Chris Hanson on October, 16 2000 using texi2html