Release notes for version 1.1
This release has a new VM architecture, and thus a new major version number (0.* -> 1.*). The new architecture will facilitate development of a Scheme 48-compatible native-code compiler. There have also been a large number of bug fixes and other changes.Mike Sperber and Martin Gasbichler are responsible for much of this release; they are now the active developers of Scheme 48.
Version 1.0 was not stable enough to be released.
- Additions
- Added enum-sets (which are in
big/enum-set.scm
with the struct inmore-packages.scm
). - Added SRFIs 25, 26, 27, 28, 31, 37, and 42.
- Added documentation for the thread system.
- Added documentation for numerous other libraries.
- Added a structure definition for
scheme/big/lu-decomp.scm
. - Added the sparse (Hilbert) vectors to the regular build and to the manual.
- Added enum-sets (which are in
- Bug fixes
- Locks and placeholders work correctly.
-
Inexact->exact
now works on exact numbers and vice versa. -
Letrec
is now compiled correctly. -
Call-with-values
now works correctly for the one-return-value case. - SRFI 1 now exports
MAP
,FOR-EACH
,MEMBER
, andASSOC
. - Blocking threads are held onto via cells to allow terminated threads
to be summarily removed.
Maybe-commit-and-block
is passed this cell as an argument. This fixes a race condition in the blocking mechanism. Also as a result of this, locks etc. use regular queues instead of thread-queues. - Package mutation code now knows that structure clients may be either packages or structures (found and fixed by Martin Gasbichler).
-
c/write-barrier.h
has been renamedc/scheme48write-barrier.h
(a change) and added to the list of include files that are installed (it is#include
'd byscheme48.h
which was already being installed). -
Integer?
now works correctly on floats. - The sources can now be compiled by a C++ compiler.
- Numerous minor type issues in the C code were fixed.
- Some GC problems with the POSIX code were fixed.
- The SRFI 5 implementation now conforms to the specification.
- Channels closed by
call-with-{input,output}-file
through GC no longer cause a mesage to be printed. - Fixed a problem with the debug data for
letrec
environments. - Null output ports now marked as output ports.
- Command reader now checks that , is followed by a symbol.
- Got rid of
return
value;
in void functions invm/*.c
files.
- Changes
-
Dup
,dup-switching-mode
, anddup2
now takes ports as arguments, as the manual says, instead of channels. - Added a
start
index argument to the Posix regular-expression matcher (this is an incompatible change). -
Block
andmake-ready
are no longer exported by the thread package. Use themaybe-commit-and-...
versions instead. - Placeholders now use the commit mechanism instead of disabling interrupts.
-
lock.scm
has been moved fromrts/
tobig/
because the S48 system no longer uses them. - The old
sort
library has been replaced by Olin Shiver's collection of sort libraries. (TheSORT
structure retains its old interface.) - It's possible to quote filenames for , commands.
- The byte-code architecture has been changed. It no longer has dedicated registers for the template and environment. All values are now accessed via the stack pointer.
- Image writer now uses hash tables instead of breaking hearts. This allows for more careful construction of the image files and means that having static areas no longer prevents writing images.
- Continuations no longer have headers when on the stack, making non-tail calls a little bit faster.
- Removed the unused
port-locked?
from ports. - Made for less duplication of code between the VM and RTS: put the
continuation offsets into
vm/arch.scm
, moved some code around so thatvm/data.scm
could be used by the RTS, the interface definitions forvm/arch.scm
andvm/data.scm
are now shared. - The VM's stack pointer (
*stack*
) now points to the top value on the stack instead of the unused location just above. - The VM files are now in organized into subdirectories.
- The interrupt and stack overflow checks have been merged into a single test. Calls are a little bit faster.
-