Scheme 48


Current release

Previous releases

R5RS

More code

Scheme links

Release notes for version 0.54.

Bignums are now handled in C using code borrowed from MITScheme (thanks to Martin Gasbichler for getting this working and to the MIT Scheme folks for the code).

Many of the POSIX functions can now be called from Scheme; see the relevant chapter in the manual for more information.

  • Additions
    • Set and unset commands for modifying switch values. The following commands are now obsolete (but still work): batch, bench, break-on-warnings, form-preferred, and levels.
    • Support for some SRFIs.
    • Support for some POSIX functionality.
    • A functional interface to POSIX regular expression matching.
    • Iterate and reduce macros for writing loops.
    • Modify added to the module language for interface mangling.
    • A letrec-closure opcode for letrec's when using flat environments.
    • Output-port-ready? in structure i/o is a char-ready? equivalent for output ports.
    • Much of the documentation is now in a single manual (doc/manual.ps or doc/html/manual.html).
  • Deletions
    • Removed files misc/syscall.scm and misc/getenv.scm. Use the POSIX calls instead.
    • Removed the .notify rule which sent mail back to us when Scheme 48 was installed.
  • Changes
    • Bignums are now handled in C code borrowed from MITScheme (thanks to Martin Gasbichler).
    • Replaced ,levels i with ,reset i and added ,resume i.
    • The command interpreter loads ,opened packages without asking first. Do ,set ask-before-loading to get the old behavior.
    • The command interpreter no longer prints out the names of files and modules being loaded. Do ,unset load-silently to get the old behavior.
    • The command interpreter has changed in a number of other ways. See the manual.
    • Changed misc/either.scm to use fluid variables and replaced (init) with (with-nondeterminism thunk). Moved the sources to big/either.scm and the structure definition to more-packages.scm.
    • Moved the programming-environment packages out of more-packages.scm and into env-packages.scm. more-packages.scm was getting too large.
    • Modified the opt/analyzer.scm code to get cadr to inline.
    • The last-resort condition handler now uses debug-message to print, the hope that it will be more robust this way. The message is a bit more wordy as well.
    • Char-ready? no longer causes any characters to be read from OS ports.
  • Bug fixes
    • The flat-environment optimizer can now handle large environments.
    • Removed command-interpreter's saved focus values from the stack to keep them from being captured by call/cc.
    • The code in misc/pipe.scm works again.
    • Renamed variable errno in c/unix/misc.c to something that does not conflict with glibc.
    • Fixed (lambda () (define x 1) (define y 2)) bug.
    • Added Mike Sperber's more general alt code.
    • Fixed definition of S48_SET_CAR() and friends in c/scheme48.h.
    • Added EINTR checks to more of the system calls.
    • Made macro-defining syntax-rules macros work.

Jump to top of page.