You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
br-parser-tools/notes/mzscheme/HISTORY

454 lines
20 KiB
Plaintext

Version 51, ??, 1997
Changed load/use-compiled: searches for .zo files in
a "compiled/" subdirectory, and searches for .so/.dll
files in (build-path "compiled" (system-library-subpath))
Changed load and current-load/default-load-handler: `load'
now sets the current-load-relative-directory, so a load
handler does not need to set this parameter
Added current-load-extension (load-extension handler)
Added read-image-from-file procedure
Unix images: removed constraint against using stdio before
dumps
Unix: fixed file-or-directory-permissions for group-based
permissions when the group is not the current group (but
still includes the user)
Windows: fixed directory-exists? et. al for UNC paths
Added local-expand-body-expression
Added link-exists?
Added copy-file
Added path-list-string->path-list
Added collection-path
Changed initial setting of current-library-collection-paths
Changed display for symbols containg special characters:
the special characters are not escaped (or bar-quoted)
Changed write to use the value of (read-accept-bar-quote)
for printing symbols containing special charaters; if
bar qute reading is off, it is turned off for printing, too.
Fixed unit/sig: correctly handles syntax where defintions in
the unit shadow syntactic forms
Fixed round of exact rational n/d in the case when (odd? d)
and (= (remainder n d) (quotient d 2))
Extended exp, sin, cos, tan, log, asin, acons, atan to
complex numbers; changed sqrt to choose the root with a
positive real part
Removed rectangular <, >, <=, >= for complex numbers
Changed storage of loaded-library table from built into the
`require-library' procedure to built into the current
namespace
Added require-relative-library
Fixed error messages for +, -, etc. to show all arguments
Changed MzLib's pconver.ss libraries; the print-convert-hook@
unit was removed (along with the pchookr.ss library) and
replaced with parameters defined in pconverr.ss for similar
(more powerful) hooks.
Fixed interfaces for compiled-file (.zo) loading across
MzScheme startups
Unused interned symbols are now garbage-collected
Added support for single-precision floating points (turned
off in default compilation)
Changed read-eval-print-loop, removing its cooperation with
the default error escape handler; instead, it installs its
own error escape handler
Improved the support for dynamic extensions that gives an
error if an extension is already loaded, or calls a
reloading function provided by the extension
Version 50, August 26, 1997
Added compile-time inferrence of names for closures, classes,
and units to improve error messages
Added inferred-name
Added file-size
Added write-image-to-file for creating heap images of a
MzScheme program
Fixed reader to disallow . in vectors: #(1 . 2) or #(1 . (3))
Removed global-defined-signature
Fixed string->number: explicit radix in string can override
radix argument
Bug fixed in call/cc related to dynamic-wind (see !!! in
tests/basic.ss)
Fixed weak hash table's accumulation of hashing buckets
Added 'empty flag for make-namespace
Added two-argument form for global-defined-value
Added system-library-subpath
Changed standalone mzscheme to return -1 if a loaded file
or evaluated expression returns an error without the rep
Refined error messages
Version 49, May 31, 1997
Multiple superclass inheritance is no longer supported
Added (Java-ish) interfaces to object system
class* syntax changed to accomodate interfaces and removed
multiple superclasses
uq-ivar always takes two arguments; class is not a legal argument
uq-make-generic accepts a class or an interface
Object system exceptions changed
Added custodian system
Embedded define conventions changed: "regular" defines are only
allowed in begin expressions and the branches of an if;
embedded defines can appear in a begin0 expression, but not
in the first position; defines must all appear at the beginning
of the block
Contents of a begin expression as an immediate unit or unit/sig
expression are promoted to immediate expressions
case supports only R4RS syntax; a single non-list "datum" is
no longer allowed
Removed catch; use let/ec instead
Removed vector-append
Removed load-with-cd (use load/cd)
Added load/use-compiled
Added current-load-directory parameter (set by the default load
handler while loading a file) and load-relative (uses the
parameter for loading a relative filename)
unit/sig's include form is like load-relative instead of load/cd
require-library uses load or load/use-compiled instead of load/cd
Windows: expand-path does not put a drive on a driveless path
anymore; use path->complete-path instead
compile-file moved out of MzScheme into MzLib "compile.ss"; now
takes a single flag list argument instead of two final Booleans
current-base-parameterization parameter replaced with
parameterization-branch-handler parameter
Parameterizations support sharing (in addition to defaulting);
see docs for make-parameterization-with-sharing
Added print, port print handlers, and a global port print handler
Changed the default print handler to use print instead of write
Fixed bug in ports returned by make-pipe
Fixed bug in dynamic-wind; continuation jumps into the pre-thunk
had a non-intuitive semantics; the correct semantics is now
implemented and documented (also for jumps with the post-thunk)
Changed time-apply to always return a list as its first return
value; time form can return multiple values for its expressions
format, fprintf, and printf are case-insensitive for ~ directives;
added ~v, ~e, ~<whitespace>
Added semaphore-wait/enable-break
Added thread-running? and thread-wait
Fixed bug in threads and timed sleeping
Fixed bug in breaking a blocked thread
Fixed bug in continuations returning multiple values through a
dynamic-wind (multiple return values could be corrupted)
Fixed arity reporting for continuations
Fixed Windows system* and read from console stdin and process*
ports: MzScheme threads no longer blocked; ctl-c breaking works
in stand-alone console MzScheme
process and process* now return a list of 5 values (instead of 4)
map, for-each, andmap, and ormap raise exn:application:map-arity
when the procedure's arity does not match the number of supplied
lists; note that (map (lambda () 10) null) now signals an error
list-ref and list-tail accept arbitrarily large indices
Type for indices changed: must be an exact integer (matches R4RS better)
affects make-vector, vector-ref, vector-set!, make-string, string-ref,
string-set!, substring, and struct-ref
make-namespace's '[no-]set!-undefined and '[no-]auto-else flags
removed; replaced with two new parameters:
compile-allow-set!-undefined and compile-allow-cond-fallthrough
Fixed in units: (define x y) (define y 0) x => #<undefined> instead of
#<void>
exn:struct's super-type field renamed struct-type for consistency
exn:i/o:filesystem:filename split into exn:i/o:filesystem:path
and exn:i/o:filesystem:file; username exception moved under path
Unix: system no longer blocks other MzScheme threads
Unix: processes created by process and process* are not zombies forever,
anymore. (The SIGCHLD signal is handled appropriately.)
MacOS: dynamic extension suopport via CFM (PPC only in the distributed
applications from PLT)
Windows: removed attempted fix for thread-blocking problem
when reading stdin from console
Fixed auto-flush of stdout for read of stdin
Fixed <, >, <=, >= for certain exact rational number comparisons
Fixed inexact->exact for negative inexact numbers (fractional part
was added to the resulting number with the wrong sign)
Fixed rational? to answer #t for inexact numbers
Fixed odd?, even?, and trig functions for +inf.0 and -inf.0
Fixed handling of +nan.0 by many math routines; fixed +nan.0 for
everything under Windows
Added R4RS rationalize
compound-unit/sig export var clause syntax now matches documentation
Added require-library-use-zo
Moved cons? and last-pair into functio.ss instead of compat.ss
Library system generalized to supoprt multiple collections;
current-library-path replaced with current-library-collection-path
require-library now returns the result of the loaded library
Removed load-recent from MzLib's file.ss; use load/use-compiled
instead
Added reference-library, "refer.ss" [core], "XXXr.ss" MzLib libraries
Added build-string, build-vector, build-list, loop-until to MzLib's
functio.ss
Added thread.ss MzLib library [core]
Added inflate.ss MzLib library
Moved synrule.ss out of core
Fixed MzLib's stringu.ss to not use macro.ss
Updated MzLib's spidey.ss, added it to core
Removed define-some, define-virtual-struct, define-struct-tree from
MzLib's macro.ss
begin-expansion-time returns the value of the last expression
set-thread-weight! replaced with 2-argument thread-weight
Inside MzScheme: changed class/object toolbox, added custodian
toolbox
Upgraded to gc 11
Version 48: Skipped to avoid confusion with Scheme48
Version 47, January 11, 1997
WARNING: multiple inhertance is going away in the next version or so
Added will executors
pretty-print-print-hook and pretty-print-size-hook now take
three arguments: value display? port
file-position can return the current position for any port
Fixed errors reading floating-point constants due to system
library bugs:
Linux: strtod("0e...", ...) quits looking after "0"
SunOS/Solaris: strtod(".3e2666666666") returned 0.0
HP/UX: strtod(".3e2666666666") fails
Windows: fixed thread-blocking problem for reading stdin from console
Insize MzScheme: when working with "fd_set" values, use
MZ_FD_ZERO, MZ_FD_SET, MZ_FD_CLR, MZ_FD_ISSET; use
scheme_get_fdset() to get the second or third fd_set in an array;
routines for thread-blocking are now documented in "Inside MzScheme"
Version 46, December 5, 1996
unit/sig macros moved out of MzLib and into core MzScheme;
(require-library "unitsig.ss") is obsolete, but still supported
as a no-op
Unit signature matching is now position-independent, and the error
messages are better
Removed obsolete install-unit-with-signature
(begin) or (begin0) is now a syntax error
Changed class* syntax so that an explicit name for `this' is provided
MzLib's class-asi* changed to class*-asi, while adding new `this' id
Prettier(?) printing for prims like >: #<|primitive:>|>
invoke-open-unit w/o path/prefix is now the same as #f instead of ();
the path form will probably be phased out in a future release
quasiquote syntax changed slightly
stdout/stderr are not auto-flushed for read-char or peek-char on stdin
(still flushed by read and read-line)
Added port-display-handler and port-write-handler
Version 45, November 12, 1996
Multiple return values are agressively supported
IMPORTANT: let-values is now analogous to let; the old
let-values is now let*-values
let-values, letrec-values, define-values, and begin0 are primitive
define-struct and let-struct expand to new struct form
Added thread-savy parameterization system; namespace system changed
pipe changed to make-pipe, returns 2 values
Case-sensitivity for the reader is a settable parameter
Reading [] and {} as parens is a settable parameter
class* syntax extended to allow local renaming of public ivars
delay/force support multiple values
else and => in cond and else are now "scoped"
normalize-path from MzLib signals an error for bad paths
Windows: build-path can join a drive to a (driveless) absolute path
and //machine/disk drive names are supported; also fixed
file-system-root-list
Added complete-path? and current-drive (for Windows)
Fixed (begin (values ...) ...) and (begin0 (values ...) ...)
Fixed comparisons between inexact and exact when the
exact to inexact conversion results in overflow or underflow,
and fixed (exact->inexact (/ X Y)) and (/ +inf.0 X), etc. when
X & Y are larger than the largest floating-point, fixed modulo,
remainder, quotient for infinities
Fixed TCP problems (Unix, Windows) and implemented for MacOS
Fixed dynamic-loading to always search from current directory
Fixed real process idling for a timed sleep
Fixed file read/write exceptions (write exceptions now raised)
Fixed quasiquote bug with ,@ and unquoting depth
Fixed filesystem-root-list for Windows
Fixed dynamic-wind when a continuation is invoked from the post-thunk
Fixed continuations for re-entry of a continuation that is mulitply-invoked
Fixed string->number with leading spaces; e.g., (string->number " 1")
invoke-unit import variable restriction removed (locals are allowed)
(case-lambda) is now legal
\ escapes & and \ in regexp-replace replacement string
Added regexp-replace*
Added port-read-handler
Inside MzScheme: Changed use of scheme_sleep
Inside MzScheme: Changed primitive unit init func arguments
Inside MzScheme: Changed primitive accessing of unit boxes and environment boxes
Inside MzScheme: Revoked syntax extensibility
Reimplemented the core interpreter (chained closures -> flattened)
Version 44, September 9, 1996
load, load/cd return value of last loaded expression
scheme_load returns Scheme_Object* or NULL
Built-in TCP support (Not MacOS, yet)
unit clauses macro-expanded before checking `define' keywords
Better dynamic extension handling and compilation support
Fixed read blocking threads in FreeBSD
Extensions' scheme_initialize must return Scheme_Object*
scheme_sleep has internal default for basic sleeping, installed by
scheme_basic_env if scheme_sleep is still NULL
Unix/Winsock: fds arg for needs_wakeup and scheme_sleep expanded
for writes and exceptions
Fixed quotient for inexact numbers
Fixed bug comparing a bignum rational with a fixnum rational
Fixed startup crash when PATH env variable is slightly bad
Sped up thread switching for Mac
Sped up thread switching for most Unix for a small number of threads
Upgraded to gc 11alpha3
Version 43 re-released August 12, 1996 with libguile
Version 43, August 9, 1996
"functor" -> "unit"
signed units added to and used by mzlib (sigfunctors gone)
Made .zo files smaller and faster to load
Use 64-bit fixnums for Alpha
system, system*, process*, and execute* supported for Windows
Fixed memory bug in printing hexadecimal
Fix bug in modulo
Better floating-point control for infinity, nan results
on many platforms
Version 42: June 8, 1996
Functor system added
Fixed (cond (1)), etc.
Fixed type-checking for numerical comparisons; e.g., (< 2 1 'a)
Fixed dynamic-wind and call/ec for values
Fixed read for strings containing #\nul
Non-matching cond/case raises an error
Made string=?, char=?, etc. multi-arity like numerical =, etc.
Changed definition of time-apply (returns values, now)
MzScheme threads can almost be real OS threads under Solaris, but more work
is needed to guarantee safety for the symbol table and globals. More thread
systems to follow.
spawn-eval replaced by make-eval
thread-input-port, thread-output-port, and thread-error-port removed
binary-and, etc. replaced with 2's complement bitwise-and, etc.
Fixed writing compiled quoted graph expressions
Fixed return value of system
test.scm expanded and broken into multiple files: (load/cd "tests/all.ss")
Version 0.41: April 15, 1996
Revised class syntax; see the manual
Exception system added; primitive errors raise exceptions
defmacro replaced by define-macro
Added define-id-macro
Fixed let-macro shadowing local vars
Improved error messages; error-print-width
Fixed stack checking for Win32
'. no longer allowed
unquote and unquote-splicing now defined at top level
equal? supports boxes
Version 0.40: March 24, 1996
structure:X => struct:x
mzlib path uses MZLIB or PLTHOME environment variables
Version 0.39: March 6, 1996
Fixed expand-defmacro for (lambda () (and)) et al.
Fixed sqrt on complex numbers; coefficients were reversed
Cleaned up read and display/write to handle C stack overflow
Arity checking bug fixed for arity 0
Pretty-print is parameterized by depth
Version 0.38: February 22, 1996
Fixed bug in compiling frame-sharing; e.g.,
(let ([d 0]) ((car (cons (let ([a 4]) (lambda () a))
(let ([b 7]) b)))))
returned 7 instead of 4
Fixed bug in closing port by call-with-input-file
Fixed magnitude on negative reals
Fixed angle on negative reals
Fixed cos, sin, etc. on rationals
Fixed min and max on rationals with non-rationals
Fixed (random 0)
Fixed equal? on really long lists
Fixed list procedures with arbitrary duration: checking for break
Fixed char-X? and characters past ASCII 127
Fixed hash table bug that causes infinite internal loop
Fixed bug in reading #| |# comments at the end of a list
Filesystem utilities added
"processes" are now called "threads"; procedure names changed accordingly
eval can return multiple values; r-e-p-l handles correctly
Some changes to compilation interface:
must set new flag is_proc_closure in compile_info rec
scheme_static_distance changed; use flags
scheme_sleep() must now take a float
current-prompt-read added
Console version reads ~/.mzschemerc init file (or mzscheme.rc)
NO_STAT compilation flag -> NO_STAT_PROC
Version 0.37: unreleased
Version 0.36: January 18, 1996
Fixed bug in bignum multiplication
Version 0.35: January 17, 1996
current-print added
x@y notation supported
~ expanded in pathnames (Unix)
Fixed bug parsing #T, etc.
Fixed bug parsing hex numbers and others
Fixed fp-initialization bug for Win32
Better printing for special symbols
Version 0.34: December 30, 1995
Various bignum operations sped up
Chez-style symbol parsing supported (escaping \ and quoting |)
Version 0.33: December 21, 1995
rationals and complex numbers supported
make-class and make-class* syntax changed (one set of parens
added). The old syntax is still supported for now, but you
should convert. The old syntax will eventualy go away (and
Zodiac will never be compatible with it).
class variables and cvar no longer allowed
ivar always takes an object; if class included, must be first
threads/processes changed w.r.t. environment used during execution
error handler split into erro displayer and error escaper
stack limitation of expander/compiler removed
expand => expand-defmacro
expand-once => expand-defmacro-once
user-break-poll => user-break-poll-handler
enable-break => break-enabled
#% now legal for starting non-keyword symbols
full floating-point input format supported
Version 0.32: December 4, 1995
Added weak boxes
+inf.0, -inf.0, -nan.0, +nan.0 constants added
Better checking when using floats as indices (vector-ref, etc.)
Better (correct!) hashing procedure
Fixed threads in Win32s/WinNT by creating a new stack
Fixed bug in spawning new (MzScheme) processes
Fixed incorrect process progress (~deadlock) analysis
Fixed bug in resizing hash table
Fixed bug in read (reading "+", "-", or "." at EOF)
Fixed bug in read-number (fractions and forcing; e.g. "../")
Fixed bug in open-output-string (> 100 chars gave empty result)
Fixed regexp-replace (memory bug)
Version 0.31: November 14, 1995
Bignum bigs: subtracting from 0, comparing negative
(current-eval) initially returned the wrong procedure
tan procedure added
putenv
S-expression graph reading and printing
Version 0.30: October 25, 1995
Added call-with-values and regexp
Unix stack-checking setup code fixed
Version 0.29: October 18, 1995
Added `arity' procedure
Bug fix related to forms such as (let ([x (let ...)]) ...)
Verion 0.28: October 3, 1995
Fixed general stack overflow-checking for Unix
Verion 0.27: September 26, 1995
Moved compilation flags from the Makefile into "sconfig.h"
More general stack overflow-checking (when needed)
Computations can overflow the stack and continue
Changed command line flags; added -r (or --script) flag
Added multiple inheritance and `rename', `share', and `local' declarations
Merged Patrick Barta's Windows DLL implementation for `load-extention'
Re-implemented `quasiquote', `and', and `or' as a macros
Re-implemented let-forms to make small `let's efficient
`let*' expands to `let'
Made core syntactic form names keywords
Added #% keywords
Added `hash-table-map' and `hash-table-for-each'
Fixed bignum bugs: `eqv?'/`equal?' and `modulo'
Fixed inexact bugs: `floor', `ceiling', and `round'
Created this "HISTORY" file