123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107 |
- -*- Mode: Indented-text; -*-
- Recent changes to Scheme 48.
- 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.
- Notable 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)
- Fixed bug in closed-compiled version of READ-CHAR.
- Fixed negative-key bug in integer tables.
- 11/18/97 (version 0.49)
- 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.
- 1/23/94 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)
- Change:
- 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.
- 12/21/93 ,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 fix:
- 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.
- 12/6/93 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 Feature:
- 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.
- 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
|