12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232 |
- -*- Mode: org; -*-
- Recent changes to Scheme 48.
- * 2012-12-31 (version 1.9)
- ** Additions
- - A new C FFI as added, thanks to Crestani, Harald Glab-Plhak. The
- old one is still there but will eventually be phased out.
- See Crestani's paper "Foreign-Function Interfaces for Garbage-Collected Programming Languages"
- http://www-pu.informatik.uni-tuebingen.de/users/crestani/publications/2008-sws-ffi.pdf
- - A new networking code layer was added with full support for IPv6,
- UDP etc. (undocumented as of yet)
- - Records now support single inheritance (accessible through the
- r6rs-records packages)
- - `letrec*' was added to the `scheme' structure
- - A `r5rs' structure was added.
- - A new condition system based on R6RS's system has replaced the old system.
- - Some R6RS libraries were added (with help from Robert Ransom).
- - A statistical profiler was added (Marcel Turino, Manuel Dietrich) -
- check the documentation for details.
- - TLC tables (`eq?' tables) were added by Marcus Crestani and David Frese.
- - The module system warns on cycles and redefinitions
- - When the VM is compiled with GNU C, it uses direct threading for
- instruction dispatch, which speeds up the VM noticeable (done by
- Timo Harter)
- - The reader for a structure is configurable (again).
- - SRFI 19 now works on Windows
- - `list-spine{,-cycle-safe}[*%]' sequence macros were added to `reduce'
- structure by Robert Ransom
- - The Windows build can be done via a Boo script (contributed by
- Robert Ransom)
- - The unquote and unquote-splicing were generalized to several
- operands, in line with R6RS.
- - Commands ,show-known-packages, ,show-interface, and
- ,show-default-package were added to support SDT (Marcus Crestani,
- Sebastian Rheinecker).
- - `placeholder-value' now accepts a `deadlock?' argument that says
- whether blocking on the placeholder contributes to deadlock.
- - Most source files now carry author information.
- - A document =doc/deriving.txt= was added that clarifies how works
- derived from Scheme 48 should be labelled.
- ** Changes
- - The BIBOP GC was heavily debugged and is now considered stable - it
- is enabled by default.
- - The system builds on Windows Visual Studio Express 2010 instead of
- Visual Studio 2005.
- - The BIBOP GC code was simplified significantly.
- - The `syntax-rules' implementation was rewritten by Richard Kelsey
- - Some structures were added to the POSIX subsystem
- (`posix-errnos', `posix-syslog')
- - Various procedures were added to the POSIX structures by Roderic
- Morris to support scsh.
- - The autoconf code was reorganized by Ivan Shmakov.
- - The REPL now prints values without quotes and auto-capitalization of
- record-type names.
- - The Makefile now builds the documentation upon `make install'.
- (This requires a working LaTeX installation and tex2page.) A target
- `install-no-doc' is available that does not.
- - The license information was clarified.
- - The external-events API was changed to fix a design bug; it now
- correctly accomodates "fire-once" applications such as
- wait-`for-child-process' (with help from Robert Ransom, Roderic
- Morris).
- ** Bug fixes
- - Many.
- * 01/20/08 (version 1.8)
- ** Additions
- - An experimental framework for asynchronous events from external code
- was added. It's now used for asynchronous host-name lookups on
- systems with pthreads.
- - Support for 64-bit architectures was added (thanks to Taylor
- Campbell, Marcus Crestani, and David Frese)
- - The installation now includes an (experimental) "scheme48-config"
- script that reports C compiler and linker and associated flags that
- may be used for compiling dynamic externals.
- ** Changes
- - The layout of the installed system now conforms to FHS.
- - The old dynamic-loading code was removed; correspondingly, the -o
- flag for scheme48vm was removed.
- - The filename translations apply to dynamic externals as well.
- - On Unix, the central event loop uses poll() instead of select() on
- systems that have it (thanks to Marcus Crestani)
- - The external code for the POSIX libraries and SRFI 27 was moved to
- dynamically-loaded externals. (Cygwin support for this thanks to
- Harald Glab-Plhak)
- ** Bug fixes
- - A bug in the division simplifier of the PreScheme compiler was
- fixed.
- - The PreScheme compiler can now emit code for unsigned longs.
- - The implementations of SRFI 19 and SRFI 42 now include the latest
- fixes from the reference implementations.
- - A race condition in the implementation of queues was fixed.
- * 09/06/07 (version 1.7)
- ** Additions
- - A new, experimental garbage collector written by David Frese has
- been added. It can be enabled by specifying "--enable-gc=bibop" on
- the configure command line. (It is disabled by default on Unix, but
- enabled on Windows.)
- - DESTDIR support has been added to the Makefile (thanks to Markus
- Weissmann, Ivan Shmakov, Will Job von Foo)
- ** Bug fixes
- - Ctrl-C now works more reliably on Windows.
- - An I/O bug on Windows where an EOF on read would cause a crash has
- been fixed. (reported by Christoph Bauer)
- - A bug that would cause spurious deadlocks with the interactive REPL
- was fixed.
- - A bug where the last exception handler would get de-installed has
- been fixed (reported by Emilio Lopes)
- - A bug in BYTES->STRING-N that would cause it to break on incomplete
- incodings was fixed (reported by Emilio Lopes)
- - CURRENT-OS-STRING-TEXT-CODEC is now exported from OS-STRINGS as
- documented (reported by Emilio Lopes)
- - A bug where random text would be printed when a port was closed by
- GC was fixed. (reported by Will Clinger)
- - A bug in the UDP sockets was fixed.
- * 03/19/07 (version 1.6)
- ** Additions
- - An autogen.sh script for generating the various generated files from
- source was added.
- - Infrastructure for creating, running and composing test suites was
- added. As a result, "make check" now runs more tests than before.
- - It is now possible for adventurous users to run the linker in PLT
- Scheme.
- ** Changes
- - "make image" now assumes a Unicode-capable Scheme 48.
- ** Bug fixes
- - A bug where automatic port-flushing would churn trying to write to a
- blocking socket was fixed.
- - An infinite loop upon (/ 0.0 0.0) was fixed. (reported by Taylor
- Campbell)
- - A bug that made SYSTEM unusable was fixed. (reported by Marco
- Benelli)
- - A bug with package mutation, which made running the PreScheme
- compiler on the VM break was fixed.
- - Bugs related to the conversion between OS strings and strings on
- command-line handling were fixed. (reported by Andreas Rottmann)
- - Compilation using gcc now uses the -munaligned-doubles flag where
- available, which is needed on SPARCs to make floating-point
- arithmetic work.
- - Compilation older versions Cygwin that don't have langinfo.h should
- be fixed.
- - Some problems with installing and running on Windows Vista were
- fixed. (thanks to Axel T. Schreiner)
- * 01/12/07 (version 1.5)
- ** Additions
- - Comprehensive Unicode support was added. See the manual for
- details.
- - An implementation of SRFI 19 was added. (thanks to Emilio Lopes)
- - SYNTAX-RULES now supports vector patterns and templates.
- - The ,bound? command now produces more output. (thanks to Taylor
- Campbell)
- ** Changes
- - Many of the POSIX procedures that accepted or returned strings
- previously now accept or return OS strings. See the manual for
- details.
- - The ,build command now accepts a procedure that will be called with
- a list of OS strings rather than regular strings.
- - The ASCII->CHAR and CHAR->ASCII procedures from the ASCII structure
- covers only ASCII (codes 0-127) now. (Previously, the range
- included 128-255 as well.)
- ** Bug fixes
- - A bug with package mutation was fixed. (reported by Taylor
- Campbell)
- * 12/23/06 (version 1.4)
- ** Additions
- - REGEXP? is now exported from the REXEXPS structure.
- - SRFIs 4, 39, 40, 43, 43, 60, 61, 63, 66, 67, 71, 78 (mostly thanks
- to David Van Horn)
- - In the command processor, switches were generalized to settings,
- specifically to customize various printing parameters. See the
- manual for details.
- - A generic byte-code parser was added to the system; the disassembler
- uses it.
- - A REINITIALIZERS package for register actions to be performed after
- resuming an image was added.
- - A VARIABLE-ARGUMENTS-LISTS structure implementing a macro for
- dealing with optional default parameters was added.
- - A GET-INTERRUPT-HANDLER procedure was added.
- - An --enable-universal-binary option was added to configure to
- facilitate building universal binaries on Mac OS X.
- - The C code now has access to enum sets.
- ** Changes
- - FILE-OPTIONS (in the POSIX libary) are now enum sets; this allows
- using enum-set operations on them.
- - Various changes were made to the VM to enable native-code
- compilation.
- - Socket addresses are always reusable.
- - 1+ and 1- are no longer valid identifiers.
- - The ordering of in/out thunks of DYNAMIC-WIND was changed to be
- consistent with itself and with the upcoming R6RS.
- - The Windows build is now done using Visual Studio 2005.
- ** Bug fixes
- - Macro-defining macros now work in PreScheme.
- - Opening a file for both read and write via the POSIX libraries
- wouldn't work correctly. (Reported by Andreas Rottmann.)
- - PreScheme's COPY-MEMORY! now works for overlapping regions. Various
- C compilation problems were fixed.
- - cmuscheme48.el should now work under GNU Emacs as well as XEmacs.
- - Numerous problems with floating-point arithmetic were fixed.
- - A race condition with queues was fixed. (thanks to David Frese)
- - Part of script messages were printed on stdout rather than stderr;
- fixed. (thanks to Andreas Rottmann)
- - A shadowing bug in the DEBUGGING package was fixed. (thanks to
- Taylor Campbell)
- - A bug in the CML SYNC-GROUP primitive was fixed. (thanks to Heath
- Putnam)
- - Various errors in SRFI 13 were fixed.
- - A bug in the auto-integrator was fixed. (thanks to Taylor Campbell)
- - A bug in LOAD-DYNAMIC-EXTERNALS was fixed. (thanks to Taylor
- Campbell)
- - Several bugs in VECTOR-MERGE were fixed. (reported by Matthias
- Radestock)
- - The CML WRAP was made correctly tail-recursive. (reported by Heath
- Putnam)
- - A bug in the PreScheme C backend, that would sometimes incorrectly
- delete tail calls without a return value, was fixed. (reported by
- Eric Merritt)
- - Several bugs in interface walking were fixed. (reported by Taylor
- Campbell)
- - A bug in the PreScheme compiler affecting the removal of unused
- procedures was fixed. (thanks to Eric Knauel)
- - Some precedence bugs in the C stubgs for the regexp code were fixed.
- (thanks to Matthew Dempsky)
- - A bug in the REGEXPS package for regexps without submatches was
- fixed.
- - (set-current-proposal! (current-proposal)) no longer raises an
- exception. (thanks to Taylor Campbell)
- - A bug in package caching was fixed. (thanks to Taylor Campbell)
- - A bug in the generation of environment maps was fixed. (thanks to
- Taylor Campbell)
- - The Windows installer package should now work even on systems that
- have delayed variable expansion on by default. (thanks to Emilio
- Lopes)
- - Exception handlers that return from RAISE are now handled correctly.
- (reported by Norbert Freudemann)
- * 05/01/05 (version 1.3)
- ** Additions
- - A collection of libraries implementing the Concurrent ML model for
- concurrent programming has been added; it is compatible to the CML
- libraries in Sunterlib. See the documentation for details.
- - Support for SRFIs 34-36 ("Exception handling for programs",
- "Conditions", "I/O conditions") has been added. This is in the
- CONDITIONS, EXCEPTIONS, and I/O-CONDITIONS structures, for which the
- SRFI-34, SRFI-35, and SRFI-36 structures are essentially aliases. A
- bridging infrastructure between the old condition system and the new
- one translates condition objects back and forth, hopefully
- transparently for the user.
- - A new infrastructure for dynamically loading external libraries from
- shared objects has been added; check the manual for details. The
- old infrastructure is still presented, but is unsupported on Windows
- and will be removed in a future release.
- - The S48_GC_UNPROTECT_GLOBAL macro has been added, which allows to
- remove a root added by S48_GC_PROTECT_GLOBAL.
- - The Scheme 48 header files should now be compileable by a C++
- compiler.
- - An experimental Windows port has been added.
- ** Changes
- - The HTML manual is now generated with tex2page.
- - A number of changes to the VM to support the (future) native-code
- compiler have been made.
- - The PreScheme type rule for IF is now more strict, thus disallowing
- code that would lead to invalid C output. (This fixes a bug
- reported by Markus Ziegler.)
- ** Bug fixes
- - The TRAVERSE structure for displaying heap statistics has been
- re-enabled.
- - A number of misues of CALL-ERROR have been corrected (reported by
- Taylor Campbell).
- - The VALUE-PIPES package works again (fix by Taylor Campbell).
- - In PreScheme it is now possible to shift integers by non-constant
- shift widths.
- - Logical right shifts in PreScheme work now (reported by Taylor
- Campbell).
- - A bug in TERMINATE-THREAD! was fixed (reported by Taylor Campbell).
- - A bug in the implementation of ,exit-when-done was fixed.
- - A bug in the regexp-matching code that prevented matching the empty
- string correctly was fixed.
- - A bug in the implementation of STRING-CONTAINS from SRFI-13 was
- fixed.
- - A bug in the implementation of :WHILE in SRFI-42 was fixed
- (submitted by Sebastian Egner).
- - Bugs in the implementations of ANGLE and MAGNITUDE were fixed.
- - An obscure bug in the implementation of APPLY (which was triggered
- by certain instances of (apply apply ...) ) was fixed.
- - For a degenerate case of ITERATE, the code was made to conform the
- documentation (reported by Taylor Campbell).
- - Various miscellaneous fixes.
- * 12/05/04 (version 1.2)
- ** Additions
- - The LU-DECOMPOSITIONS structure was added for good.
- - The CONDVAR structure now exports CONDVAR?.
- - SRFI 22 ("Running Scheme Scripts on Unix") is fully supported.
- - An implementation of SRFI 45 was added.
- - Scheme 48 now builds from a directory other than the source
- directory. This enables builds for multiple platforms from a single
- source directory.
- ** Changes
- - Scheme 48 uses floating-point arithmetic by default now---as if
- FLOATNUMS were loaded in a previous release. To that end, Scheme 48
- now uses Bob Burger's lightning-fast free-format floating-point
- printer.
- - "make install" now creates the installation directories.
- ** Bug fixes
- - The PreScheme compiler works again for the VM---in 1.1, there was a
- bug in the type inferencer related to exactness.
- - A number of bugs in the REGEXPS structure were fixed (many noted by
- James B Crigler).
- - The closed compilator for ERROR was buggy (reported by Taylor
- Campbell).
- - A number of documentation bugs were fixed.
- - The assembler works again, at least rudimentarily.
- - The SPATIAL structure loads and works again.
- - Most of the code in scheme/misc (ANNOTATIONS, DOODL, SICP,
- INTEGER-LENGTHS) works again.
- - SPAWN now returns the created thread, and the THREADS structure
- exports CURRENT-THREAD. (As the 1.1 documentation already claimed.)
- - Floating-point numbers are now printed correctly. (See above.)
- - "make install" now installs scheme48write-barrier.h.
- - Two subtle GC bugs related to threads were fixed (reported by Jorgen
- Schaefer).
- - Some arithmetic bugs were fixed (reported by Aubrey Jaffer).
- - A number of bugs related to the handling of I/O error were fixed.
- - The debugger now prints more information about the context of a VM
- exception.
- - A GC bug related to POSIX signals was fixed.
- - The POSIX-PROCESSES structure now exports SIGNAL? and SIGNAL=?.
- * 05/07/04 (version 1.1)
- ** Additions
- - Added Enum-sets (which are in big/enum-set.scm along with their
- struct).
- - Added SRFIs 25, 26, 27, 28, 31, 37, 42.
- - Added documentation for the thread system.
- - Added documentation for numerous other libraries.
- - Added structure definition for LU-DECOMPOSITIONS.
- - Added Hilbert vectors to the regular build.
- ** Changes
- - DUP, DUP-SWITCHING-MODE, and DUP2 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 and MAKE-READY are no longer exported by the thread package.
- Use the MAYBE-COMMIT-AND-... versions instead.
- - Placeholders now use the commit mechanism instead of disabling
- interrupts.
- - lock.scm has been moved from rts/ to big/ because the S48 system no
- longer uses them.
- - The old SORT library has been replaced by Olin Shiver's collection
- of sort libraries. (The SORT structure retains its old interface.)
- - It's possible to quote filenames for , commands.
- ** 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 0 now exports MAP, FOR-EACH, MEMBER, and ASSOC.
- - 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 renamed c/scheme48write-barrier.h (a
- change) and added to the list of include files that are installed
- (it is #include'd by scheme48.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.
- * 10/7/01 (version 1.0)
- ** Bug fixes
- - 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 in vm/*.c files.
- ** Changes
- - 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
- that vm/data.scm could be used by the RTS, the interface definitions
- for vm/arch.scm and vm/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.
- * 7/15/01 (version 0.57)
- ** Additions
- - Added a SYSTEM procedure that calls the C system() function (in
- structure c-system-function).
- - Added SRFIs 11, 13, 14, 16, 17, and 23.
- ** Bug fixes
- - Removed duplicate definitions of S48_{ENTER|EXTRACT}_BOOLEAN from
- c/scheme48.h.
- - Fixed a problem in lookup_record() in c/posix/proc.c that was
- causing crashes.
- - Added scheme/srfi to the list of directories that get installed.
- - Zeroed sockaddr structs in c/unix/socket.c.
- - Added configuration tests for socklen_t.
- - Marked DEFINE-RECORD-TYPE as syntax in the SRFI-9 interface.
- - Fixed (another) bug in s48-shorten-bignum.
- - Fixed off-by-one error that caused one resumer record to be ignored
- when writing out images.
- - Fixed problem with macros expanding into uses of finite types.
- - Added a handler for the TIME opcode to take care of any arithmetic
- overflow.
- * 5/30/01 (version 0.56)
- ** Bug fixes
- - Fixed problems with s48-shorten-bignum that were causing crashes.
- - Patched PreScheme compiler so that the VM would compile (how did
- this not get noticed earlier?).
- - Added scheme/posix to the list of directories that get installed.
- - Replaced sa.sa_action = ... with sa.sa_handler = ... in
- c/posix/proc.c.
- - Added one-argument version of ATAN.
- - Fixed macro-defining-macro bug that showed up in SLIB's FLUID-LET.
- - SLEEP checks that its argument is a positive real number and
- correctly handles rationals and inexacts.
- - Fixed a few typos in the manual.
- * 5/21/01 (version 0.55)
- ** Additions
- - The inspector is more efficient in dealing with large vectors, long
- lists and circular lists.
- ** Bug fixes
- - Added an error handler to command-levels.scm to avoid bad
- interaction between ,break-on-warnings and the handler-raised
- undefined-variables warning.
- - Fixed endless recursion occuring when loading floatnums after
- creating inexact rationals.
- - Made ,reset throw away the old value stack
- - build/filenames.scm now loads the interface files so we no longer
- get the plethora of "undefined variable" warnings.
- - The flat-environment optimizer is now idempotent.
- - Fixed a problem with single-argument receivers as in
- (call-with-values ... (lambda (x) ...))
- - Minor edits to the documentation.
- - Fixed a problem that occured when (optimize auto-integrate) was used
- in the presence of definition-producing macros.
- - Changes to the socket code to work around an oddity in FreeBSD.
- - Added the os-{...-}name functions to the Posix interface.
- - The socket code uses socklen_t instead of ints in the appropriate
- places (the configure script defines socklen_t if necessary).
- (thanks to Martin Gasbichler).
- ** Changes
- - Replaced all uses of FLUID-SET! with fluids bound to cells.
- - Renamed WRITE-ONE-LINE (which did nothing of the sort) to
- LIMIT-OUTPUT; the old name is still there for compatibility.
- - Added vertical tab (ascii->char 11) to ascii-whitespaces to make our
- definition of whitespace the same as POSIX's.
- - The procedures in the records and records-internal structures are
- now in three structures: 'records' has the low-level, vector-like
- primitives, 'record-types' has everything relating to the type
- records, and 'records-internal' has the leftovers.
- - Removed many of the uses of STRUCTURE-REF (because the manual
- doesn't mention it).
-
- * 3/20/01 (version 0.54)
- ** 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.
- - Functional interface to Posix regular expression matching.
- - ITERATE and REDUCE macros for writing loops.
- - Much of the documentation is now in a single manual (doc/manual.ps
- or doc/html/manual.html).
- - MODIFY added to the module language for interface mangling.
- - LETREC-CLOSURE opcode for LETREC's when using flat environments.
- OUTPUT-PORT-READY? in I/O is CHAR-READY? for output ports.
- ** Deletions
- - Removed misc/syscall.scm and misc/getenv.scm. Use the posix calls
- instead.
- - Removed the .notify rule.
- ** 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. 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,
- in 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.
- - Changed 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 generalized alt/ fixes.
- - 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.
- * 2/24/99 (version 0.53)
- ** Additions
- - DEFINE-FINITE-TYPE and DEFINE-ENUMERATED-TYPE (in structure
- FINITE-TYPES; documented in doc/utilities.ps and
- doc/html/utilities.html.
- - Added CHAR-SOURCE->INPUT-PORT, CHAR-SOURCE->OUTPUT-PORT,
- MAKE-STRING-OUTPUT-PORT, STRING-OUTPUT-SOURCE-OUTPUT to the
- extended-ports structure.
- - The structure BYTE-VECTORS is the same as CODE-VECTORS with `byte'
- replacing `code' in all the names. The underlying datatype is the
- same for both, and uses `byte' when printing.
- - There is a new and much improved interface to C code, thanks to Mike
- Sperber. It is documented in in doc/external.ps and
- doc/html/external.html.
- ** Bug fixes
- - Session-data and user-context records are no longer in the fluid
- env.
- - Lexical environments can now be nested up to 65k deep.
- - ,expand no longer prints `definition in expression context'
- warnings.
- - Added ARRAY? and SEARCH-TREE? to the array and search tree
- structures.
- - Flat environments work again.
- - Templates of the form `var ... ...' now work in syntax rules.
- - Reinstated caching of SCHEMIFY results to greatly reduce the space
- used by debugging info.
- - Added argument checking to STRING->NUMBER and NUMBER->STRING.
- - Fixed space blow-up in LOAD.
- - Unused ports are closed more reliably.
- ** Changes
- - The heap, gc, and image code is now in three separate modules.
- - The symbol table is now held in a VM register.
- - Inlined SHOWING-FOCUS-VALUES into the main command loop and moved
- the sentinel call to reduce the noise at the base of ,preview
- output.
- - The tables returned by MAKE-TABLE now use EQV? for comparison
- (instead of EQ?). This makes these tables about 50% slower when
- numbers are used as keys, but significantly more accurate.
- - Floating-point numbers are no longer double boxed.
- * 7/22/98 (version 0.52)
- ** Bug fixes
- - Fixed problems with unbound variables in SET! and the inliner.
- - Made macro expansion a bit less eager; this should reduce the amount
- of heap space needed for compilation.
- * 6/29/98 (version 0.51)
- ** Incompatible changes
- - BIG-SCHEME no longer exports its version of DEFINE-RECORD-TYPE (but
- it is available from the structure DEFRECORD). I am slowly removing
- all uses of this version of DEFINE-RECORD-TYPE from the sources.
- - The version of DEFINE-RECORD-TYPE exported by DEFINE-RECORD-TYPES
- checks that every constructor argument corresponds to a field.
- - Uses of LAP must list their free variables (see env/assem.scm).
- ** Changes
- - The functions exported by BIG-SCHEME that were not available
- elsewhere are now exported by BIG-UTIL as well.
- - MAKE-RANDOM now checks its argument (but is still a fairly poor
- source of pseudo-randomness).
- - SIGPIPE no longer kills the S48 process (this was done earlier but
- not listed here).
- - The macro/module/compiler code has been reorganized. Hopefully the
- only noticable difference is in the babble written when loading
- files and packages.
- - Added CODE-QUOTE (in its own structure of the same name) for use in
- writing hygienic macro-generating macros. CODE-QUOTE is the same as
- QUOTE except that it does not strip off any of the macro system's
- name annotations.
- - The FLOATNUMS package now exports FLOATNUM?.
- ** Bug fixes
- - Fixed phony stack-overflow bug.
- - Fixed a bug in thread time-debit mechanism.
- - Made floating point numbers always print as inexact.
- - Got rid of bogus type-error warnings when using floatnums.
- - Fixed declaration of call_startup_procedure in c/main.c.
- * 2/11/98 (version 0.50)
- ** Bug fixes
- - Fixed bug in closed-compiled version of READ-CHAR.
- - Fixed negative-key bug in integer tables.
- * 11/18/97 (version 0.49)
- ** Bug fixes
- - Removed some non-portable Kali code that had been accidentally
- included in c/extension.c.
- * 10/29/97 (version 0.48)
- - The VM's calling convention now has the caller doing protocol
- checking, instead of the callee. The *NARGS* register no longer
- exists.
- - Scheme's variable-arity procedures (APPLY, MAKE-VECTOR, +, -, etc.)
- are usually handled without raising an exception. Calls with an
- `atypical' number of arguments are now much faster.
- - Opcodes were added for >, <=, and >=.
- - Procedures can take up to about 8k arguments. The limit is
- determined by the value of AVAILABLE-STACK-SPACE in
- scheme/vm/arch.scm.
- - Compiler detects wrong number of arguments in ((lambda ...) ...).
- - Removed the dynamic point from the dynamic environment to make
- DYNAMIC-WIND behave reasonably with threads.
- - KILL-THREAD! should work more reliably.
- - The I/O primitives now pass OS error messages to the exception
- handlers.
- - I/O errors when flushing buffers no longer crash the system.
- - The Pre-Scheme compiler's hack for shadowing global variables with
- local copies is no longer used.
- ** Incompatible changes
- - The internal thread interface was simplified.
- - There are some architecture changes; .image files will have to be
- rebuilt.
- - ACCESS-SCHEME-48 and scheme/misc/slib-init.scm have been removed
- (thanks to Mike Sperber's updating of slib).
- * 1/27/97 (version 0.47)
- - Fixed ,exit and added ,exit-when-done.
- - CASE now uses EQV? exclusively.
- * 11/5/96 (version 0.46)
- - Fixed a few minor thread problems.
- - opt/analyze.scm now writes to current-noise-port.
- - DELQ and DELETE now delete every instance, as the documentation
- claims.
- - There should be no more spurious heap-overflow interrupts.
- - Fixed bugs that caused the system to die if stdout blocked.
- - Template offsets have been increased to two bytes.
- - Disassembly of flat-lambda now works (fix from Michael Sperber).
- * 8/23/96 (version 0.45)
- - Fixed various problems with thread termination and nested
- schedulers.
- - Changed thread-internal interface to make schedulers easier to
- write.
- - BITWISE-{AND,IOR,XOR} now take an arbitrary number of arguments.
- - Output ports have their buffers flushed when Scheme 48 terminates.
- - In keeping with RnRS, CLOSE-{IN,OUT}PUT-PORT are now idempotent.
- - MODULO now handles negative arguments properly.
- * 6/20/96 (version 0.44)
- - The VM's byte-code interpreter and storage management code are now
- compiled to separate C files.
- - The socket code works again.
- * 5/10/96 (version 0.42-0.43)
- - Various fixes to the thread and I/O systems.
- - The Unix interface code is more portable.
- - EOF (control-D) now resumes running all non-broken threads on
- resumed command level. Thus EOF after a keyboard interrupt
- (control-C) resumes running the interrupted thread.
-
- * 11/30/95 (version 0.41)
- - The distribution has been reorganized to reduce the number of files
- in the top-level directory.
- - The threads implementation has been replaced with one based on
- engines to allow for nested schedulers.
- - Threads are now included in the initial image.
- - The I/O system has been fixed and automatic periodic output buffer
- flushing has been reinstalled.
- - Command levels have been integrated with the threads system to
- ensure that at most one REPL is active at any time.
- - CONDVAR has been changed to PLACEHOLDER (condition variables being
- something quite different).
- - ,profile no longer works, it will be fixed in a later version. MIN
- and MAX now do inexact contagion.
- * 4/13/95 (version 0.40)
- - Renamed error-output-port to current-error-port.
- - Reinstated ".gdbinit"...
- - segment->template now takes parent templates debug data as an
- argument.
- - Automatic periodic output buffer flushing has been temporarily
- disabled. A future version of the I/O system will fix it.
- - Fixed expansion of named LET.
- - The bummed-define-record-types structure is now gone; use
- define-record-types instead.
- - There is somewhat better syntax checking now.
- * 8/12/94 (versions 0.38-0.39)
- - ,profile <command> prints out profiling information
- - An interrupt is raised after every GC; the default handler checks to
- see if some reasonable amount of storage was reclaimed.
- - Some of the standard Scheme procedures, including LENGTH, FOR-EACH,
- VECTOR, and ASSQ, are now significantly faster.
- - Making, accessing, and setting records is faster.
- - tar file now includes the top-level directory
- - The "scheme-level-2-internal" structure has been renamed to
- "usual-resumer".
- - ` ( . ' is now illegal (as required by the R4RS grammar).
- - Made DELAY and FORCE comply with R4RS.
- - The EXPAND optimizer does a topological sort on definitions.
- - (optimize flat-environments) causes the compiler to produce flat
- (instead of nested) lexical environments.
- - The I/O system has been rewritten to do its own buffering. There
- are significant changes to unix.c to support this. See doc/io.txt.
- - (ERROR-OUTPUT) is now available from the structure i/o.
- - jar-defrecord has been replaced with a modified bummed-jar-defrecord
- - Files load about 25% faster, for a number of reasons.
- - Removed the copy of vm/arch.scm from the rts directory.
- - Threads and sockets work together; SOCKET-ACCEPT no longer blocks.
- - The compiler no longer prints out .'s as it compiles definitions.
- * 7/5/94 (version 0.37)
- - I/O opcodes now raise an interrupt instead of blocking (they still
- block if no corresponding interrupt handler has been installed).
- - The threads code has been rewritten; threads that block on I/O do
- not busy wait and THREAD-READ-CHAR and THREAD-PEEK-CHAR have been
- removed.
- - Attempting to obtain a lock twice or to release an unowned lock now
- signal errors.
- - READ-CHAR-WITH-TIMEOUT returns #F if the timeout occurs.
- - The socket structure is back in more-packages.scm.
- - Renamed .gdbinit to gdbinit
- - tar file now contains a top-level directory
- * 3/22/94 (version 0.36)
- - Removed doc/lsc.ps for copyright reasons.
- - Fixed (* 47123 46039) multiply bug.
- - Modified vm/README to make it easier to run the VM.
- * 3/16/94 (version 0.35)
- - Fixed (exact->inexact 0.1) -> 0..1. bug.
- - Fixed VM bug that permitted the creation of stored objects with
- negative sizes.
- * 3/8/94 (version 0.34)
- - "make check" target tests out various features.
- - Fixes for SGI IRIX 4.0.5 and MIPS RISC/OS 4.51, courtesy Bryan
- O'Sullivan.
- - debug/run.scm and the "medium system" work again now.
- - misc/static.scm should work on the 68000.
- - Command processor no longer fluid-binds (interaction-environment) on
- recursive entry.
- * 2/24/94 (version 0.33)
- - Fixed bug in VM's interrupt system.
- - Made non-local srcdir work in Makefile.
- - Added (load-package 'bigbit) to vm/README.
- * 2/23/94 (version 0.32)
- - Some incompatible changes to the VM; .image files will have to be
- rebuilt.
- - Improvements to configuration script and to unix.c to support a
- wider variety of Unixes. The system should now work under any
- Posix-compliant Unix (except maybe for char-ready?; see comments in
- unix.c).
- - Upped the default heap size from 4 meg (2 per semispace) to 6 meg (3
- per semispace).
- - New command line argument -s <size> for specifying size of stack
- buffer. Default is 2500 (words).
- - $@ -> "$@" in script (thanks to Paul Stodghill for this fix).
- - Obscure interrupt/exception VM bug fixed.
- - It is now possible to put an initial heap image into static memory
- (effectively allocated by OS process creation). Immutable initial
- objects go into static read-only memory, and mutable initial objects
- go into static read-write memory. Initial objects not copied by the
- GC. There is no documentation yet, but look at the rules for little
- and debug/little.o in the Makefile if you're interested.
- * 2/13/94 (version 0.31)
- ** Incompatible changes
- - In interfaces, all exported syntactic keywords must be given type
- :syntax. For example,
- (define-interface my-macros
- (export (my-macro :syntax) ...))
- - Image entry procedures for the ,build command are now passed a list
- of strings, not just a single string, for the command line arguments
- following -a.
- - The names of the macros defined in scheme48.h (pairp, car,
- string_length, etc.) are now all upper case.
- - New "configure" script generates Makefile from Makefile.in and
- sysdep.h from sysdep.h.in (thanks to Gnu autoconf). See INSTALL and
- doc/install.txt.
- ** Bug fixes
- - Can now make vectors (strings, etc.) as big as the amount of heap
- space available (but you're still screwed if you try to make one
- bigger than 2^23-1 bytes - don't do it).
- - Non-ANSI-ness fixed in scheme48vm.c (jump out of, then back into, a
- block expected block-local variables to be unchanged).
- - Fixed big/external.scm (had VECTOR-POSQ instead of ENUM).
- - In (define-syntax foo bar) you got an error if bar was a variable
- reference.
- - Plugged a storage leak (file-environments table in env/debug.scm).
- Images made with ,build were too large.
- - Flushed extraneous delay from make-reflective-tower.
- - Renamed variables in Makefile to resemble Gnu standards.
- - Fixed definition of LINKER_RUNNABLE in Makefile.
- - Added doc/call-back.txt.
- - Fixed define-enumerated documentation (doc/big-scheme.txt).
- - Environment maps no longer retained for things in initial.image and
- scheme48.image. This makes scheme48.image about 170K smaller.
- * 2/3/94 (version 0.30)
- - Faster EXPT.
- - FLOATNUMS improvement: (inexact->exact <float>) should now work,
- e.g. (inexact->exact (/ 1. 3.)) =>
- 6004799503160661/18014398509481984
- - Reinstated ACCESS-SCHEME-48 for the benefit of PSD (portable scheme
- debugger) and a certain other software package that shall remain
- nameless. It only knows about a small number of procedures,
- including things like ERROR and FORCE-OUTPUT.
- - Various changes to support the Pre-Scheme compiler, notably
- SET-REFLECTIVE-TOWER-MAKER!.
- - Incompatible change to the ENUMERATED structure: the names foo/bar
- no longer become defined. Write (enum foo bar) instead. This will
- macro expand into the correct small integer.
- * 1/30/94 (version 0.29)
- - Fixed ps_run_time() to call sysconf() to find out how many ticks
- there are per second. It used to assume 60. This affects the
- output of the ,time command, so don't try comparing numbers from
- this version with numbers from older versions.
- - ,time command will now accept a command, e.g.
- ,time ,load foo.scm.
- - It appears that if multiple arguments follow -a on the
- argument line, they are concatenated together with spaces
- separating them and passed to the startup procedure. I
- don't know how long this has worked. This will change in
- the future so that the startup procedure gets a list of
- strings.
- - Installed what used to be called the GENERAL-TABLES structure
- as the TABLES structure used by the system. This allows
- the use of other comparison predicates besides EQ?, and
- eliminates some code that had a restrictive copyright
- notice.
- - ENUM, NAME->ENUMERAND, and ENUMERAND->NAME are all macros.
- - Enumerated types themselves are now macros as well.
- - Fixed bad multiplication bug in VM: (* 214760876 10) was returning
- 125112.
- - Moved RECORD-TYPE? and RECORD-TYPE-FIELD-NAMES from the
- RECORDS-INTERNAL interface to the RECORDS interface, for a somewhat
- closer approximation to MIT Scheme.
- - Various type system improvements.
- - Still no documentation for the ,exec package, but see
- link/load-linker.exec for an example.
- - New generic function feature, exported by the METHODS interface (see
- interfaces.scm), almost like in a certain dynamic object-oriented
- language.
- * 1/11/94 (version 0.27)
- * Changes
- - The isomorphism used by CHAR->INTEGER and INTEGER->CHAR is no longer
- ASCII. This change was introduced in order to assist the
- development of portable programs. If you need ASCII encoding, you
- should open the ASCII structure and use the procedures CHAR->ASCII
- and ASCII->CHAR.
- * Features
- - The help system is somewhat improved.
- - New form DEFINE-STRUCTURE defines a single structure.
- * Incompatible changes to package system
- - Renamed DEFINE-PACKAGE to DEFINE-STRUCTURES
- - Renamed DEFINE-STRUCTURE to DEFINE
- - Renamed all the base types from FOO to :FOO. E.g.
- :SYNTAX, :VALUE, :PAIR, etc.
- * Other
- - Removed socket support due to restrictive copyright on some of the C
- code that was in extension.c.
- - ,take has been flushed in favor of ,exec ,load. Commands are now
- accessed via a distinguished package instead of a table.
- Documentation pending.
- - Postscript (.ps) files now included in doc/ subdirectory. (I
- thought they had been there all along, but apparently I was wrong.)
- - Enhanced, but still kludgey, floating point support. Use ,open
- floatnum.
- * 12/12/93 (version 0.26)
- - NetBSD port.
- - Hacked write-level and write-depth for inspecting circular
- structure.
- - Recursive FORCEs signal errors, e.g.
- (force (letrec ((loser (delay (force loser)))) loser))
- * 12/7/93 (version 0.25)
- ** Bug fixes
- - filenames.make can now be remade using initial.image. This means
- that you can snarf a distribution and then edit USUAL-FEATURES
- before making scheme48.image.
- ** Incompatible changes
- - Change of terminology: "signature" --> "interface". This means that
- DEFINE-SIGNATURE is now called DEFINE-INTERFACE, etc.
- - Some structures have been renamed:
- condition -> conditions
- continuation -> continuations
- exception -> exceptions
- queue -> queues
- port -> ports
- record -> records, record-internal -> records-internal
- table -> tables
- template -> templates
- - The ,load-into command has been removed. Use ,in ... ,load
- instead (see below), e.g.
- ,in mumble ,load myfile.scm
- - The heap size for -h is specified in words, not bytes. As before,
- the size must account for both semispaces; -h 2n means n words per
- semispace. This change was actually made a while ago, but I was
- confused as to what it meant.
- ** Bug fixes
- - #e1.7 reads as 17/10, (exact? 1+1.0i) => #f, and 1.0+i prints.
- * Features
- - Things like ((structure-ref scheme if) 1 2 3) work.
- - The following commands now take arbitrary commands to execute
- in the specified package, not just forms:
- ,config ,user ,for-syntax ,in <package>
- For example, you can say
- ,in mumble ,trace foo
- This subsumes the functionality of the ,load-into and ,load-config
- commands.
- - Dynamic loading of shared libraries for System V systems (untested).
- * Documentation
- - Somewhat improved. user-guide.txt now lists most of the interesting
- built-in packages. lsc.ps is a draft of "A Tractable Scheme
- Implementation," a paper submitted to Lisp and Symbolic Computation.
- See also doc/big-scheme.txt, doc/thread.txt, and doc/external.txt.
- * 10/30/93
- - LET-SYNTAX and LETREC-SYNTAX.
- - Arrays (see big/array.scm).
- - Lots of internal changes.
- * 7/20/93
- ** Features
- - Type system. See doc/types.txt.
- * 7/4/93
- ** Features
- - New define-package clause (for-syntax <clause>*).
- E.g. (define-package ((my-package ...))
- (open ...)
- (for-syntax (open scheme my-utilities)
- (files more-crud-for-syntax))
- ...)
- - A file name to package map is now used by the emacs interface.
- Whenever you load a file, or zap from a file that hasn't been
- previously loaded or zapped, the package in which forms are being
- evaluated is remembered in a table. The next time you zap some
- forms from the same file, they will be evaluated in that package.
- Sometimes you may get an association you don't want. In that
- situation, you can use the ,forget command to delete an entry in the
- table.
- - A new ,push command goes to a deeper command level.
- - Experimental "command preferred" command processor mode: if you give
- the command ",form-preferred off", commands will be "preferred" to
- forms, meaning that you don't need to type a comma before giving a
- command. To see the value of a variable FOO you have to say (begin
- foo).
- - Experimental "no levels" command processor mode: if you give the
- command ",levels off", then an error will not push a new command
- level. If you want to ignore an error, you don't need to take any
- action - further evaluations will happen at top level. If you want
- to enter the inspector or get a preview, you can issue these
- commands or a ,push command immediately after the error occurs (more
- precisely, any time until the focus object is set by some other
- command).
- - All of the mode-control commands (batch, bench, break-on-warnings,
- form-preferred, and levels) take an optional argument. When no
- argument is given, they will toggle the corresponding mode. With an
- argument of ON or OFF, they turn the mode on or off.
- - The ,flush and ,keep commands have been made more flexible and
- verbose.
- * 6/18/93
- ** Incompatible changes
- - The access-scheme48 procedure has gone away. Use ,open or the
- module system instead.
- - The user, configuration, and for-syntax packages no longer have
- variables bound to them in the configuration package.
- Where previously you said: Now you should say:
- ,in user <form> ,user <form>
- ,in config <form> ,config <form>
- ,in for-syntax <form> ,for-syntax <form>
- ,load-into config <file> ,load-config <file>
- ,load-into for-syntax <file> ,for-syntax (load "file")
- ** Features
- - There is an ,expand <form> command for debugging macros.
- - The ,open command takes any number of structure names, and opens
- them all (like ,new-package).
- - New procedure DEFINE-INDENTATION exported by the PP structure.
- E.g. (define-indentation 'let-fluid 1) is like Gnu emacs's
- (put 'let-fluid 'scheme-indent-hook 1).
- - The inspector simplifies generated names in continuation source code
- display. E.g. when formerly it said
- "Waiting for (#{Generated lambda} () (x->node (car exps)))"
- now it says
- "Waiting for (lambda () (x->node (car exps)))"
- - Macros can signal syntax errors by returning input expression
- unchanged. (Comparison uses EQ?.)
- ** Documentation
- - The doc/ directory contains a draft of a "Scheme 48 Progress
- Report."
- ** Cleanup
- - Procedure NULL-TERMINATE added to structure EXTERNALS's signature.
- - "Vulgar Scheme" renamed to "Big Scheme".
- - Two new subdirectories, env/ (for programming environment) and big/
- (for Big Scheme), now contain most of what was in the misc/
- directory.
- - Several source files that were in the top level and link/
- directories have moved to the env/ and alt/ directories.
- * 5/6/93
- ** Bug fixes
- - Fixed -h command line switch. The size was being improperly divided
- by 4, so if you asked for an N megabyte heap, you'd actually only
- get an N/4 megabyte heap.
- - Nested backquotes were broken for a while; should be fixed now.
- ** Features
- - Quoted structure is read-only: e.g. (set-car! '(a b) 3) will produce
- an exception.
- - ,config [<form>] and ,user [<form>] are like ,in <struct> <form>.
- - Unix socket support; see misc/socket.scm.
- - Now using gzip instead of compress for distributions.
- - ,open command offers to load packages.
- - A .gdbinit file sets a breakpoint at CM's exception raising code,
- and defines a handy "preview" command.
- * 1/18/93
- ** Features
- - Scheme 48 distributions now have version numbers. The version
- number is printed in the image startup message. Please include it
- in bug reports.
- - The module system is now documented. See doc/module.tex.
- * 12/17/92
- ** Bug fixes
- - Macro templates of the form (x ... y) are supported.
- - Macro templates are now less fussy about meta-variable rank: you can
- do "(x y) ..." even when the rank of either x or y (but not both) is
- too low; the low-ranking text will be copied as many times as
- necessary. (A meta-variable's "rank" is the number of ...'s it sits
- under in the left-hand side of the rewrite rule.)
- - SYNTAX-RULES is now itself hygienic. This means you can have a
- meta-variable named CAR, for instance.
- - New development environment features:
- Commands now start with comma (",") instead of colon
- (":"). (Easier to type since it's not shifted.)
- values, call-with-values, dynamic-wind, eval,
- interaction-environment, and scheme-report-environment
- added per upcoming Revised^5 Scheme report. See
- doc/meeting.tex.
- Modifications to quoted structure will now be detected and
- reported as errors.
- An interrupt will occur if an insufficient amount of memory
- is reclaimed by a garbage collection.
- Inspector now accepts arbitrary command processor commands
- (with or without leading comma)
- ,keep command controls retention of debugging information.
- ** Features removed
- - #\page and #\tab. These aren't in the Scheme report.
- Their absence in Scheme 48 will encourage portability.
- - access-scheme48 works with fewer names than before. Use the package
- system instead.
- - Complex numbers not in the system, by default. Get them back by
- changing usual-features in more-packages.scm.
- ** Features changed
- - Many changes to package system. See doc/module.tex.
- - The :identify-image command is gone. Instead, supply a second
- argument (optional) to the ,dump command.
- - The inspector's TEM command has been shortened to T.
- ** Internal changes and features
- - Stored objects types are now part of the virtual machine
- architecture, i.e. known to the byte-code compiler.
- - Run-time system is split up into many little modules.
- - File names are retained in debug database. (But not used for
- anything yet...)
- - Tweaks to table package reduce standard image size by 50K and
- increase compiler speed by 7%.
- - Immutability bit in object headers.
- - Weak pointers.
- * 7/18/92
- ** Features removed
- - Table package's default hash function no longer supports string,
- pairs, or vectors.
- * 7/9/92
- ** Bug fixes:
- - (- 0 -536870912)
- - Inspector now uses command i/o ports instead of current ones
- - Inexact integers print as N. instead of #iN
- - Throwing back into a call-with-....put-port now produces a warning
- instead of an error
- ** Feature fixes
- - In DEFINE-PACKAGE, OPEN no longer implies ACCESS.
- - misc/receive.scm renamed to rts/values.scm, made to conform with
- Revised^5 Report, and installed internally.
- ** Features
- - New :load-package command. Uses file names in (file ...) clause of
- a define-package. These are interpreted relative to the directory
- in which the file containing the define-package was found.
- - #\tab and #\page now print this way.
- * 6/17/92
- ** Bug fixes:
- - Fixed bug in modulo.
- - Flushed LAST-PAIR (which disappeared between R^3 and R^4).
- - DEFINE-SYNTAX and SYNTAX-RULES now exist.
- - CEILING, FLOOR, and ROUND now exist.
- - GCD and LCM are now n-ary.
- - STRING-CI=? and STRING-COPY fixed.
- - STRING->SYMBOL now copies its argument before handing it to
- INTERN.
- - =, <, etc. now work with more than two arguments.
- - CHAR-READY? exists.
- - Calls via APPLY are now tail-recursive.
- - DISPLAY of vectors and lists works (ugh).
- ** Development environment improvements
- - Type ? at inspector to get list of inspector commands.
- - Inspector D command goes to next continuation.
- - Inspector M command shows more of a long menu.
- - Inspector TEM command goes to a continuation's or closure's
- template.
- - For closures and continuations, inspector displays local variables
- with their names.
- - For continuations, inspector displays source code for expression
- into which control will return.
- - Multiple command loop levels. EOF (control-D) now only pops out a
- single level. :reset pops all the way out. :level n goes out to
- level n.
- - Can disable benchmark mode.
- - Procedures made with (let ((f (lambda ...))) ...) now print with
- names.
- ** Features
- - Package system: special forms define-package and package-ref;
- command processor commands :set-package, :load-into,
- :clear-package, :new-package, :export, :open-package, etc.
- - In misc directory: threads, queues, extended ports, format, etc.
- - Changes to system environment:
- user-initial-environment -> user-package
- record-updator -> record-modifier
- primitive-throw superseded by with-continuation
- ash -> arithmetic-shift
- New bootstrap regime.
- Support for threads: alarm clock interrupt, etc.
- - Liberal COPYRIGHT file, and a little notice in each source file.
- - INSTALL and NEWS split off from README.
- - doc.txt renamed to user-guide.txt.
- - The Makefile now provides two ways to make "s48" for installation.
- One depends on the exec #! script execution feature and the other
- doesn't.
- - "make" targets for testsys.image and little.image.
- - Runs Jaffer's test suite and library.
- - Flushed s48.el. Use cmuscheme instead.
- * 9/5/90
- - Command processor argument parser revamped.
- :load, :trace, and :untrace commands take arbitrary number
- of arguments. Argument to :proceed is optional.
- New (but undocumented) :identify-image command.
- - Better error messages: wrong number of arguments, undefined
- variable.
- - +, *, min, max, apply are now n-ary; -, /, make-string, make-vector,
- read-char, peek-char, write-char have appropriate argument
- optionality.
- - Better internal support for macros; not yet ready for release.
- - Added STRING as per R^3.99RS.
- - More testing of Scheme version of bytecode interpreter.
- - Better scoping of ##; files can't see command processor context.
- - OR and CASE don't cons closures.
- - VM checks for non-existent heap image file, gives error message
- instead of "bus error".
- - Numerous internal changes in compiler and exception system.
- - Fixed char<?.
- - Fixed -.5 bug in string->number.
- * 8/26/90
- - Tested (link-system) inside of T; seems to work.
- - Benchmark mode available via :BENCH command.
- - System is 15K bigger due to new fatter global environment
- representations.
- - Inspector abbreviation improved.
- - Disassembler now works on continuations, sort of.
- * 7/26/90
- - ((lambda ...) ...) no longer makes a closure
- - Features now in default system:
- :inspect
- :dis[assemble]
- Generic arithmetic: bignums, rationals, complexes
- rationalize
- :time command is more verbose
- - MOREFILES variable in Makefile for loading extra stuff
- - Default heap size increased to 2 megabytes per semispace
|