4.8.0.4

- Runtime
  - Ensure correct type is used for sigsetjmp(3) buffer.  This fixes,
    for example, a bus error in 32-bit OS X builds (#1021).

- Core libraries
  - Export file-type from the posix unit.

- Build system
  - Use inexact comparison for flonum tests, as there is sometimes a
    miniscule difference between trig functions computed by libc and
    those precalculated by gcc.

4.8.0.3

- Runtime
  - Avoid high CPU usage when waiting for child process I/O with poll().
    Affects at least Linux and Solaris.
  - Escape single backslash in printed symbols.

- Type system
  - Fixed types.db entry for join and mutex-lock!

- Core tools
 - chicken-install transports now parses ports on URIs with empty paths

4.8.0.2

- Interpreter
  - Fix regression in ,d for procedures, which resulted in an sprintf error.

- Compiler
  - Fix rewriting of newlines (~~) in printf.

- Runtime
  - Allow > 4GB heap on 64-bit systems (#974).
  - Added missing library (-lrt) on Solaris for nanosleep calls (#970).

- Build system
  - Use test -f instead of test -e in identify.sh to placate Solaris.

4.8.0.1

- Security fixes
  - CVE-2012-6122: Use POSIX poll() on systems where available.  This avoids a
    design flaw in select(); it supports no more than FD_SETSIZE descriptors.

- Core libraries
  - Fixed EINTR handling in process-wait and when reading from file ports.
  - Bugfix for irregex (#686).  Note: although irregex.scm now says version
    0.9.2, the version is actually 0.8.3 plus a few backported patches.
  - Fixed problem in "make-pathname" that returned an absolute path if given
    a relative one without a directory argument.
  - On 64-bit systems the feature identifier "64bit" is registered.

- Compiler
  - Fixed various bugs in the type database.
  - Bugfixes and improvements in the scrutinizer.
  - In the flow-analysis pass, type-matching of combinations of
    "list"/"list-of" types has been made more reliable.

- Syntax expander
  - Make macro-renamed defines in begin bodies (inside modules)
    visible to later forms. (#944).

- Runtime system
  - Fixed incorrect code in the foreign argument conversion for
    "unsigned-integer64" (#955).

- Core tools
  - The runtime linker path for compiled executables was not set correctly
    on FreeBSD systems.
  - Fix install-extension breakage when the second arg contains pairs (SRC DST).

- Build system
  - Prevent rebuilding of buildversion.scm on every make(1) on Windows.


4.8.0

- Security fixes
  - CVE-2012-6125: 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.
  - CVE-2012-6124: On 64-bit machines the "random" procedure no longer
    truncates result values (which caused very nonrandom results for very
    large values). Note that random shouldn't be used for
    security-critical code.
  - CVE-2012-6123: Added checks for embedded '\0' characters in strings
    passed to some C functions on a lower level than Chicken's FFI.

- 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.
  - the local flow-analysis was sometimes reporting multiple warnings
    for the same type-conflict.
  - the time/space-complexity of some algorithms used in the compiler
    were reduced resulting in much better compile-times especially
    for large source files.

- 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
  - the implementation of R5RS evaluation environments is now fully 
    standards compliant
  - "file-exists?" and "directory-exists?" work now properly for files
    > 2GB (EOVERFLOW handling in stat(3) system call)
  - fixed bug in implementation of "fifo?"
  - the procedure returned by "condition-predicate" accepts any type
    of argument now
  - blobs have a readable textual representation ("#{...}")
  - "find-files" does not follow symlinks by default (as it did previously)
  - also, the old non-keyword argument signature for "find-files" is not
    supported anymore
  - added "alist-update" ("data-structures" unit)
  - "irregex-replace" returns the original string instead of #f when the
    regex does not match
  - irregex "real" built-in utility pattern now accepts a leading sign
  - added "change-directory*" ("posix" unit)
  - number parsing has been made more reliable and standards compliant
  - deprecated "none?", "always?" and "never?"
  - library procedures that take ports as arguments now all perform checks
    on port-direction and open/closed state
  - "mutate-procedure" has been renamed to "mutate-procedure!" - the old
    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
    fixed; it has been updated to upstream release 0.8.3
  - "with-input-from-file", "with-output-to-file", "with-input-from-pipe" and
    "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
    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).
    - "-rpath" is ignored on OS X (thanks to Kon Lovett).
    - Fixed handling of "-output-file" (it was being ignored)
  - "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
    - 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)
  - added ":", "the" and "assume" syntax for declaring types
  - added "define-specialization" form to declare type-driven procedure
    call rewrites in compiled code

- 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

- 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
  - signal masks were accidentally reset upon GC for some platforms; use
    sigsetjmp/siglongjmp on BSD, Linux, MacOS X and Haiku
 
- 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", 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
  - 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
  - fixed bugs related to using "export"/"reexport" in combination with
    wildcard ("*") module export lists (thanks to "megane")

- 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)


4.7.0

- Build system
  - On BSD, libchicken.so is linked with -lpthread, as this seems
    to be required for linking libraries that require pthreads
  - The C header-files are now installed in a subdirectory below
    the "PRFIX/include" directory to allow installation of multiple
    chickens with different PROGRAM_PREFIX/PROGRAM_SUFFIX settings
    in the same prefix; to avoid conflicts with existing CHICKEN
    headers, it is recommended to completely remove any old
    installation before installing the new version
  - the PROGRAM_PREFIX and PROGRAM_SUFFIX configuration settings
    are applied to generated files and directories which allows
    perform differently named installations into the same PREFIX
  - increaded binary-compatibility version from 5 to 6, which
    means installed extensions in an existing installations will 
    have to be re-installed
  - bugfixes in mingw/msys makefiles
  - Sven Hartrumpf contributed a bugfix to the internal helper
    script for creating distribution directories
  - Peter Bex has cleaned up the makefiles heavily, making the
    build more maintainable and easier to modify; thanks to all
    who helped testing this new build
  - renamed the makefile to `GNUmakefile' to catch using the
    a make(3) other than GNU make
  - configuration-header fix for BSD systems (thanks to Peter Bex
    and Christian Kellermann)


- Core libraries
  - the `regex' library unit has been removed and is separately
    available as an extension which should be fully backwards-
    compatible
  - `irregex' is now a core library unit and replaces the  `regex' API
  - "extras" unit
    - fixed pretty-printer output of certain escaped character
      sequences inside strings (thanks to Mario Domenech Goulart,
      thanks to Kon Lovett for pointing out a missing test-file)
    - The pretty printer did not escape some control characters correctly
      (reported by Alan Post) 
    - control-characters in symbol-names are now properly escaped if
     the symbol is printed readably (thanks to Alaric Snell-Pym
     for pointing this out)
    - the deprecated `random-seed' function has been removed
  - "files" unit
    - fixed bug in `normalize-pathname'
    - `file-copy' and `file-move' check whether the source-file is a
      directory
    - `delete-directory' now optionally deletes directories recursively
  - "irregex" unit
    - Peter Bex has contributed various bugfixes and performance
      enhancements
  - "library" unit
    - Added "condition->list" (thanks to Christian Kellermann)
    - The reader accepts now escaped octal character codes in string 
      literals
    - Read-syntax can return zero values to indicate ignored objects
    - R5RS output output routines now always return a "void" result
    - "\|" was not correctly escaped when occurring inside
      symbol print names
    - added `condition->list', contributed by Christian Kellermann
    - added `equal=?'
    - removed deprecated `getenv', `left-section', `right-section',
      `project', `c-runtime' and `noop'
    - added missing import-library entry for `vector-copy!' (thanks
      to Jules Altfas)
    - circular or excessively deeply nested data generates a more
      useful error message when encountered by `equal?'
    - `list-tail' gives now a better error message when passed a
      non-list argument
    - fixed bug in `getter-with-setter' that modified the first
      argument if it already had a setter procedure attached
    - fixed incorrect size of internal data vector used in `time'
      (thanks to Kon Lovett)
  - "lolevel" unit
    - removed deprecated `global-bound?', `global-make-unbound',
      `global-ref' and `global-set!' procedures
    - added support for `pointer-vectors':
      -  make-pointer-vector
      -  pointer-vector?
      -  pointer-vector-length
      -  pointer-vector-ref
      -  pointer-vector-set!
  - "posix" unit
    - "close-input-pipe" did not return the status code of a
      terminated process on Windows (reported by Mario Domenech Goulart)
    - added `file-creation-mode' (suggested by Mario Domenech Goulart)
  - "setup-api" unit 
    - `required-extension-version' and `required-chicken-version' have
       been deprecated
  - "srfi-18" unit
    - removed deprecated `milliseconds->time' and `time->milliseconds'
      procedures
    - `make-mutex' incorrectly created mutexes as initially owned by
      the current threads (thanks to Joerg Wittenberger) 
    - the file-descriptor handling in the scheduler has been simplified
      and performs some sanity checks
    - deadlock in the scheduler now terminates the process instead of
      attempting to throw an error
    - added some sanity checks to the scheduler
  - "tcp" unit
    - Fixed bug in "tcp-abandon-port" (reported by Jim Ursetto)
  - "utils" unit
    - `compile-file' now returns `#f' when the compilation fails,
       instead of raising an error


- Compiler
  - Removed unreliable lambda-lifting optimization (now, really!);
    the "-lambda-lift" option is still accepted but produces a
    warning
  - When "-scrutinize" is given, installed ".types" files will be
    automatically consulted for extensions and used units
  - Fixed optimizer bug in handling of "let" forms with multiple
    bindings which could result in toplevel assignments being
    silently dropped (reported by Moritz Heidkamp)
  - the `-accumulate-profile' option did not provide a way to
    specify the target profile data file - now `-profile-name'
    must always be given when accumulated profiling is done
    (thanks to Taylor Venable)
  - added `-module' option, which wraps the code into an implicit
    module
  - removed check for unsafe toplevel calls in safe mode
  - intrinsic handling of `exact->inexact' and `string->number' is
    now more efficient
  - fixed bug in leaf-routine optimization (thanks to David
    Dreisigmeyer)
  - unit-toplevel entry-points are now named differently, which
    may break binary-compatibility with existing compiled Scheme
    code modules
  - fixed invalid dropping of unused external entry-points in
    block-mode
  - fixed incorrect lambda-list check in scrutinizer (thanks to
    Alan Post)
  - Kon Lovett reported numerous bugs in the type-database used
    by the scrutinizer
  - `-fwrapv' is disabled on OpenBSD, since the default compiler
     does not support this option (thanks to Christian Kellermann)
  - on Solaris `gcc' is used by default, override `C_COMPILER'
    to use the Sun compiler instead
  - declaring a function `notinline' will prevent direct-call
    optimization for known procedure calls
  - the implementation of overflow-detection for arithmetic operations
    on fixnums have been replaced and now allow using the full 63-bit
    range of fixnums on 64-bit systems
  - fixed serious inlining-bug (thanks to Sven Hartrumpf)
  - constant-folding in the compiler has been simplified and
    is more reliable (thanks to Sven Hartrumpf)
  - optimization-levels 3 and higher imply `-unboxing -inline-global'
  - added new declaration `unsafe-specialized-arithmetic' which allows
    optimizing unboxed floating-point arithmetic in safe mode
  - removed `scrutinize' declaration
  - the warning shown when unimported identifiers are used in compiled
    modules now also shows the name of the procedure where the
    identifier is referenced (suggested by Alaric Snell-Pym)


- Documentation
  - Added list of installed files to README
  - Documented remaining "c...r" standard procedures (thanks to 
    Juergen Lorenz)
  - The manual is now installed in HTML format in
    PREFIX/share/chicken/doc, many thanks to Jim Ursetto for
    contributing is excellent `manual-labor' extension which made
    this possible


- Foreign function interface
  - Added support for missing "(const [XXX-]c-string)" foreign type
    (thanks to Moritz Heidkamp)
  - removed deprecated `pointer', `nonnull-pointer', `byte-vector'
    and `nonnull-byte-vector' types
  - added missing result-type handling for `unsigned-integer64'
    (thanks to Moritz Heidkamp)
  - added `foreign-type-size' macro
  - added the new foreign type `size_t' (suggested by Moritz 
    Heidkamp)
  - added the missing `unsigned-integer64' foreign type (thanks
    to Moritz for catching this)
  - added new foreign type `pointer-vector' which maps to `void **'
    and provided a low-level API in the `lolevel' library unit for
    manipulating pointer vectors


- Runtime system
  - Fixed typo in "runtime.c" (thanks to Sven Hartrumpf)
  - Little-endian detection on MIPS systems was not correct (thanks
    to Christian Kellermann)
  - Fixed bug in handling of runtime-options with arguments (also
    reported by Christian Kellermann)
  - `equal?' does not compare procedures recursively anymore
  - fixed incorrect use of alloca.h on OpenBSD (thanks to
    Christian Kellermann and Alan Post)
  - checks for NaN and infinity are now done using ISO C99
    operations, which required various changes to `chicken.h'
    to make the code compile in ISO C99 mode
  - remaining debris regarding MSVC builds has been removed
  - fixed bug in argument-type check for 64-bit integer (thanks
    to Kon Lovett)
  - increased default trace-buffer size from 10 to 16
  - fixed bug in low-level termination routine (thanks to
    Jeronimo Pellegrini)
  - the scheduler handles violations of internal invariants
    regarding threads slightly more gracefully (thanks to Jim
    Ursetto)
  - fixed broken sleep-time conversion (thanks to Karel Miklav)
  - repaired broken handling of multiple finalizers that referred
    to the same object (reported by Moritz Heidkamp)
  - fixed problem with reader and escaping of single-char symbols


- Syntax expander
  - For-syntax syntax definitions where not correctly retained inside
    modules
  - Peter Bex fixed various critical bugs in the expander
  - The simplification for quasiquote expressions was unable
    to handle certain circular data (reported by Moritz Heidkamp)
  - `syntax-rules' now supports tail-patterns and is now fully
    SRFI-46 compatible - many thanks to Peter Bex for implementing
    this
  - Peter Bex provided a bugfix for resolution of primitive imports
  - handling of internal definitions with shadowed defining
    forms is now done correctly - fix once again from Peter Bex
  - corrected non-standard behaviour of quasiquote with respect
    to nested quasiquotations - another bugfix by our mighty macro
    master
  - removed stub-implementation of `define-macro'
  - handled case where a global redefinition of `cons' influenced
    a non-inlined internal use in the expander (thanks to David
    Steiner)
  - `define-record' now allows defining SRFI-17 setter procedures
    for accessing slots
  - the expansion of DSSSL lambda-lists uses now `let-optionals*'
    internally instead of `let-optionals' and so allows
    back-references to earlier formal variables; this also results in
    faster and more compact code for argument-list destructuring
    (thanks to Alan Post)
  - new "implicit renaming" macro facility contributed by Peter Bex
    (see `ir-macro-transformer')
  - parameters are now settable and can be modified using `set!'
    (SRFI-17)
  - added a SRFI-17 setter to `list-ref'
  - added literal blob syntax ("#{ ... }")


- Tools
  - chicken-install
    - option "-deploy" does not compile deployed extensions with
      "-setup-mode" anymore to avoid problems with dynamic loading on
      some platforms (specifically Mac OS X)
    - option "-deploy" option did not copy the correct library
      (including the version-number) (thanks to Christian Kellermann)
    - added support for proxy-authentification (thanks to Iruata Souza)
    - when installing from a local directory `chicken-install' now
      removes existing `*.so' files in that location to avoid stale
      binaries when the `make' syntax is used in setup scripts
  - chicken-bug
    - removed disabled e-mail support
  - csc
    - removed `-static-extension' option
    - removed deprecated `-windows' option
    - fixed incorrect use of `chicken.rc' on non-Windows platforms
      in `-gui' mode (thanks to "ddp")
    - when compiling in C++ mode, the compiler will be called with the
      `-Wno-write-strings' option
    - `-frwapv' has been added to the default C compiler options
  - csi
    - the ",m" toplevel command now accepts "#f" to switch back to
      the initial empty module context (suggested by Christian Kellermann)
    - fixed broken `,g' toplevel command
    - deprecated `script' feature identifier (use `chicken-script'
      instead)
    - options `-p' and `-P' and `-e' imply `-no-init'
    - the call-trace reported will not include exception-handler code
      anymore (suggested by Christian Kellermann)



4.6.0

- the licenses used in all components of the core system have
  been collected in the LICENSE file (Thanks to Peter Bex)
- Added new compiler option `-no-module-registration' which
  omits generation of module registration code, even when
  generation of import libraries has not been enabled
