Current stable version: 1.1.4
ManKai Common Lisp (MKCL) aims to be a full implementation of the Common Lisp language in compliance with the ANSI X3J13 Common Lisp standard. It is free software distributed under the terms of the GNU Lesser General Public License (LGPL) with a few minor exceptions (see the file Copyright in the source code).
MKCL finds its origin in the source code of the ECL project and, like ECL, it tries to bring to full maturity the lineage of the Kyoto Common Lisp (KCL) family but attempts to do it in a modern yet more contained and better controlled way.
MKCL strives for greater reliability and stability in a quest for the ease of use that thus result.
MKCL supports the operating systems Linux and Microsoft Windows, running on top of Intel x86 or AMD64 compatible processors.
MKCL is a multi-threaded only implementation.
You can download the source code of MKCL 1.1.4 here: mkcl-1.1.4.tar.gz (signature)
For Microsoft Windows you can download these self-extracting binary installation packages:
Windows XP: mkcl-1.1.4_win32_setup.exe (signature)
Windows 7: mkcl-1.1.4_win64_setup.exe (signature)
You can clone the MKCL git repository with this command:
git clone http://common-lisp.net/project/mkcl/git/mkcl.git
Or browse it through gitweb.
On Linux you can compile and install MKCL from its source code in the usual way:
Compilation under Microsoft Windows is done using MinGW (MinGW64 for Win64) and will be explained later.
MKCL is currently being developed on the following reference platforms:
Starting with MKCL 1.1.0, MKCL requires the platform supplied GMP library, and GMP development version when compiling MKCL from its sources. Therefore on Ubuntu this means that package "libgmp3-dev" should have been installed before configuring MKCL. Note that MKCL expects at least GMP 4.3.2 but a more recent compatible version, like 5.0.2, is probably preferable.
MKCL comes with a number of prepackaged libraries: ASDF, alexandria, Babel, CFFI, Bordeaux Threads and a few more.
You can load any of these through function "require", ex: (require :cffi), but since most of these libraries need ASDF in the first place you should have done "(require 'asdf)" or its equivalent before. (Putting (require 'asdf) in your ~/.mkclrc file is most probably a good thing to do. Here "~" stands for your home directory as returned by (user-homedir-pathname)).
The source code of each library can be found in the "contrib" directory of MKCL's source package.
A version of SLIME properly ported to work with MKCL can also be found in the same "contrib" directory. This included version of SLIME is the only one likely to work with MKCL until the SLIME project includes the MKCL port back into its source tree and starts to test its latest developments on MKCL itself. During installation a copy of MKCL ported SLIME is made in a convenient location specific to the platform:
Linux: <install-root>/lib/mkcl-1.1.4/contrib/slime, where <install-root> usually is "/usr/local",
Windows: <install-root>\MKCL 1.1\slime , where <install-root> usually is "C:\Program Files".
Also, in the "slime" directory one can find files ".emacs" and "setup-slime.el" to help with SLIME configuration. In a typical "Windows" context the ".emacs" file can be simply merged as is with your default ".emacs" configuration file to provide for a quick and easy basic SLIME setup. On Linux, some obvious editing of paths and file extensions will be required to achieve the same result.
Comments and bug reports can be sent to the developers mailing list MKCL-devel (mentioned here above) or directly to firstname.lastname@example.org for more confidentiality.
Make FFI to be C99-complete.
Add a memory image dump/load facility.
(2013/03/26) MKCL 1.1.4 is out. This is a bug fix release.
(2013/02/04) MKCL 1.1.3 is out. This maintenance release fixes a number of bugs of which the most severe was on MS-Windows in the overlapped IO code on socket streams and would result in a call stack corruption. Any user of MKCL 1.1.? on MS-Windows (win32 or win64) using MKCL's bundled socket interface need to upgrade to MKCL 1.1.3.
(2012/12/03) MKCL 1.1.2 is out. This is a bug fix release.
(2012/11/04) MKCL 1.1.1 is out. This is a bug fix release taking care of a few minor bugs. It is also the debut of the public Git repository of MKCL.
(2012/09/18) MKCL 1.1.0 is out as a stable full release.
(2012/08/28) MKCL 1.1.0 Release Candidate 4 is out. This release candidate completes the update of the bundled "contrib" packages, most notably of CFFI and SLIME. The Win64/GCC version issue mentioned for RC3 turned out to be a major bug in the included Boehm's GC that appeared also on Linux when using gcc 4.6 or gcc 4.7 on newer distributions. The included Boehm's GC has been updated to gc-7.2d, its latest stable version, and now seems to run reliably instead of doing random SIGSEGV in the middle of a GC collection. In an attempt to assure this, MKCL 1.1.0 RC4 has been built and tried on Fedora 17 and Ubuntu 12.04. Note that, due to this GC bug, no version of MKCL prior to 1.1.0 RC4 can be safely built with gcc 4.6 or gcc 4.7, only RC4 will work properly with these. For the older versions of MKCL you need to use gcc 4.5 or older.
(2012/08/04) MKCL 1.1.0 Release Candidate 3 is out. This release candidate features mainly an update of the bundled ASDF to version 2.23.6. With this RC3, MKCL now passes all tests in the ASDF test suite. Also, the new Quicklisp port preview mentioned on the mkcl-devel mailing list should be fully functional on it. The Win64 binary installation package had to back away from gcc 4.7.1 to gcc 4.5.4 following a report that gcc 4.6.X and gcc 4.7.X generate code that is invalid on some version of Intel Core2 CPUs when optimization level -O2 is used.
(2012/07/21) MKCL 1.1.0 Release Candidate 2 is out. This release candidate is a significant bug fix and general robustness improvement step.
(2012/04/30) MKCL 1.1.0 Release Candidate 1 is out. This release candidate is the first beta release of the MKCL 1.1 effort. It features Unicode support as a standard feature, major improvements to the embed-ability of MKCL and legacy bug fixes too numerous to tell.
(2011/07/21) MKCL 1.0.1 is out. This is a bug fix release taking care of a number of minor bugs.
(2011/06/01) MKCL 1.0.0 is finally out as a stable full release! Thank you very much to all of you (you know who you are) that privately contributed to this outcome.
(2011/05/16) Release Candidate 7 is out. This release candidate is the happy conclusion of the performance tuning effort for version 1.0.0. With proper type annotation, MKCL can now generate near-optimal code that brings it to (and sometimes exceeds) the top of the class speed-wise on the large majority of benchmarks of cl-bench. Release Candidate 7 will from now on enter a 2 to 3 weeks probation period that will bring the 1.0.0 release process to its conclusion provided that no major new bug is reported before the end of this probation period.
(2011/02/20) Release Candidate 6 is out. This release candidate is a significant performance tuning step for the most part. Code controlling floating-point exception handling has also been entirely reworked. The --enable-unicode option is now working again but is still off by default and remains experimental.
(2010/12/07) Release Candidate 5 is out. This release candidate brings all libraries included in the "contrib" directory to their latest released version with the exception of slime that happens to be a CVS snapshot of mid-November 2010. The MinGW and MinGW64 environments used to build the Win32 and Win64 versions were also upgraded. A few more bugs were also fixed.
(2010/11/19) Release Candidate 4 is out. More bugs have been fixed. One of these would signal an MKCL internal error about incoherent closure displays in the context of mutually recursive local functions ("labels" form again :-(). On Win64, the compiler is now working again after falling victim to a typo in the C include file "mkcl/config.h". Release Candidate 4 is a major improvement over its predecessors and any use of the latter ones should be discontinued.
(2010/11/08) Release Candidate 3 is out. This release candidate was mostly a refresher of the Microsoft Windows ports. A few more bugs were also fixed. The included GMP library was upgraded to version 4.3.2 which is currently the latest of its line.
(2010/11/01) Release Candidate 2 is out. A good number of bugs have been fixed. The most important of these bugs involved the use of mutually recursive local functions (the "labels" form) in a specific pattern and would result in a memory corruption. Overall, Release Candidate 2 is a much stronger release than Release Candidate 1 and any use of the latter (RC1) should be discontinued.