~ chicken-core (master) /NEWS
Trap16.1.023- Core libraries4 - Writing to an output bytevector could write beyond allocated range,5 as the buffer wasn't resized large enough.6 - The default range used in `bytes->string' was calculated incorrectly.7 - Fixed various bugs in the implementation of the use of explicit port8 methods for reading bytevectors in custom input ports.9 - "read-buffered" has been deprecated as it interferes with UTF-8 input.10 - Printing at the REPL didn't implement output-limit handling, this has11 been added now.12 - "string-translate*" now properly checks the structure of the string13 map argument.14 - The procedures in "(scheme write)" respect any print-length limits15 imposed by the REPL.16 - Fixed a bug in "read-string" when reading from a binary port.17 - Fixed a bug in bit->boolean when given negative bignums which would18 give incorrect output or crash due to out of bounds read (reported by19 Stanislav Kljuhhin).20 - The deprecated "chicken-home" and "define-record-printer" have been21 removed.22 - Fix "=" raising an error when passed a complex number and a bignum,23 returning #f instead (reported by Stanislav Kljuhhin).24 - Fixed various potential buffer overflows in runtime system, reported25 with fixes by Stanislav Kljuhhin.26 - Fixed several bugs in input decoding from TCP and process ports,27 special thanks to Stanislav Kljuhhin for the considerable help in analyzing28 and testing the problem and it's solution.29 - Improved the behaviour of a number of arithmetic primitives when using30 mixed complex and non-complex numbers as arguments to make them31 more consistent with other Scheme implementations and return results32 that are more useful.33 - Multiplication with exact zero always produces a zero result.34 - Various improvements numerical code, in particular for complex numbers35 and inverse trigonometric functions. Contributed by Peter McGoron.36 - Added safe variant for bytevector predicates, which would otherwise37 fail when given immediate values (thanks to Massimo Nocentini).38 - Added some missing range changes in utf8/bytes->string procedures,39 handle edge case in read-line internals, added fast path for ASCII40 chars in utf comparison predicate (thank to Massimo Nocentini).41 - Fixed incorrect buffer management in "file-mkstemp" (from the42 "chicken.file.posix" module).43 - Made the "u8vector" type a proper synonym for "bytevector" (thanks to44 Diego A. Mundo).45 - Fixed argument handling for "include-path" (thanks to "siiky", Diego46 A. Mundo and Kristianl Lein-Mathisen).47 - Overhauled UTF character-class databases and predicates to Unicode 1848 and moved tables into a separate file to easy maintenance (thanks to49 Stanislav Kljuhhin).50 - Added "file-mkstemps" and "file-mkdtemp" to the "(chicken file posix)"51 module and "call-with-temporary-file" (in "(chicken file)"), contributed52 by Stanislav Kljuhhin.53 - "include" now searches relative to the including source file, if a54 relative path is given, to make it more portable across existing55 Scheme implementations (suggested by "Retropikzel"). "include-relative"56 still exists but has been deprecated.57 - Added "#u8{...}" notation for reading hex-encoded bytevectors,58 bytevectors inside bytevector literals are spliced, allowing for various59 ways to construct complex byte sequences (thanks to Kristian60 Lein-Mathisen).61 - Procedures expecting specifically input or output ports now check62 whether their port argument is of the correct direction. Previously63 e.g. close-input-port would silently ignore output port arguments64 (thanks to Étienne Pflieger).65 - Deprecated "exit" and "emergency-exit" from the "(chicken base)" module,66 please use the corresponding operations from "(scheme process-context)".67 - Corrected use of "make-output-port" in "make-broadcast-port", which68 used an obsolete calling convention.6970- Syntax expander71 - Fixed bug in handling of "export-all" library declaration which caused72 the expansion of "define-library" to fail with an error.73 - Disabled confusing warnings about indirect exports when using74 "define-library".7576- Tools77 - Added new global egg property "custom-build" which allows completely78 overriding the build instructions for an egg.7980- Compiler81 - Added missing option "-merge-reusable-closures" at optimization level82 2, making this actually match the documentation.83 - Fixed a bug in the "lfa2" pass that could result in exponential84 compile times due to redundant node walking.85 - Fix misspelled primitives in extended bindings list for compiler86 rewrites, added rewrites for R7RS bytevector operations (thanks87 to Massimo Nocentini).88896.0.09091- Core libraries92 - All modules specified by the R7RS small language are now available in93 the core system.94 - The internal string representation has been converted to UTF-8,95 making strings fully UNICODE capable.96 - The (chicken blob) module has been replaced with (chicken bytevector),97 containing R7RS compatible bytevector operations. Bytevectors are98 now fully equivalent to SRFI-4 u8vectors.99 - The read-syntax for blobs (`#${...}') has been removed. Bytevectors100 can be read using `#u8(...)' or `#u8"..."'.101 - `char-name' now allows removing a named character definition.102 - `open-input-file' and `open-output-file' accept a file encoding,103 supported are currently UTF-8 (the default) and Latin-1 (ISO-8859-1).104 - `file-read', `file-write', 'set-pseudo-random-seed!' and `random-bytes'105 require a bytevector argument and do not accept strings.106 - `process-fork', `process-run', `process' and `process*' return now107 a process-object instead of a PID, use process record accessors to108 retrieve exit-status and input/output ports. `process-wait' and109 `process-signal' accept either a PID or a process object as110 argument.111 - File-locking operations in the (chicken file posix) module now use the112 flock(2) system call, operator over whole files, are thread-safe and113 use a simpler interface. `file-test-lock' has been removed.114 - `read-u8vector', `read-u8vector!' and `write-u8vector' have been115 removed, use the equivalent operations from the (chicken io)116 module instead.117 - Added `read-bytevector', `read-bytevector!' and `write-bytevector'118 to the (chicken io) module.119 - Removed `set-port-name!', use the SRFI-17 setter for `port-name'120 instead.121 - Added `port-encoding' to the (chicken port) module.122 - `make-input-port' and `make-output-port' take their optional123 port methods as keyword arguments now.124 - Added `make-binary-input-port' and `make-binary-output-port'.125 - Locatives on strings are now indexed by code-point, not byte.126 - `symbol-escape' now also controls whether symbols are printed in127 escaped ("|...|") mode or not.128 - Symbol printing is stricter in deciding when symbols should be escaped129 or not.130 - The deprecated "current-milliseconds" has been removed.131 - The following primitives have been moved from (chicken base)132 to R7RS modules:133 - `exact-integer?`, `exact-integer-sqrt?', `vector-copy!',134 `make-parameter', `call/cc', `open-input-string',135 `open-output-string', `get-output-string', `input-port-open?',136 `output-port-open?', `parameterize' and `port?' moved from the137 (chicken base) to the (scheme base) module.138 - `case-lambda' moved from (chicken base) to (scheme case-lambda).139 - `features' moved from (chicken platform) to (scheme base).140 - `write-string' moved from (chicken io) to (scheme base) and its141 signature changed to the R7RS one.142 - `define-record-type' moved to (scheme base) and is generative,143 to be compliant with R7RS.144 - `syntax-error' has been removed from (chicken syntax) and is now a145 macro and part of (scheme base).146 - `record-instance?' and `make-record-instance' accept non-symbolic147 type specifiers to support generative record types.148 - The new (chicken number-vector) module now provides a superset of149 SRFI-4, including 64 and 128-bit complex number vectors, the `srfi-4'150 module is still available but exports only those procedures as are151 specified in SRFI-4.152 - The second (optional) parameter for `load' and `load-relative' may be153 either an environment or an evaluation procedure.154 - The module aliases `srfi-0', `srfi-6', `srfi-9', `srfi-11', `srfi-23',155 `srfi-39' and `srfi-98' have been removed (all of these are covered by156 R7RS).157 - The modules `r4rs', `r5rs', `r4rs-null' and `r5rs-null' have been158 renamed to `(scheme XXX)'.159 - Hexadecimal escape sequences in strings and extended symbols must be160 terminated by the `;' character, following R7RS.161 - The `#ci'/`#cs' read syntaxes have been removed, use162 `#![no-]fold-case'163 markers instead.164 - `include' and `include-relative' accept multiple filenames,165 `include-ci' has been added.166 - Added `include-path' to (chicken platform) module.167 - Added `number-vector-data' to (chicken memory representation) module.168 - `define-library' has been extended to support the `export-all'169 specification.170 - The platform-identifier "mingw32" has been renamed to "mingw".171 - Library procedures that return paths now always convert them to172 contain forward slashes, 'make-pathname' always uses "/" for path173 separation.174 - Added `expand1' to (chicken syntax) module for expanding a macro175 only once, also added the ",x1" command to "csi" for this.176 - Added the (chicken version) module.177 - `delete-file*' and `delete-file' now behave consistently with178 broken symlinks.179 - `number->string' now accepts bases up to 36, where before it only accepted180 bases up to 16 (thanks to Diego A. Mundo)181 - `string->number' now handles ambiguous cases involving the character "i"182 in bases higher than 18 more consistently.183 - `make-rectangular' returns a complex number if the imaginary part184 is inexact zero.185 - `string->number' and the reader accept and handle correctly complex186 numbers with a negative inexact zero as the imaginary part.187 - `imag-part' returns exact zero when given a non-complex number.188 - `max' and `min' ignore nan values when given any non-nan argument.189190- Syntax expander191 - `syntax-rules' attempts to better support tail patterns with ellipses192 (#1736).193194- FFI changes195 - Strings and symbols passed to foreign code are not copied, they are196 passed directly, any mutations done by external code will be visible on the197 Scheme side.198 - Complex numbers, C structs and unions can now be passed directly as199 arguments and returned as results when interfacing to C code.200201- Tools202 - The compiler and interpreter option `-r5rs-syntax' has been renamed to203 `-r7rs-syntax' and does not disable extended symbol syntax ("|...|")204 anymore.205 - The "feathers" debugger has been removed from the core and is now206 available as an egg.207 - The `set-describer!' procedure has been removed from the `csi' module.208 - The "csc" program now accepts tool flags (e.g. -compiler, -cc etc)209 which have paths with spaces in them without requiring the user to210 double-quote them. As a consequence, it no longer accepts programs211 with space separated flags for tool arguments (e.g.212 "csc -cc 'gcc -debug'" etc). If this is desired, write a short213 shell script which calls the tool with your flags.214 - `chicken-install' now locks the cache directory during215 egg-installation.216 - Added component type `installed-c-object' to egg format.217 - The `csc-options' and `link-options' configuration clauses in egg218 specifications now allow `custom-config' forms to produce arbitrary219 computed compiler and linker options.220 - Added scripts/smoke-test.sh to automate basic testing of chicken-core221222- Compiler223 - Added the `-merge-reusable-closures' and `-merge-shareable-closures'224 options that enable closure reuse and sharing to reduce memory225 allocations. These options are enabled automatically by optimization226 levels 1 (reuse) and 2 (sharing), respectively.227228- Build system229 - A "configure" script is now used to prepare the sources for building230 everything. This simplifies the use of "make", allows more elaborate231 platform sanity checks and follows conventions.232 - On Windows the minimal "mingw" build is not supported anymore, a POSIX233 shell and the basic sete of command-line utilities is now required234 (formerly the "mingw-msys" build). Chris Wellons "w64devkit" is now235 the recommended toolchain. The platform identifier "mingw-msys" has236 been renamed to "mingw".237 - The system can now be built with "zig cc" as a C compiler/linker238 replacement.2392405.4.0241242- Security fixes243 - CVE-2022-45145: Neutralize possible escape characters in egg metadata244 to avoid arbitrary OS command injection during egg installation,245 reported by Vasilij Schneidermann who also provided the necessary246 patches to mitigate this problem.247 - The runtime option "-:b" has been removed, as it was deemed too248 insecure to be able to drop to a REPL from the CLI of any program.249 - Runtime option processing has been hardened: processing now stops on250 the first non-runtime option or after "-:", whichever comes first.251252- Core libraries253 - Fix type declarations for `file-select` (reported by Anton Idukov).254 - Change `create-temporary-{file,directory}` fallback code on Windows to255 use %USERPROFILE%/AppData/Local/Temp if that environment variable is set.256 - Added new thread-safe API for POSIX signals ("make-signal-handler",257 "signal-ignore" and "signal-default") and deprecated the existing one.258 - Added "make-finalizer" to execute finalizers in a thread-safe259 manner.260 - Added weak pairs to (chicken base), with similar behaviour to Chez Scheme.261 - Added "locative-index", kindly contributed by John Croisant.262 - Added "fp*+" (fused multiply-add) to "chicken.flonum" module263 (suggested by Christian Himpe).264 - Added flonum-specific hyperbolic functions and their inverse to265 "chicken.flonum" module (suggested by Christian Himpe).266 - The `process-execute` procedure now sets argv[0] to the unmodified267 filename. Previously, the directory part would be stripped.268 - Added support for embedded strings and characters in SRFI-4 vector269 literals.270 - read-with-source-info is now documented and officially supported,271 from the (chicken syntax) module. read/source-info is still exported272 from the undocumented internal (chicken compiler support) module, but273 using it from there is deprecated.274 - Added "export/rename" to (chicken module) for renaming identifiers on275 export.276 - The values of the TMPDIR, TMP and TEMP environment variables are no277 longer memoized (fixes #1830).278 - Condition objects produced by procedures that change errno now have279 an `errno' property.280 - Deprecated "chicken-home" and added "include-path" in the281 chicken.platform module.282 - Irregex has been updated to upstream 0.9.11 plus an additional fix283 for sre->string. The 0.9.11 release fixes a few problems related to284 utf-8 handling (which should not affect CHICKEN) and expands the285 definition for the 'whitespace character set to include vertical tab,286 carriage return and form feed.287288- Tools289 - Fix scripts generated by `chicken-install` on Windows to not quote `>>`290 when echoing into files which would result in empty egg-info files291 (reported and fixed by Jani Hakala).292 - The -R option for csi and csc now accepts list-notation like293 e.g. (srfi 1). Fixes #1809, reported by Wolfgang Corcoran-Mathe.294 - Fix shell quotation in options passed from csc to other tools.295 Fixes #1302, reported by Xin Wang.296 - The -prelude and -postlude options for csc work properly again.297 - chicken-install now retrieves the latest egg version when298 instructed to install an egg that's already installed (#1802).299 - When `location' is specified in setup.defaults, chicken-install300 will consider two location layouts when looking for eggs:301 <location>/<egg> and <location>/<egg>/<version>.302 - chicken-install: Fix #1684 (programs that specify303 component-dependencies should build-depend on their import304 libraries).305 - chicken-install now caches eggs installed from local locations.306 - chicken-install now accepts the -location command line option307 (short: -l) to specify local directories where to get egg sources308 from.309 - chicken-install now gives a warning on unexpected properties (#1492).310 - chicken-install now uses a directory specific for cache metadata311 (VERSION, STATUS and TIMESTAMP files) to avoid collisions with source312 files on case-insensitive file systems like on MacOS (#1753, reported313 by Kon Lovett).314315- Syntax expander316 - When passing a module as an environment to eval, correctly resolve317 identifiers in macro expansions (#1295 reported by Caolan McMahon).318 - Internal definitions honor rebindings of core special forms (#1132).319 - Globally defining an identifier previously bound to a macro now fully320 shadows the macro (#1166, reported by Michele La Monaca).321322- Compiler323 - When emitting types files, the output list is now sorted, to ensure324 deterministic build output (fixes #1783, reported by "ss2").325326- Build system327 - Fix compiler warnings about zero-sized `memset` (reported by Claude Marinier).328 - Disable broken test-create-temporary-file on Windows (reported by "jjhoo").329 - Drop use of XCODE_... environment variables on MacOS.330 - Add build directory to rpath on MacOS so that the test suite picks up correct331 libchicken, even if CHICKEN is already installed (thanks to Christian Himpe).332 - Default "cc" on BSD systems for building CHICKEN to avoid ABI problems333 when linking with C++ code.334335- Runtime system336 - Make line numbers available for error output and during syntax expansion337 in the interpreter as well as the compiler.3383395.3.0340341- Core libraries342 - In (chicken process-context posix), the setters for current-user-id,343 current-effective-user-id and current-group-id now check that the344 new user/group value is a fixnum instead of blindly passing it on345 to the C implementation (which would cause bogus user ids to be set).346 Fixes #1787, thanks to Christopher Brannon.347 - The srfi-17 module now exports the `getter-with-setter` and `setter`348 procedures, not just the set! macro (thanks to Lassi Kortela)349 - Fix hang in chicken-install -update-db on Windows (thanks to Mark350 Fisher for reporting and Jani Hakala for debugging and patch).351 - Fixed an inadvertant error during error reporting in the `numerator`352 and `denominator` procedures when passed non-finite flonums (#1730).353 - Fixed a bug where optimisations for `irregex-match?` would cause354 runtime errors due to the inlined specialisations not being355 fully-expanded (see #1690).356 - Irregex has been updated to upstream 0.9.10, which fixes behaviour357 of irregex-replace/all with positive lookbehind so all matches are358 replaced instead of only the first (reported by Kay Rhodes), and359 a regression regarding replacing empty matches which was introduced360 by the fixes in 0.9.7 (reported by Sandra Snan). Also, the361 http-url shorthand now allows any top-level domain and the old362 "top-level-domain" now also supports "edu" (fixed by Sandra Snan).363 Also, a problem was fixed with capturing groups inside a kleene364 star, which could sometimes return incorrect parts of the match.365 Finally, "bol" handling was fixed to handle newlines consistently366 so that multiple matches don't overlap (reported by Sandra Snan).367 - current-milliseconds has been deprecated in favor of the name368 current-process-milliseconds, to avoid confusion due to naming369 of current-milliseconds versus current-seconds, which do something370 quite different. Also, its definition has been tweaked to371 guarantee that it returns the time since process startup. On372 Windows, it will now return sane values after 24 days of uptime.373 On UNIX, the values returned will be precise to the millisecond374 instead of rounded down to the nearest second at startup (which375 would result in erratic startup times).376 - The default mode for files created by `file-open' has been changed377 to 0666 (plus whatever change the effective umask applies), rather378 than 0744 (see #1698).379 - Fixed type database entry for "log" with second arg (fixes #1725).380 - Made topological-sort behave better when dependency target is listed381 multiple times by concatenating dependencies (fixes #1185).382383- Module system384 - Reexported macros now work when the reexporting module redefines385 identifiers from the original (fixes #1757, reported by Sandra Snan).386 - When using "except" in "import" to omit reexported macros,387 they are really not imported (#1771, reported by Sandra Snan).388389- Runtime system390 - Sleeping primordial thread doesn't forget mutations made to391 parameters in interrupt handlers anymore. (See #1638. Fix392 contributed by Sebastien Marie)393 - A feature corresponding to the word size is available394 regardless of the word size (#1693)395 - The default maximum heap size on 64-bit platforms is now the396 theoretical maximum addressable memory size (#1675). Use -:m397 if you would like to override this at run-time.398 - Deprecated C_(a_i_current_)milliseconds in favor of399 C_(a_i_)current_process_milliseconds to match the Scheme-level400 deprecation of current-milliseconds.401 - Officially deprecated C_pair() in favor of C_a_pair(); it has402 been deprecated for years.403 - At program cleanup, finalizers are only forced when the live404 finalizer count is non-zero405 - The symbol `srfi-87` has been added to the list of built-in406 feature identifiers.407 - Garbage collection algorithm has been changed to reduce thrashing408 when heap is almost full, by growing the heap sooner. A new -:hf409 option was added to tweak when heap growth should occur.410 - Added `-:R' runtime option to initialize rand() state411 deterministically (should help with #1650 and benchmarking).412413- Compiler414 - Statically linked programs using built-in libraries are supported415 again (fixes #1788, a regression from 5.2.0).416 - Avoid re-using argvector when inline rest operations are being417 used in CPS calls (#1703, thanks to Jakob L. Keuze).418 - An `emit-types-file` declaration has been added, which corresponds419 to the compiler flag of the same name (#1644, thanks to Marco Maggi420 for the suggestion).421 - Fixed a bug caused by a bad interaction between two optimizations:422 argvector rest ops would be applied even if a procedure already got423 its rest arg consed at the call site (#1756, thanks to Sandra Snan).424425- Build system426 - Fix build with tcc.427 - Fix a few tests on Windows so the suite passes once again.428 - Auto-configure at build time on most platforms. Cross-compilation429 still requires PLATFORM to be set, and it can still be provided430 manually, but it is no longer required in the common case.431 - Fix Linux to MingW cross-compilation (#1768, thanks to Théo Cavignac)432 - The `clean' target for make now also removes build configuration files.433 - The `distclean' target for make has been removed (now `clean' does what434 `distclean' used to do).435436- Tools437 - Fix a problem with egg installation scripts on Windows, where the438 platform was not correctly identified, depending on the shell used439 during installation of the core system (thanks again to Mark Fisher440 for reporting and helping in finding the culprit).441 - Fixed a bug in chicken-install (#1744) that would cause442 `Error: (string->number) bad argument type: #!eof` in some cases.443 - If chicken-install has a program prefix/suffix, it now writes to a444 cache directory matching its program name (#1713, thanks to Alice Maz)445 - Fixed bug in chicken-install regarding variable quotation on UNIX-like446 systems which prevented installation into paths with spaces (#1685).447 - Fixed a similar bug in chicken-install for paths with spaces on mingw448 and mingw-msys (#1727, thanks to Josh Helzer for reporting and Vasilij449 Schneidermann for the patch).450451- Module system452 - Fixed a memory leak when calling (import) multiple times in a row453 on the same module (#1772; reported by "plugd" on IRC).4544555.2.0456457- Core libraries458 - Fix `memory-statistics` by returning semi-space bytes and used459 semi-space bytes like the documentation says. Old implementation460 returned full-heap size and (full-heap - used-semi-space).461 - for-each and map now behave consistently in compiled and interpreted462 mode, like in SRFI-1. They now stop when the shortest list is463 exhausted instead of raising an exception (fixes #1422).464 - There is now a srfi-88 module which contains just the three465 procedures from the (chicken keyword) module defined by the SRFI.466 - A feature identifier named "srfi-88" is now registered.467 - The procedures `record-printer` and `set-record-printer!` and a468 corresponding SRFI-17 setter have been added. These deprecate469 `define-record-printer` which isn't a "real" definition (see #1294).470 - On Windows, `decompose-directory` no longer crashes when a drive471 letter is present in the supplied path string.472 - irregex-replace[/all] have been fixed for empty matches, so they473 will no longer drop characters and ignore the replacement (#1661).474 - Irregex has been updated to upstream 0.9.7, which also improves475 how empty matches are treated in irregex-fold and irregex-split.476477- Runtime system478 - Quoted empty keywords like ||: and :|| are now read like prescribed479 by SRFI-88 in the corresponding keyword mode. Symbols containing480 quoted empty prefixes or suffixes like ||:abc and abc:|| will be481 read correctly as symbols now (fixes #1625, thanks to Andy Bennett).482 - IEEE floating point negative zero is now properly handled: it can483 be read, written and distinguished by eqv? and equal?, but not =484 (fixes #1627, thanks to John Cowan).485 - ##sys#check-exact and its C implementations C_i_check_exact and486 C_i_check_exact_2 have been deprecated (see also #1631).487 - When garbage collector is manually invoked from a finalizer, raise488 an error instead of hanging forever (fixes #1586).489 - define-record-type will now give an error if the constructor490 definition refers to field that's not listed elsewhere (see #1633)491 - Added new -:hu option to set the memory usage low watermark492 percentage at which the heap should be shrunk, and changed the493 calculation to actually reflect this (see #1379).494495- Compiler496 - Fixed a bug in lfa2 pass which caused "if" or "cond" nodes to be497 incorrectly unboxed if the "else" branch had a flonum result type498 (#1624, thanks to Sven Hartrumpf)499 - Inline files no longer refer to unexported foreign stub functions500 (fixes #1440, thanks to "megane").501 - In some cases, rest argument lists do not need to be reified, which502 should make using optional arguments and case-lambda faster (#1623).503 - Values from foreign types which have an argument or return value504 converter are no longer inferred to have the Scheme type which505 corresponds to the raw foreign type, which was incorrect (#1649).506507- Module system508 - Trying to export a foreign variable, define-inlined procedure or509 define-constant variable gives a friendly error instead of saying510 the variable doesn't exist (fixes #1346).511 - When modules are registered, they no longer pollute the global512 environment with imports made in that module (fixes #1548)513514- Tools515 - The new "-module-registration" options causes module registration516 code to always be included in the program, even when it has also517 been emitted as a separate file (for example with "-J").518 - chicken-install now correctly checks server response code to avoid519 interpreting error response bodies (like 404, 500) as Scheme code.520 - chicken-install now follows HTTP redirects when downloading eggs.521 - chicken-install will now change to the correct drive before522 attempting to change to the egg directory (fixes #1647).5235245255.1.0526527- Core libraries528 - Symbols ending or starting with a colon are now always pipe-quoted529 when written by `write` to ensure they can be read back with a530 different keyword-style setting.531 - Read-write invariance of special symbols starting with #! other532 than #!key, #!rest or #!optional is now preserved (#1572).533 - When using (set-file-position!) on a port, its EOF status will now534 be reset.535 - In (chicken file posix), the values of perm/irgrp, perm/iwgrp,536 perm/ixgrp, perm/iroth, perm/iwoth and perm/ixoth are now correctly537 defined (they were all for "usr"; #1602, thanks to Eric Hoffman).538 - In (chicken file posix), `file-truncate` now accepts also accepts539 port objects, for consistency with other file procedures.540 All such procedures from (chicken file posix) now have the correct541 types in types.db (fixes #1609, thanks to Robert Jensen).542 - Add the system-config-directory and system-cache-directory procedures543 in the chicken.platform module. These procedures follow the XDG544 specification and also give sensible results on Windows.545 - Fix get-environment from (chicken process-context) to raise an546 error when passed #f instead of segfaulting.547 - Qualified symbols (##foo#bar style) are no longer encoded by a548 byte prefix inside the symbol name. This ensures read-write549 invariance of symbols which start with a low-byte character550 (fixes #1077, except for keywords, which start with NUL bytes).551 - Fix a missing export (list->s64vector) in SRFI-4.552553- Runtime system554 - Keywords are now distinct types; they are not a subtype of symbols.555 - Use arc4random on FreeBSD (thanks to Tobias Kortkamp and gahr)556 - Removed the unused, undocumented (and incorrect!) C functions557 C_delete_symbol_table and C_set_symbol_table.558 - Continuations which discard additional values beyond the first no559 longer accept multiple values via direct invocation after being560 captured through `call/cc`, only via `values` (revert of #1390,561 due to #1601)562 - SRFI-4 vector predicates, reference, set and length procedures563 should now be faster in tight loops as they're inlineable (#757).564 - Keywords are now interned in a separate keyword table, not in the565 standard symbol table. This brings full read-write invariance566 for symbols (they can now also start with NUL bytes). Keywords567 no longer have plists. Fixes #1576.568 - Increased the "binary compatibility version" to 11.569570- Compiler571 - Restored optimized implementations of =, +, -, /, * and quotient in572 fixnum-arithmetic mode (fixes #1604 mostly; thanks to "chickendan").573 - Added an optimization pass for reducing the amount of boxing of574 intermediate floating point values, enabled by the "-lfa2" compiler575 option.576 - The "lfa2" pass is now enabled at optimization levels 2 or higher.577578- Module system579 - When you try to import the module you are currently defining into580 itself, an error will be raised. This prevents an infinite loop in581 the compiler when later trying to import that same module (fixes582 #1506, thanks to Kristian Lein-Mathisen).583584- Foreign function interface585 - Improved hygiene in FFI macro expansions, which means you don't586 have to import "scheme" or "(chicken base)" for them to work.587588- Type system589 - It is now possible to quote free variables in type declarations,590 which acts as shorthand for `forall' (thanks to "megane")591592- Tools593 - csi now uses (system-config-directory) to find csirc and falls back to594 $HOME/.csirc when needed.595 - chicken-install now uses (system-config-directory) to find a user596 defined setup.defaults file ; it also uses (system-cache-directory)597 for its egg cache directory when the CHICKEN_EGG_CACHE environment598 variable is not defined.599600- Egg specifications601 - Allows "cond-expand" and "error" forms in egg specification files.602 - Add "c-object" and "object" properties to link separately compiled603 C objects into CHICKEN code.6046056065.0.0607608- Runtime system609 - Added support for the full numeric tower, including various new610 procedures taken from the "numbers" egg. All calculations will611 now return exact numbers where possible, so code relying on flonums612 being returned may need to be changed if rational numbers do not613 provide the desired performance.614 - Port directionality has been generalized from a simple input/output615 flag to a bitmap, to allow for multidirectional ports.616 - Weak symbol GC is faster, simpler, and can now collect all617 unreferenced symbols instead of a maximum of 997 per major GC.618 - The -:w option has been removed; symbols are now always collected.619 - Increased the "binary compatibility version" to 9.620 - Continuations which discard additional values beyond the first now621 also accept multiple values via direct invocation after being622 captured through `call/cc`, not just via `values` (#1390)623 - Removed the deprecated C_locative_ref and C_mutate2 C functions.624 - The trace buffer no longer holds on to thread objects, allowing them to625 be garbage collected sooner (#1356, thanks to Kristian Lein-Mathisen)626 - On Cygwin and MinGW, the "build-platform" now corresponds to the627 tool chain used (gnu, clang, unknown) like on *nix, while the628 software-version is now "cygwin" or "mingw32" instead of "unknown".629 This also means the features list will now contain the tool chain630 on all platforms.631 - Symbols starting with #% are no longer treated specially and need632 to be quoted with pipes. This makes the "%" sign available for use633 in custom/user-defined sharp-sign read syntax.634635- Compiler636 - Fixed an off by one allocation problem in generated C code for (list ...).637 - The "-scrutinize" compiler option has been removed.638 - The "-module" compiler option (aliased as "-m") now expects a module name.639 - The generated C output of the compiler is now deterministic: it640 will be bit-for-bit identical when compiling the same Scheme file641 with the same version of the compiler.642 - the "-consult-type-file" and "-emit-type-file" options have been renamed643 to "-consult-types-file" and "-emit-types-file", respectively.644645- Tools646 - The new "-link" option to csc allows linking with objects from extensions.647 - The new "-libdir" option to csc allows overriding the runtime library648 directory.649 - The ambiguous "-l<libname>" option for csc has been removed (#1193).650 - Removed deprecated "-n" shorthand for "-emit-inline-file" from csc.651 - Removed "chicken-bug" tool.652653- Core libraries654 - Removed support for memory-mapped files (posix), queues655 (data-structures), binary-search (data-structures), scan-input-lines656 (utils), group-information (posix) object-eviction (lolevel), and657 compile-file (utils). These are now available as eggs.658 - Removed the srfi-1, srfi-13, srfi-14, srfi-18, srfi-69, and utils659 units. These are now available as eggs.660 - Added the `executable-pathname` procedure for retrieving a path to661 the currently-running executable.662 - Removed all support for SWIG.663 - Removed interrupts-enabled declaration specifier.664 - `sleep` now suspends the current thread when threading is enabled,665 otherwise it sleeps the process. The new `process-sleep` procedure666 in unit posix can be used to sleep the process unconditionally.667 - `with-error-output-to-port' from the ports module has been renamed668 to the more common `with-error-to-port', and `with-error-to-string'669 has been added for completeness (thanks to Michael Silver).670 - A new `make-bidirectional-port' procedure has been added to the671 ports unit that will combine separate input- and output- ports into672 a single bidirectional port.673 - New `input-port-open?` and `output-port-open?` procedures have been674 added for testing whether a port is open in a specific direction.675 - An `include-relative` form has been added to the (chicken base) module.676 This works like `load-relative` but for textual inclusion.677 - Keywords are now always written in "portable" style by WRITE, so678 that the reader's keyword style doesn't need to match the writer's.679 - The environment variable `CHICKEN_PREFIX` has been removed.680 - Added the `glob->sre` procedure to the irregex library.681 - Removed the `get-host-name' and `system-information' procedures.682 These are available in the "system-information" egg.683 - Removed the `eval-when`, `select` and `ensure` macros. These are684 available in the "miscmacros" egg.685 - Removed the require-extension-for-syntax macro.686 - Renamed bit-set? to bit->boolean because of swapped argument order687 with respect to SRFI-33 and SRFI-60, which was confusing (fixes688 #1385, thanks to Lemonboy).689 - file-{read,write,execute}-access will now raise an exception when690 the file doesn't exist or some other non-access related problem is691 detected (fixes #1386, thanks to Vasilij Schneidermann).692 - `change-file-mode` was renamed to set-file-permissions! and SRFI-17693 generalized set! support has been added for `file-permissions`.694 This procedure now also accepts a file descriptor or a port.695 - `file-permissions` now returns one value: the permission integer.696 - `read-file` has been renamed to `read-list`.697 - `read-all` was dropped, as `read-string` with #f as its NUM argument698 is equivalent.699 - `read-lines` and `read-all` no longer accept a string naming a file,700 only ports.701 - The procedures for random numbers have been reimplemented;702 access to system-specific entropy is available, together with a reasonably703 good pseudo random number generator (WELL512).704 - `glob` now returns an empty list for non-existent or inaccessible705 directories, instead of erroring out.706 - `file-copy' and `file-move' have been renamed to `copy-file' and707 `move-file', for consistency with `delete-file' and `rename-file'.708 - `rename-file' now refuses to overwrite an existing file unless an709 optional "clobber" argument is provided.710 - The `r4rs` module no longer exports `eval`, which was not in R4RS.711 - `process`, `process*` and `process-execute` now expect lists of the form712 (("NAME" . "VALUE") ...) instead of the previous (("NAME=VALUE") ...)713 as their environment argument.714 - `repository-path` is now a parameter containing a list of strings instead715 of a string, as the search path for libraries can now contain multiple716 directories.717 - `file-read-access?`, `file-write-access?` and `file-execute-access?` have718 been renamed `file-readable?`, `file-writable?` and `file-executable?`719 into the (chicken file) module.720721- Module system722 - The compiler has been modularised, for improved namespacing. This723 means names from the compiler should not leak out into the compiled724 program's (macro) namespace anymore.725 - The core units have been converted to modules under the "chicken"726 namespace.727 - Added support for list-style library names.728 - The "use" and "use-for-syntax" special forms have been removed729 in favor of "import" and "import-for-syntax" to reduce confusion.730 - Module imports are now lexically scoped: identifiers provided by731 an (import ...) inside (let ...) won't be visible outside that let.732 - Modules implementing an interface can now correctly export extra733 identifiers (bug reported by Martin Schneeweis, fix by "megane").734735- Syntax expander736 - Removed support for (define-syntax (foo e r c) ...), which was737 undocumented and not officially supported anyway.738 - Removed support for normal "lambda" forms as syntax transformers,739 which has been deprecated since 4.8.0.740 - define and friends are now aggressively rejected in "expression741 contexts" (i.e., anywhere but toplevel or as internal defines).742 - define-record and define-record-type now create record types743 which are tagged with the module in which they're defined, so744 predicates no longer return #t for records with the same tag745 defined in another module. This tag is now also available under746 an identifier that matches the record type name (fixes #1342).747 - `include` now splices included expressions in the context in which748 the inclusion appears and does not treat the expressions as toplevel749 expressions by default.750751- Eggs management752 - Egg-installation and building has been completely overhauled.753 - .meta + .setup files have been merged into a single declarative754 ".egg" file.755 - More static checks for egg descriptions, simplified generation756 of OS-specific build + install commands that is (hopefully)757 more practical for package maintainers.758 - Egg sources are cached locally to reduce download and rebuild759 times.760 - Dropped many obscure or unimportant options and features from761 `chicken-install`: (`-keep-installed`, `-reinstall`, `-proxy`,762 `-no-install`, `-username`, `-password`, `-init`, `-deploy`,763 `-keep-going`, `-scan`, `-csi`, `-show-depends`, `-show-foreign-depends`,764 `-prefix`.765 - Added new "-from-list" option to chicken-install.766 - Eggs can now be installed and located in multiple directories,767 using the `CHICKEN_REPOSITORY_PATH` +768 `CHICKEN_INSTALL_REPOSITORY`769 environment variables.770 - Static compilation of eggs is now fully supported and static771 versions of compiled eggs are available by default.772 - In a statically built chicken, the egg-tools ("chicken-install", "...-status",773 "...-uninstall") are still available, but only support static compilation774 of eggs.775776- Foreign function interface777 - The foreign type specifier "ssize_t" is now accepted, and "size_t"778 arguments now only accept positive integers. Return values of779 type size_t are no longer truncated on 32-bit platforms.7807817824.13.0783784- Security fixes785 - CVE-2017-6949: Remove unchecked malloc() call in SRFI-4 constructors786 when allocating in non-GC memory, resulting in potential 1-word787 buffer overrun and/or segfault (thanks to Lemonboy).788 - CVE-2017-9334: `length' no longer crashes on improper lists (fixes789 #1375, thanks to "megane").790 - CVE-2017-11343: The randomization factor of the symbol table was791 set before the random seed was set, causing it to have a fixed value792 on many platforms.793794- Core Libraries795 - Unit "posix": If file-lock, file-lock/blocking or file-unlock are796 interrupted by a signal, we now retry (thanks to Joerg Wittenberger).797 - char-ready? on string ports now also returns #t at EOF, as per R5RS;798 in other words, it always returns #t (thanks to Moritz Heidkamp)799 - Unit srfi-4: Fixed typo that broke SRFI-17 generalised set! syntax800 on s8vectors (thanks to Kristian Lein-Mathisen).801 - Large literals no longer crash with "invalid encoded numeric literal"802 on mingw-64 (#1344, thanks to Lemonboy).803 - Unit irregex: Fix bug that prevented multibyte UTF-8 character sets804 from being matched correctly (Thanks to Lemonboy and Chunyang Xu).805806- Runtime system:807 - The profiler no longer uses malloc from a signal handler which may808 cause deadlocks (#1414, thanks to Lemonboy).809 - The scheduler no longer indirectly hangs on to the old thread810 when switching to a new one, which caused excessive memory811 consumption (#1367, thanks to "megane").812 - C++ programs no longer fail with a symbol lookup error when813 compiled with debugger support (-d3 or -debug-info).814815- Syntax expander816 - Renaming an identifier twice no longer results in an undo of the817 rename (fixes #1362, thanks to "megane").818819- Build system820 - Fixed broken compilation on NetBSD, due to missing _NETBSD_SOURCE.821 - Fixed compilation on DragonflyBSD due to no feature macro support822 in its standard C library (thanks to Markus Pfeiffer).823824- Compiler825 - The scrutinizer no longer uses 'fixnum as the type for fixnums826 that might not fit into a fixnum on 32-bit architectures.827828- Foreign function interface829 - Correctly calculate memory requirements of Scheme objects produced830 from foreign types with "const" qualifiers, avoiding memory831 corruption (#1424, thanks to Vasilij Schneidermann and Lemonboy)832 - Do not read beyond temporary stack buffer, which could lead to833 a crash when returning from a foreign callback (#1428).8348354.12.0836837- Security fixes838 - CVE-2016-6830: Fix buffer overrun due to excessively long argument839 or environment lists in process-execute and process-spawn (#1308).840 This also removes unnecessary limitations on the length of841 these lists (thanks to Vasilij Schneidermann).842 - CVE-2016-6831: Fix memory leak in process-execute and843 process-spawn. If, during argument and environment list844 processing, a list item isn't a string, an exception is thrown,845 in which case previously malloc()ed strings weren't freed.846 - CVE-2016-9954: Irregex has been updated to 0.9.6, which fixes847 an exponential explosion in compilation of nested "+" patterns.848849- Compiler:850 - define-constant now correctly keeps symbol values quoted.851 - Warnings are now emitted when using vector-{ref,set!} or one852 of take, drop, list-ref or list-tail with an out of range index853 for vectors and proper lists of a definitely known length.854 - The scrutinizer will no longer drop knowledge of the length of a855 vector. It still drops types of its contents (which may be mutated).856 - Fixed incorrect argvector restoration after GC in directly857 recursive functions (#1317).858 - "Direct" procedure invocations now also maintain debug info (#894).859860- Syntax expander861 - DSSSL lambda lists have improved hygiene, so they don't need862 the chicken or scheme modules to be imported in full (#806).863 - The let-optionals* macro no longer needs "quote", "car" and "cdr"864 to be imported and bound to their default values (#806).865866- Runtime system:867 - C_locative_ref has been deprecated in favor of C_a_i_locative_ref,868 which is faster because it is inlined (#1260, thanks to Kooda).869 - The default error handler now truncates very long condition870 messages (thanks to Lemonboy).871 - Weak symbol GC (-:w) no longer drops random symbols (#1173).872 - The number of arguments to procedures, both via "apply" and direct873 invocation, are now limited only by the C stack size (#1098).874 - "time" macro now shows peak memory usage (#1318, thanks to Kooda).875 - Avoid crashes in ffi callbacks after GC (#1337, thanks to cosarara).876877- Core libraries:878 - Irregex has been updated to 0.9.5, which fixes matching of all "bow"879 occurrances beyond the first with irregex-fold (upstream issue #14).880 - Keywords are more consistently read/written, like symbols (#1332).881 - SRFI-39: When jumping out of a parameterized dynamic extent,882 "parameterize" now remember the actual values, so when jumping back883 in, they are restored (fixes #1336, thanks to Joo ChurlSoo).884 This was a regression caused by the fix for #1227.885886- Tools:887 - "chicken-install"888 - When installing eggs in deploy mode with "-keep-installed", eggs889 under the prefix won't unnecessarily be reinstalled (#1144).890 - Added new option "-no-install-deps" which inhibits automatic891 installation of dependencies, useful with "-prefix" (#1298).8928938944.11.0895896- Security fixes897 - Specialisation rules for string-{ref,set!}, bit-set?898 and move-memory no longer use unchecked C functions which could899 result in undefined behaviour, including buffer overruns (#1216).900901- Platform support902 - CHICKEN now supports the Linux X32 ABI (thanks to Sven Hartrumpf).903904- Tools905 - Feathers now has a more neutral color scheme and larger font size.906 - With the -dir option, feathers can now correctly find source code.907908- Runtime system:909 - The calling convention of CPS procedures has been changed to910 use "argument vectors" instead of C calling convention.911 - The C API of C_values(), C_do_apply() and how to invoke CPS912 functions has changed. The C_procN() macros have disappeared.913 The manual example in "Accessing external objects" for C_values914 has been updated. See also the "numbers" egg for examples on915 how to support pre- and post-4.10.1 CHICKENs simultaneously.916 - Apply hack is no longer used; the limitation of 128 arguments917 has been lifted for platforms which had no apply hack.918 - Increased the "binary compatibility version" to 8.919 - Delivery of signals in other OS-level threads is now dealt with920 in a more robust way (#1232) (thanks to Joerg Wittenberger).921 - Compiled programs with large literals won't crash on startup (#1221).922 - Comparisons of closures now behave in a stable way, whether or not923 the code was compiled with the -no-lambda-info option (#1041).924 - The signal handling code can no longer trigger "stack overflow" or925 "recursion too deep or circular data encountered" errors (#1283).926927- Compiler:928 - Specializations on implicit "or" types like "number" or "boolean" now929 work, removing the requirement for the inferred types to match930 declared types exactly. Specializations are matched from first to931 last to resolve ambiguities (#1214).932 - Compiler rewrites for char{<,>,<=,>=,=}? are now safe (#1122).933 - When requesting to emit import libraries that don't exist, the934 compiler now gives an error instead of quietly continuing (#1188).935 - Don't silently truncate huge literals (thanks to Claude Marinier).936937- Core libraries938 - try-compile from setup-api cleans up temporary output files (#1213).939 - SRFI-18: thread-join! no longer gives an error when passed a940 thread in the "sleeping" state (thanks to Joerg Wittenberger)941 - SRFI-18: mutex-lock! will not set ownership of mutexes when942 passed #f as the owner (#1231), not disown a mutex from owner if943 locking fails for timeout and not keep the last thread which held944 a mutex until the next lock (thanks to Joerg Wittenberger).945 - SRFI-39: When a parameter's "guard" procedure raises an exception,946 "parameterize" now correctly resets the original values of all947 parameters (fixes #1227, thanks to Joo ChurlSoo).948 - Irregex has been updated to 0.9.4, which fixes severe performance949 problems with {n,m} repeating patterns (thanks to Caolan McMahon).950 - Unit "posix": The following posix procedures now work on port951 objects: file-stat, file-size, file-owner, file-permissions,952 file-modification-time, file-access-time, file-change-time,953 file-type and all procedures using file-type. These are:954 regular-file?, symbolic-link?, block-device?, character-device?955 fifo? and socket?.956 - Unit "posix": When "file-close" is interrupted it will retry,957 to avoid leaking descriptors (thanks to Joerg Wittenberger).958 - Unit "data-structures": alist-{update[!],ref} were made consistent959 with srfi-1 in the argument order of comparison procedures.960 - Unit "lolevel": locative-ref has been fixed for locatives of u32961 and s32vectors (thanks to Joerg Wittenberger for pointing this out).962 - string->number now signals exceptions if passed a bad base instead963 of segfaulting (#1272; reported by "Tilpner" on IRC).964965- Tools966 - A debugger is now available, known as "feathers", which allows967 basic source-level debugging of compiled Scheme code.968 - A statistical profiler has been added, enabling sampling-based969 runtime profiling of compiled programs.970 - "chicken-install"971 - When installing eggs in deploy mode, already satisfied972 dependencies aren't reinstalled every time (#1106).973 - "chicken-uninstall"974 - -prefix and -deploy options were added, matching chicken-install.975 - "chicken-status"976 - -prefix and -deploy options were added, matching chicken-install.977 - The -sudo and -s options for chicken-install and chicken-uninstall978 now honor a "SUDO" environment variable (thanks to Timo Myyrä).979980- Syntax expander981 - Mixed internal define/define-values are now correctly ordered, so982 later defines can refer to earlier define-values (#1274).9839844.10.0985986- Security fixes987 - CVE-2014-6310: Use POSIX poll() on Android platform to avoid988 potential select() buffer overrun.989 - CVE-2014-9651: substring-index[-ci] no longer scans beyond string990 boundaries.991 - CVE-2015-4556: string-translate* no longer scans beyond string992 boundaries.993994- Core libraries995 - alist-ref from unit data-structures now gives an error when passed996 a non-list, for consistency with assv/assq/assoc.997 - Unit tcp now implicitly depends on ports instead of extras.998 This may break programs which don't use modules and forgot to999 require extras but use procedures from it.1000 - SRFI-13: fix string-copy! in cases source and destination strings'1001 memory areas overlap (#1135).1002 - SRFI-1: Check argument types in lset and list= procedures (#1085).1003 - Fixed another, similar bug in move-memory! for overlapping memory.1004 - Fixed broken specialisation for move-memory! on pointer types.1005 - Fixed broken specialisation for irregex-match-num-submatches.1006 - Fixed bug in make-kmp-restart-vector from SRFI-13.1007 - Removed deprecated implicit expansion of $VAR- and ~ in pathnames.1008 The ~-expansion functionality is now available in the1009 "pathname-expand" egg (#1001, #1079) (thanks to Florian Zumbiehl).1010 - normalize-pathname has been simplified to avoid adding trailing1011 slashes or dots (#1153, thanks to Michele La Monaca and Mario Goulart).10121013- Unit srfi-4:1014 - write-u8vector has been made more efficient (thanks to Thomas Hintz).1015 - read-u8vector has been made more efficient (thanks to Andy Bennett1016 for pointing this out and testing an improvement).10171018- Unit lolevel:1019 - Restore long-lost but still documented "vector-like?" procedure (#983)10201021- Unit "files":1022 - normalize-pathname no longer considers paths starting with ".//"1023 as absolute (#1202, reported by Haochi Kiang).10241025- Unit "posix":1026 - set-file-position! now allows negative positions for seek/cur (thanks1027 to Seth Alves).1028 - file-mkstemp now works correctly on Windows, it now returns valid1029 file descriptors (#819, thanks to Michele La Monaca).1030 - create-directory on Windows now creates all intermediate1031 directories when passed #t as second parameter.10321033- Runtime system:1034 - Removed several deprecated, undocumented parts of the C interface:1035 C_zap_strings, C_stack_check, C_retrieve, C_retrieve_proc,1036 C_retrieve_symbol_proc, C_i_foreign_number_vector_argumentp,1037 C_display_flonum, C_enumerate_symbols1038 - Removed several deprecated and undocumented internal procedures:1039 ##sys#zap-strings, ##sys#round, ##sys#foreign-number-vector-argument,1040 ##sys#check-port-mode, ##sys#check-port*1041 - SIGBUS, SIGILL and SIGFPE will now cause proper exceptions instead1042 of panicking (thanks to Joerg Wittenberger).10431044- Module system1045 - Allow functor arguments to be optional, with default implementations.1046 - Fixed a bug that prevented functors from being instantiated with1047 built-in modules.1048 - Fixed generation of import libraries for instantiated functors1049 (#1149, thanks to Juergen Lorenz).10501051- Syntax expander1052 - define-values, set!-values and letrec-values now support full lambda1053 lists as binding forms1054 - cond expands correctly when a constant is used in combination with =>1055 (thanks to Michele La Monaca)10561057- C API1058 - Removed deprecated C_get_argument[_2] and1059 C_get_environment_variable[_2] functions.1060 - C_mutate2 has been deprecated in favor of C_mutate1061 - chicken.h can be included in C++ programs in strict C++11 mode1062 without compiler errors on Linux (thanks to "Izaak").10631064- Foreign function interface1065 - The foreign type specifier "scheme-pointer" now accepts an optional1066 C pointer type (thanks to Moritz Heidkamp and Kristian Lein-Mathisen).1067 - Type hinting for foreign-primitives now allows returning multiple1068 values when no return type has been specified.10691070- Compiler1071 - Fixed an off by one allocation problem in generated C code for (list ...).10721073- Build system1074 - MANDIR was renamed to MAN1DIR and TOPMANDIR was renamed to MANDIR1075 in order to comply with standard Makefile practice in UNIX.1076 - INCDIR was renamed to CHICKENINCDIR, and now derives from1077 INCLUDEDIR, which defaults to $(PREFIX)/include1078 - BINDIR, LIBDIR, SHAREDIR, INCLUDEDIR, MANDIR, MAN1DIR, DOCDIR,1079 CHICKENINCDIR and CHICKENLIBDIR will now also be taken from1080 the environment, if present (like PLATFORM, DESTDIR and PREFIX).10811082- Tools1083 - "csc"1084 - On Cygwin, -static now works again (thanks to Michele La Monaca)1085 - "chicken-install"1086 - When using chicken-install -retrieve, and an error occurs during1087 retrieval (or the egg doesn't exist), the egg's directory is1088 now properly cleaned up (#1109, thanks to Alex Charlton)1089 - "chicken"1090 - The -r5rs-syntax option did nothing; this has been fixed.109110924.9.010931094- Security fixes1095 - CVE-2014-3776: read-u8vector! no longer reads beyond its buffer when1096 length is #f (thanks to Seth Alves).1097 - CVE-2013-4385: read-string! no longer reads beyond its buffer when1098 length is #f.1099 - CVE-2013-1874: ./.csirc is no longer loaded from the current directory1100 upon startup of csi, which could lead to untrusted code execution.1101 (thanks to Florian Zumbiehl)1102 - CVE-2013-2024: On *nix, the qs procedure now single-quotes everything1103 instead of relying on a blacklist of shell characters to be escaped.1104 On Windows, it properly duplicates double-quote characters. (thanks1105 to Florian Zumbiehl)1106 - CVE-2013-2075: Use POSIX poll() in other places where select() was1107 still being used. (thanks to Florian Zumbiehl and Joerg Wittenberger)1108 - CVE-2012-6122: Use POSIX poll() on systems where available. This avoids a1109 design flaw in select(); it supports no more than FD_SETSIZE descriptors.11101111- Core libraries1112 - Fix subvector when the TO optional argument equals the given vector1113 length (#1097)1114 - Unit extras now implicitly depends on ports. ports no longer1115 implicitly depends on extras. This may break programs which don't1116 use modules and forgot to require ports but use procedures from it.1117 - Support has been added for the space-safe R7RS macro "delay-force".1118 - Export file-type from the posix unit (thanks to Alan Post).1119 - SRFI-4 s8vectors now work correctly in compiled code on PowerPC and ARM.1120 - thread-join! now works correctly even if the waiting thread was1121 prematurely woken up by a signal.1122 - unsetenv has been fixed on Windows.1123 - The process procedure has been fixed on Windows.1124 - Nonblocking behaviour on sockets has been fixed on Windows.1125 - Possible race condition while handling TCP errors has been fixed.1126 - The posix unit will no longer hang upon any error in Windows.1127 - resize-vector no longer crashes when reducing the size of the vector.1128 - Distinct types for boolean true and false have been added to the1129 scrutinizer.1130 - Fixed bugs in string-trim-right, string-index-right and1131 string-skip-right, from SRFI-131132 - read-line no longer returns trailing CRs in rare cases on TCP ports (#568)1133 - write and pp now correctly use escape sequences for control characters1134 (thanks to Florian Zumbiehl)1135 - posix: memory-mapped file support for Windows (thanks to "rivo")1136 - posix: find-file's test argument now also accepts SRE forms.1137 - numerator and denominator now accept inexact numbers, as per R5RS1138 (reported by John Cowan).1139 - Implicit $VAR- and ~-expansion in pathnames have been deprecated (#1001)1140 - Fixed EINTR handling in process-wait and when reading from file ports.1141 - Irregex is updated to 0.9.2, which includes bugfixes and faster submatches.1142 - Compile-time expansions for "[sf]printf" are slightly more efficient.1143 - Removed the deprecated "always?", "never?", "shuffle" and "none?" procedures.1144 - Fixed problem "make-pathname" that returned an absolute path if given1145 a relative one without a directory argument.1146 - The implementation of promises has been made more efficient.1147 - Removed the deprecated "c-runtime", "null-pointer?" and "pointer-offset"1148 procedures.1149 - The deprecated alias "mutate-procedure" for "mutate-procedure!" has1150 been removed.1151 - On 64-bit systems the feature identifier "64bit" is registered.1152 - "process-fork" accepts an optional argument that specifies1153 wether other threads should be terminated in the child process.1154 - The "signal/bus" signal identifier was missing.1155 - Added setter-procedure for "signal-mask".1156 - Added "recursive-hash-max-length" and "recursive-hash-max-depth"1157 parameters (srfi-69).11581159- Platform support1160 - CHICKEN can now be built on AIX (contributed by Erik Falor)1161 - CHICKEN can now be built on GNU Hurd (contributed by Christian Kellermann)1162 - Basic support has been added for building Android and iOS binaries (see1163 the "README" file for caveats and pitfalls) (contributed by Felix Winkelmann1164 from bevuta IT GmbH)1165 - Added support for 64-bit Windows (consult the "README" file for more1166 information).11671168- Runtime system1169 - finalizers on constants are ignored in compiled code because compiled1170 constants are never GCed (before, the finalizer would be incorrectly1171 invoked after the first GC). (Reported by "Pluijzer")1172 - The call trace buffer is now also resizable at runtime via ##sys#resize-trace-buffer.1173 - C_zap_strings and ##sys#zap-strings (undocumented) have been deprecated.1174 - Special events in poll() are now handled, avoiding hangs in threaded apps.1175 - When invoking procedures with many rest arguments directly (not via APPLY),1176 raise an error when argument count limit was reached instead of crashing.1177 - When the maximum allowed heap size is reached, panic instead of crashing.1178 - The code generated for mutating data destructively is partially inlined1179 and thus slightly more efficient.1180 - Fixed incorrect code in the foreign argument conversion for1181 "unsigned-integer64" (#955). For unsigned-integer, integer64 and1182 unsigned-integer64, disallow floating-point numbers. Fix behavior1183 on 32-bit systems.1184 - On systems that provide sigprocmask(2), segmentation violations, illegal1185 instruction signals, bus errors and floating-point exceptions are now caught1186 and trigger normal error-processing (including a backtrace). The handling1187 of these so called "serious" signals can be disabled by passing the1188 "-:S" runtime option to executables.1189 - Reclamation of unused interned symbols (enabled with the "-:w" runtime option)1190 works much better now.11911192- Build system1193 - The tests can now be run without having to first install CHICKEN.1194 - Fixed a dependency problem that made it impossible to build the distribution1195 tarball on Windows with the mingw compiler.1196 - Increased the "binary compatibility version" to 7.11971198- Tools1199 - "csc"1200 - "-z origin" is now passed as a linker option on FreeBSD when1201 compiling for deployment (thanks to Jules Altfas & Vitaly Magerya)1202 - "-deploy" works now on FreeBSD (thanks to Jules Altfas and1203 Vitaly Magerya), OpenBSD and NetBSD (see README for NetBSD).1204 - added "-oi"/"-ot" options as alternatives to "-emit-inline-file"1205 and "-emit-type-file", respectively; "-n" has been deprecated.1206 - .c/.o files are no longer overwritten when they have the same basename1207 as a Scheme source file (i.e. "csc foo.scm foo.c -o foo" works now).1208 - "chicken-install"1209 - "-deploy" now correctly installs dependencies of1210 deployed eggs under the deployment directory instead of globally.1211 - Full URI syntax is now supported for proxy environment variables1212 (thanks to Michele La Monaca)1213 - "chicken-status"1214 - Added -eggs command line option to list installed eggs1215 - misc1216 - Removed the deprecated "-v" options (use "-version" instead) in various1217 core programs.1218 - The runtime linker path for compiled executables was not set correctly1219 on FreeBSD systems. This has now been fixed.1220 - Removed the deprecated "make" and "make/proc" facility from the1221 "setup-api" module; also removed the deprecated "required-extension-version"1222 and "required-chicken-version" procedures.12231224- Syntax1225 - Added the aliases "&optional" and "&rest" as alternatives to "#!optional"1226 and "#!rest" in type-declarations (suggested by Joerg Wittenberger).1227 - Vectors, SRFI-4 number vectors and blobs are now self-evaluating for1228 R7RS compatibility. Being literal constants, they are implicitly quoted.1229 - For R7RS compatibility, named character literals #\escape and #\null are1230 supported as aliases for #\esc and #\nul. WRITE will output R7RS names.1231 - The CASE form accepts => proc syntax, like COND (as specified by R7RS).1232 - letrec* was added for R7RS compatibility. Plain letrec no longer behaves1233 like letrec*.12341235- Compiler1236 - the "inline" declaration does not force inlining anymore as recursive1237 inlining could lead to non-termination of the compiler (thanks to1238 Andrei Barbu).1239 - Type-analysis ("scrutiny") is enabled by default now, unless1240 "-optimize-level 0" or "-no-usual-integrations" is given.1241 - The "-scrutinize" compiler option has been deprecated.1242 - A new lightweight flow-analysis pass ("lfa2") has been added.1243 Enable by passing the "-lfa2" option to the compiler.1244 - The deprecated options "-disable-warning", "-heap-growth", "-heap-shrinkage"1245 and "-heap-initial-size" have been removed.1246 - Removed the deprecated "constant" declaration.1247 - Removed the deprecated "-lambda-lift" and "-unboxing" compiler options.1248 - Removed the deprecated "-V" compiler option.1249 - Generated names for formal parameters of foreign functions are slightly1250 more informative.1251 - Unused references to variables that name intrinsics can be removed.1252 - In the flow-analysis pass, matching of combinations of "list"/"list-of" and1253 "or" types with has been made more reliable.1254 - Fixed various bugs in the type database.12551256- Syntax expander1257 - added "require-extension-for-syntax" and "use-for-syntax".1258 - Extended syntactic definitions are now available by default in all1259 evaluated code, particularly in code evaluated at runtime in compiled1260 applications.1261 - Removed the deprecated variant "(define-compiler-syntax (NAME . LLIST) BODY ...)"1262 of "define-compiler-syntax".12631264- C API1265 - Deprecated C_get_argument[_2] and C_get_environment_variable[_2] functions.1266 - Removed the deprecated "__byte_vector" type.1267126812694.8.012701271- Security fixes1272 - CVE-2012-6125: Improved hash table collision resistance and added1273 randomization to prevent malicious external causes of collisions.1274 All SRFI-69 procedures accept extra arguments to control randomization1275 for testing/debugging.1276 - CVE-2012-6124: On 64-bit machines the "random" procedure no longer1277 truncates result values (which caused very nonrandom results for very1278 large values). Note that random shouldn't be used for1279 security-critical code.1280 - CVE-2012-6123: Added checks for embedded '\0' characters in strings1281 passed to some C functions on a lower level than CHICKEN's FFI.12821283- Build system1284 - version information has been moved into a separate unit to make the1285 build-version shown in the banner and accessible through library1286 procedures more accurate, this also speeds up the build on version-1287 changes (thanks to Jim Ursetto for contributing this)1288 - the build was made more reliable with respect to cross-compilation1289 and custom installation names1290 - the test-suite is now working on the mingw32 platform (with1291 a few tests disabled due to missing functionality)1292 - the version and branch of the sources are now properly compiled1293 into the core libraries and shown in the "csi" and "chicken"1294 version headers1295 - The default target library name for an installation configured for cross-1296 compilation is now "libchicken" and independent on any particular1297 setting of PROGRAM_PREFIX/PROGRAM_SUFFIX (thanks to Otavio Salvador)12981299- Compiler1300 - Fixed bug in handling of symbols in constant-definitions (thanks to Peter1301 Bex)1302 - Stricter check for value-part of constant definition (thanks to Kon Lovett)1303 - Fixed bug that caused argument-signatures of external definitions to be1304 incorrectly modified during optimization (thanks to Peter Bex)1305 - Failing constant-folding expressions now produce a compile-time warning1306 - Fixed various bugs in the internal type-database (thanks to Kon Lovett and1307 Peter Bex)1308 - Fixed incorrect optimization rules for some fp-rounding and fixnum operators1309 - added "-specialize" option and "specialize" declaration which enables1310 optimizations of uses of core library procedures based on type-1311 information gathered during flow analysis1312 - "-optimize-level 3" and higher now implies "-specialize"1313 - added option "-strict-types" and "-emit-type-file"1314 - progress-information is now only shown with "-debug p"; the "-verbose"1315 option only shows informational but noncritical messages1316 - added optimizations for some library procedures1317 - variable propagation for global variable accesses is now done in certain1318 situations1319 - the algorithmic complexity of the closure-conversion pass has been1320 reduced which speeds up compilation noticably for large files1321 - the "-uses" option handles whitespace in unit lists given on the1322 command line (thanks to Santosh Rajan)1323 - the alternative branch in a conditional is dropped when the condition1324 is known to be a non-boolean value (suggested by Joerg Wittenberger)1325 - implemented numerous fixes and improvements for flow analysis1326 - fixed a bug in the compiler that could cause some variable bindings1327 to be optimized away in certain situations involving inlining1328 - added an experimental optimization called "clustering" (enable1329 with the compiler option of the same name)1330 - the optimizations done by the compiler are now listed as a comment1331 in the generated C file1332 - the type-information obtained during flow-analysis ("scrutiny") is1333 now used for performing type-sensitive optimizations of calls to1334 most of the core-library procedures1335 - deprecated the "constant" declaration specifier1336 - "unboxing" optimization has been completely removed - the implementation1337 was unreliable and unmaintainable; the "-unboxing" compiler option will1338 still be accepted but will produce a warning1339 - Peter Bex contributed an optimization to the analysis pass that1340 greatly reduces compile time for source code containing deeply nested1341 lexical bindings1342 - procedures that are known to have the value of a core library procedure1343 that is a "standard" or "extended binding" will be inlined1344 - enhanced line number tracking to get better error messages from1345 the scrutinizer.1346 - hygiene bugs related to compiler-syntax were fixed.1347 - the local flow-analysis was sometimes reporting multiple warnings1348 for the same type-conflict.1349 - the time/space-complexity of some algorithms used in the compiler1350 were reduced resulting in much better compile-times especially1351 for large source files.13521353- Interpreter1354 - ",q" leaves the currently active REPL invocation instead of1355 terminating the process (as suggested by John Cowan)1356 - ",m" properly switches between modules (thanks to Christian Kellermann)13571358- Core libraries1359 - Cleaned up the set of available internal SRFI-feature-identifiers1360 - Fixed bugs in "make-pathname" and "normalize-pathname" (thanks to Jim Ursetto)1361 - The reader is now more consistent when parsing symbol- and keyword names1362 that are fully or partially escaped (thanks to Kon Lovett)1363 - The printer now does a better job at escaping certain single-character1364 symbol names1365 - Unit "lolevel"1366 - deprecated "null-pointer" and "null-pointer?"1367 - Fixed a bug in the Windows implementation of "file-type" (thanks to1368 Jim Ursetto)1369 - Fixed a bug in the implementation of "current-milliseconds" that could1370 result in integer-overflow1371 - Fixed an incorrect type-check in "list-ref" (thanks to Sven Hartrumpf)1372 - Disabled "-setup-mode" when compiling extensions for deployment (thanks1373 to Ivan Raikov)1374 - Got rid of some warnings in the C runtime system that were triggered on1375 the SunPro C compiler (thanks to Joe Python)1376 - Fixed bug in "string->number" that caused out-of-range characters to1377 be accepted for base > 10 (thanks to Jim Ursetto)1378 - added "foldl" and "foldr" procedures, which are more efficient and1379 have a more consistent argument order than the corresponding1380 SRFI-1 procedures1381 - "shuffle" has been deprecated1382 - added "queue-length"1383 - "queue->list" allocates and returns a fresh list now1384 - invoking a parameter-procedure with an argument will return the new1385 value1386 - added new procedure "quit"1387 - port-procedures now check correctly for argument-ports being open1388 (thanks to Peter Bex)1389 - "repl" accepts an optional evaluator procedure (suggested by John1390 Cowan)1391 - added a setter procedure to "signal-handler" ("posix" unit)1392 - EINTR is properly handled for input routines that may block1393 waiting for input1394 - the implementation of R5RS evaluation environments is now fully1395 standards compliant1396 - "file-exists?" and "directory-exists?" work now properly for files1397 > 2GB (EOVERFLOW handling in stat(3) system call)1398 - fixed bug in implementation of "fifo?"1399 - the procedure returned by "condition-predicate" accepts any type1400 of argument now1401 - blobs have a readable textual representation ("#{...}")1402 - "find-files" does not follow symlinks by default (as it did previously)1403 - also, the old non-keyword argument signature for "find-files" is not1404 supported anymore1405 - added "alist-update" ("data-structures" unit)1406 - "irregex-replace" returns the original string instead of #f when the1407 regex does not match1408 - irregex "real" built-in utility pattern now accepts a leading sign1409 - added "change-directory*" ("posix" unit)1410 - number parsing has been made more reliable and standards compliant1411 - deprecated "none?", "always?" and "never?"1412 - library procedures that take ports as arguments now all perform checks1413 on port-direction and open/closed state1414 - "mutate-procedure" has been renamed to "mutate-procedure!" - the old1415 name is still available but deprecated1416 - deprecated C_hash_string and C_hash_string_ci functions in the C API in1417 favor of the more secure versions C_u_i_string_hash, C_u_i_string_ci_hash1418 - a number of bugs in the irregex regular expression engine have been1419 fixed; it has been updated to upstream release 0.8.31420 - "with-input-from-file", "with-output-to-file", "with-input-from-pipe" and1421 "with-output-to-pipe" now properly restore the standard input/output1422 ports in case the body thunk escapes1423 - symbols with a single-char print-name where not always properly escaped1424 when printed readably1425 - the "make" facility of the "setup-api" module has been deprecated,1426 please use the "make" extension when your egg requires this during1427 setup.14281429- Core tools1430 - "csc"1431 - The environment-variables "CHICKEN_C_INCLUDE_PATH" and1432 "CHICKEN_C_LIBRARY_PATH" can now be used to add default include-1433 and link-directories to C-compiler invocations1434 - "-O5" passed expensive optimization flags to the C compiler which1435 could expose C-Compiler bugs, depending on the compiler version1436 (thanks to Sven Hartrumpf for pointing this out).1437 - "-rpath" is ignored on OS X (thanks to Kon Lovett).1438 - Fixed handling of "-output-file" (it was being ignored)1439 - "chicken-install"1440 - Added option "-override", which allows retrieving extension-1441 versions from a file - this may be useful to ensure specific1442 versions of a complete set of eggs are installed1443 - Added option "-keep-installed"/"-x" that only installs explicitly1444 named extensions given on the command line, if they are not1445 already installed1446 - Added option "-list" that lists all extensions available1447 - Added option "-csi" to specify what interpreter should be used1448 to execute the setup-script of an installed extension1449 - Added option "-scan" that scans a local directory for the highest1450 available extension versions available1451 - Added option "-reinstall" that reinstalls all currently installed1452 eggs, keeping their versions, if possible1453 - Fixed bug with "chicken-install -test" when multiple extensions where1454 given on the command line (thanks to Kon Lovett)1455 - installing subdirectories works now on Windows.1456 - fixed handling of "-force" when a "chicken" dependency version did1457 not match1458 - added new option "-show-foreign-depends" which lists foreign egg1459 dependencies (if available)1460 - added new option "-show-depends" which lists egg dependencies1461 - added support for "or"-dependencies where a dependency is considered1462 installed if one of a set of candidates is available1463 - "chicken-profile"1464 - fixed some bugs in the profiler and the runtime support code for1465 profiling (thanks to Sven Hartrumpf)1466 - fixed broken percentage calculation (thanks to "megane")1467 - "chicken-status"1468 - Added option "-list" that dumps versions of installed extensions1469 in a format suitable for "chicken-install -override ..."1470 - the "pattern" argument is now actually treated as a pattern and not1471 as a regex14721473- Core syntax1474 - "assert" shows the line number of the form when a second argument1475 is not given or is a literal string1476 - "parameterize" now correctly omits invoking the guard procedure when1477 the old value is restored (thanks to Joo ChurlSoo)1478 - added ":", "the" and "assume" syntax for declaring types1479 - added "define-specialization" form to declare type-driven procedure1480 call rewrites in compiled code14811482- Syntax expander1483 - Fixed a bug that caused imported identifiers to leak into the1484 macroexpansion/compile-time environment (reported by Christian Kellermann)1485 - Fixed a bug in the processing of extended lambda-lists (thanks to Peter Bex)1486 - Peter Bex fixed a bug that caused bound variables to be incorrectly1487 renamed in quoted literals (thanks to Matthew Flatt)1488 - fixed devious bug in the invocation and generation of transformer1489 procedures1490 - using normal "lambda" forms as transformers for local or global1491 syntax definitions is deprecated - one should use "syntax-rules",1492 "er-macro-transformer" or "ir-macro-transformer" from now on14931494- Runtime system1495 - fixed handling of "inf" and nan" floating-point predicates for Solaris1496 (thanks to Claude Marinier)1497 - support for re-loading of compiled files has now been completely1498 removed1499 - the maximum length of strings is no longer limited to a 24-bit1500 number on 64-bit architectures but can be 56 bits.1501 - string-comparison handles embedded '\0' characters.1502 - numerical predicates handle infinity and NaN correctly.1503 - deprecated "[+-]nan", "[+-]inf" and other notations "accidentally"1504 accepted by CHICKEN due to the underlying C library's strtod() function,1505 standardizing on "[+-]nan.0" and "[+-]inf.0" from R6RS (and soon R7RS),1506 when displaying numbers only these forms are generated now.1507 - signals are queued to some extent and the interrupt handling has1508 been cleaned up somewhat1509 - the interpreter handles SIGINT directly - loading the "posix" unit1510 is not needed anymore to handle this feature1511 - changed default nursery size slightly and fixed a bug that caused1512 incorrect (too small) nursery sizes on 64-bit platforms1513 - deprecated the compiler option "-heap-initial-size", "-heap-growth"1514 and "-heap-shrinkage"1515 - the assembly-language stub routine for the implementation of "apply"1516 was broken for Sparc64 systems and has been disabled for this platform1517 - signal masks were accidentally reset upon GC for some platforms; use1518 sigsetjmp/siglongjmp on BSD, Linux, MacOS X and Haiku15191520- Type system1521 - added new type-specifiers "input-port", "output-port", "(list-of T)"1522 and "(vector-of T)"1523 - the type-specifiers "(vector T ...)" and "(list T ...)" represent1524 fixed size lists and vectors now1525 - added qualified types ("forall"), optionally with type constrains1526 - added the "define-type" special form and type-abbreviations1527 - added "compiler-typecase", a compile-time typematching form15281529- Module system1530 - Added "interfaces", which are named groups of exports1531 - Added "functors", which are parameterized modules1532 - Modules can now be aliased1533 - New syntax:1534 (define-interface NAME EXPORTS)1535 (functor (NAME ...) EXPORTS ...)1536 - Extended syntax of "module" for aliasing and functor-instantiation1537 - the "scheme" module has been integrated into the core library and1538 is not installed as a separate import library anymore1539 - added core module "r4rs" containing only bindings for R4RS identifiers1540 - added core module alias "r5rs" for "scheme" module1541 - added "module-environment" which returns an evaluation environment1542 for the bindings of a module1543 - fixed bugs related to using "export"/"reexport" in combination with1544 wildcard ("*") module export lists (thanks to "megane")15451546- Foreign function interface1547 - locatives are allowed as arguments declared "c-pointer"1548 - "int32" was not properly detected as a valid foreign type (thanks1549 to Jim Ursetto)1550155115524.7.015531554- Build system1555 - On BSD, libchicken.so is linked with -lpthread, as this seems1556 to be required for linking libraries that require pthreads1557 - The C header-files are now installed in a subdirectory below1558 the "PRFIX/include" directory to allow installation of multiple1559 chickens with different PROGRAM_PREFIX/PROGRAM_SUFFIX settings1560 in the same prefix; to avoid conflicts with existing CHICKEN1561 headers, it is recommended to completely remove any old1562 installation before installing the new version1563 - the PROGRAM_PREFIX and PROGRAM_SUFFIX configuration settings1564 are applied to generated files and directories which allows1565 perform differently named installations into the same PREFIX1566 - increaded binary-compatibility version from 5 to 6, which1567 means installed extensions in an existing installations will1568 have to be re-installed1569 - bugfixes in mingw/msys makefiles1570 - Sven Hartrumpf contributed a bugfix to the internal helper1571 script for creating distribution directories1572 - Peter Bex has cleaned up the makefiles heavily, making the1573 build more maintainable and easier to modify; thanks to all1574 who helped testing this new build1575 - renamed the makefile to `GNUmakefile' to catch using the1576 a make(3) other than GNU make1577 - configuration-header fix for BSD systems (thanks to Peter Bex1578 and Christian Kellermann)157915801581- Core libraries1582 - the `regex' library unit has been removed and is separately1583 available as an extension which should be fully backwards-1584 compatible1585 - `irregex' is now a core library unit and replaces the `regex' API1586 - "extras" unit1587 - fixed pretty-printer output of certain escaped character1588 sequences inside strings (thanks to Mario Domenech Goulart,1589 thanks to Kon Lovett for pointing out a missing test-file)1590 - The pretty printer did not escape some control characters correctly1591 (reported by Alan Post)1592 - control-characters in symbol-names are now properly escaped if1593 the symbol is printed readably (thanks to Alaric Snell-Pym1594 for pointing this out)1595 - the deprecated `random-seed' function has been removed1596 - "files" unit1597 - fixed bug in `normalize-pathname'1598 - `file-copy' and `file-move' check whether the source-file is a1599 directory1600 - `delete-directory' now optionally deletes directories recursively1601 - "irregex" unit1602 - Peter Bex has contributed various bugfixes and performance1603 enhancements1604 - "library" unit1605 - Added "condition->list" (thanks to Christian Kellermann)1606 - The reader accepts now escaped octal character codes in string1607 literals1608 - Read-syntax can return zero values to indicate ignored objects1609 - R5RS output output routines now always return a "void" result1610 - "\|" was not correctly escaped when occurring inside1611 symbol print names1612 - added `condition->list', contributed by Christian Kellermann1613 - added `equal=?'1614 - removed deprecated `getenv', `left-section', `right-section',1615 `project', `c-runtime' and `noop'1616 - added missing import-library entry for `vector-copy!' (thanks1617 to Jules Altfas)1618 - circular or excessively deeply nested data generates a more1619 useful error message when encountered by `equal?'1620 - `list-tail' gives now a better error message when passed a1621 non-list argument1622 - fixed bug in `getter-with-setter' that modified the first1623 argument if it already had a setter procedure attached1624 - fixed incorrect size of internal data vector used in `time'1625 (thanks to Kon Lovett)1626 - "lolevel" unit1627 - removed deprecated `global-bound?', `global-make-unbound',1628 `global-ref' and `global-set!' procedures1629 - added support for `pointer-vectors':1630 - make-pointer-vector1631 - pointer-vector?1632 - pointer-vector-length1633 - pointer-vector-ref1634 - pointer-vector-set!1635 - "posix" unit1636 - "close-input-pipe" did not return the status code of a1637 terminated process on Windows (reported by Mario Domenech Goulart)1638 - added `file-creation-mode' (suggested by Mario Domenech Goulart)1639 - "setup-api" unit1640 - `required-extension-version' and `required-chicken-version' have1641 been deprecated1642 - "srfi-18" unit1643 - removed deprecated `milliseconds->time' and `time->milliseconds'1644 procedures1645 - `make-mutex' incorrectly created mutexes as initially owned by1646 the current threads (thanks to Joerg Wittenberger)1647 - the file-descriptor handling in the scheduler has been simplified1648 and performs some sanity checks1649 - deadlock in the scheduler now terminates the process instead of1650 attempting to throw an error1651 - added some sanity checks to the scheduler1652 - "tcp" unit1653 - Fixed bug in "tcp-abandon-port" (reported by Jim Ursetto)1654 - "utils" unit1655 - `compile-file' now returns `#f' when the compilation fails,1656 instead of raising an error165716581659- Compiler1660 - Removed unreliable lambda-lifting optimization (now, really!);1661 the "-lambda-lift" option is still accepted but produces a1662 warning1663 - When "-scrutinize" is given, installed ".types" files will be1664 automatically consulted for extensions and used units1665 - Fixed optimizer bug in handling of "let" forms with multiple1666 bindings which could result in toplevel assignments being1667 silently dropped (reported by Moritz Heidkamp)1668 - the `-accumulate-profile' option did not provide a way to1669 specify the target profile data file - now `-profile-name'1670 must always be given when accumulated profiling is done1671 (thanks to Taylor Venable)1672 - added `-module' option, which wraps the code into an implicit1673 module1674 - removed check for unsafe toplevel calls in safe mode1675 - intrinsic handling of `exact->inexact' and `string->number' is1676 now more efficient1677 - fixed bug in leaf-routine optimization (thanks to David1678 Dreisigmeyer)1679 - unit-toplevel entry-points are now named differently, which1680 may break binary-compatibility with existing compiled Scheme1681 code modules1682 - fixed invalid dropping of unused external entry-points in1683 block-mode1684 - fixed incorrect lambda-list check in scrutinizer (thanks to1685 Alan Post)1686 - Kon Lovett reported numerous bugs in the type-database used1687 by the scrutinizer1688 - `-fwrapv' is disabled on OpenBSD, since the default compiler1689 does not support this option (thanks to Christian Kellermann)1690 - on Solaris `gcc' is used by default, override `C_COMPILER'1691 to use the Sun compiler instead1692 - declaring a function `notinline' will prevent direct-call1693 optimization for known procedure calls1694 - the implementation of overflow-detection for arithmetic operations1695 on fixnums have been replaced and now allow using the full 63-bit1696 range of fixnums on 64-bit systems1697 - fixed serious inlining-bug (thanks to Sven Hartrumpf)1698 - constant-folding in the compiler has been simplified and1699 is more reliable (thanks to Sven Hartrumpf)1700 - optimization-levels 3 and higher imply `-unboxing -inline-global'1701 - added new declaration `unsafe-specialized-arithmetic' which allows1702 optimizing unboxed floating-point arithmetic in safe mode1703 - removed `scrutinize' declaration1704 - the warning shown when unimported identifiers are used in compiled1705 modules now also shows the name of the procedure where the1706 identifier is referenced (suggested by Alaric Snell-Pym)170717081709- Documentation1710 - Added list of installed files to README1711 - Documented remaining "c...r" standard procedures (thanks to1712 Juergen Lorenz)1713 - The manual is now installed in HTML format in1714 PREFIX/share/chicken/doc, many thanks to Jim Ursetto for1715 contributing is excellent `manual-labor' extension which made1716 this possible171717181719- Foreign function interface1720 - Added support for missing "(const [XXX-]c-string)" foreign type1721 (thanks to Moritz Heidkamp)1722 - removed deprecated `pointer', `nonnull-pointer', `byte-vector'1723 and `nonnull-byte-vector' types1724 - added missing result-type handling for `unsigned-integer64'1725 (thanks to Moritz Heidkamp)1726 - added `foreign-type-size' macro1727 - added the new foreign type `size_t' (suggested by Moritz1728 Heidkamp)1729 - added the missing `unsigned-integer64' foreign type (thanks1730 to Moritz for catching this)1731 - added new foreign type `pointer-vector' which maps to `void **'1732 and provided a low-level API in the `lolevel' library unit for1733 manipulating pointer vectors173417351736- Runtime system1737 - Fixed typo in "runtime.c" (thanks to Sven Hartrumpf)1738 - Little-endian detection on MIPS systems was not correct (thanks1739 to Christian Kellermann)1740 - Fixed bug in handling of runtime-options with arguments (also1741 reported by Christian Kellermann)1742 - `equal?' does not compare procedures recursively anymore1743 - fixed incorrect use of alloca.h on OpenBSD (thanks to1744 Christian Kellermann and Alan Post)1745 - checks for NaN and infinity are now done using ISO C991746 operations, which required various changes to `chicken.h'1747 to make the code compile in ISO C99 mode1748 - remaining debris regarding MSVC builds has been removed1749 - fixed bug in argument-type check for 64-bit integer (thanks1750 to Kon Lovett)1751 - increased default trace-buffer size from 10 to 161752 - fixed bug in low-level termination routine (thanks to1753 Jeronimo Pellegrini)1754 - the scheduler handles violations of internal invariants1755 regarding threads slightly more gracefully (thanks to Jim1756 Ursetto)1757 - fixed broken sleep-time conversion (thanks to Karel Miklav)1758 - repaired broken handling of multiple finalizers that referred1759 to the same object (reported by Moritz Heidkamp)1760 - fixed problem with reader and escaping of single-char symbols176117621763- Syntax expander1764 - For-syntax syntax definitions where not correctly retained inside1765 modules1766 - Peter Bex fixed various critical bugs in the expander1767 - The simplification for quasiquote expressions was unable1768 to handle certain circular data (reported by Moritz Heidkamp)1769 - `syntax-rules' now supports tail-patterns and is now fully1770 SRFI-46 compatible - many thanks to Peter Bex for implementing1771 this1772 - Peter Bex provided a bugfix for resolution of primitive imports1773 - handling of internal definitions with shadowed defining1774 forms is now done correctly - fix once again from Peter Bex1775 - corrected non-standard behaviour of quasiquote with respect1776 to nested quasiquotations - another bugfix by our mighty macro1777 master1778 - removed stub-implementation of `define-macro'1779 - handled case where a global redefinition of `cons' influenced1780 a non-inlined internal use in the expander (thanks to David1781 Steiner)1782 - `define-record' now allows defining SRFI-17 setter procedures1783 for accessing slots1784 - the expansion of DSSSL lambda-lists uses now `let-optionals*'1785 internally instead of `let-optionals' and so allows1786 back-references to earlier formal variables; this also results in1787 faster and more compact code for argument-list destructuring1788 (thanks to Alan Post)1789 - new "implicit renaming" macro facility contributed by Peter Bex1790 (see `ir-macro-transformer')1791 - parameters are now settable and can be modified using `set!'1792 (SRFI-17)1793 - added a SRFI-17 setter to `list-ref'1794 - added literal blob syntax ("#{ ... }")179517961797- Tools1798 - chicken-install1799 - option "-deploy" does not compile deployed extensions with1800 "-setup-mode" anymore to avoid problems with dynamic loading on1801 some platforms (specifically Mac OS X)1802 - option "-deploy" option did not copy the correct library1803 (including the version-number) (thanks to Christian Kellermann)1804 - added support for proxy-authentification (thanks to Iruata Souza)1805 - when installing from a local directory `chicken-install' now1806 removes existing `*.so' files in that location to avoid stale1807 binaries when the `make' syntax is used in setup scripts1808 - chicken-bug1809 - removed disabled e-mail support1810 - csc1811 - removed `-static-extension' option1812 - removed deprecated `-windows' option1813 - fixed incorrect use of `chicken.rc' on non-Windows platforms1814 in `-gui' mode (thanks to "ddp")1815 - when compiling in C++ mode, the compiler will be called with the1816 `-Wno-write-strings' option1817 - `-frwapv' has been added to the default C compiler options1818 - csi1819 - the ",m" toplevel command now accepts "#f" to switch back to1820 the initial empty module context (suggested by Christian Kellermann)1821 - fixed broken `,g' toplevel command1822 - deprecated `script' feature identifier (use `chicken-script'1823 instead)1824 - options `-p' and `-P' and `-e' imply `-no-init'1825 - the call-trace reported will not include exception-handler code1826 anymore (suggested by Christian Kellermann)18271828182918304.6.018311832- the licenses used in all components of the core system have1833 been collected in the LICENSE file (Thanks to Peter Bex)1834- Added new compiler option `-no-module-registration' which1835 omits generation of module registration code, even when1836 generation of import libraries has not been enabled1837- running `chicken' without arguments now hints at the1838 existence of `csi' and `csc'1839- `caar', `cdar' and `cddr' generate faster code1840- calls to `list', `vector' and the internal structure1841 allocation primitive that take 1 to 8 arguments generate1842 faster code1843- `chicken-install' now checks the version of the setup1844 configuration file `setup.defaults'1845- added option `-exact' to `chicken-status' and `chicken-uninstall',1846 which treats the pattern argument as the literal name of the1847 extension to be listed/deinstalled1848- `assert' shows line-number information, if available1849 (suggested by Alejandro Forero Cuervo)1850- interpreted code records the lexical-environment at call-1851 sites, which can in case of an error be inspected with the1852 new `,c', `,f' and `,g' csi toplevel commands1853- the evaluation-result history in `csi' can be inspected and1854 cleared (to reduce memory load) with the toplevel commands1855 `,h' and `,ch'1856- unit `data-structures': deprecated `left-section' and1857 `right-section'1858- fixed bug that caused the static syntax-environment of1859 syntax exported by a module to be incomplete1860- module `setup-api': Documented the `version>=?' and1861 `extension-name-and-version' proceedures1862- unit `posix': `utc-time->seconds' is considerably1863 faster on Mac OS X (thanks to Jim Ursetto);1864 added new procedure `file-type'1865- the `time' macro now shows the correct number of minor1866 garbage collections1867- the immediate-object check inside the marking procedure1868 of the garbage collector has been manually inlined which1869 results in a significant GC speedup, depending on memory1870 load1871- unit `srfi-18' and `scheduler': various bugfixes (thanks1872 to Joerg Wittenberger)1873- unit `srfi-4': bugfix in 8-bit vector allocation routines1874 (thanks to Kon Lovett)1875- added `-:H' runtime option to dump heap state on exit1876- fixed missing change in Makefile.cygwin (thanks to John Cowan)1877- fixed bug in `let-optionals' macro that caused problems when the1878 rest-variable was actually named `rest' (thanks to Alejandro1879 Forero Cuervo)1880- when Scheme files are translated to C++ or Objective-C, `csc'1881 will register the feature-identifiers `chicken-scheme-to-c++'/1882 `chicken-scheme-to-objc' ar compile-time1883- fixed bug in expansion of `#!key' parameters in lambda-lists1884- debug-output for forcing finalizers on exit goes to stderr now1885 (thanks to Joerg Wittenberger)1886- the installation routines for extensions automatically add1887 version-number information if none is given in the extension1888 property list (suggested by Alejandro Forero Cuervo)1889- `standard-extension' accepts `#f' now for the version number1890 and will use the version that has been obtained via1891 `chicken-install'1892- `fifo?', `symbolic-link?', `directory?', `regular-file?', `socket?',1893 `character-device?' and `block-device?' now accepts file-descriptors1894 or filenames1895- `find-files' takes keyword arguments, now (including the options1896 to process dotfiles and ignore symbolic links); the old argument1897 signature is still supported but deprecated1898- removed dependency on `symbol-append' in some macros used in1899 srfi-4.scm to be able to compile the system with older chickens1900- fixed bug in script that generates development snapshot1901- added build-variable `TARGET_FEATURES', which can be used to pass1902 extra options enabling or disabling fetures for a system configured1903 for cross-compilation1904- added compiler and interpreter option `-no-feature FEATURENAME' that1905 disables predefined feature identifiers1906- code compiled with interrupts disabled will not emit inline files1907 for global inlining since they may execute in a context where1908 interrupts are enabled1909- the `setup.defaults' file that holds download sources for1910 `chicken-install' now allows aliases for locations1911- CHICKEN systems build from cross-compilation now by default1912 transparently build and install extensions for both the host1913 and target parts of the cross-compilation setup; the options1914 `-host' and `-target' can now be used to selectively build1915 an extensions for the host- and the target system, respectively1916- also added `-host' and `-target' options to `chicken-status' and1917 `chicken-uninstall'1918- `chicken-install' now respects the `http_proxy' environment variable1919 (contributed by Stephen Eilert)1920- the `srfi-4' library unit has been heavily cleaned up and optimized1921- optimization-level 3 now enables global inlining1922- fixed the case that declarations listing global identifiers did not1923 correctly rename them1924- deprecated `-N' option shortcut for `-no-usual-integrations' option in1925 `csc'1926- `csi' now offers a toplevel command `,e' for invoking an external1927 editor (suggested by Oivind Binde)1928- the `describe' command in `csi' now detects many circular lists1929 (contributed by Christian Kellermann)1930- `csi' doesn't depend on the `srfi-69' library unit anymore1931- when a closing sequence delimiter is missing or incorrect, the1932 reader also reports the starting line of the sequence1933- the reader signals an error when a file contains certain characters1934 that indicate that it is a binary file1935- procedure-information shown by the printer for procedures is now1936 corrected for some library procedures that where missing the correct1937 information; `getter-with-setter' copies procedure-information objects1938 into the newly created accessor procedure, if available1939- calls to some known pure standard- or extended procedures are removed, if1940 the procedures are called with side-effect free arguments and the1941 result is not used (this can also by enabled for user procedures with1942 the `constant' declaration)1943- fixed some build-system bugs related to installation1944- fixed a problem in the C runtime code that prevented it to be compileable1945 without a configuration header-file1946- the makefile-target to build a bootstrapping `chicken' executable1947 performs multi-stage build now1948- changed error message when required extension is out of date (thanks to1949 Mario Goulart)1950- documented library units loaded by default in `csi' (thanks to Moritz1951 Heidkamp)1952- added `boot-chicken' makefile target to simplify bootstrapping1953 the system from sources and documented this in the README1954 (suggested by Jim Ursetto)1955- CHICKEN can now be built on haiku (contributed by Chris Roberts)1956- on Solaris, the system can be compiled with the SunPro C compiler1957 (thanks to Semih Cemiloglu)1958- removed the `-disable-warnings' compiler option and `disable-warnings'1959 declaration specifier1960- `fx/' and `fxmod' generate now faster code in safe mode1961- cleaned up manual pages1962- slightly optimized variable- and procedure-access1963- in the compiler `-debug-level 2' implies `-scrutinize'1964- internal compiler-transformation for `for-each' and `map'1965 apply now with any expression as the procedure argument1966- the compiler warns about non-intrinsic exported toplevel variables1967 which are declared to be safe1968- `csc' didn't handle the `-verbose' option (thanks to Mario Goulart)1969- the `,d' command in `csi' now detects circular lists (thanks to1970 Christian Kellermann)1971- strings passed to C runtime functions and which are converted to1972 0-terminated C strings are now checked for not containing embedded1973 `\0' characters (thanks to Peter Bex)1974- errors in user-defined record printers are caught and shown in the1975 output instead of throwing an error to avoid endless recursion when1976 an error message is printed1977- a feature identifier named `chicken-MAJOR.MINOR' is now defined1978 to simplify conditionalization of code on the CHICKEN version1979- `getter-with-setter' copies the lambda-information (if available) from1980 the getter to the generated procedure1981- `time' uses a somewhat more concise output format and outputs timing1982 information to stderr instead of stdout1983- added a new chapter on cross-development to the manual1984- added the `safe-globals' declaration specifier1985- split up manual chapter `Modules and macros' into two chapters1986 (named `Modules' and `Macros', respectively - suggested by1987 Mario Goulart)1988- the last 5 non-precompiled regular expressions are now internally1989 cached in compiled form, which speeds up repeated matching of1990 the same uncompiled regular expression dramatically1991- added the new procedure `yes-or-no?' to the `utils' library unit1992- added a `bench' makefile target that runs some non-trivial1993 benchmark programs1994- added `install-target' and `install-dev' makefile target for1995 installing only target system libraries in cross-mode and1996 development files (static libraries and headers)1997- added `[-]no-procedure-checks-for-toplevel-bindings' compiler1998 option and declaration1999- usage of unimported syntax in modules gives more usable2000 error messages; in particular, used but unimported FFI forms are2001 now detected2002- invalid syntactic forms (mostly `()') encountered by the compiler2003 or interpreter show the contextual form containing the expression,2004 or, if indicated by the context warns about missing imports2005- simplified manual pages of all core tools - they now refer to2006 the output shown by invoking `<tool> -help'2007- added new option `-feature FEATURE' to `chicken-install' tool2008 to pass feature-identifiers to invocations of `csc'2009- removed deprecated `-host-extension' option from `chicken-install'2010- `chicken-status' in a system built for cross-compilation now2011 lists extensions installed in the target prefix, unless the2012 new `-host' option is given on the command line2013- `chicken-uninstall' in a system built for cross-compilation now2014 removes extensions installed in the target prefix, unless the2015 new `-host' option is given on the command line2016- added missing entry for `finite?' to the `chicken' module2017 exports2018- added new procedure `port-closed?' to the `library' unit2019 (contributed by Peter Bex)2020- added new procedure `symbol-append' to the library unit2021- the compiler-option `-optimize-level 0' is equivalent to2022 `-no-compiler-syntax -no-usual-integrations`2023- internal rewritings of `map' and `for-each' ensure correct2024 evaluation order of the arguments and does a better job2025 at detecting non-list arguments (thanks to Jim Ursetto)2026- `void' now takes arbitrary arguments and ignores them2027- deprecated `noop' (from the `data-structures' unit) which2028 is now replaced by `void'2029- the `time' macro now performs a major garbage collection2030 before executing the contained expressions and writes2031 the timings in a more compact format to the port given2032 by `(current-error-port)' instead of the standard output2033 port2034- definitions of the form `(define define ...)' and2035 `(define-syntax define-syntax ...)' now trigger an error,2036 as required by R5RS (thanks to Jeronimo Pellegrini and Alex2037 Shinn)2038- deprecated `random-seed' from the `extras' unit, since it2039 is identical to `randomize'2040- added new procedure `create-temporary-directory' to the2041 `files' unit2042- deprecated the optional path separator argument to2043 `make-pathname'2044- slightly improved the performance of keyword argument2045 processing2046- removed the deprecated `canonical-path' and `current-environment'2047 procedures from the `posix' unit2048- warnings that mostly refer to programming style issues are2049 now coined `notes' and are only shown in the interpreter2050 or when debug-mode is enabled or when scrutiny is enabled2051 when compiling205220534.5.020542055- internal fixes of handling of alternative installation-prefix2056 in setup-api2057- certain compiler-warnings that are in really just notes2058 and don't indicate a possible error (like reimport of2059 identifiers) are only shown with -S or in verbose mode2060- fixed handling of VARDIR in `chicken-install' (thanks to2061 Davide Puricelli)2062- `chicken-install -test' doesn't runs tests for dependencies2063- when a non-else clause follows an else-clause in `cond',2064 `case' or `select' a warning (note) is shown in verbose2065 mode2066- removed the deprecated `define-extension' and2067 `define-compiled-syntax'2068- `chicken-uninstall' now always asks before removing2069 extensions, unless `-force' is given2070- improved performance of keyword-argument processing slightly2071- `export' outside of a module definition has no effect2072- `number->string' now accepts arbitrary bases between 2 and 162073 (thanks to Christian Kellermann)2074- fixed `standard-extension' in `setup-api' module2075- literal constants keep their identity, even when inlined2076- Unit library: added `fxodd?' and `fxeven?'2077- All hardcoded special forms have been replaced with2078 syntax definitions that expand into internal forms, this2079 allows redefinition and shadowing of all Scheme core forms2080- faster implementations of `get' and `put!'2081- faster implementation of `assq' in unsafe mode2082- the `-sx' option prefixes each output line with `;'2083- slightly better expansion performance2084- more documentation of the C API (thanks to Peter Bex)2085- `module' supports a shorthand form that refers directly2086 to a file to be included as the module body2087- added runtime option `-:G' to force GUI mode (on platforms2088 that distinguish between GUI and non-GUI applications)2089- removed the unsafe runtime library (`libuchicken'), this2090 simplifies and speeds up the build and reduces the risk2091 of executables loading library units from different2092 variants of the runtime system2093- removed the `-unsafe-libraries' option from `chicken'2094 and `csc'2095- removed bootstrapping target and bootstrapping files from2096 development repository; to bootstrap the system, either2097 use a release or development-snapshot tarball or fetch2098 a statically linked precompiled `chicken' binary from2099 http://chicken.wiki.br/chicken-projects/bootstrap/2100- Jim Ursetto provided some fixes for building universal2101 binaries on Mac OS X2102- `csc' now compiles and links Windows resource (.rc) files2103 when given on the command line2104- `chicken-install' and `chicken-uninstall' have an embedded2105 manifest that suppresses the elevation dialog on Windows2106 Vista and later when UAC is activated (Thanks to Thomas Chust)2107- the `install' program is not used in the build on mingw2108 and mingw/MSYS platforms, since this is broken on older2109 mingw versions2110- line-number-information is now properly handled (in the2111 few places where it is used) correctly for included files;2112 the source file is given in trace-output in addition to2113 the line number2114- removed compiler warning for shared objects compiled in2115 unsafe mode2116- unboxing is now only done in unsafe mode2117- in unsafe mode, pointer-accessors from the `lolevel' unit2118 are now handled intrinsically by the compiler2119- `chicken-install' accepts now relative pathnames for the2120 `-prefix' option2121- `define-record-type' now optionally allows using SRFI-172122 setters as record-field modifiers2123- `integer?' returns `#f' for NaN and infinite numbers2124- `csc' now has an `-no-elevation' option for embedding a2125 manifest that prevents the elevation dialog on Windows2126 Vista and later when IAC is activated2127- the `,d' csi command displays qualified symbols properly2128- symbols starting with the `#\#' character trigger an2129 error when encountered by the reader2130- Unit posix: `glob->regexp' now always returns a regular2131 expression object or optionally an SRE2132- Unit posix: `terminal-port?' and `terminal-size' have been2133 implemented for Windows, the latter always returns `0 0',2134 though (thanks to Jim Ursetto)2135- Unit regex: `regexp' now accepts a regular expression2136 object as argument2137- Unit regex: removed `glob?'2138- fixed bug in `chicken-install'/`chicken-uninstall' and2139 `chicken-status' that prevented collapsed command-line2140 options to be handled correctly.2141- disabled runpath-fix for deployed applications for netbsd2142 (but resurrected providing a runpath at all, thanks to2143 Peter Bex)2144- Peter Bex provided documentation for the `C_closure' C API2145 function214621474.4.021482149- the system can now be built with llvm-gcc and/or "clang" (the2150 LLVM C compiler which doesn't use the GNU C frontend)2151- added new option `-trunk' to `chicken-install', which forces2152 building and installing the development version of extensions2153 in combination with `-t local'2154- added new option `-deploy' to `chicken-install', which builds2155 extension for use in "deployed" applications (see below)2156- added option `-deploy' to `csc', the compiler driver. With this2157 option `csc' can build fully self-contained application bundles2158 and double-clickable Macintosh GUI apps; see the "Deployment"2159 manual chapter for more information2160- the directory given to the `-prefix' option of `chicken-install'2161 may now be a relative pathname.2162- removed GUI-specific runtime library (`libchicken-gui') from2163 Windows build - GUI- and non-GUI applications now use the same2164 runtime library2165- special forms of the foreign-function interface have been replaced2166 with an internal form and syntax to allow renaming and shadowing of2167 these forms2168- the new `-private-repository' option in `csc' compiles executables2169 with the extension-repository path set to the directory from which2170 the program was started2171- `csc': deprecated the `-W' and `-windows' options, added `-gui' as2172 a platform-independent replacement2173- `require-extension'/`use' accepts now import-specifications2174- user-defined extension-specifiers and `set-extension-specifier!'2175 have been removed2176- `delete-file[*]', `rename-file', `create-directory', `file-copy',2177 `file-move', `delete-directory' and `change-directory' return their2178 argument/destination filename on success2179- added the missing procedure `condition-variable-name' to the2180 srfi-18 library unit (Thanks to Joerg Wittenberger)2181- the `glob?' function from the `regex' unit has been deprecated2182- added the procedure `scan-input-lines' to the `utils' library unit2183- added new runtime option `-:g' which enables GC debugging output2184- reclamation of unused symbols in "symbol-gc" mode (`-:w') now only2185 takes place for symbols with an empty property-list2186- on Windows loading of code compiled with [non-]GUI runtime libraries2187 will fail and produce an error message when the loading executable2188 is linked with a different runtime system2189- on Windows, GUI libraries were not correctly linked by `csc'2190- unit posix: added setter for `file-modification-time'2191- the banner shows the branchname of the build, unless it's "master"2192- the `-no-install' option to `chicken-install' is ignored when2193 building/installing dependencies2194- `chicken-uninstall' takes a glob instead of a regular expression as2195 argument2196- the rename and compare functions for low-level macro-definitions2197 accept now arbitrary s-expressions and renames/compares them recursively2198- `number->string' handles negative-numbers with bases different from 102199 correctly (thanks to Peter Danenberg)2200- removed deprecated `setup-install-flag' and `setup-verbose-flag' from2201 the `setup-api' module2202- added new option `-repository' to `chicken-install' (Thanks to Christian2203 Kellermann)2204- removed `chicken-setup' stub program2205- fix to `csc' to use the correct library when fixing dynamic load paths2206 (Thanks to Derrell Piper)2207- removed html documentation from distribution (the wiki manual will2208 now be installed)2209- fixed bug in `reexport' which caused syntax not to be correctly2210 reexported2211- previous assignments to a toplevel variable that are separated by2212 side effect free expressions are removed2213- fixed windows version of `find-files' (thanks to Jim Ursetto)2214- documentation for extensions is not installed automatically by2215 `chicken-install' anymore2216- changed binary version from "4" to "5", because the new runtime2217 libraries are not binary-compatible with previous releases; this2218 means all eggs have to be reinstalled and existing programs be2219 recompiled!2220- added unboxing pass to compiler which results in partially dramatical2221 performance improvements for unsafe floating-point-intensive code;2222 unboxing is enabled on optimization levels 4 and 52223- removed rest-argument-vector optimization as it could conflict2224 with inlining (thanks to Sven Hartrumpf)2225- renamed `pointer-offset' to `pointer+' and deprecated `pointer-offset'2226- toplevel assignments that have no other side-effects can be eliminated2227 if it can be shown that the value is not used (the compiler will2228 generate a warning in this case)2229- removed deprecated `-quiet' option in `chicken' program2230- removed deprecated `run-time-macros' declaration2231- removed deprecated `-v2' and `-v3' options in `csc' program2232- removed deprecated `list-of' function (it is exclusively available2233 as `list-of?' now)2234- removed deprecated `stat-...' functions in posix library unit2235- removed deprecated `for-each-line' and `for-each-argv-line' procedures2236 in utils library unit2237- added `fpinteger?' and `fpabs'2238- deprecated `define-compiled-syntax'2239- added new floating-point primitives `fpsin', `fpcos', `fptan',2240 `fpasin', `fpacos', `fpatan', `fpatan2', `fpexp', `fplog',2241 `fpexpt' and `fpsqrt'2242- heavy cleanup of floating math functions which gives much better performance,2243 especially for code compiled in unsafe mode2244- calling `assert' with a single argument shows the tested expression2245 on failure2246- various bugfixes and cleaning up224722484.3.022492250- fixed bug in `move-memory!' that caused negative offsets to be accepted2251 (thanks to Jim Ursetto)2252- removed tracing facility and apply-hook (see the "trace" egg2253 for a replacement for tracing and breakpoints)2254- chicken-install(1): renamed `-host-extension' option to `-host'2255- added support for a make(1) configuration file ("config.make")2256- `chicken-install' now allows specifiying a proxy for retrieving2257 extensions over HTTP (thanks to Nicolas Pelletier)2258- fixed bug in `cond-expand' that incorrectly renamed feature-identifiers2259 if the form was the product of a syntax expansion (reported by Thomas2260 Bushnell)2261- import-libraries are only generated by the compiler if they don't exist2262 yet and if the content has actually changed (this simplifies makefile-2263 rules in some cases)2264- it is now possible to pass a config-file to `make(1)' instead of specifying2265 all build-options as variables on the command-line (see README)2266- removed compiler options for "benchmark-mode" and replaced them with a2267 new optimization level (5) (note that `-O5' does not imply fixnum mode2268 anymore)2269- `hen.el' and `scheme-complete.el' are not bundled with the core system2270 anymore - `hen.el' is currently not maintained, and `scheme-complete.el'2271 has its own release cycle; both files are available, see2272 http://chicken.wiki.br/emacs2273- removed meaningless benchmark suite and cleaned up2274- added optional argument to `grep' that allows applying a function2275 to each matched item (contributed by Tony Sidaway)2276- added extension-property `import-only', which makes it possible to2277 create extensions that have no runtime part2278- the argument to `seconds->string', `seconds->utc-time' and2279 `seconds->local-time' is now optional and defaults to the value2280 of `(current-seconds)' (suggested by Mario Goulart)2281- removed read-syntax for `syntax' form2282- fixed bug in `get-condition-property'2283- fixed bug in windows version of `process-execute'2284- TCP timeouts throw exception of kind `timeout' to allow2285 distinguishing between timeouts and other errors2286- removed some internal functions that manipulate environments2287- fixed bugs in `standard-extension' (`setup-api' module) and added keyword2288 arguments for building static extensions and adding custom properties2289- when cross-compiling, `chicken-install(1)' doesn't pass `-setup-mode'2290 (the host tools should not attempt to load target binaries)2291- `installation-prefix' in the `setup-api' module was not always correctly2292 set2293- the `-force' option in `chicken-install(1)' overrides the CHICKEN version2294 check2295- disabled e-mail feature in `chicken-bug(1)', since it doesn't work2296 anyway, in the moment2297- fixed bug in `reexport' that made it impossible to reexport core library2298 definitions2299- fix in optimizer that sometimes caused C functions for inlined2300 procedures to be emitted multiple times (Thanks to Joerg Wittenberger)2301- documented `define-compiler-syntax' and `let-compiler-syntax'2302- printer for hash-tables shows current number of stores items2303- when upgrading during installation of a dependency `chicken-install'2304 shows the version to upgrade to (Thanks to Christian Kellermann)2305- Updated scheme-complete (Thanks to Alex Shinn)2306- fix for pathnames with whitespace in 'runtests.sh' on Windows2307- fix for 'normalize-pathname' with absolute pathname argument2308- added 'decompose-directory' to unit files2309- fix for 'local-timezone-abbreviation' - wasn't using the current time2310 so tz-name constant2311- deprecated 'make-pathname' separator argument231223134.2.023142315- added compiler option `-emit-all-import-libraries'2316- added `reexport'2317- added compiler and interpreter option `-setup-mode'2318- various minor performance improvements2319- fix for 'create-directory' when parents wanted2320- `for-each-line' and `for-each-argv-line' have been deprecated2321- chicken-install tries alternative servers if server responds with error2322- fixed load bug (ticket #72)2323- new library procedure `get-condition-property'2324- many mingw build fixes (thanks tp Fadi Moukayed)2325- setup-api: deprecated `cross-chicken' (use `cond-expand' or2326 `feature?' instead)2327- added topological-sort to data-structures unit; chicken-install2328 sorts dependencies before installing them2329- "-optimize-level 2" enables inlining by default2330- disable executable stack in assembly code modules (patch by2331 Zbigniew, reported by Marijn Schouten)2332- csc now always exits with a status code of 1 on errors (patch by Zbigniew)233323344.1.023352336- The new parameter "parantheses-synonyms" and the command-line2337 option "-no-parantheses-synonyms" allow disabling list-like behaviour2338 of "{ ... }" and "[ ... ]" tokens2339- The new parameter "symbol-escape" and the command-line2340 option "-no-symbol-escape" allows disabling "| ... |" symbol escape2341 syntax2342- Added command-line option "-r5rs-syntax" to disable CHICKEN-specific2343 read-syntax2344- Removed "macro?" and "undefine-macro!"2345- Support for Microsoft Visual Studio / MSVC has been dropped2346- The compiler provides now a simple flow-analysis pass that does2347 basic checking of argument-counts and -types for core library procedure2348 calls (new option "-scrutinize")2349- New compiler-options "-no-argc-checks", "-no-bound-checks",2350 "-no-procedure checks", "-no-procedure-checks-for-usual-bindings",2351 "-types TYPEFILE" and "-consult-inline-file FILENAME"2352- Added a "chicken-setup" stub-application to catch incorrect use of2353 this tool (which has been replaced in 4.0.0 with "chicken-install")2354- Changed "setup-install-flag" and "setup-verbose-flag" to2355 "setup-install-mode" and "setup-verbose-mode" in "setup-api" module,2356 the old names are still available but deprecated2357- Posix unit:2358 added "socket?", "block-device?" and "character-device?", deprecated2359 redundant "stat-..." procedures2360- Added "directory-exists?"2361- "(for-each (lambda ...) X)" is compiled as a loop2362- The argument-count check for format-strings for "[sf]printf" with a constant2363 string argument is done at compile-time236423654.0.023662367- removed `apropos' and `apropos-list' from the "utils" library unit;2368 available as an extension2369- removed texinfo and PDF documentation - this will possible be added back2370 later2371- replaced PCRE regex engine with Alex Shinn's "irregex" regular expression2372 package2373- removed `-extension' option2374- removed `-static-extensions' csc option and added `-static-extension NAME'2375- `regex' unit: removed `regexp*' and `regex-optimize'2376- added `CHICKEN_new_finalizable_gc_root()'2377- `length' checks its argument for being cyclic2378- removed custom declarations and "link-options" and "c-options" declarations2379- deprecated "-quiet" option to "chicken" program2380- added "-update-db" option to chicken-install2381- the compiler now suggests possibly required module-imports2382- moved non-standard syntax-definitions into "chicken-syntax" library unit2383- the pretty-printer prints the end-of-file object readably now2384- alternative conditional execution paths have separate allocation computation2385 (previously the allocation of all alternatives was coalesced)2386- removed unused "%kmp-search" from "srfi-13" library unit2387- expander handles syntax-reexports and makes unexported syntax available2388 for exported expanders in import libraries2389- added checks in some procedures in the "tcp" library unit2390- the macro system has been completely overhauled and converted2391 to hygienic macros2392- a macro-aware module system has been added2393- added "-sx" option to csi2394- removed the following deprecated functions:2395 [un]shift!2396 andmap ormap2397 byte-vector? byte-vector-fill!2398 make-byte-vector byte-vector2399 byte-vector-set! byte-vector-ref2400 byte-vector->list list->byte-vector2401 string->byte-vector byte-vector->string2402 byte-vector-length2403 make-static-byte-vector static-byte-vector->pointer2404 byte-vector-move! byte-vector-append!2405 set-file-position! set-user-id! set-group-id!2406 set-process-group-id!2407 macro? undefine-macro!2408- the situation-identifiers "run-time" and "compile-time" have2409 been removed2410- the compiler options "-check-imports", "-import" and "-emit-exports"2411 have been removed2412- new procedures:2413 strip-syntax2414 expand2415- new macros2416 define-syntax2417 module2418 export2419- the following macros have been removed:2420 define-foreign-record2421 define-foreign-enum2422 define-macro2423 define-extension2424- "local" mode, in which locally defined exported toplevel variables can2425 be inlined2426- new options and declarations "[-]local", "[-]inline-global" and "-emit-inline-file"2427- optimization levels changed to use inlining:2428 -optimize-level 3: enables -inline -local (but *not* -unsafe)2429 -optimize-level 4: enables -inline -local -unsafe2430- increased default inlining-limit to 202431- support for cross-module inlining2432- "make <VARIABLES> bench" runs the benchmark suite2433- "chicken-setup" has been replaced by new command line tools2434 "chicken-install", "chicken-uninstall" and "chicken-status", which are2435 more flexible and allow greater freedom when creating local or application-2436 specific repositories2437- extension-installation can be done directly from SVN repositories or a local2438 file tree2439- enabled chicken mirror site as alternative download location