- running `chicken' without arguments now hints at the
  existence of `csi' and `csc'
- `caar', `cdar' and `cddr' generate faster code
- calls to `list', `vector' and the internal structure
  allocation primitive that take 1 to 8 arguments generate
  faster code
- `chicken-install' now checks the version of the setup
  configuration file `setup.defaults'
- added option `-exact' to `chicken-status' and `chicken-uninstall',
  which treats the pattern argument as the literal name of the
  extension to be listed/deinstalled
- `assert' shows line-number information, if available
  (suggested by Alejandro Forero Cuervo)
- interpreted code records the lexical-environment at call-
  sites, which can in case of an error be inspected with the
  new `,c', `,f' and `,g' csi toplevel commands
- the evaluation-result history in `csi' can be inspected and
  cleared (to reduce memory load) with the toplevel commands
  `,h' and `,ch'
- unit `data-structures': deprecated `left-section' and 
  `right-section'
- fixed bug that caused the static syntax-environment of 
  syntax exported by a module to be incomplete
- module `setup-api': Documented the `version>=?' and
  `extension-name-and-version' proceedures
- unit `posix': `utc-time->seconds' is considerably 
  faster on Mac OS X (thanks to Jim Ursetto);
  added new procedure `file-type'
- the `time' macro now shows the correct number of minor
  garbage collections
