chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] CHICKEN 4.7.4 development snapshot available


From: Felix
Subject: [Chicken-users] CHICKEN 4.7.4 development snapshot available
Date: Sat, 11 Feb 2012 15:50:04 +0100 (CET)

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]