A Free and Portable Common-Lisp/Objective-C Bridge

Quick links:

Introduction | Mailing Lists | News | Documentation | Download | Contact


Objective-CL is an Objective-C bridge that strives to be portable both across Common Lisp implementations and operating systems. Currently, it has been confirmed to work under Mac OS X/Cocoa/PowerPC and Linux/GNUstep/x86, but it is expected to work on many more platforms without major changes. (Testers welcome!)

Mailing Lists


23. Mar 2008 / 9. Dis 3174Objective-CL 0.2.2 released. This release is a minor bugfix release with respect to 0.2.1.
  • CMUCL compatibility has been restored.
  • CFFI 0.9.2 is supported again (previously, you had to use a Darcs checkout).
  • Method invocation speed has improved somewhat.
  • A bunch of compilation problems on AMD64 machines have been fixed.
Change log published. You can view a (very) slightly more detailed change log by clicking the link above.

Development diary published. You can keep up with Objective-CL development, design decisions, and opinionated rants about the competition by viewing the development diary.
7. Mar 2008 / 66. Cha 3174Objective-CL 0.2.1 released. This release offers a bunch of bug fixes and other improvements.
  • Defining an Objective-C method implicitly defines a corresponding Objective-C generic function. You may omit define-objective-c-generic-function calls now.
  • super calls are supported.
  • Returning values from methods now works much better (or at all, actually, for some cases).
  • Memory management has been improved.
5. Mar 2008 / 64. Cha 3174 Objective-CL 0.2.0 released. This release is a major milestone on the way to 1.0.0. It features the following changes:
  • You can now define new Objective-C classes.
  • You can now define new Objective-C methods for your own classes.
  • Clozure-CL-like method call syntax via the #/ reader macro is supported.
We're still lacking a nice tutorial, but the reference documentation has been updated at least.

I think this is an exciting release.
11. Feb 2008 / 42. Cha 3174 Objective-CL 0.1.1 released. This release features the following changes:
  • GNU CLISP and Clozure CL compatibility.
  • A certain degree of CLOS integration: Objective-C classes are mapped to CLOS classes. The same is true for metaclasses. Still no defining new classes, though.
What happened to version 0.1.0, you ask? That one was a bit buggy, so it was never released. The Darcs tag still exists, though, so if you think you're not going to get any sleep after upgrading to Objective-CL 0.1.1 without having gone through 0.1.0 before, you can fetch it from the repository (see the download section below).
30. Jan 2008 / 30. Cha 3174 Public mailing-lists (objective-cl-devel and objective-cl-announce) are now available. These are generously hosted by common-lisp.net.
27. Jan 2008 / 27. Cha 3174 Objective-CL 0.0.3 released. This release avoids building our own version of libffi if one can be found installed on the system. This is possibly important for compatibility with Mac OS X 10.5, which according to The Web includes its own version of libffi, (hopefully) guaranteed to be up-to-date and maximally compatible with the system it runs on.
26. Jan 2008 / 26. Cha 3174 Objective-CL 0.0.2 released. This release fixes a bug in the libffi build procedure on Mac OS X.
26. Jan 2008 / 26. Cha 3174 Objective-CL 0.0.1 released — and it's ASDF-installable. Simply hack the following into your REPL: (asdf-install:install :objective-cl)
26. Jan 2008 / 26. Cha 3174 Objective-CL now includes its own branch of libffi, imported from PyObjC 1.3.7. It is therefore now installable without building your own libffi first.
26. Jan 2008 / 26. Cha 3174 Objective-CL has been relicensed under the GNU LGPLv3 (formerly GNU GPLv3). This means that people merely using the library as opposed to merging parts of it into their own software need not open-source their creations. Modifications to the bridge itself must still be distributed under the terms of the LGPLv3 (if they are distributed at all; see the license itself for details).
23. Nov 2007 / 65. Aft 3173 This website is online.

Tested Configurations

1Clozure CL hangs upon (collect-classes).
2CMUCL's MOP implementation does not support closures (only non-closure functions) as funcallable-instance-functions. Our workaround for this slows down compilation measurably, but usability should not be significantly impaired.
3Some versions of the GNU Objective-C runtime (not the Mac OS X one) seem to be incompatible with the LispWorks FFI. More investigation needed.


Reference documentation is provided. A manual is planned but has not yet been written.


If you don't want to mess around:

(asdf-install:install :objective-cl)

If you want to get the latest and greatest:

darcs get http://matthias.benkard.de/code/objective-cl


If all you need is working Cocoa support under Mac OS X, you ought to take a look at Clozure CL, which has been out in the wild for much longer than Objective-CL. Actual Cocoa applications have been written using Clozure CL. On the other hand, Clozure CL does not try to support GNUstep in any way, and it's probably easier to get involved with a young and small project such as Objective-CL if helping out is what you want.

CL-OBJC is another incomplete, free Objective-C bridge that tries to be compiler-independent. It hasn't got any support for GNUstep, however, and even on Mac OS X, it is currently (Dec 2007) limited to Tiger/x86, although Leopard support is being worked on. It also lacks proper support for memory management and exception handling. In contrast to Objective-CL, on the other hand, it has some support for struct creation and manipulation.

Contact and Getting Involved

Please feel free to contact me (Matthias Benkard) by e-mail (first-name@last-name.de -- my first and last names being Matthias and Benkard, respectively) if you have any questions or would like to help out in some way. Alternatively, you can participate in the objective-cl-devel mailing-list.