- the immediate-object check inside the marking procedure
  of the garbage collector has been manually inlined which
  results in a significant GC speedup, depending on memory
  load
- unit `srfi-18' and `scheduler': various bugfixes (thanks
  to Joerg Wittenberger)
- unit `srfi-4': bugfix in 8-bit vector allocation routines
  (thanks to Kon Lovett)
- added `-:H' runtime option to dump heap state on exit
- fixed missing change in Makefile.cygwin (thanks to John Cowan)
- fixed bug in `let-optionals' macro that caused problems when the
  rest-variable was actually named `rest' (thanks to Alejandro
  Forero Cuervo)
- when Scheme files are translated to C++ or Objective-C, `csc'
  will register the feature-identifiers `chicken-scheme-to-c++'/
  `chicken-scheme-to-objc' ar compile-time
- fixed bug in expansion of `#!key' parameters in lambda-lists
- debug-output for forcing finalizers on exit goes to stderr now
  (thanks to Joerg Wittenberger)
- the installation routines for extensions automatically add
  version-number information if none is given in the extension
  property list (suggested by Alejandro Forero Cuervo)
- `standard-extension' accepts `#f' now for the version number
  and will use the version that has been obtained via
  `chicken-install'
- `fifo?', `symbolic-link?', `directory?', `regular-file?', `socket?',
  `character-device?' and `block-device?' now accepts file-descriptors
  or filenames
