Features Download

From: Raymond Toy <raymond.toy <at> stericsson.com>
Subject: CMUCL 19f released
Newsgroups: gmane.lisp.cmucl.general
Date: Thursday 12th March 2009 14:56:44 UTC (over 9 years ago)
We're pleased to announce the release of 19f.  Binaries for most
common supported platforms are now available.

The web pages aren't up-to-date yet, but they should be synced

We hope this serves your needs, and many thanks to everyone who
contributed in any way to the project,

The CMUCL team

The 19f release notes:

========================== C M U C L  19 f =============================

The CMUCL project is pleased to announce the release of CMUCL 19f.
This is a major release which contains numerous enhancements and
bugfixes from the 19e release.

CMUCL is a free, high performance implementation of the Common Lisp
programming language which runs on most major Unix platforms. It
mainly conforms to the ANSI Common Lisp standard. CMUCL provides a
sophisticated native code compiler; a powerful foreign function
interface; an implementation of CLOS, the Common Lisp Object System,
which includes multimethods and a metaobject protocol; a source-level
debugger and code profiler; and an Emacs-like editor implemented in
Common Lisp. CMUCL is maintained by a team of volunteers collaborating
over the Internet, and is mostly in the public domain.

New in this release:

  * Feature enhancements:
    - ~R supports many more cardinal names.
    - Updated network support:
      o Added BIND-INET-SOCKET to bind a socket to a local address.
      o Added OPEN-NETWORK-STREAM to create a stream connected to a given
      o Added ACCEPT-NETWORK-STREAM to create a stream connected to
        the new network connection
      o Updated CONNECT-TO-INET-SOCKET to allow binding the newly
        created socket to a local address
    - Added UNIX:UNIX-OPENPTY, an interface to the openpty C library
    - SSE2 support added for x86.
      o CMUCL automatically detects whether sse2 is supported or not
        and loads up the appropriate core file.
      o New -fpu switch allows the user to specify explicitly which
        core should be used.  The valid values are x87, sse2, or auto
        (the default).
      o Fasls compiled with sse2 support have the extension sse2f.
        Otherwise, the normal x86f extension is used.  This allows the
        user to do tests/experiments with both x87 and sse2 without
        having to mess around with different directories and removing
        fasls before building for a different FPU.
      o If the chip supports sse2, but CMUCL can't find the sse2 core,
        CMUCL will try to fall back to the x87 core.  (This only
        happens if -fpu is auto.)
    - Command line parsing now recognizes the option "--".  Everything
      after "--" is not subject to CMUCL's command line parsing, and
      everything after the "--" is placed in the new variable

  * ANSI compliance fixes:
    - Fix bug in backquote printer.  If the variable is @foo, we want
      to print ", @foo" not ",@foo".  Similarly, for .foo, we want to
      print ", .foo" instead of ",.foo".
    - Fix merging of version in MAKE-PATHNAME.  If the pathname name
      is given, the version is not affected by the version in the
      default pathname.
    - RENAME-FILE now creates defaulted-new-name from merging new-name
      with the original filespec.  This is an incompatible change from
      the previous version which created defaulted-new-name from
      merging the new-name with the truename of filespec.  Also, a
      logical pathname should be returned if new-name is a logical
    - Character names need to be a capital letter followed by lower
      case.  Needed to match what ~:C does.  (Found via ansi-tests).

  * Bugfixes:
    - Compiler can now derive the rank of an array, even if the array
      is not simple.
    - Fix off-by-one bug in ~R which prevents printing numbers from
      10^63 to 10^66-1.  10^63 is a vigintillion.
    - The compiler and interpreter should now handle slot-value the
      same.  Previously, different results were returned for things
      like (slot-value foo :a).
    - UNIX-GETGRNAM is now defined for Darwin (x86 and ppc).
    - UNIX-GETPWUID is defined for all BSD systems.
    - Type-derivation for EXPT no longer causes errors in some
      situations.  The computed bounds were of the wrong type for the
      resulting type specifier.
    - Pathname printer no longer produces an error for (MAKE-PATHNAME
      :HOST NIL :TYPE "foo").  It returns #P(:HOST NIL :TYPE "foo")
    - Type derivation for DOUBLE-DOUBLE-FLOAT arithmetic should be
      working.  Previously, all arithmetic operations would just
      return DOUBLE-DOUBLE-FLOAT even though the compiler should have
      been able to figure out a tighter result.
    - When SCALE-FLOAT would underflow, it would always return 0f0,
      instead of a floating-point zero of the correct type.
    - Fix some issues in creating the debug arglist string when the
      arglist contains items that can't be printed readably.
    - DIRECTORY is now faster for directories with a large number of
    - RANDOM is now much faster on all platforms for numbers upto
      #xffffffff.  This is an incompatible change from previous
      releases because the numbers produced may be different from
    - The small bias in RANDOM for integer args up to 32 bits long
      should now be gone.
    - Improved type derivation for LOGAND when one arg is bounded but
      the other is not.
    - Some issues with tracing on sparc and ppc have been fixed.  This
      usually manifests itself with a segfault just after the function
      result is printed.
    - Fixed bug on sparc where C-c sometimes causes a segfault.  We
      now handle the case where siginfo_t is NULL, which can also
      happen on other architectures.
    - The interpreter catches invalid EVAL-WHEN situations just like
      the compiler, instead of silently ignoring them.
    - FLOAT-PRECISION supports double-double floats.
    - Tracing should now be working on Darwin/x86.  Previously,
      certain cases would cause Lisp to segfault in bad ways where you
      could not return to the repl.  Do not need to do encapsulation
      by default anymore.
    - The bounds for type (REAL lo hi) are computed better now.  The
      REAL type is a union of SINGLE-FLOAT, DOUBLE-FLOAT, and
      DOUBLE-DOUBLE-FLOAT.  The computed bounds for
      DOUBLE-DOUBLE-FLOAT only had double-float accuracy if the bound
      for REAL was a rational.
    - The FLOAT type now requires that the bounds, if given, are
      floats.  Previously, any real type would be accepted.  This
      makes FLOAT behave like SINGLE-FLOAT and DOUBLE-FLOAT which
      required the bounds to be a float of the appropriate type.

  * Trac Tickets:
    - #16: Read-time hash-table issue
    - #17: LOOP NAMED NIL has no effect
    - #18: Modular arith bug 1
    - #19: Modular arith bug 2
      Fixed by not doing modular arith if the args are known to be
    - #20: Modular arith bug?
      Fixed via the fix for Trac #21.  The original workaround has
      been removed.
    - #24: Float contagion for expt
      Float contagion is applied to the arguments before computing
    - #21: Modular arith bug 3
      Fixed by delaying the logand defoptimizer.
    - #15: x86 double-float issue
      Fixed when using SSE2 support.  We will not fix this for x87.
    - #25: Compiler bug
    - #26: slot-value type check
      Fixed for some cases.  When used in methods, slot-value may not
      do the type check.if the object is not a argument to the method.
    - #29: make-condition doesn't accept class objects

  * Other changes:
    - IS1, IS2, IS3, and IS4 are recognized character names for the
      ASCII control codes US, RS, GS, FS, respectively.
    - When initializing a random state, try to read 627 words from
      /dev/urandom to initialize the entire state vector with random
      bits.  Previously, only one word was read.
    - A seed of 0 is allowed in KERNEL:INIT-RANDOM-STATE.
    - Updated User guide to include more examples of tracing.
    - Enable gencgc page protection on x86/darwin.  This can speed up
      GC a bit.  (Not measured.)
    - Bignum truncate is significantly faster.  Some cl-bench
      benchmarks are now almost twice as fast.
    - The continuable error produced by raising an integer to a power
      exceeding *intexp-maximum-exponent* is now a restart, giving the
      user the option to continue and update the limit to the new
    - The Darwin/x86 port can run on Mac OS X 10.4 or later.

  * Improvements to the PCL implementation of CLOS:
    - The compiler and interpreter should handle SLOT-VALUE the same
      way.  Previously, (SLOT-VALUE obj :a) would behave differently
      in the compiler and interpreter.
    - Some issues with get-accessor-method-function and
      slot-value-using-class have been fixed.
      Get-accessor-method-function was causing an error to be signaled
    - (setf (slot-value  ) ) will now signal an error
      in some situations when the new value is not of the correct
      declared type for slot.

  * Changes to building procedure:
    - For Linux, custom CFLAGS, CC, and LDFLAGS are supported.
      Requested by Stelian Ionescu for Gentoo support.
    - The FreeBSD config file is now named Config.x86_freebsd, which
      is equivalent to Config.FreeBSD_gencgc, which is deprecated.
    - The Linux config file is now named Config.x86_linux, which is
      the equivalent to Config.linux_gencgc, which is deprecated.

  * Known issues:
    - Executables (via save-lisp) on recent FreeBSD versions are
      currently not working.  The executable is created, but the
      resulting executable doesn't work correctly.

This release is not binary compatible with code compiled using CMUCL
19e; you will need to recompile FASL files. 

See http://www.cons.org/cmucl/> for
download information,
guidelines on reporting bugs, and mailing list details.

We hope you enjoy using this release of CMUCL!
CD: 154ms