Release notes for Clozure CL 1.8

Supported Platforms

Clozure CL 1.8 runs on the following platforms:

  • Mac OS X 10.5 and later (x86, x86-64)
  • Linux (x86, x86-64, ppc32, ppc64, armv7l)
  • FreeBSD 6.x and later (x86, x86-64)
  • Solaris (x86, x86-64)
  • Microsoft Windows XP and later (x86, x86-64)

The preferred way to get Clozure CL is via Subversion. For example to get CCL for Mac OS X running on x86, one would run the following command from a shell prompt:

$ svn co

For other platforms, change the darwinx86 to one of linuxx86, freebsdx86, solarisx86, windows, linuxppc, or linuxarm.

Both 32 bit and 64 bit binaries are included with all versions (except for ARM, which is 32 bit only).

For more details, please see SystemRequirements.

Reporting Bugs

Please use the Trac instance at to review existing bug reports and to submit new ones.

Platform Notes

Mac OS X

The Cocoa-based IDE requires Mac OS X 10.6 or later. The command-line lisp still runs on Mac OS X 10.5.

On Mac OS X 10.7, the AltConsole application may not automatically activate when the standalone Clozure crashes. Clicking on the AltConsole icon in the dock will activate it and it should then behave normally.


The binaries are built on a FreeBSD 8.1 system. If you are running 6.x or 7.x, you should be able recompile the lisp kernel on your own system and run the lisp without any further trouble:

$ cd ccl/lisp-kernel/freebsdx8632   # or freebsdx8664, as appropriate
$ make

Linux x86

The Linux/x86 binaries are built on a Debian 5.0 system. This is old enough that most people should not encounter any difficulty with running the lisp kernel binary. If, however, the provided binary fails to run, complaining that it is linked against an unavailable version of glibc, then you should be able to compile the lisp kernel on your own system and run the lisp without any further trouble:

$ cd ccl/lisp-kernel/linux8632  # or linux8664
$ make

Note that the m4 program needs to be installed in order to build the lisp kernel.

Linux ARM

An ARMv7 processor is required. This unfortunately rules out several interesting small ARM-based systems. One such system is the Raspberry Pi, which uses an ARMv6 architecture chip (namely a ARM1176JZFS core), and will therefore not run CCL.

The nomenclature used to identify various ARM processors is extremely confusing. may be of some help.

Fixed tickets

ticket:757, ticket:846, ticket:3, ticket:882, ticket:886, ticket:884, ticket:887, ticket:889, ticket:891, ticket:894, ticket:441, ticket:896, ticket:892, ticket:893, ticket:862, ticket:899, ticket:905, ticket:865 (and possibly others)



The symbol :ccl-1.8 is now on *features*.

The bundled ASDF is now version 2.20.

The output format of the standard time macro has changed so that the time-related numbers line up better.

The :directories argument to the function directory now defaults to t. This means that the output will include both files and directories by default. Also, directory now treats symbolic links to directories as directories when :follow-links is t (as it is by default).

The read-line function reads lines faster, even on Windows.

On Unix-based systems, the HOME environment variable is now used by default to initialize user-homedir-pathname. This is optional: set ccl:*trust-paths-from-user-environment* to nil to disable this.

Some improvements have been made to how code coverage results are presented.


Numerous bug fixes and performance improvements were made to the ARM port.

The x86 backend tries harder to reduce unnecessary stack traffic.

Self tail-calls involving a small number of fixed arguments are somewhat faster on x86 and on ARM.

In certain cases, case and related constructs will compile into a constant-time jump table for certain types and ranges of keys.

GC and Runtime

To avoid deadlock, the GC now defers all gcable-pointer termination actions until after threads have been resumed. A minor side effect of this is that GC will have to retain certain otherwise unreachable objects until the next GC, and this may cause some foreign resources to be tied up slightly longer than they have been to date.

On Mac OS X, if the default heap image isn't found, assume that we're in an application bundle and look for it in ".../Resources/ccl".

Minor incompatible change: the lisp kernel no longer treats a single command-line argument as an image name. This enables users to avoid writing a shell script wrapper for simple "standalone binaries" in some cases.


The disassembler output format has changed so that the instruction address is printed in a comment after the instruction.

The disassembler recognizes and prints case jump tables. To see an example of this, disassemble the following silly function:

(defun jumper (x)
  (case x
    (1 'one)
    (2 'two)
    (3 'three)
    (4 'four)
    (5 'five)
    (6 'six)
    (7 'seven)
    (8 'eight)
    (9 'nine)
    (10 'ten)))

Cocoa-based IDE

The variable ccl:@, which is set by the inspector to the object being inspected, is available in the listener.

"CCL" is now a special Objective-C word, so that names like "ccl-application" will be translated to "CCLApplication". This prefix is reserved for CCL's own private use.

The function execute-in-gui was rewritten to use a different method of thread synchronization.

New exported symbols

The following new symbols are now exported from the CCL package:

  • target-fasl-version
  • *trust-paths-from-environment*
  • process-plist
Last modified 10 years ago Last modified on Mar 13, 2012, 6:23:03 PM