- `find-files' takes keyword arguments, now (including the options
  to process dotfiles and ignore symbolic links); the old argument
  signature is still supported but deprecated
- removed dependency on `symbol-append' in some macros used in
  srfi-4.scm to be able to compile the system with older chickens
- fixed bug in script that generates development snapshot
- added build-variable `TARGET_FEATURES', which can be used to pass
  extra options enabling or disabling fetures for a system configured
  for cross-compilation
- added compiler and interpreter option `-no-feature FEATURENAME' that
  disables predefined feature identifiers
- code compiled with interrupts disabled will not emit inline files
  for global inlining since they may execute in a context where 
  interrupts are enabled
- the `setup.defaults' file that holds download sources for 
  `chicken-install' now allows aliases for locations
- CHICKEN systems build from cross-compilation now by default 
  transparently build and install extensions for both the host
  and target parts of the cross-compilation setup; the options
  `-host' and `-target' can now be used to selectively build
  an extensions for the host- and the target system, respectively
- also added `-host' and `-target' options to `chicken-status' and
  `chicken-uninstall'
- `chicken-install' now respects the `http_proxy' environment variable
  (contributed by Stephen Eilert)
- the `srfi-4' library unit has been heavily cleaned up and optimized
- optimization-level 3 now enables global inlining
- fixed the case that declarations listing global identifiers did not
  correctly rename them
- deprecated `-N' option shortcut for `-no-usual-integrations' option in
  `csc'
- `csi' now offers a toplevel command `,e' for invoking an external
  editor (suggested by Oivind Binde)
- the `describe' command in `csi' now detects many circular lists
  (contributed by Christian Kellermann)
- `csi' doesn't depend on the `srfi-69' library unit anymore
- when a closing sequence delimiter is missing or incorrect, the
  reader also reports the starting line of the sequence
- the reader signals an error when a file contains certain characters
  that indicate that it is a binary file
- procedure-information shown by the printer for procedures is now
  corrected for some library procedures that where missing the correct
  information; `getter-with-setter' copies procedure-information objects
  into the newly created accessor procedure, if available
- calls to some known pure standard- or extended procedures are removed, if
  the procedures are called with side-effect free arguments and the
  result is not used (this can also by enabled for user procedures with
  the `constant' declaration)
- fixed some build-system bugs related to installation
- fixed a problem in the C runtime code that prevented it to be compileable
  without a configuration header-file
