Skip to content

Clozure CL 1.13

Latest
Compare
Choose a tag to compare
@xrme xrme released this 14 Aug 04:50
· 15 commits to master since this release

This is Clozure CL 1.13.

There are two ways to obtain a copy of the release.

If you are not interested in tracking or updating CCL sources at all, you may download an archive file of the form ccl-1.13-platform.tar.gz. See the “Assets” section at the bottom of the page for links to the various archive files. The archive will contain everything you need to run CCL (including complete source code and binaries), but not a copy of the Git repository.

If, on the other hand, you would like to be able to pull updates from Git, follow these steps:

  1. Obtain source code by cloning the repository (with git clone https://github.com/Clozure/ccl.git)
  2. Download and extract the bootstrapping binaries for your system. Because CCL is written in itself, you need an already-working copy of CCL to compile it. The archive also contains a database derived from the system header files which is used by the FFI.

For example, to get a copy of CCL for Linux/x86, you would say:

# fetch source code into directory "ccl"
git clone https://github.com/Clozure/ccl.git ccl
# download pre-compiled binaries
curl -L -O https://github.com/Clozure/ccl/releases/download/v1.13/linuxx86.tar.gz
# go into the "ccl" directory where the sources are
cd ccl
# unpack binaries (lisp kernel, heap image, interface database) into "ccl" directory
tar xf ../linuxx86.tar.gz

You can now rebuild CCL to make sure everything is up-to-date with respect to the current sources. A quick way to do this is to run the following command from the shell:

echo '(rebuild-ccl :full t)' | ./lx86cl64 -n

Note that lx86cl64 is the executable for x86-64 Linux. Use the appropriate executable name (see table below) if you are on another platform. For example, you would use dx86cl64 if you are on a Mac.

If you cannot run the lisp, or if (rebuild-ccl :full t) fails, there are a few common reasons for that.

  • On Windows, (rebuild-ccl :full t) may not work because Windows cannot remove an open file
  • On Linux, you may see a message like "version 'GLIBC_2.33' not found"
  • The m4 program might not be installed

If m4 is not installed, install it with apt install m4 or whatever the proper command is on your system.

In the other cases, the solution is to build the lisp kernel binary (a program written in C and assembly language) separately. To do this, use the following commands:

cd lisp-kernel/linuxx8664
# or lisp-kernel/win64 or lisp-kernel/win32 or lisp-kernel/darwinx8664 or lisp-kernel/freebsdx8664, etc.
make clean
make

When that is done, start the lisp and evaluate (rebuild-ccl :clean t). This does the same thing as :full t, except it will not attempt to rebuild the lisp kernel for you.

The name of the lisp kernel binary (which is the executable that you invoke to start CCL) is different for each platform. For instance, on macOS, the name is dx86cl64, so you could start CCL by running ./dx86cl64. See the manual for more details.

Binaries were built on the following systems:

Platform Version executable (64-bit) executable (32-bit)
darwin/x86 Xcode tools 15.4 on macOS Sonoma 14.6.1 dx86cl64
freebsd/x86 FreeBSD 13.3 fx86cl64 fx86cl
linux/arm Raspberry Pi OS (Legacy) (based on Debian 11 bullseye) on Raspberry Pi armcl
linux/x86 Ubuntu 22.04.4 LTS lx86cl64 lx86cl
solaris/x86 OmniOS LTS (r151046) sx86cl64 sx86cl
windows/x86 Windows 10 with MSYS2 (MINGW32 environment for 32-bit, and MINGW64 environment for 64-bit) wx86cl64.exe wx86cl.exe

Both 64-bit and 32-bit versions of the lisp are included on the x86 platforms (except for macOS, which doesn't support running 32-bit x86 binaries).

This release does not contain support for Apple Silicon (ARM64) processors.

For convenience, we recommend that you use a script to invoke CCL. Please see the sample ccl and ccl64 scripts in the scripts directory for examples you can customize as needed.

Notable changes

The interface database

This release uses https://github.com/Clozure/ccl-ffigen to process header files for FreeBSD, Linux, and Solaris-ish systems. See that link for more details, but the short version is that you may run into differences when using the #_ and #$ reader macros. Additionally, many fewer header files are processed by default, so if your code accesses a fairly obscure foreign name, you might find that it is now missing. Please report problems by creating an issue.

The Mac and Windows ports carry forward the existing interface databases unchanged. They will be updated in a future release.

32-bit x86

A 32-bit x86 Lisp is again provided for FreeBSD and Solaris-ish systems (in addition to a 64-bit x86 version).

Full Changelog: v1.12.2...v1.13