Chicken Changelog

New in version 4.8.0.5

October 5th, 2013
  • This release includes several important security and crash fixes, after a recent bug-hunting spree by our core hackers.

New in version 4.8.0.3 (March 12th, 2013)

  • This release primarily fixes a bug on Linux and Solaris which causes high CPU usage when waiting for child process I/O.

New in version 4.8.0.2 (February 21st, 2013)

  • 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.

New in version 4.8.0.1 (January 18th, 2013)

  • Security fixes:
  • 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.

New in version 4.8.0 (September 26th, 2012)

  • Interfaces and functors have been added to the module system.
  • The type system has been extended.
  • A large number of bugfixes and general cleanup have been done in the compiler, runtime system, core libraries, and syntax expander.

New in version 4.6.0 (September 13th, 2010)

  • Some compiler optimizations have been significantly improved.
  • Several built-in procedures and the allocation procedures for lists, vectors, and structures generate faster code.
  • Units srfi-4 and srfi-18 have been heavily cleaned up and optimized.
  • Several bugs have been fixed in the thread scheduler.
  • chicken-install has been extended, and its cross compilation support has been significantly upgraded.
  • The build system now supports more platforms and compilers.
  • The various infrastructure scripts have been overhauled to reflect the structure of the new Web site infrastructure.

New in version 4.4.0 (March 9th, 2010)

  • 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

New in version 4.2.0 (September 22nd, 2009)

  • chicken-install has been modified to sort library dependencies in topological order, and to try alternative servers if an egg server responds with an error.
  • The executable stack in assembly code modules is disabled by default.
  • Many bugs have been fixed in the MinGW build.
  • Several new options have been added to the compiler and interpreter.

New in version 3.4.0 (September 25th, 2008)

  • The compiler now supports selective procedure profiling.
  • All file-related procedures have been moved to new unit files.
  • There have been numerous fixes to the Cygwin and MinGW builds.
  • PCRE bundled with Chicken has been updated.