MIT/GNU Scheme release notes

Stable release 12.1

Testing release 12.0.90

Changes for R7RS compliance:

Changes to arithmetic:

Other changes:

Stable release 11.2

Stable release 11.1

Testing release 11.0.91

Testing release 11.0.90

Changes to the native-code compiler (LIAR)

Changes to the runtime system

Changes to arithmetic

A huge amount of work has been done on arithmetic, particularly floating-point arithmetic, by Taylor Campbell.

Other changes

Stable release 10.1.11

This is the final release of 10.1; release 11.1 should be out soon.

Bug fix Fix printing of vectors, which was throwing an error in common circumstances.

Bug fix Fix several issues with syntax-rules. More are known, but they will be fixed in the 11.1 release.

Preparation Make a small tweak to fasdump needed for building the 11.1 release.

Stable release 10.1.10

Feature Multiple values are now slightly more correct than previously. But they are still not entirely compliant with R7RS.

Bug fix Add missing definition to exact to reference manual.

Bug fix Change write to generate datum labels only when there are cycles in the object being printed.

Bug fix HTTP I/O was failing on some cases with an empty body.

Bug fix Textual input from non-blocking ports was getting stuck in an infinite loop.

Bug fix Edwin was communicating with subprocesses using UTF-8 encoding but has no support for this; now it uses ISO 8859-1 instead.

Bug fix Several calls to read-bytevector! were not handling EOF correctly.

Bug fix Interaction between let-syntax and define was incorrect, thinking the defines were in the environment of the let-syntax rather than the environment enclosing it.

Bug fix Typo in parsing of close bracket caused failure in cases when it should have succeeded.

Bug fix Procedures flo:+inf.0 and flo:-inf.0 were being chosen when the distribution binaries were being built. But these procedures are system specific, so are now chosen on the target system.

Performance change symbol<? to compare as UTF-8 bytevector. This makes it different from string<? but much faster, which is more important for symbols.

Stable release 10.1.9

Bug fix Fix botched edit in last release that broke Edwin.

Stable release 10.1.8

This is the "MIT Professors" release, after the two professors who reported the bugs.

Feature When reading Scheme files, the reader now looks for and obeys a "coding" attribute. For example,

;; -*- coding: iso-8859-1 -*-

tells the reader to use iso-8859-1 coding, rather than the default utf-8 coding. The file attributes line uses the same format that Emacs accepts (multiple attributes separated by semicolons), except that the right-hand side of each attribute will be parsed by read and consequently must be valid Scheme syntax.

Bug fix Make sure that Edwin reads and writes files in iso-8859-1 coding. This is the only coding that Edwin supports since it uses single-byte strings.

Note that there is no way to automatically override the default coding when writing files, other than to use (port/set-coding port coding) on the output port after opening it and before writing to it.

Bug fix Fix a minor bug in IMAIL.

Stable release 10.1.7

Feature Some support for upcoming changes to the ABI and compiler.

Performance More performance improvements for Edwin and IMAIL.

Bug fix More fixes to X11 graphics support.

Bug fix Fix support for UTF-8 encoding of file names.

Stable release 10.1.6

Bug fix Killing Emacs *scheme* buffer was not killing the scheme process.

Bug fix Fix printing of string slices.

Performance Minor tweak to character sets in Edwin regexps.

Stable release 10.1.5

Bug fix Fix problems from X11 graphics support.

Bug fix Top-level definition should return the name when evaluated.

Feature Change param:reader-fold-case? to be settable.

Stable release 10.1.4

Bug fix Fix problem where Scheme crashes when running under Emacs using --emacs.

Bug fix Fix breakage that caused legacy make-hash-table to throw an exception.

Feature Implement position option for textual ports, export binary-port-position,set-binary-port-position!, and binary-port-length, and fix bug in position of binary output ports.

Feature Allow use of bundle? as a bundle predicate. Also allow #f to be passed, meaning the same thing.

Feature New printer parameter param:print-hash-number-in-objects? controls whether objects with #[...] printed representation will contain the hash number for the object. By default, it's true so there's no change in behavior.

