Version 4 (modified by rme, 2 years ago) (diff)


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)
  • 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

If you have an older system, the lisp kernel binary may fail to run, complaining that it's linked against an unavailable version of glibc. The release binaries are built on a Debian 5.0 system so this shouldn't affect many people, but if it does this fix is simple:

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

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 (and possibly others)


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

The x86 back end now tries a little harder to reduce stack traffic.

Self tail-calls involving a small number of fixed arguments are somewhat faster.

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

The output format of the standard time macro has changed.

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)))

The function directory will show show directories by default. In other words, the :directories argument now defaults to t. Also, directory now treats symbolic links to directories as directories when :follow-links is t (as it is by default).

Cocoa-based IDE

The IDE can communicate with a remote lisp process via a new protocol named "swink". (The verb "to swink" means to toil or to slave.)

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


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.

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 bundled version of ASDF is now version 2.20.