- the makefile-target to build a bootstrapping `chicken' executable 
  performs multi-stage build now
- changed error message when required extension is out of date (thanks to
  Mario Goulart)
- documented library units loaded by default in `csi' (thanks to Moritz
  Heidkamp)
- added `boot-chicken' makefile target to simplify bootstrapping
  the system from sources and documented this in the README
  (suggested by Jim Ursetto)
- CHICKEN can now be built on haiku (contributed by Chris Roberts)
- on Solaris, the system can be compiled with the SunPro C compiler
  (thanks to Semih Cemiloglu)
- removed the `-disable-warnings' compiler option and `disable-warnings'
  declaration specifier
- `fx/' and `fxmod' generate now faster code in safe mode
- cleaned up manual pages
- slightly optimized variable- and procedure-access
- in the compiler `-debug-level 2' implies `-scrutinize'
- internal compiler-transformation for `for-each' and `map'
  apply now with any expression as the procedure argument
- the compiler warns about non-intrinsic exported toplevel variables
  which are declared to be safe
- `csc' didn't handle the `-verbose' option (thanks to Mario Goulart)
- the `,d' command in `csi' now detects circular lists (thanks to
  Christian Kellermann)
- strings passed to C runtime functions and which are converted to
  0-terminated C strings are now checked for not containing embedded
  `\0' characters (thanks to Peter Bex)
- errors in user-defined record printers are caught and shown in the 
  output instead of throwing an error to avoid endless recursion when
  an error message is printed
- a feature identifier named `chicken-MAJOR.MINOR' is now defined 
  to simplify conditionalization of code on the CHICKEN version
- `getter-with-setter' copies the lambda-information (if available) from
  the getter to the generated procedure
- `time' uses a somewhat more concise output format and outputs timing
  information to stderr instead of stdout
- added a new chapter on cross-development to the manual
- added the `safe-globals' declaration specifier
- split up manual chapter `Modules and macros' into two chapters
  (named `Modules' and `Macros', respectively - suggested by
  Mario Goulart)
- the last 5 non-precompiled regular expressions are now internally 
  cached in compiled form, which speeds up repeated matching of
  the same uncompiled regular expression dramatically
- added the new procedure `yes-or-no?' to the `utils' library unit
- added a `bench' makefile target that runs some non-trivial
  benchmark programs
- added `install-target' and `install-dev' makefile target for
  installing only target system libraries in cross-mode and
  development files (static libraries and headers)
- added `[-]no-procedure-checks-for-toplevel-bindings' compiler
  option and declaration
- usage of unimported syntax in modules gives more usable
  error messages; in particular, used but unimported FFI forms are 
  now detected
- invalid syntactic forms (mostly `()') encountered by the compiler
  or interpreter show the contextual form containing the expression,
  or, if indicated by the context warns about missing imports
- simplified manual pages of all core tools - they now refer to
  the output shown by invoking `<tool> -help'
- added new option `-feature FEATURE' to `chicken-install' tool
  to pass feature-identifiers to invocations of `csc'
- removed deprecated `-host-extension' option from `chicken-install'
- `chicken-status' in a system built for cross-compilation now 
  lists extensions installed in the target prefix, unless the
  new `-host' option is given on the command line
- `chicken-uninstall' in a system built for cross-compilation now 
  removes extensions installed in the target prefix, unless the
  new `-host' option is given on the command line
- added missing entry for `finite?' to the `chicken' module
  exports
- added new procedure `port-closed?' to the `library' unit
  (contributed by Peter Bex)
- added new procedure `symbol-append' to the library unit
- the compiler-option `-optimize-level 0' is equivalent to
  `-no-compiler-syntax -no-usual-integrations`
- internal rewritings of `map' and `for-each' ensure correct
  evaluation order of the arguments and does a better job
  at detecting non-list arguments (thanks to Jim Ursetto)
- `void' now takes arbitrary arguments and ignores them
- deprecated `noop' (from the `data-structures' unit) which
  is now replaced by `void'
- the `time' macro now performs a major garbage collection
  before executing the contained expressions and writes
  the timings in a more compact format to the port given
  by `(current-error-port)' instead of the standard output
  port
- definitions of the form `(define define ...)' and
  `(define-syntax define-syntax ...)' now trigger an error,
  as required by R5RS (thanks to Jeronimo Pellegrini and Alex
  Shinn)
- deprecated `random-seed' from the `extras' unit, since it
  is identical to `randomize'
- added new procedure `create-temporary-directory' to the
  `files' unit
- deprecated the optional path separator argument to
  `make-pathname'
- slightly improved the performance of keyword argument
  processing
- removed the deprecated `canonical-path' and `current-environment'
  procedures from the `posix' unit
- warnings that mostly refer to programming style issues are
  now coined `notes' and are only shown in the interpreter
  or when debug-mode is enabled or when scrutiny is enabled
  when compiling

4.5.0

- internal fixes of handling of alternative installation-prefix
  in setup-api
- certain compiler-warnings that are in really just notes
  and don't indicate a possible error (like reimport of
  identifiers) are only shown with -S or in verbose mode
- fixed handling of VARDIR in `chicken-install' (thanks to
  Davide Puricelli)
- `chicken-install -test' doesn't runs tests for dependencies
- when a non-else clause follows an else-clause in `cond', 
  `case' or `select' a warning (note) is shown in verbose
  mode
- removed the deprecated `define-extension' and
  `define-compiled-syntax'
- `chicken-uninstall' now always asks before removing 
  extensions, unless `-force' is given
- improved performance of keyword-argument processing slightly
- `export' outside of a module definition has no effect
- `number->string' now accepts arbitrary bases between 2 and 16
  (thanks to Christian Kellermann)
