GCL - GNU Common Lisp (original) (raw)

An implementation of Common Lisp

Build Requirements: gcc/clang,libgmp-dev,libtirpc-dev,zlib1g-dev
Optional Features Build Requirements: libreadline-dev,tk8.6-dev,libxmu-dev,libxaw7-dev
Build instructions:

  1. tar zxf gcl-2.7.1.tar.gz

  2. cd gcl-2.7.1

  3. Apply errata:

    modified gcl/debian/rules @@ -138,7 +138,7 @@ clean: debian/control debian/gcl.templates rm -rf $(INS) debian/substvars debian.upstream rm -rf *stamp build-indep rm -f debian/elpa-gcl$(EXT).elpa debian/gcl$(EXT)-pkg.el - rm -rf <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>E</mi><mi>X</mi><msub><mi>T</mi><mi>T</mi></msub><mi>A</mi><mi>R</mi><mi>G</mi><mi>S</mi><mo stretchy="false">)</mo><mi>i</mi><mi>n</mi><mi>f</mi><mi>o</mi><mi mathvariant="normal">/</mi><mi>g</mi><mi>c</mi><mi>l</mi></mrow><annotation encoding="application/x-tex">(EXT_TARGS) info/gcl</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.07847em;">EX</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.13889em;">T</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.05764em;">RGS</span><span class="mclose">)</span><span class="mord mathnormal">in</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">o</span><span class="mord">/</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">c</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span></span></span></span>(EXT)*.info* + rm -rf <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>E</mi><mi>X</mi><msub><mi>T</mi><mi>T</mi></msub><mi>A</mi><mi>R</mi><mi>G</mi><mi>S</mi><mo stretchy="false">)</mo><mi>i</mi><mi>n</mi><mi>f</mi><mi>o</mi><mi mathvariant="normal">/</mi><mi>g</mi><mi>c</mi><mi>l</mi></mrow><annotation encoding="application/x-tex">(EXT_TARGS) info/gcl</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.07847em;">EX</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.13889em;">T</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.05764em;">RGS</span><span class="mclose">)</span><span class="mord mathnormal">in</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">o</span><span class="mord">/</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">c</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span></span></span></span>(EXT)*.info* gcl_pool debian-clean: debian/control debian/gcl.templates dh_testdir modified gcl/git.tag @@ -1,2 +1,2 @@ -"Version_2_7_0" +"Version_2_7_1" modified gcl/o/alloc.c @@ -707,6 +707,7 @@ empty_relblock(void) { for (;!rb_emptyp();) { tm_table[t_relocatable].tm_adjgbccnt--; expand_contblock_index_space(); + expand_contblock_array(); GBC(t_relocatable); } sSAleaf_collection_thresholdA->s.s_dbind=o;

  4. ./configure --prefix=your_install_directory && make install

Snapshot prerelease: 2.7.2pre

Build Requirements: gcc/clang,libgmp-dev,libtirpc-dev,zlib1g-dev,texinfo,autotools,m4
Optional Features Build Requirements: libreadline-dev,tk8.6-dev,libxmu-dev,libxaw7-dev
Build instructions:

  1. git clone git://git.sv.gnu.org/gcl.git
  2. cd gcl/gcl
  3. git checkout Version_2_7_2pre
  4. ./configure --prefix=your_install_directory && make install

Release log:

20250411 There is a small errata in the 2.7.1 release tarball:

  `
    modified   gcl/debian/rules
    @@ -138,7 +138,7 @@ clean: debian/control debian/gcl.templates
    rm -rf $(INS) debian/substvars debian.upstream
    rm -rf *stamp build-indep
    rm -f  debian/elpa-gcl$(EXT).elpa debian/gcl$(EXT)-pkg.el
    - rm -rf <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>E</mi><mi>X</mi><msub><mi>T</mi><mi>T</mi></msub><mi>A</mi><mi>R</mi><mi>G</mi><mi>S</mi><mo stretchy="false">)</mo><mi>i</mi><mi>n</mi><mi>f</mi><mi>o</mi><mi mathvariant="normal">/</mi><mi>g</mi><mi>c</mi><mi>l</mi></mrow><annotation encoding="application/x-tex">(EXT_TARGS) info/gcl</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.07847em;">EX</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.13889em;">T</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.05764em;">RGS</span><span class="mclose">)</span><span class="mord mathnormal">in</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">o</span><span class="mord">/</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">c</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span></span></span></span>(EXT)*.info*
    + rm -rf <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>E</mi><mi>X</mi><msub><mi>T</mi><mi>T</mi></msub><mi>A</mi><mi>R</mi><mi>G</mi><mi>S</mi><mo stretchy="false">)</mo><mi>i</mi><mi>n</mi><mi>f</mi><mi>o</mi><mi mathvariant="normal">/</mi><mi>g</mi><mi>c</mi><mi>l</mi></mrow><annotation encoding="application/x-tex">(EXT_TARGS) info/gcl</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.07847em;">EX</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.13889em;">T</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.05764em;">RGS</span><span class="mclose">)</span><span class="mord mathnormal">in</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">o</span><span class="mord">/</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">c</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span></span></span></span>(EXT)*.info* gcl_pool

    debian-clean: debian/control debian/gcl.templates
    dh_testdir
    modified   gcl/git.tag
    @@ -1,2 +1,2 @@
    -"Version_2_7_0"
    +"Version_2_7_1"

    modified   gcl/o/alloc.c
    @@ -707,6 +707,7 @@ empty_relblock(void) {
    for (;!rb_emptyp();) {
        tm_table[t_relocatable].tm_adjgbccnt--;
        expand_contblock_index_space();
    +   expand_contblock_array();
        GBC(t_relocatable);
    }
    sSAleaf_collection_thresholdA->s.s_dbind=o;
  `

NEW! (20250411) GCL 2.7.1 is released. The release notes can be found here.

NEW! (20230113) GCL 2.6.14 is released. The release notes can be found here.

NEW! (20221220) GCL 2.6.13 is released. The release notes can be found here.

NEW! (20141028) GCL 2.6.12 is released. The release notes can be found here.

NEW! (20140906) GCL 2.6.11 is released. The release notes can be found here.

NEW! (20131113) GCL 2.6.10 is released. The release notes can be found here.

NEW! (20130823) GCL will use the git version control system henceforth. 2.6.8 and 2.6.9 are the last tagged releases in cvs. All cvs tags and branches have been converted into git. In addition, the cvs experimental branch has been merged into master, and several git-only commits on this branch have already been made. Eventually, the master branch will be released as 2.7.0.

NEW! (20130823) GCL 2.6.8 and 2.6.9 are released. The release notes can be found here and here.

NEW! (20050810) GCL 2.6.7 is released. The release notes can be found here.

NEW! (20050427) Patch added to the errata page to reenable support for si::run-process on linux.

NEW! (20050402) Support for new texinfo format and precompiled regexp searching posted to errata page.

NEW! (20050330) ERRATA page for 2.6.6 updated. Control-D on a fresh line was not exiting GCL when readline was on. Also, libreadline5-dev support in debian/control.

NEW! (20050225) ERRATA page for 2.6.6 started here.. So far just one entry, supplying a patch to enable (listen) to work when readline is enabled. One can also workaround the bug with (si::readline-off).

NEW! (20050119) GCL 2.6.6 is released. The release notes can be found here.

NEW! (20041124) Newer binutils don't define _raw_size in their section structure. A patch is included on the errata page fixing this. The patch works with the older versions too.

NEW! (20050113) Patches added to the errata page allowing compile-file to process pathnames with whitespace on Windows, and explicitly ensuring brk added pages are executable on all x86 Linux, the latter in response to the policy change regarding same in Fedora Core 3.

NEW! (20041029) Additions to the 2.6.5 errata page: fixes for older gcc processing gmp_wrappers.h; fix for (+ most-negative-fixnum -1) on 64bit machines.

NEW! (20040823) An errata page to 2.6.5 on Sun Solaris has been added here . This fixes a problem which may arise in the loader with certain gcc/ld combinations when C optimization is in force.

NEW! (20040817) Version 2.6.5 is released. Please read the release notes together with some new timing results here .

GCL is the official Common Lisp for the GNU project. Its design makes use of the system's C compiler to compile to native object code, providing for both good performance and facile portability. GCL currently compiles itself and the primary free software Lisp applications, Maxima , ACL2 andAxiom, on eleven GNU/Linux architectures (x86 powerpc s390 sparc arm alpha ia64 hppa m68k mips mipsel), Windows, Sparc Solaris, and FreeBSD. On most platforms, GCL can load native object code modules directly into its lisp core, where they are preserved in any custom lisp images produced via the save-system call.

GCL has been packaged for the Debian GNU/Linux operating system.

While GCL was originally designed to meet the CLtL1 standard, recent development has brought GCL much of the way toward its current goal -- full ANSI compliance. An ANSI regression test suite is being developed as part of this effort. As of the time of this writing, the new ANSI behavior is enabled optionally at compile time with the configure switch --enable-ansi.

Several GCL extensions exist, and are in various stages of incorporation. xgcl, providing a Lisp interface to the X Windows system, is included in the main source tree. pargcl, an MPI extension enabling lisp programs to run in parallel across computing clusters, will be incorporated soon. These efforts are good examples of GCL's foreign function interface, which is rather flexible due to its close relationship with C.

Other Features:

History

GCL is the product of many hands over many years. The original effort was known as the Kyoto Common Lisp system, written by Taiichi Yuasa and Masami Hagiya in 1984. In 1987 new work was begun by William Schelter, and that version of the system was called AKCL (Austin Kyoto Common Lisp). In 1994 AKCL was released as GCL (GNU Common Lisp) under the GNU public library license. The primary purpose of GCL during that phase of it's existence was to support the Maxima computer algebra system, also maintained by Dr. Schelter. It existed largely as a subproject of Maxima.

After the passing of Dr. Schelter in 2001, it was decided that GCL should be actively maintained and improved. GCL is currently maintained by a team of 12 developers across the world coordinated via the gcl-devel mailing list.