CPL

Download CPL

The CPL tools come in a self-extracting archive, which you can download at the bottom of this page. The archive unpacks to its own directory in user space and requires no privileges. To get started, run the downloaded file as sh downloaded-file.sh in a terminal and follow the instructions on screen.

System requirements

The CPL compiler and interpreter run on Linux/unix systems. They were developed on Debian GNU/Linux, and this is the system where most tests were performed. Nonetheless the tools and the way they are packed are not tied to a specific flavour of Linux or unix nor to a specific processor architecture; any of the widespread Linux/unix distributions on either personal or datacenter systems should unpack and use them equally well, and all those tested did. The tools have also been successfully deployed in Raspberry Pi and Beaglebone Black ARM-based microboards, as well as in non-Linux unices such as older Silicon Graphics machines and BSD systems including Apple Macintosh computers, for which step-by-step instruction are provided in this Macintosh howto. And the Windows Subsystem for Linux (WSL), which is an integral part of Microsoft Windows 10, essentially is Debian GNU/Linux (except for its graphical user interface); step-by-step instructions are provided in this Windows howto.

Only basic system tools are required: gzip, tar, cc, make, info, plus gnuplot if you want graphics and curl for optional automatic updates. For maximal compatibility the adopted C compiler should be gcc (as the system compiler is by default in most Linux distributions), but other compilers (e.g. icc) have also been used with success. However, CPL nested functions are implemented as C nested functions, a nonstandard gcc extension, and will become unavailable if a compiler other than gcc is used (or if the system's default gcc options disable them).

Storage requirements

Minimal by any standard. The uncompressed archive, inclusive of documentation and libraries, altogether takes about 1.5 megabytes (0.0015 GB).

Compilation time requirements

Generally a small fraction of the, already very reasonable, time taken by the subsequently invoked C compiler.

Code maturity

CPL is under active development; its tools sit at different levels of maturity. On a crude scale:

cpl, fri, and their driver script makecpl were being developed for decades. They now only undergo unfrequent changes.
icpl is best classified as experimental. Don't be surprised if it does not always behave as intended, but it offers some powerful features when it does.
edit is the newest addition to the family. It may on rare occasions crash and lose your last edits, so be advised to save often (as everybody should do anyway). Nevertheless it is the editor of choice for the maintenance of CPL itself, writing this website included.

On a finer scale, the optional CPL libraries provided in the package also come with different levels of maturity. See comments in each.

Mature or not as the code is, bugs will happen. If you believe you found a bug, or an inconsistency between the compiler's behaviour and its documentation, you will do an appreciable service to the CPL community by filing a bug report with (.....) . With your description please enclose a code snippet, as short as possible but complete enough that it compiles without modification and triggers the non-conforming behaviour.

Version updates are denoted by their date. File names in the version archive include dates. If you experience difficulties please see the Q&A list of common problems and their solutions.

By downloading and unpacking or anyway using this software you declare to have read and agreed to its LICENSE.

Current version is 2021-04-29. Check back here for future updates!