- fixed `standard-extension' in `setup-api' module
- literal constants keep their identity, even when inlined
- Unit library: added `fxodd?' and `fxeven?'
- All hardcoded special forms have been replaced with
  syntax definitions that expand into internal forms, this
  allows redefinition and shadowing of all Scheme core forms
- faster implementations of `get' and `put!'
- faster implementation of `assq' in unsafe mode
- the `-sx' option prefixes each output line with `;'
- slightly better expansion performance
- more documentation of the C API (thanks to Peter Bex)
- `module' supports a shorthand form that refers directly
  to a file to be included as the module body
- added runtime option `-:G' to force GUI mode (on platforms
  that distinguish between GUI and non-GUI applications)
- removed the unsafe runtime library (`libuchicken'), this
  simplifies and speeds up the build and reduces the risk
  of executables loading library units from different
  variants of the runtime system
- removed the `-unsafe-libraries' option from `chicken'
  and `csc'
- removed bootstrapping target and bootstrapping files from
  development repository; to bootstrap the system, either
  use a release or development-snapshot tarball or fetch
  a statically linked precompiled `chicken' binary from
  http://chicken.wiki.br/chicken-projects/bootstrap/
- Jim Ursetto provided some fixes for building universal
  binaries on Mac OS X
- `csc' now compiles and links Windows resource (.rc) files
  when given on the command line
- `chicken-install' and `chicken-uninstall' have an embedded
  manifest that suppresses the elevation dialog on Windows
  Vista and later when UAC is activated (Thanks to Thomas Chust)
- the `install' program is not used in the build on mingw
  and mingw/MSYS platforms, since this is broken on older
  mingw versions
- line-number-information is now properly handled (in the
  few places where it is used) correctly for included files;
  the source file is given in trace-output in addition to
  the line number
- removed compiler warning for shared objects compiled in
  unsafe mode
- unboxing is now only done in unsafe mode
- in unsafe mode, pointer-accessors from the `lolevel' unit
  are now handled intrinsically by the compiler
- `chicken-install' accepts now relative pathnames for the
  `-prefix' option
- `define-record-type' now optionally allows using SRFI-17
  setters as record-field modifiers
- `integer?' returns `#f' for NaN and infinite numbers
- `csc' now has an `-no-elevation' option for embedding a
  manifest that prevents the elevation dialog on Windows
  Vista and later when IAC is activated
- the `,d' csi command displays qualified symbols properly
- symbols starting with the `#\#' character trigger an
  error when encountered by the reader
- Unit posix: `glob->regexp' now always returns a regular
  expression object or optionally an SRE
- Unit posix: `terminal-port?' and `terminal-size' have been
   implemented for Windows, the latter always returns `0 0',
  though (thanks to Jim Ursetto)
- Unit regex: `regexp' now accepts a regular expression
  object as argument
- Unit regex: removed `glob?'
- fixed bug in `chicken-install'/`chicken-uninstall' and
  `chicken-status' that prevented collapsed command-line
  options to be handled correctly.
- disabled runpath-fix for deployed applications for netbsd
  (but resurrected providing a runpath at all, thanks to 
  Peter Bex)
- Peter Bex provided documentation for the `C_closure' C API
  function

4.4.0

- the system can now be built with llvm-gcc and/or "clang" (the
  LLVM C compiler which doesn't use the GNU C frontend)
- added new option `-trunk' to `chicken-install', which forces
  building and installing the development version of extensions
  in combination with `-t local'
- added new option `-deploy' to `chicken-install', which builds
  extension for use in "deployed" applications (see below)
- added option `-deploy' to `csc', the compiler driver. With this
  option `csc' can build fully self-contained application bundles
  and double-clickable Macintosh GUI apps; see the "Deployment"
  manual chapter for more information
- the directory given to the `-prefix' option of `chicken-install'
  may now be a relative pathname.
- removed GUI-specific runtime library (`libchicken-gui') from
  Windows build - GUI- and non-GUI applications now use the same
  runtime library
- special forms of the foreign-function interface have been replaced
  with an internal form and syntax to allow renaming and shadowing of
  these forms
- the new `-private-repository' option in `csc' compiles executables
  with the extension-repository path set to the directory from which
  the program was started
- `csc': deprecated the `-W' and `-windows' options, added `-gui' as
  a platform-independent replacement
- `require-extension'/`use' accepts now import-specifications
- user-defined extension-specifiers and `set-extension-specifier!'
  have been removed
- `delete-file[*]', `rename-file', `create-directory', `file-copy',
  `file-move', `delete-directory' and `change-directory' return their
  argument/destination filename on success
- added the missing procedure `condition-variable-name' to the
  srfi-18 library unit (Thanks to Joerg Wittenberger)
- the `glob?' function from the `regex' unit has been deprecated
- added the procedure `scan-input-lines' to the `utils' library unit
- added new runtime option `-:g' which enables GC debugging output
- reclamation of unused symbols in "symbol-gc" mode (`-:w') now only
  takes place for symbols with an empty property-list
- on Windows loading of code compiled with [non-]GUI runtime libraries
  will fail and produce an error message when the loading executable
  is linked with a different runtime system
- on Windows, GUI libraries were not correctly linked by `csc'
- unit posix: added setter for `file-modification-time'
- the banner shows the branchname of the build, unless it's "master"
- the `-no-install' option to `chicken-install' is ignored when
  building/installing dependencies
- `chicken-uninstall' takes a glob instead of a regular expression as
  argument
- the rename and compare functions for low-level macro-definitions 
  accept now arbitrary s-expressions and renames/compares them recursively
- `number->string' handles negative-numbers with bases different from 10
  correctly (thanks to Peter Danenberg)
- removed deprecated `setup-install-flag' and `setup-verbose-flag' from
  the `setup-api' module
- added new option `-repository' to `chicken-install' (Thanks to Christian
  Kellermann)
- removed `chicken-setup' stub program
- fix to `csc' to use the correct library when fixing dynamic load paths
  (Thanks to Derrell Piper)
- removed html documentation from distribution (the wiki manual will
  now be installed)
- fixed bug in `reexport' which caused syntax not to be correctly
  reexported
- previous assignments to a toplevel variable that are separated by
  side effect free expressions are removed
- fixed windows version of `find-files' (thanks to Jim Ursetto)
- documentation for extensions is not installed automatically by
  `chicken-install' anymore
- changed binary version from "4" to "5", because the new runtime
  libraries are not binary-compatible with previous releases; this
  means all eggs have to be reinstalled and existing programs be
  recompiled!
- added unboxing pass to compiler which results in partially dramatical
  performance improvements for unsafe floating-point-intensive code;
  unboxing is enabled on optimization levels 4 and 5
- removed rest-argument-vector optimization as it could conflict
  with inlining (thanks to Sven Hartrumpf)
- renamed `pointer-offset' to `pointer+' and deprecated `pointer-offset'
- toplevel assignments that have no other side-effects can be eliminated
  if it can be shown that the value is not used (the compiler will
  generate a warning in this case)
- removed deprecated `-quiet' option in `chicken' program
- removed deprecated `run-time-macros' declaration
- removed deprecated `-v2' and `-v3' options in `csc' program
- removed deprecated `list-of' function (it is exclusively available
  as `list-of?' now)
- removed deprecated `stat-...' functions in posix library unit
- removed deprecated `for-each-line' and `for-each-argv-line' procedures
  in utils library unit
- added `fpinteger?' and `fpabs'
- deprecated `define-compiled-syntax'
- added new floating-point primitives `fpsin', `fpcos', `fptan',
  `fpasin', `fpacos', `fpatan', `fpatan2', `fpexp', `fplog', 
  `fpexpt' and `fpsqrt'
- heavy cleanup of floating math functions which gives much better performance,
  especially for code compiled in unsafe mode
- calling `assert' with a single argument shows the tested expression
  on failure
- various bugfixes and cleaning up

4.3.0

- fixed bug in `move-memory!' that caused negative offsets to be accepted
  (thanks to Jim Ursetto)
- removed tracing facility and apply-hook (see the "trace" egg
  for a replacement for tracing and breakpoints)
- chicken-install(1): renamed `-host-extension' option to `-host'
- added support for a make(1) configuration file ("config.make")
- `chicken-install' now allows specifiying a proxy for retrieving
  extensions over HTTP (thanks to Nicolas Pelletier)
- fixed bug in `cond-expand' that incorrectly renamed feature-identifiers
  if the form was the product of a syntax expansion (reported by Thomas
  Bushnell)
- import-libraries are only generated by the compiler if they don't exist
  yet and if the content has actually changed (this simplifies makefile-
  rules in some cases)
- it is now possible to pass a config-file to `make(1)' instead of specifying
  all build-options as variables on the command-line (see README)
- removed compiler options for "benchmark-mode" and replaced them with a
  new optimization level (5) (note that `-O5' does not imply fixnum mode
  anymore)
- `hen.el' and `scheme-complete.el' are not bundled with the core system
  anymore - `hen.el' is currently not maintained, and `scheme-complete.el'
  has its own release cycle; both files are available, see
  http://chicken.wiki.br/emacs
- removed meaningless benchmark suite and cleaned up
- added optional argument to `grep' that allows applying a function
  to each matched item (contributed by Tony Sidaway)
- added extension-property `import-only', which makes it possible to
  create extensions that have no runtime part
- the argument to `seconds->string', `seconds->utc-time' and 
  `seconds->local-time' is now optional and defaults to the value
  of `(current-seconds)' (suggested by Mario Goulart)
- removed read-syntax for `syntax' form
- fixed bug in `get-condition-property'
- fixed bug in windows version of `process-execute'
- TCP timeouts throw exception of kind `timeout' to allow
  distinguishing between timeouts and other errors
- removed some internal functions that manipulate environments
- fixed bugs in `standard-extension' (`setup-api' module) and added keyword 
  arguments for building static extensions and adding custom properties
- when cross-compiling, `chicken-install(1)' doesn't pass `-setup-mode'
  (the host tools should not attempt to load target binaries)
- `installation-prefix' in the `setup-api' module was not always correctly
  set
- the `-force' option in `chicken-install(1)' overrides the CHICKEN version
  check
- disabled e-mail feature in `chicken-bug(1)', since it doesn't work
  anyway, in the moment
- fixed bug in `reexport' that made it impossible to reexport core library
  definitions
- fix in optimizer that sometimes caused C functions for inlined
  procedures to be emitted multiple times (Thanks to Joerg Wittenberger)
- documented `define-compiler-syntax' and `let-compiler-syntax'
- printer for hash-tables shows current number of stores items
- when upgrading during installation of a dependency `chicken-install'
  shows the version to upgrade to (Thanks to Christian Kellermann)
- Updated scheme-complete (Thanks to Alex Shinn)
- fix for pathnames with whitespace in 'runtests.sh' on Windows
- fix for 'normalize-pathname' with absolute pathname argument
- added 'decompose-directory' to unit files
- fix for 'local-timezone-abbreviation' - wasn't using the current time
  so tz-name constant
- deprecated 'make-pathname' separator argument

4.2.0

- added compiler option `-emit-all-import-libraries'
- added `reexport'
- added compiler and interpreter option `-setup-mode'
- various minor performance improvements
- fix for 'create-directory' when parents wanted
- `for-each-line' and `for-each-argv-line' have been deprecated
- chicken-install tries alternative servers if server responds with error
- fixed load bug (ticket #72)
- new library procedure `get-condition-property'
- many mingw build fixes (thanks tp Fadi Moukayed)
- setup-api: deprecated `cross-chicken' (use `cond-expand' or
  `feature?' instead)
- added topological-sort to data-structures unit; chicken-install
  sorts dependencies before installing them
- "-optimize-level 2" enables inlining by default
- disable executable stack in assembly code modules (patch by
  Zbigniew, reported by Marijn Schouten)
- csc now always exits with a status code of 1 on errors (patch by Zbigniew)

4.1.0

- The new parameter "parantheses-synonyms" and the command-line
  option "-no-parantheses-synonyms" allow disabling list-like behaviour
  of "{ ... }" and "[ ... ]" tokens
- The new parameter "symbol-escape" and the command-line
  option "-no-symbol-escape" allows disabling "| ... |" symbol escape
  syntax
- Added command-line option "-r5rs-syntax" to disable CHICKEN-specific
  read-syntax
- Removed "macro?" and "undefine-macro!"
- Support for Microsoft Visual Studio / MSVC has been dropped
- The compiler provides now a simple flow-analysis pass that does
  basic checking of argument-counts and -types for core library procedure
  calls (new option "-scrutinize")
- New compiler-options "-no-argc-checks", "-no-bound-checks",
  "-no-procedure checks", "-no-procedure-checks-for-usual-bindings",
  "-types TYPEFILE" and "-consult-inline-file FILENAME"
- Added a "chicken-setup" stub-application to catch incorrect use of
  this tool (which has been replaced in 4.0.0 with "chicken-install")
- Changed "setup-install-flag" and "setup-verbose-flag" to
  "setup-install-mode" and "setup-verbose-mode" in "setup-api" module,
  the old names are still available but deprecated
- Posix unit:
  added "socket?", "block-device?" and "character-device?", deprecated
  redundant "stat-..." procedures
- Added "directory-exists?"
- "(for-each (lambda ...) X)" is compiled as a loop
- The argument-count check for format-strings for "[sf]printf" with a constant 
  string argument is done at compile-time

4.0.0

- removed `apropos' and `apropos-list' from the "utils" library unit;
  available as an extension
- removed texinfo and PDF documentation - this will possible be added back 
  later
- replaced PCRE regex engine with Alex Shinn's "irregex" regular expression
  package
- removed `-extension' option
- removed `-static-extensions' csc option and added `-static-extension NAME'
- `regex' unit: removed `regexp*' and `regex-optimize'
- added `CHICKEN_new_finalizable_gc_root()'
- `length' checks its argument for being cyclic
- removed custom declarations and "link-options" and "c-options" declarations
- deprecated "-quiet" option to "chicken" program
- added "-update-db" option to chicken-install
- the compiler now suggests possibly required module-imports
- moved non-standard syntax-definitions into "chicken-syntax" library unit
- the pretty-printer prints the end-of-file object readably now
- alternative conditional execution paths have separate allocation computation
  (previously the allocation of all alternatives was coalesced)
- removed unused "%kmp-search" from "srfi-13" library unit
- expander handles syntax-reexports and makes unexported syntax available
  for exported expanders in import libraries
- added checks in some procedures in the "tcp" library unit
- the macro system has been completely overhauled and converted 
  to hygienic macros
- a macro-aware module system has been added
- added "-sx" option to csi
- removed the following deprecated functions:
   [un]shift!
   andmap ormap
   byte-vector? byte-vector-fill!
   make-byte-vector byte-vector
   byte-vector-set! byte-vector-ref 
   byte-vector->list list->byte-vector
   string->byte-vector byte-vector->string
   byte-vector-length
   make-static-byte-vector static-byte-vector->pointer
   byte-vector-move! byte-vector-append!
   set-file-position! set-user-id! set-group-id!
   set-process-group-id!
   macro? undefine-macro!
- the situation-identifiers "run-time" and "compile-time" have
  been removed
- the compiler options "-check-imports", "-import" and "-emit-exports"
  have been removed
- new procedures:
  strip-syntax
  expand
- new macros
  define-syntax
  module
  export
- the following macros have been removed:
    define-foreign-record
    define-foreign-enum
    define-macro
    define-extension
- "local" mode, in which locally defined exported toplevel variables can
  be inlined
- new options and declarations "[-]local", "[-]inline-global" and "-emit-inline-file"
- optimization levels changed to use inlining:
  -optimize-level 3: enables -inline -local (but *not* -unsafe)
  -optimize-level 4: enables -inline -local -unsafe
- increased default inlining-limit to 20
- support for cross-module inlining
- "make <VARIABLES> bench" runs the benchmark suite
- "chicken-setup" has been replaced by new command line tools
  "chicken-install", "chicken-uninstall" and "chicken-status", which are
  more flexible and allow greater freedom when creating local or application-
  specific repositories
- extension-installation can be done directly from SVN repositories or a local
  file tree
- enabled chicken mirror site as alternative download location
