Provided by Peter Bex on IRC.
Changes in 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')
- record-definitions are now made local to the module in which
they are defined (thanks to Jim Ursetto)
- 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)
Contributed by Peter Bex via IRC.
Changes in 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
Submitted by Peter Bex on IRC.
Changes in 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
Contributed by Peter Bex.
New in Chicken 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
Patch provided by Peter Bex.
Changes in 4.3.0:
- 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
Changes in 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" allows 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
- Added compiler command-line-option "-no-compiler-syntax"
- Deprecated "getenv" (use "get-environment-variable" instead)
- 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-count and -types for core library procedures
(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
- Also in Posix unit: "canonical-path" has been deprecated, "normalize-pathname"
from the "files" unit provides now most of the functionality
- 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
- A stub application named "chicken-setup" is installed to catch when a
user invokes theobsolete tool instead of the new "chicken-install".
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
Changes between 3.3.0 and 3.4.0:
- Fixes to the MinGW build.
- PCRE 7.7
- Bug fix for bitwise-or use [Joerg Wittenberger]
- Bug fix in thread-terminate! [thanks to Joerg Wittenberger]
- Cygwin build patched to put the runtime libraries in the right place.
[thanks to Nathan Thern]
- added support for out-of-tree compilation (via the SRCDIR variable)
[thanks to Ivan Shmakov]
- bug fix for (string->number "/")
- support for selective procedure profiling in the compiler
- unit utils: moved file- and pathname-related procedures to unit files
- new unit files
- the build system now sets the SONAME field of libchicken.so under Linux
- added use of unit ports to unit extras and chicken-setup
- unit utils and extras: moved port extensions to unit ports
- new unit ports
- some fixes to the build system when USE_HOST_PCRE is set
- fixed an allocation bug in decode_literal
- bug fix for bitwise-or use [Joerg Wittenberger]
- bug fix pointer->address
- other bug fixes
From Changelog :
- unit extras: moved lists, queues, strings to data-structures
- new unit data-structures
- unit library: symbol->string now copies its argument
- chicken-setup: added option -svn-trunk
- unit utils: added file-copy and file-move (request by the einit team)
- unit srfi-69: added hash-table-clear!
- unit srfi-69: new
- unit extras: moved SRFI 69 to unit srfi-69
Contributed by Aleksej Saushev
Some highlights:
3.0.0:
- On sparc64 architectures more than 126 procedure arguments are allowed
[Thanks to Peter Bex]
2.7xx:
- PCRE support
- new GNU Make based build process
- libffi is not used anymore, handcoded assembler is used for x86, x86-64
and powerpc platforms
- TCP timeout handling
- added Lisp-style symbol property lists
- the "chicken-bug" program can now be used to create bug reports
- countless bugfixes and minor improvements
Based on patch provided by Alaric Snell-Pym in pkgsrc-users@.
Things changed since the last release (2.5):
- Many bugfixes
- Better support for Sun's C compiler
- Input-performance has been improved
- PCRE (Perl compatible regular expressions) by Philip Hazel is now
bundled with CHICKEN
- Static linking of extensions is now possible (when supported by
the egg)
- The interpreter warns about references to potentially unbound variables
in loaded code and expressions entered on the REPL
- The expansion process is traced during compilation and interpretation
to give (slightly) more usable syntactic context in error messages
- library:
* added `any?`, `bit-set?' and `on-exit'
- eval:
* new procedure `set-parameterized-read-syntax!'
- posix:
* SRFI-17 setters for `file-position`, `current-user-id',
`current-group-id', `process-group-id'; the respective setter-procedures
are still available but have been deprecated
* `file-stat' returns more information (including device info)
* added `process*'
- extras:
* added `read-string!'
- utils:
* `apropos' and `apropos-list' procedures
- srfi-4:
* added `read-u8vector', `read-u8vector!' and `write-u8vector'
- srfi-18:
* added `time->milliseconds' and `milliseconds->time'
- csi:
* `-ss SCRIPTNAME' option
- csc:
* accepts options given in the environment variable `CSC_OPTIONS'
* new options `-static-extensions' and `-host'
- chicken/csc:
* new option `-keep-shadowed-macros'
- chicken-setup:
* accepts options given in the environment variable `CHICKEN_SETUP_OPTIONS'
* allows retrieval and installation of eggs from subversion a repository
and the local filesystem
* new options `-tree FILENAME', `-svn', `-local', `-revision' and
`-destdir PATHNAME'
* added helper procedures `required-chicken-version' and
`required-extension-version'
- Lots of improvements in the CMake build
Based on patch provided by Peter Schuller in PR 35339.
Changes:
- Bugfixes
- CHICKEN can now be built using CMake <http://www.cmake.org>, in fact CMake
is required to built CHICKEN from sources on Windows with the Microsoft
tools
- the whole build process has been cleaned up and simplified
- the "easyffi" and "tinyclos" library units have been removed from the base
system and are now available as separate extensions
- the deprecated "set-dispatch-read-syntax!" has been removed
- Will Farr cleaned up the behaviour of number-type specific numeric operations
("fx..."/"fp...") with respect to safe/unsafe mode
- added "(finite? NUMBER)"
- the "$" macro moved into its own separate extension
- the values of "software-type", "software-version", "machine-type" and "machine
-byte-order"
are now registered as features and can be tested using "cond-expand" or "#+"
- all tools now support the "-release" option
- chicken-setup: added "-test" option
In Changelog:
- Many bugfixes
- chicken-config was removed, "csc" providing the same functionality
- option -objc generates files in Objective-C mode
- options '-framework', '-rpath'...
...
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
All library names listed by *.la files no longer need to be listed
in the PLIST, e.g., instead of:
lib/libfoo.a
lib/libfoo.la
lib/libfoo.so
lib/libfoo.so.0
lib/libfoo.so.0.1
one simply needs:
lib/libfoo.la
and bsd.pkg.mk will automatically ensure that the additional library
names are listed in the installed package +CONTENTS file.
Also make LIBTOOLIZE_PLIST default to "yes".
Provided in PR pkg/26832 by Peter dot Bex at student dot kun dot nl
with minor additions (info file handling and resource limit specification
so test target runs on my test platforms).
Many changes since last packaged version, too many to list here.
See installed file PREFIX/share/doc/chicken/ChangeLog for a complete
list.
2003-08-25 flw <flw@gurke>
* /cvsroot/chicken/chicken/csc.in, /cvsroot/chicken/chicken/doc/FAQ.html, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/highlevel-macros.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/moremacros.scm, /cvsroot/chicken/chicken/runtime.c:
- csc.in: `-embedded' wasn't recognized
- library.scm: `get-keyword' accepts any object as keys
- runtime.c: `C_callback' doesn't do a minor GC at entry [Thanks to Bruce Hoult]
- `(. ...)' segfaulted instead of giving an error message [Thanks to Category 5]
- `(receive X)' is allowed and returns the list of the result-values
2003-08-17 flw <flw@gurke>
* /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/runtime.c:
- fixed big performance leak in minor GC handling: GC-timing stuff for `time'
macro caused way too many kernel calls [Thanks to Bruce Hoult]
- `dump_trace()' didn't initialize output buffer properly
2003-08-07 flw <flw@gurke>
* /cvsroot/chicken/chicken/chicken.h, /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/csc.bat, /cvsroot/chicken/chicken/csc.in, /cvsroot/chicken/chicken/csi.scm, /cvsroot/chicken/chicken/doc/Makefile, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/doc/manual.t2p, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/highlevel-macros.scm, /cvsroot/chicken/chicken/lolevel.scm, /cvsroot/chicken/chicken/moremacros.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/build.scm, /cvsroot/chicken/chicken/chicken-setup.scm:
- eval.scm: `extension-path'
- lolevel.scm: `global-ref', `global-set!' and `global-bound?'
- csc: static libs are reordered to link libchicken last [thanks to Sven Hartrumpf]
- posix.scm: `group-information'
- added index to the manual [thanks to Peter Wang]
- 'loevel was declared as provided by csi (which was wrong)
- removed `define-id-macro' and `let-id-macro'
- setup-specification attributes `test', `test-command' and `test-chicken-version'
- `C_alloc_in_heap()' is called with number of words (not bytes)
2003-07-30 flw <flw@gurke>
* /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/extras.scm, /cvsroot/chicken/chicken/optimizer.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/c-backend.scm, /cvsroot/chicken/chicken/chicken.h, /cvsroot/chicken/chicken/configure.in, /cvsroot/chicken/chicken/csc.in:
- `csc' added `-s' option to linker, when linking with optimization (won't
work when building shared object)
- fixed countless typos in manual.tex [Thanks to Bruce Mitchener]
- `csc' uses `-bundle' instead of `-shared' under Mac OS X
- runtime.c: dload_2 prefixes dlsym'd name with "_"
- posix.scm: under Mac OS X, `environ' is not used (and `current-environment'
always returns '())
- removed `C_collectibles' and added `C_gc_protect()' and `C_gc_unprotect()'
- fixed compiler bug that caused repeated explicit rest-argument list consing
[Thanks to Sven Hartrumpf]
- added `string-compare3[-ci]'
- reduced C_STACK_RESERVE to 4096; the previous setting could overflow the
stack-check on machines with a stack in very high memory
2003-07-25 flw <flw@gurke>
* /cvsroot/chicken/chicken/build.scm, /cvsroot/chicken/chicken/chicken-setup.scm, /cvsroot/chicken/chicken/chicken.h, /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/csc.bat, /cvsroot/chicken/chicken/csc.in, /cvsroot/chicken/chicken/csi.scm, /cvsroot/chicken/chicken/doc/FAQ.html, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/doc/README.CVS, /cvsroot/chicken/chicken/doc/manual.t2p, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c:
- added `C_end_of_main' macro to chicken.h
- `location' now accepts callback-names
- bumped version to 1.15
- `csc' accepts '-windows' under Cygwin
- chicken-setup.scm/eval.scm: ##sys#load-library-extension is exported (and used)
- the STACKTRACE is printed directly (and not saved in a file)
- `,d' in csi stops after 40 elements when printing sequences
- chicken-setup.scm: fixed hardcoded ".so"
- posix.scm: fixed some routines that weren't updated to the new I/O system
2003-07-17 flw <flw@gurke>
* /cvsroot/chicken/chicken/doc/FAQ.html, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/scheduler.scm:
- scheduler.scm: fixed bug in `##sys#all-threads'
- scheduler.scm: fixed invalid timeout computation in `##sys#fdset-select-timeout'
[thanks to Peter Wang]
2003-07-15 flw <flw@gurke>
* /cvsroot/chicken/chicken/csc.bat, /cvsroot/chicken/chicken/csi.1, /cvsroot/chicken/chicken/doc/FAQ.html, /cvsroot/chicken/chicken/doc/manual.t2p, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/script-utils.scm:
- library.scm: vector-resize
- script-utils: for-each-line
- uses newest autotools (libtool 1.5, autoconf 2.57, automake 1.7.6)
- posix.scm: fixed bug in `process-execute' [Thanks to Peter Wang]
2003-06-14 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/batch-driver.scm, /cvsroot/chicken/chicken/build.scm, /cvsroot/chicken/chicken/chicken.h, /cvsroot/chicken/chicken/c-platform.scm, /cvsroot/chicken/chicken/csi.scm, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/doc/README.CVS, /cvsroot/chicken/chicken/doc/README.txt, /cvsroot/chicken/chicken/extras.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/lolevel.scm, /cvsroot/chicken/chicken/Makefile.am, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c:
- extras.scm: the first argument to `read-string' is now optional
- runtime.c: interning of empty string referenced uninitialized memory
- posix.scm: I/O on ports returned by `process' is now fully nonblocking
- posix.scm: `errno/wouldblock'
- files loaded via the `-extend' compiler option are also searched in the
current include-path
- `##sys#call-with-direct-continuation' and `##sys#direct-return' (they
might turn out useful)
- lolevel.scm: `unbound-variable-value'
- posix.scm: `file-read' didn't check the buffer argument early enough
- extras.scm: `write-string'
- csi doesn't use the lolevel unit anymore
- `chicken-setup.c' was not up to date
- added BOOTSTRAP_PATH to Makefile.am, this simplifies the invocation
of make when bootstrapping the system from CVS sources
[Thanks to Peter Keller]
2003-06-06 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/tcp.scm:
- tcp.scm: tcp-listener-port
- fixed bug in runtime.c that resulted in fopen() being called with invalid file-mode
- tcp.scm: EWOULDBLOCK wasn't defined under Win32 with MSVC
- the printer mixed up "input" and "output" when printing port objects
- fixed bug in read-char handler of pipe-ports
- fixed two unbound variable bugs in library.scm and posix.scm
- commit updates ChangeLog at website and send message to mailing list.
In other words: SMTP and FTP extensions are imminent ;-)
2003-06-02 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/csi.scm, /cvsroot/chicken/chicken/doc/FAQ.html, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/doc/README.txt, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/extras.scm, /cvsroot/chicken/chicken/format.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/lolevel.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/scheduler.scm, /cvsroot/chicken/chicken/support.scm, /cvsroot/chicken/chicken/tcp.scm, /cvsroot/chicken/chicken/batch-driver.scm, /cvsroot/chicken/chicken/build.scm, /cvsroot/chicken/chicken/chicken.h:
- fixed problem with scheduler.scm (C_msleep) under Windows
- overhauled I/O subsystem
- lolevel.scm: invalid-procedure-call-handler
- declaration `safe-globals'
- internal compiler for `##core#app'
- eval/visit uses `##core#app'
- debug-option `D'
- (hopefully) settled all thread-safety issues in `format.scm'
- nonblocking I/O for tcp-ports
- made `##sys#errno' an int, instead of an integer (library.scm)
- fixed bug in tcp.scm: partial writes to tcp-port didn't remove sent part
- `##sys#thread-block-for-i/o!' for output (or mixed?) mode doesn't work properly (deactived,
does simple polling)
2003-05-21 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/chicken-setup.scm, /cvsroot/chicken/chicken/doc/FAQ.html, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/scheduler.scm:
- scheduler.scm: timeout-values in nanoseconds where calculated incorrectly
- chicken-setup.scm: -wrap doesn't create registry, if not existing
- ##sys#special-read-syntax-table
- updated FAQ a little
2003-05-19 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/chicken.h, /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/highlevel-macros.scm, /cvsroot/chicken/chicken/moremacros.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/scheduler.scm:
- `define-foreign-variable' isn't seen by `visit' anymore
- `C_flonum()' advanced allocation pointer wrongly on 64-bit platforms
- `parameterize' accepts arbitrary expressions in the parameter position of the binding-list
- applied patches by Sven Hartrumpf that remove unneeded special casing for ICC
- constants defined via `define-constant' are visible inside constant-expressions for
that form
- the scheduler doesn't waste CPU cycles when waiting for thread- or I/O-timeout, unless
other threads are ready [Thanks to Chris Double]
2003-05-08 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/doc/README.txt, /cvsroot/chicken/chicken/support.scm, /cvsroot/chicken/chicken/build.scm, /cvsroot/chicken/chicken/chicken.h, /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/highlevel-macros.scm, /cvsroot/chicken/chicken/moremacros.scm, /cvsroot/chicken/chicken/parameters.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c:
- fixed bug in `process-execute', pointers to potentially gc-moved strings where retained
[thanks to Joerg Wittenberger]
- `define-constant' evaluates 2nd argument at compile time
- fixed bug with mutable constants in `define-constant' forms
- visiting handles `define-foreign-type' and `define-foreign-variable'
- fixed compiler bug in support.scm: `estimate-foreign-result-size' allocated one word too little if flonum result
has to be aligned
- `##core#inline[_allocate]' expanded incorrectly with the hygienic macro system
[Thanks to Panagiotis Vossos]
- fixed 32-bit dependencies: C_FLONUM_TAG was wrong on 64-bit platforms; C_equalp() used `int' where a `C_word'
was needed
- 8-byte alignment was incorrectly handled for 64-bit platforms
2003-05-04 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/library.scm:
- `output-port?' returned 0 on closed port [Thanks to Burton Samograd]
* /cvsroot/chicken/chicken/chicken.h, /cvsroot/chicken/chicken/chicken-setup.scm, /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/csi.scm, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/doc/README.txt, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/extras.scm, /cvsroot/chicken/chicken/format.scm, /cvsroot/chicken/chicken/highlevel-macros.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/moremacros.scm, /cvsroot/chicken/chicken/parameters.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/srfi-13.scm, /cvsroot/chicken/chicken/support.scm, /cvsroot/chicken/chicken/batch-driver.scm, /cvsroot/chicken/chicken/build.scm:
- `substring' signals (exn bounds)
- replaced several occurences of `substring' with `##sys#substring'
- moved the description of `process' into the proper manual section
- `process' should read non-blocking, now
- buffer grows by doubling it's size in `read-line'
- chicken-setup: defaults options are "-O2 -d0"
- format is thread-safe
- the transcript port wasn't properly recognized as a tty-port
- vector-copy! signals (exn bounds)
- several small optimizations in library.scm
- non-exported globals where still exported, if ref'd before definition
- non-blocking `process' seems to work
- `csi -setup-help' and -uninstall
- `string-null?' is expanded inline
- visit handling constant- and inline-definitions
- `define-constant' wasn't consistently handled in hygienic and non-hygienic mode
- removed procedure-definition syntax for `define-constant'
2003-04-23 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/build.scm, /cvsroot/chicken/chicken/c-backend.scm, /cvsroot/chicken/chicken/chicken.h, /cvsroot/chicken/chicken/chicken-setup.scm, /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/configure.in, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/doc/README.txt, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/extras.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/lolevel.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/regex.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/support.scm:
- hidden globals where not properly checked for boundedness
- the foreign return types `c-pointer' and `pointer' did not return `#f' on NULL results
[thanks to Peter Wang]
- `##sys#void' is handled better by `canonicalize-begin-body' (support.scm)
- fixed space leaks in `regex.scm'
- `read-line' accepts optional limit
- `-setup' gives useful error-message on non-UNIX platforms
- there where two conflicting versions of `provided?'
- chicken-setup handles single-file case
- some warning-options are passed to CFLAGS
- fixed typo in posix.scm [Thanks to Joerg Wittenberger]
2003-04-19 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/highlevel-macros.scm, /cvsroot/chicken/chicken/runtime.c:
- fixed a couple of 32-bit dependencies [Thanks to Panagiotis Vossos]
- fixed bug in syntax-case version of condition-case
* /cvsroot/chicken/chicken/psyntax-chicken.pp:
removed psyntax-chicken.pp
* /cvsroot/chicken/chicken/examples/ctclsh.scm, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/doc/README.txt, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/support.scm, /cvsroot/chicken/chicken/tcp.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/srfi-25.scm, /cvsroot/chicken/chicken/csi.scm, /cvsroot/chicken/chicken/highlevel-macros.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/moremacros.scm, /cvsroot/chicken/chicken/optimizer.scm, /cvsroot/chicken/chicken/psyntax.scm, /cvsroot/chicken/chicken/batch-driver.scm, /cvsroot/chicken/chicken/build.scm, /cvsroot/chicken/chicken/c-backend.scm, /cvsroot/chicken/chicken/chicken.1, /cvsroot/chicken/chicken/chicken.scm, /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/c-platform.scm, /cvsroot/chicken/chicken/Makefile.am:
- fixed bug in c-backend.scm: heap-limit settings [Thanks to Sven Hartrumpf]
- fixed bug in runtime.c: handling of -:t... was bogus [Thanks to Sven]
- the default output-file for `chicken' is now the original-filename (+ ".c") [Thanks to Panagiotis Vossos]
- syntax-case uses `##sys#void' in expansions
- removed `error-handler'
- diversified exceptions a little
- srfi-25: signals more sensible exn types
- added `condition-case'
2003-04-08 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/examples/prolog.scm, /cvsroot/chicken/chicken/examples/schelog-support.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/match-support.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/regex.scm, /cvsroot/chicken/chicken/runtime.c, /cvsroot/chicken/chicken/scheduler.scm, /cvsroot/chicken/chicken/script-utils.scm, /cvsroot/chicken/chicken/srfi-13.scm, /cvsroot/chicken/chicken/srfi-14.scm, /cvsroot/chicken/chicken/srfi-18.scm, /cvsroot/chicken/chicken/srfi-1.scm, /cvsroot/chicken/chicken/srfi-37.scm, /cvsroot/chicken/chicken/srfi-4.scm, /cvsroot/chicken/chicken/syntax-case.scm, /cvsroot/chicken/chicken/tcp.scm:
- eval.scm: `##sys#environment-is-mutable' isn't hidden anymore.
- scheduler.scm: ##sys#fetch-and-clear.
- simplified some code in tcp.scm.
- `(build-platform)' returns 'intel for ICC.
- removed `interrupts-disabled' declaration.
2003-04-03 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/configure.in, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/runtime.c:
- Changed calls to AC_INIT and AM_INIT_AUTOMAKE in configure.in to new syntax.
- Recreated autotool files using newest versions.
2003-03-31 flw <flw@ultra.callcc.org>
* /cvsroot/chicken/chicken/batch-driver.scm, /cvsroot/chicken/chicken/build.scm, /cvsroot/chicken/chicken/chicken.1, /cvsroot/chicken/chicken/chicken-setup.scm, /cvsroot/chicken/chicken/compiler.scm, /cvsroot/chicken/chicken/c-platform.scm, /cvsroot/chicken/chicken/csc.bat, /cvsroot/chicken/chicken/csc.in, /cvsroot/chicken/chicken/csi.scm, /cvsroot/chicken/chicken/doc/manual.tex, /cvsroot/chicken/chicken/doc/README, /cvsroot/chicken/chicken/doc/README.txt, /cvsroot/chicken/chicken/eval.scm, /cvsroot/chicken/chicken/highlevel-macros.scm, /cvsroot/chicken/chicken/library.scm, /cvsroot/chicken/chicken/moremacros.scm, /cvsroot/chicken/chicken/posix.scm, /cvsroot/chicken/chicken/support.scm:
- Removed syntax checks from internal `##core#...' forms.
- `require-at-runtime' setup-specification.
- `csi -setup -init' did not install core extensions.
- `seconds->string' (posix.scm) couldn't handle large (but valid) non-fixnum integers
[Thanks to Anthony Carrico]
- `visit' and `-visit' options to csi and chicken.
- `(gc #t)' didn't return number of free bytes.
- `pathname-directory-separator' was #\\ under Cygwin (is now #\/).
- Removed fixnum->flonum coercion warning in reader.
2003-03-23 njbeckford <njbeckford@ultra.callcc.org>
* /cvsroot/chicken/chicken/runtime.c:
Got rid of buffer overflow in C_get_environment_variable.
2003-03-22 njbeckford <njbeckford@ultra.callcc.org>
* /cvsroot/chicken/chicken/Makefile.am:
Undid change that made both MORE_LIBS and MORE_STATIC_LIBS be the same thing.
* /cvsroot/chicken/chicken/Makefile.am:
Made both MORE_LIBS and MORE_STATIC_LIBS be the same thing.
* /cvsroot/chicken/chicken/Makefile.am:
-all-static replaced by -static. On Solaris, need libdl.so and
libnsl.so since no libdl.a nor libnsl.a.
* /cvsroot/chicken/chicken/Makefile.am:
"make doc" and "make testsuites" now use CHICKEN=../chicken
* /cvsroot/chicken/chicken/Makefile.am:
Uses MORE_STATIC_LIBS instead of MORE_LIBS for
lib[xxx_]chicken_la_LDFLAGS so that libtool does not add "-ldl"
whenever something links with lib[xxx-]chicken.la.
* /cvsroot/chicken/chicken/chicken-config.in, /cvsroot/chicken/chicken/configure.in, /cvsroot/chicken/chicken/csc.in, /cvsroot/chicken/chicken/Makefile.am, /cvsroot/chicken/chicken/runtime.c:
configure.in: Made new variable SHLIBS which has -ldl or -ldld, which will only be used in non -all-static code.
Makefile.am: Use SHLIBS to differentiate MORE_LIBS from MORE_STATIC_LIBS.
runtime.c: Do not even try to use dl.h/dlfcn.h/dlopen/shlopen when in all-static mode.
chicken-config.in, csc.in: Use MORE_STATIC_LIBS (%morestaticlibs%) in static mode.
Package changes:
Put documentation in the canonical pkgsrc directories.
Add test target support.
Gmake is not needed anymore.
Things changed in release 1.0:
- Many bugfixes
- Declaration specifier `compress-literals' and compiler-option
`-compress-literals N'
- Chicken now compiles on OpenBSD [Thanks to Steve Elkins]
- `library' unit:
(chicken-version)
- A new version of the portable syntax-case macro system is now used, which
provides `identifier-syntax', `fluid-let-syntax' and `datum->syntax-object',
allows low-level macros (`define-macro') in combination with hygienic
macros and supports the module system used in Chez Scheme (but does not
handle separate compilation)
- The syntax `(define-syntax (name var) ...)' is allowed
- Chicken supports now SRFI-37 officially (A new library unit named `srfi-37'
has been added)
- The old module system has been removed. It was rather hackishly implemented
and didn't integrate well with the highlevel macro system
- The scheduler and the threading system have been massively overhauled
and scale a little better
- The pattern-matcher is now available in combination with the highlevel
macro system, enter `(include "match")' or `(require-for-syntax 'match)'
to make it available
- SRFI-22 script interpreters `scheme-chicken' and `scheme-chicken-hygienic'
have been added
- Compiled `#!' scheme scripts with an invocation line of `csi -script' or
`scheme-chicken'/`scheme-chicken-hygienic' automagically link with all
libraries which would normally be available under the interpreter.
- Type-checks of fixed size objects are slightly more efficient
- Extension-libraries can now be stored alternatively in a directory given
by the CHICKEN_REGISTRY environment variable or in `$HOME/.chicken-registry'
- The new library unit `tcp' provides a PLTish socket interface,
`tcp-accept' and I/O from socket ports do not block other running threads
- The new compiler/interpreter option `-strict-letrec' enables a fully R5RS
compliant expansion of `letrec'
- Chicken should now pass all tests of Scott G. Millers `r5rs_pitfalls.scm'
- Jonah Beckford ported SWIG (<http://www.swig.org>) to Chicken!
Check out a preliminary version at
<http://beckford.netfirms.com/hobbies/swig/>
- On Windows (Cygwin, Mingw32 and MSVC), CHICKEN now supports shared libraries
and dynamic loading. Many thanks to Jonah Beckford for his tremendous work!
Things changed in release 0.1082:
- Bugfixes.
- Support for SRFI's 26 (cut) and 30 (block comments).
- Peter Keller translated the manual into LaTeX. Pdf and html
documentation is available.
- Peter Keller has contributed a comprehensive testing framework
(fully R5RS compliant).
- Declaration specifiers:
export
compile-time-macros-only
- Library unit `extras':
hash-table-remove!
->string
- Library unit `posix':
sleep
- Library unit `lolevel':
pointer-offset
pointer-u8-ref pointer-u8-set!
pointer-s8-ref pointer-s8-set!
pointer-u16-ref pointer-u16-set!
pointer-s16-ref pointer-s16-set!
pointer-u32-ref pointer-u32-set!
pointer-s32-ref pointer-s32-set!
pointer-f32-ref pointer-f32-set!
pointer-f64-ref pointer-f64-set!
- Dynamic loading is now supported on older HP-UX systems that
provide `shl_load()' instead of `dlopen()'
(Thanks to Tony Garnock-Jones)
- Error messages have been (slightly) improved.
- A system for simplified packaging, building and installation
of extension-libraries (based on shared libraries) is now provided.
- New data type `locatives' allow to create pointers into arbitrary
sections of various kinds of Scheme data objects.
- So called `locations' simplify passing pointers to local or global
Scheme variables to foreign procedures.
- FFI-generated code is a little bit more compact and efficient.
- Chicken supports alternative keyword syntaxes (CL/DSSSL) via the
compiler/interpreter option `-keyword-style' and the parameter
`keyword-style'
- `define-record-printer' now handles SRFI-9 record types.
- The regex-libraries now allow the creation of precompiled regular
expressions (new procedures `regexp' and `regexp?').