Performance Speed up string operations for Edwin and IMAIL. These changes should provide noticeable improvements.

Performance Don't use general predicate relations for record predicates; there's no advantage, and it's far slower than just chasing the parent link.

Stable release 10.1.3

Revise unix installation notes to be more specific.

A bunch of changes to smooth the process of installation.

Bug fix make flo:integer? answer true only for finite inputs.

Stable release 10.1.2

Bug fix x11 plugin wasn't being recompiled when installing from native distribution.

Stable release 10.1.1

Bug fix Fix problem that required a working mit-scheme when building and installing one of the distributed native builds.

Stable release 10.1

This release has a few high-level changes in addition to those detailed below:

Major new features

SMP support

Preliminary support for symmetric multi-processing has been added, though the core functionality remains on an alternate branch. A multi-processing Scheme cannot rely on without-interrupts for exclusive, atomic access to the entire system. Thus without-interrupts is deprecated. Many of the system's uses of without-interrupts sought only to avoid interruption of a set of data structure modifications that would leave the data in an inconsistent state. These applications of without-interrupts were replaced with applications of a new procedure: without-interruption. Users of subprocess-global-status-tick and subprocess-status-tick relied on without-interrupts to ensure a subprocess could not change status between examining the tick and blocking to wait for a tick. Without without-interrupts, these users needed another mechanism to reliably block for subprocess status changes. The IO system already does this for IO using thread events, so a procedure similar to register-io-thread-event was added: register-subprocess-event.

GC Notifications

GC notifications previously ran in the after-gc interrupt handler, in whatever thread took the GC trap, or no thread at all if the thread system trapped. Unfortunately the notification procedure wants to write to a thread's dynamically bound current output port. Edwin uses this to re-direct the GC notices to its *scheme* buffer. When the thread system trapped, a random thread's (but often the only thread's) dynamic state was used to get a current output port. In anticipation of more finely threaded (and multi-processing) worlds, all of the surprising behavior was taken out of GC notifications. Interested threads are required to register and each runs a thread event soon after the flip (like an interrupt).

Thread Events

Minor new features

Minor changes and bug fixes

Incompatible changes

Experimental new features

Stable release 9.2

Stable release 9.1

Incompatible changes

Major new features

Experimental new features

Major changes

Minor new features

Minor changes and bug fixes

Stable release 9.0

(Note that we're skipping the 8.x version numbers because long ago there was an 8.x series that we never released.)

In the past my (Chris Hanson's) policy for a stable release was that the documentation had to be updated for the release before it went out. In practice, this has meant that there have been no stable releases in recent years. As of this release, we will no longer consider updated documentation a prerequisite for a stable release.

Major changes

Incompatibilities with previous releases

System usage changes

Changes to the runtime

Improved XML support

Changes to Edwin

Changes to IMAIL

Testing release 7.7.90

As of this release, MIT Scheme is a part of the GNU project and has been renamed MIT/GNU Scheme. The project is now hosted on Savannah. License text in the source files has been changed, and a license/warranty statement is now emitted during boot, to conform to the GNU coding standards.

This is the first testing release of MIT/GNU Scheme. I had originally planned to do a stable 7.8.0 release, but time pressures have made it difficult to bring the documentation up to date, so this release comes with out-of-date documentation. Additionally, there will be binaries only for GNU/Linux; users of other systems will have to wait for the stable release.

Incompatibilities with previous releases

Changes to the runtime system

Changes to Edwin

Changes to XML support

Stable release 7.7.1

Release 7.7.1 fixes several bugs in IMAIL; fixes a bug that prevented the use of server sockets on Windows systems; and fixes a bug that caused the debugger to generate errors in common circumstances.

Stable release 7.7.0

This release provides hygienic macro support, as defined in R4RS and R5RS. This is a complete rewrite of the syntax engine, so any program that uses macros should be rewritten to use the new engine. A subset of the old macro-definition syntax is still supported, but this will eventually be removed. Note that the new syntax engine has no effect on the compiled-code format; most binaries compiled by release 7.6.x should continue to work.

User-visible consequences to this change

Other notable changes in this release