Sign inSign up

clfoundation/gcl

By clfoundation

•Updated about 18 hours ago

Image
0

71

clfoundation/gcl repository overview

⁠Supported Tags

⁠Simple Tags

  • 2.7.1 2.7.1-trixie

⁠Shared Tags

  • latest
    • 2.7.1

⁠Quick Reference

GCL Home Page
https://www.gnu.org/software/gcl/⁠

Where to file Docker image related issues
https://gitlab.common-lisp.net/cl-docker-images/gcl⁠

Where to file issues for GCL itself
https://savannah.gnu.org/projects/gcl/⁠

Maintained by
CL Docker Images Project⁠

Supported platforms
linux/amd64

⁠What is GCL?

GCL, GNU Common Lisp, is the GNU project's Common Lisp. It descends from Kyoto Common Lisp (KCL) and AKCL, compiles Lisp to native code through C and the system's C compiler, and carries large systems such as Maxima and ACL2. Its maintainer is Camm Maguire.

⁠How to use this image

⁠Create a Dockerfile in your GCL project

FROM clfoundation/gcl:latest
COPY . /usr/src/app
WORKDIR /usr/src/app
CMD [ "gcl", "-batch", "-load", "./your-daemon-or-script.lisp" ]

You can then build and run the Docker image:

$ docker build -t my-gcl-app .
$ docker run -it --rm --name my-running-app my-gcl-app

⁠Run a single Common Lisp script

For many simple, single file projects, you may find it inconvenient to write a complete Dockerfile. In such cases, you can run a Lisp script by using the GCL Docker image directly:

$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/app -w /usr/src/app clfoundation/gcl:latest gcl -batch -load ./your-daemon-or-script.lisp

⁠Image variants

This image comes in one variant for now.

⁠clfoundation/gcl:<version>

This is the defacto image. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.

Some of these tags may have names like trixie in them. These are the suite code names for releases of Debian and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian.

These images are built off the buildpack-deps image. It, by design, has a large number of extremely common Debian packages, including the C compiler GCL compiles through.

These images contain cl-launch, as the other CL Docker images do, to provide a uniform interface to running a Lisp implementation. On GCL 2.7.1 it does not work yet: cl-launch needs ASDF, GCL does not bundle ASDF, and released ASDF does not yet load on GCL 2.7.1.

There is no Quicklisp installer in these images: Quicklisp does not support GCL.

⁠Memory

GCL sizes each process's heap from the machine's physical memory, not from a container's memory limit. These images set GCL_MEM_BOUND=31, which bounds each GCL process's heap at 4 GiB however large the host is. Set GCL_MEM_BOUND to a larger n (a heap of 2(n+1) bytes) for more, or unset it to let GCL size its heap from the machine's memory.

⁠ANSI and traditional GCL

GCL installs two Lisps: ANSI Common Lisp (saved_ansi_gcl) and GCL's traditional CLtL1-flavored Lisp (saved_gcl). The gcl command starts the ANSI one when GCL_ANSI is non-empty, and these images set GCL_ANSI=1. Run with -e GCL_ANSI= (empty) for the traditional Lisp.

⁠Known issues in GCL 2.7.1

  • Compiled code that calls COMPLEMENT crashes with a segmentation violation (the compiler warns that the variable SYSTEM::FN is undefined). Interpreted calls work. Writing the test directly, for instance with REMOVE-IF-NOT, avoids it.
  • LOAD and PROBE-FILE resolve a relative pathname against the process's working directory rather than merging it with *DEFAULT-PATHNAME-DEFAULTS*. Merge explicitly, as in (load (merge-pathnames "file.lisp")).

⁠License

GCL is licensed under the LGPL, with some components under the GPL. See GCL's COPYING files for details.

The Dockerfiles used to build the images are licensed under BSD-2-Clause.

As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).

As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.

Tag summary

Content type

Image

Digest

sha256:bf687f330…

Size

410.5 MB

Last updated

about 18 hours ago

docker pull clfoundation/gcl