Hello!
A new development snapshot (4.7.4) of the core system is now available: http://code.call-cc.org/dev-snapshots/2012/02/07/ Countless things have been fixed, cleaned up, tuned and extended. Give it a try! A lot of people have participated in the recent improvements. Usually I try to keep track of all contributors, but this time I'll be lazy and just thank EVERYBODY heartily for the help! What's new since 4.7.3: - Security fixes - improved hash table collision resistance and added randomization to prevent malicious external causes of collisions. All SRFI-69 procedures accept extra arguments to control randomization for testing/debugging. - Build system - the test-suite is now working on the mingw32 platform (with a few tests disabled due to missing functionality) - the version and branch of the sources are now properly compiled into the core libraries and shown in the "csi" and "chicken" version headers - Runtime system - deprecated "[+-]nan", "[+-]inf" and other notations "accidentally" accepted by Chicken due to the underlying C library's strtod() function, standardizing on "[+-]nan.0" and "[+-]inf.0" from R6RS (and soon R7RS), when displaying numbers only these forms are generated now. - signals are queued to some extent and the interrupt handling has been cleaned up somewhat - the interpreter handles SIGINT directly - loading the "posix" unit is not needed anymore to handle this feature - changed default nursery size slightly and fixed a bug that caused incorrect (too small) nursery sizes on 64-bit platforms - deprecated the compiler option "-heap-initial-size", "-heap-growth" and "-heap-shrinkage" - the assembly-language stub routine for the implementation of "apply" was broken for Sparc64 systems - has been disabled for this platform - Core libraries - added a setter procedure to "signal-handler" ("posix" unit) - EINTR is properly handled for input routines that may block waiting for input - the implementation of R5RS evaluation environments is now fully standards compliant - "file-exists?" and "directory-exists?" work now properly for files > 2GB (EOVERFLOW handling in stat(3) system call) - fixed bug in implementation of "fifo?" - the procedure returned by "condition-predicate" accepts any type of argument now - blobs have a readable textual representation ("#{...}") - "find-files" does not follow symlinks by default (as it did previously) - also, the old non-keyword argument signature for "find-files" is not supported anymore - added "alist-update" ("data-structures" unit) - "irregex-replace" returns the original string instead of #f when the regex does not match - added "change-directory*" ("posix" unit) - number parsing has been made more reliable and standards compliant - deprecated "none?", "always?" and "never?" ("data-structures" unit) - "parameterize" does not invoke guard procedure when restoring a parameter's value after execution of the body - library procedures that take ports as arguments now all perform checks on direction and open/closed state - "mutate-procedure" has been renamed to "mutate-procedure!" - the old name is still available but deprecated ("lolevel" unit) - deprecated C_hash_string and C_hash_string_ci functions in the C API in favor of the more secure versions C_u_i_string_hash, C_u_i_string_ci_hash - a number of bugs in the irregex regular expression engine have been fixed - "with-input-from-file", "with-output-to-file", "with-input-from-pipe" and "with-output-to-pipe" now properly restore the standard input/output ports in case the body thunk escapes - symbols with a single-char print-name where not always properly escaped whrn printed readably - Compiler - fixed a bug in the compiler that could cause some variable bindings to be optimized away in certain situations involving inlining - added an experimental optimization called "clustering" (enable with the compiler option of the same name) - the optimizations done by the compiler are now listed inside a comment in the generated C file - the type-information obtained during flow-analysis ("scrutiny") is now used for performing type-sensitive optimizations of calls to most of the core-library procedures - various improvements in the flow-analysis pass have been done and countless bugs fixed - deprecated the "constant" declaration specifier - "unboxing" optimization has been completely removed - the implementation was unreliable and unmaintainable; the "-unboxing" compiler option will still be accepted but will produce a warning - Peter Bex contributed an optimization to the analysis pass that greatly reduces compile time for source code containing deeply nested lexical bindings - procedures that are known to have the value of a core library procedure that is a "standard" or "extended binding" will be inlined - Type system - added new type-specifiers "input-port", "output-port", "(list-of T)" and "(vector-of T)" - the type-specifiers "(vector T ...)" and "(list T ...)" represent fixed size lists and vectors now - added qualified types ("forall"), optionally with type constrains - added the "define-type" special form and type-abbreviations - "-verbose" now shows scrutinizer-warnings and compiler notices that are possibly non-critical (otherwise they are not listed) - added "compiler-typecase", a compile-time typematching form - Module system - the "scheme" module has been integrated into the core library and is not installed as a separate import library anymore - added core module "r4rs" containing only bindings for R4RS identifiers - added core module alias "r5rs" for "scheme" module - added "module-environment" which returns an evaluation environment for the bindings of a module - Core tools - "chicken-install" - fixed handling of "-force" when a "chicken" dependency version did not match - added new option "-show-foreign-depends" which lists foreign egg dependencies (if available) - added new option "-show-depends" which lists egg dependencies - Foreign function interface - locatives are allowed as arguments declared "c-pointer" cheers, felix _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
