~ chicken-core (chicken-5) 5e410dbd51f0e1a5ef2b5da919eddfa97705a88b
commit 5e410dbd51f0e1a5ef2b5da919eddfa97705a88b
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Jun 8 13:21:06 2012 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Fri Jun 8 13:21:06 2012 +0200
consolidated NEWS file for 4.8.0
diff --git a/NEWS b/NEWS
index 368e388e..7ec64315 100644
--- a/NEWS
+++ b/NEWS
@@ -1,15 +1,75 @@
-4.7.5
+4.8.0
- Security fixes
+ - improved hash table collision resistance and added randomization
+ to prevent malicious external causes of collisions. All SRFI-69
+ procedures accept extra arguments to control randomization for
+ testing/debugging.
- on 64-bit machines the "random" procedure no longer truncates result
values (which caused very nonrandom results for very large values).
- Note that tandom shouldn't be used for security-critical code.
+ Note that random shouldn't be used for security-critical code.
- Build system
+ - version information has been moved into a separate unit to make the
+ build-version shown in the banner and accessible through library
+ procedures more accurate, this also speeds up the build on version-
+ changes (thanks to Jim Ursetto for contributing this)
- the build was made more reliable with respect to cross-compilation
and custom installation names
+ - the test-suite is now working on the mingw32 platform (with
+ a few tests disabled due to missing functionality)
+ - the version and branch of the sources are now properly compiled
+ into the core libraries and shown in the "csi" and "chicken"
+ version headers
+ - The default target library name for an installation configured for cross-
+ compilation is now "libchicken" and independent on any particular
+ setting of PROGRAM_PREFIX/PROGRAM_SUFFIX (thanks to Otavio Salvador)
- Compiler
+ - Fixed bug in handling of symbols in constant-definitions (thanks to Peter
+ Bex)
+ - Stricter check for value-part of constant definition (thanks to Kon Lovett)
+ - Fixed bug that caused argument-signatures of external definitions to be
+ incorrectly modified during optimization (thanks to Peter Bex)
+ - Failing constant-folding expressions now produce a compile-time warning
+ - Fixed various bugs in the internal type-database (thanks to Kon Lovett and
+ Peter Bex)
+ - Fixed incorrect optimization rules for some fp-rounding and fixnum operators
+ - added "-specialize" option and "specialize" declaration which enables
+ optimizations of uses of core library procedures based on type-
+ information gathered during flow analysis
+ - "-optimize-level 3" and higher now implies "-specialize"
+ - added option "-strict-types" and "-emit-type-file"
+ - progress-information is now only shown with "-debug p"; the "-verbose"
+ option only shows informational but noncritical messages
+ - added optimizations for some library procedures
+ - variable propagation for global variable accesses is now done in certain
+ situations
+ - the algorithmic complexity of the closure-conversion pass has been
+ reduced which speeds up compilation noticably for large files
+ - the "-uses" option handles whitespace in unit lists given on the
+ command line (thanks to Santosh Rajan)
+ - the alternative branch in a conditional is dropped when the condition
+ is known to be a non-boolean value (suggested by Joerg Wittenberger)
+ - implemented numerous fixes and improvements for flow analysis
+ - fixed a bug in the compiler that could cause some variable bindings
+ to be optimized away in certain situations involving inlining
+ - added an experimental optimization called "clustering" (enable
+ with the compiler option of the same name)
+ - the optimizations done by the compiler are now listed as a comment
+ in the generated C file
+ - the type-information obtained during flow-analysis ("scrutiny") is
+ now used for performing type-sensitive optimizations of calls to
+ most of the core-library procedures
+ - deprecated the "constant" declaration specifier
+ - "unboxing" optimization has been completely removed - the implementation
+ was unreliable and unmaintainable; the "-unboxing" compiler option will
+ still be accepted but will produce a warning
+ - Peter Bex contributed an optimization to the analysis pass that
+ greatly reduces compile time for source code containing deeply nested
+ lexical bindings
+ - procedures that are known to have the value of a core library procedure
+ that is a "standard" or "extended binding" will be inlined
- enhanced line number tracking to get better error messages from
the scrutinizer.
- hygiene bugs related to compiler-syntax were fixed.
@@ -19,54 +79,44 @@
were reduced resulting in much better compile-times especially
for large source files.
-- Core tools
- - csc: "-O5" does not pass expensive optimization flags to the C
- compiler anymore
- - chicken-install: installing subdirectories works now on Windows
-
-- Core syntax
- - "assert" shows the line number of the form when a second argument
- is not given or is a literal string
-
-- Runtime system
- - the maximum length of strings is no longer limited to a 24-bit
- number on 64-bit architectures but can be 56 bits.
- - string-comparison handles embedded '\0' characters.
- - numerical predicates handle infinity and NaN correctly.
-
-4.7.4
-
-- Security fixes
- - improved hash table collision resistance and added randomization
- to prevent malicious external causes of collisions. All SRFI-69
- procedures accept extra arguments to control randomization for
- testing/debugging.
-
-
-- Build system
- - the test-suite is now working on the mingw32 platform (with
- a few tests disabled due to missing functionality)
- - the version and branch of the sources are now properly compiled
- into the core libraries and shown in the "csi" and "chicken"
- version headers
-
-- Runtime system
- - deprecated "[+-]nan", "[+-]inf" and other notations "accidentally"
- accepted by Chicken due to the underlying C library's strtod() function,
- standardizing on "[+-]nan.0" and "[+-]inf.0" from R6RS (and soon R7RS),
- when displaying numbers only these forms are generated now.
- - signals are queued to some extent and the interrupt handling has
- been cleaned up somewhat
- - the interpreter handles SIGINT directly - loading the "posix" unit
- is not needed anymore to handle this feature
- - changed default nursery size slightly and fixed a bug that caused
- incorrect (too small) nursery sizes on 64-bit platforms
- - deprecated the compiler option "-heap-initial-size", "-heap-growth"
- and "-heap-shrinkage"
- - the assembly-language stub routine for the implementation of "apply"
- was broken for Sparc64 systems - has been disabled for this platform
+- Interpreter
+ - ",q" leaves the currently active REPL invocation instead of
+ terminating the process (as suggested by John Cowan)
+ - ",m" properly switches between modules (thanks to Christian Kellermann)
- Core libraries
+ - Cleaned up the set of available internal SRFI-feature-identifiers
+ - Fixed bugs in "make-pathname" and "normalize-pathname" (thanks to Jim Ursetto)
+ - The reader is now more consistent when parsing symbol- and keyword names
+ that are fully or partially escaped (thanks to Kon Lovett)
+ - The printer now does a better job at escaping certain single-character
+ symbol names
+ - Unit "lolevel"
+ - deprecated "null-pointer" and "null-pointer?"
+ - Fixed a bug in the Windows implementation of "file-type" (thanks to
+ Jim Ursetto)
+ - Fixed a bug in the implementation of "current-milliseconds" that could
+ result in integer-overflow
+ - Fixed an incorrect type-check in "list-ref" (thanks to Sven Hartrumpf)
+ - Disabled "-setup-mode" when compiling extensions for deployment (thanks
+ to Ivan Raikov)
+ - Got rid of some warnings in the C runtime system that were triggered on
+ the SunPro C compiler (thanks to Joe Python)
+ - Fixed bug in "string->number" that caused out-of-range characters to
+ be accepted for base > 10 (thanks to Jim Ursetto)
+ - added "foldl" and "foldr" procedures, which are more efficient and
+ have a more consistent argument order than the corresponding
+ SRFI-1 procedures
+ - "shuffle" has been deprecated
+ - added "queue-length"
+ - "queue->list" allocates and returns a fresh list now
+ - invoking a parameter-procedure with an argument will return the new
+ value
+ - added new procedure "quit"
+ - port-procedures now check correctly for argument-ports being open
+ (thanks to Peter Bex)
+ - "repl" accepts an optional evaluator procedure (suggested by John
+ Cowan)
- added a setter procedure to "signal-handler" ("posix" unit)
- EINTR is properly handled for input routines that may block
waiting for input
@@ -86,13 +136,11 @@
regex does not match
- added "change-directory*" ("posix" unit)
- number parsing has been made more reliable and standards compliant
- - deprecated "none?", "always?" and "never?" ("data-structures" unit)
- - "parameterize" does not invoke guard procedure when restoring a
- parameter's value after execution of the body
+ - deprecated "none?", "always?" and "never?"
- library procedures that take ports as arguments now all perform checks
- on direction and open/closed state
+ on port-direction and open/closed state
- "mutate-procedure" has been renamed to "mutate-procedure!" - the old
- name is still available but deprecated ("lolevel" unit)
+ name is still available but deprecated
- deprecated C_hash_string and C_hash_string_ci functions in the C API in
favor of the more secure versions C_u_i_string_hash, C_u_i_string_ci_hash
- a number of bugs in the irregex regular expression engine have been
@@ -101,230 +149,127 @@
"with-output-to-pipe" now properly restore the standard input/output
ports in case the body thunk escapes
- symbols with a single-char print-name where not always properly escaped
- whrn printed readably
-
-- Compiler
- - fixed a bug in the compiler that could cause some variable bindings
- to be optimized away in certain situations involving inlining
- - added an experimental optimization called "clustering" (enable
- with the compiler option of the same name)
- - the optimizations done by the compiler are now listed inside a comment
- in the generated C file
- - the type-information obtained during flow-analysis ("scrutiny") is
- now used for performing type-sensitive optimizations of calls to
- most of the core-library procedures
- - various improvements in the flow-analysis pass have been done and
- countless bugs fixed
- - deprecated the "constant" declaration specifier
- - "unboxing" optimization has been completely removed - the implementation
- was unreliable and unmaintainable; the "-unboxing" compiler option will
- still be accepted but will produce a warning
- - Peter Bex contributed an optimization to the analysis pass that
- greatly reduces compile time for source code containing deeply nested
- lexical bindings
- - procedures that are known to have the value of a core library procedure
- that is a "standard" or "extended binding" will be inlined
-
-- Type system
- - added new type-specifiers "input-port", "output-port", "(list-of T)"
- and "(vector-of T)"
- - the type-specifiers "(vector T ...)" and "(list T ...)" represent
- fixed size lists and vectors now
- - added qualified types ("forall"), optionally with type constrains
- - added the "define-type" special form and type-abbreviations
- - "-verbose" now shows scrutinizer-warnings and compiler notices
- that are possibly non-critical (otherwise they are not listed)
- - added "compiler-typecase", a compile-time typematching form
-
-- Module system
- - the "scheme" module has been integrated into the core library and
- is not installed as a separate import library anymore
- - added core module "r4rs" containing only bindings for R4RS identifiers
- - added core module alias "r5rs" for "scheme" module
- - added "module-environment" which returns an evaluation environment
- for the bindings of a module
+ when printed readably
+ - the "make" facility of the "setup-api" module has been deprecated,
+ please use the "make" extension when your egg requires this during
+ setup.
- Core tools
+ - "csc"
+ - The environment-variables "CHICKEN_C_INCLUDE_PATH" and
+ "CHICKEN_C_LIBRARY_PATH" can now be used to add default include-
+ and link-directories to C-compiler invocations
+ - "-O5" passed expensive optimization flags to the C compiler which
+ could expose C-Compiler bugs, depending on the compiler version
+ (thanks to Sven Hartrumpf for pointing this out).
- "chicken-install"
+ - Added option "-override", which allows retrieving extension-
+ versions from a file - this may be useful to ensure specific
+ versions of a complete set of eggs are installed
+ - Added option "-keep-installed"/"-x" that only installs explicitly
+ named extensions given on the command line, if they are not
+ already installed
+ - Added option "-list" that lists all extensions available
+ - Added option "-csi" to specify what interpreter should be used
+ to execute the setup-script of an installed extension
+ - Added option "-scan" that scans a local directory for the highest
+ available extension versions available
+ - Added option "-reinstall" that reinstalls all currently installed
+ eggs, keeping their versions, if possible
+ - Fixed bug with "chicken-install -test" when multiple extensions where
+ given on the command line (thanks to Kon Lovett)
+ - installing subdirectories works now on Windows.
- fixed handling of "-force" when a "chicken" dependency version did
not match
- added new option "-show-foreign-depends" which lists foreign egg
dependencies (if available)
- added new option "-show-depends" which lists egg dependencies
-
-- Foreign function interface
- - locatives are allowed as arguments declared "c-pointer"
-
-
-4.7.3
-
-- Build system
- - version information has been moved into a separate unit to make the
- build-version shown in the banner and accessible through library
- procedures more accurate, this also speeds up the build on version-
- changes (thanks to Jim Ursetto for contributing this)
-
-- Runtime system
- - fixed handling of "inf" and nan" floating-point predicates for Solaris
- (thanks to Claude Marinier)
- - support for re-loading of compiled files has now been completely
- removed
-
-- Core libraries
- - added "foldl" and "foldr" procedures, which are more efficient and
- more have a more consistent argument order than the corresponding
- SRFI-1 procedures
- - "shuffle" has been deprecated
- - added "queue-length"
- - "queue->list" allocates and returns a fresh list now
- - invoking a parameter-procedure with an argument will return the new
- value
- - added new procedure "quit"
- - port-procedures now check correctly for argument-ports being open
- (thanks to Peter Bex)
- - irregex bugfixes (by Peter Bex)
- - "repl" accepts an optional evaluator procedure (suggested by John
- Cowan)
+ - added support for "or"-dependencies where a dependency is considered
+ installed if one of a set of candidates is available
+ - "chicken-profile"
+ - fixed some bugs in the profiler and the runtime support code for
+ profiling (thanks to Sven Hartrumpf)
+ - fixed broken percentage calculation (thanks to "megane")
+ - "chicken-status"
+ - Added option "-list" that dumps versions of installed extensions
+ in a format suitable for "chicken-install -override ..."
+ - the "pattern" argument is now actually treated as a pattern and not
+ as a regex
- Core syntax
+ - "assert" shows the line number of the form when a second argument
+ is not given or is a literal string
- "parameterize" now correctly omits invoking the guard procedure when
the old value is restored (thanks to Joo ChurlSoo)
- - "optional", "let-optionals" and "let-optionals*" do not anymore check
- for surplus arguments
- added ":", "the" and "assume" syntax for declaring types
- added "define-specialization" form to declare type-driven procedure
call rewrites in compiled code
-- Compiler
- - added "-specialize" option and "specialize" declaration which enables
- optimizations of uses of core library procedures based on type-
- information gathered during flow analysis
- - "-optimize-level 3" and higher now implies "-specialize"
- - added option "-strict-types" and "-emit-type-file"
- - progress-information is now only shown with "-debug p"; the "-verbose"
- option only shows informational but noncritical messages
- - fixed several bugs in the unboxing pass
- - added optimizations for some library procedures
- - variable propagation for global variable accesses is done in certain
- situations now
- - the algorithmic complexity of the closure-conversion pass has been
- reduced which speeds up compilation noticably for large files
- - the "-uses" option handles whitespace in unit lists given on the
- command line (thanks to Santosh Rajan)
- - the alternative branch in a conditional is dropped when the condition
- is known to be a non-boolean value (suggested by Joerg Wittenberger)
- - implemented numerous fixes and improvements for flow analysis
-
-- Interpreter
- - ",q" now leaves the currently active REPL invocation instead of
- terminating the process (as suggested by John Cowan)
-
- Syntax expander
+ - Fixed a bug that caused imported identifiers to leak into the
+ macroexpansion/compile-time environment (reported by Christian Kellermann)
+ - Fixed a bug in the processing of extended lambda-lists (thanks to Peter Bex)
+ - Peter Bex fixed a bug that caused bound variables to be incorrectly
+ renamed in quoted literals (thanks to Matthew Flatt)
- fixed devious bug in the invocation and generation of transformer
procedures
- using normal "lambda" forms as transformers for local or global
syntax definitions is deprecated - one should use "syntax-rules",
"er-macro-transformer" or "ir-macro-transformer" from now on
-- Core tools
- - "chicken-profile"
- - fixed some bugs in the profiler and the runtime support code for
- profiling (thanks to Sven Hartrumpf)
- - fixed broken percentage calculation (thanks to "megane")
- - "chicken-status"
- - the "pattern" argument is now actually treated as a pattern and not
- as a regex
- - "chicken-install"
- - added support for "or"-dependencies where a dependency is considered
- installed if one of a set of candidates is available
-
-
-4.7.2
-
-- Core tools
- - "chicken-install"
- - Added option "-override", which allows storing extension-
- versions in a file - this may be useful to ensure specific
- versions of a complete set of eggs to be installed
- - Added option "-keep-installed"/"-x" that only installs explicitly
- named extensions given on the command line, if they are not
- already installed
- - Added option "-list" that lists extensions available remotely
- - Added option "-csi" to specify what interpreter should be used
- to execute the setup-script of an installed extension
- - Added option "-scan" that scans a local directory for the highest
- available extension versions available
- - Added option "-reinstall" that reinstalls all currently installed
- eggs, keeping their versions, if possible
- - Fixed bug with "chicken-install -test" when multiple extensions where
- given on the command line (thanks to Kon Lovett)
- - "chicken-status"
- - Added option "-list" that dumps versions of installed extensions
- in a format suitable for "chicken-install -override ..."
- - "csc"
- - The environment-variables "CHICKEN_C_INCLUDE_PATH" and
- "CHICKEN_C_LIBRARY_PATH" can now be used to add default include-
- and link-directories to C-compiler invocations
- - "csi"
- - ",m" now properly switches between modules (thanks to Christian Kellermann)
+- Runtime system
+ - fixed handling of "inf" and nan" floating-point predicates for Solaris
+ (thanks to Claude Marinier)
+ - support for re-loading of compiled files has now been completely
+ removed
+ - the maximum length of strings is no longer limited to a 24-bit
+ number on 64-bit architectures but can be 56 bits.
+ - string-comparison handles embedded '\0' characters.
+ - numerical predicates handle infinity and NaN correctly.
+ - deprecated "[+-]nan", "[+-]inf" and other notations "accidentally"
+ accepted by Chicken due to the underlying C library's strtod() function,
+ standardizing on "[+-]nan.0" and "[+-]inf.0" from R6RS (and soon R7RS),
+ when displaying numbers only these forms are generated now.
+ - signals are queued to some extent and the interrupt handling has
+ been cleaned up somewhat
+ - the interpreter handles SIGINT directly - loading the "posix" unit
+ is not needed anymore to handle this feature
+ - changed default nursery size slightly and fixed a bug that caused
+ incorrect (too small) nursery sizes on 64-bit platforms
+ - deprecated the compiler option "-heap-initial-size", "-heap-growth"
+ and "-heap-shrinkage"
+ - the assembly-language stub routine for the implementation of "apply"
+ was broken for Sparc64 systems and has been disabled for this platform
+
+- Type system
+ - added new type-specifiers "input-port", "output-port", "(list-of T)"
+ and "(vector-of T)"
+ - the type-specifiers "(vector T ...)" and "(list T ...)" represent
+ fixed size lists and vectors now
+ - added qualified types ("forall"), optionally with type constrains
+ - added the "define-type" special form and type-abbreviations
+ - added "compiler-typecase", a compile-time typematching form
- Module system
- - Added "interfaces", named groups of exports
+ - Added "interfaces", which are named groups of exports
- Added "functors", which are parameterized modules
- Modules can now be aliased
- New syntax:
(define-interface NAME EXPORTS)
(functor (NAME ...) EXPORTS ...)
- Extended syntax of "module" for aliasing and functor-instantiation
-
-- Core libraries
- - Cleaned up set of available internal SRFI-feature-identifiers
- - Fixed bugs in "make-pathname" and "normalize-pathname" (thanks to Jim Ursetto)
- - The reader is now more consistent when parsing symbol- and keyword names
- that are fully or partially escaped (thanks to Kon Lovett)
- - The printer now does a better job at escaping certain single-character
- symbol names
- - Unit "lolevel"
- - deprecated "null-pointer" and "null-pointer?"
- - Fixed a bug in the Windows implementation of "file-type" (thanks to
- Jim Ursetto)
- - Fixed a bug in the implementation of "current-milliseconds" that could
- result in integer-overflow
- - Fixed an incorrect type-check in "list-ref" (thanks to Sven Hartrumpf)
- - Disabled "-setup-mode" when compiling extensions for deployment (thanks
- to Ivan Raikov)
- - Got rid of some warnings in the C runtime system that were triggered on
- the SunPro C compiler (thanks to Joe Python)
- - Fixed bug in "string->number" that caused out-of-range characters to
- be accepted for base > 10 (thanks to Jim Ursetto)
-
-- Syntax expander
- - Fixed a bug that caused imported identifiers to leak into the
- macroexpansion/compile-time environment (reported by Christian Kellermann)
- - Fixed a bug in the processing of extended lambda-lists (thanks to Peter Bex)
- - Peter Bex fixed a bug that caused bound variables to be incorrectly
- renamed in quoted literals (thanks to Matthew Flatt)
-
-- Compiler
- - Fixed bug in handling of symbols in constant-definitions (thanks to Peter
- Bex)
- - Stricter check for value-part of constant definition (thanks to Kon Lovett)
- - Fixed bug that caused argument-signatures of external definitions to be
- incorrectly modified during optimization (thanks to Peter Bex)
- - Failing constant-folding expressions now produce a compile-time warning
- - Fixed various bugs in the internal type-database (thanks to Kon Lovett and
- Peter Bex)
- - Fixed incorrect optimization rules for some fp-rounding and fixnum operators
+ - the "scheme" module has been integrated into the core library and
+ is not installed as a separate import library anymore
+ - added core module "r4rs" containing only bindings for R4RS identifiers
+ - added core module alias "r5rs" for "scheme" module
+ - added "module-environment" which returns an evaluation environment
+ for the bindings of a module
- Foreign function interface
+ - locatives are allowed as arguments declared "c-pointer"
- "int32" was not properly detected as a valid foreign type (thanks
to Jim Ursetto)
-- Build system
- - The default target library name for an installation configured for cross-
- compilation is now "libchicken" and independent on any particular
- setting of PROGRAM_PREFIX/PROGRAM_SUFFIX (thanks to Otavio Salvador)
-
4.7.0
Trap