Objective-CL Change Log
Context: The Objective-CL Project.
- CMUCL compatibility has been restored.
NSArray implements the generic sequence protocol on SBCL.
- Initialisation behaviour has changed on GNUstep. This should fix
some potential crashes related to
- A number of compilation errors on AMD64 machines have been fixed.
- CFFI 0.9.2 is supported. Previously, a Darcs checkout of CFFI had to
- Method invocation speed has improved.
- Objective-C instances and selectors returned by method callbacks are
converted into pointers correctly.
- All class definitions done through DEFINE-OBJECTIVE-C-CLASS make the
class name be interned in the OBJECTIVE-C-CLASSES package.
- Foreign Lisp value wrapper types
MLKLispList have been implemented and are used automatically when
passing Lisp values to foreign code.
- Add function SUPER. Methods can call it in order to do a super call.
- Lisp-managed Objective-C instances are not destroyed all of a sudden
by the Lisp garbage collector.
- Methods with a void return type don't return anything.
- DEFINE-OBJECTIVE-C-GENERIC-FUNCTION calls have been made obsolete by
a more prudent version of DEFINE-OBJECTIVE-C-METHOD.
- LOW-LEVEL-INVOKE and PRIMITIVE-INVOKE have been unified.
- Initialisation is more robust than before.
- char and BOOL return values are distinguished by an explicit policy
rather than naively treating all chars as BOOLs.
- Type handling has been improved, especially in those cases where the
actual type and the nominal type differ (e.g. what the runtime tells
us are chars are actually ints).
- Passing booleans to methods as arguments does the right thing.
- In theory, structs and unions can be returned by methods, which used
to be unsupported. In practise, this support is untested.
- The user is now able to define Objective-C classes from Lisp.
- The build system is both more robust and faster than before. The
speed improvement is achieved by trying to use the system's `cp'
command before falling back to manual copying.
- The function COLLECT-CLASSES has been added. Its purpose is to
collect and register (i.e. intern) all classes known to the
Objective-C runtime on the Lisp side.
- Whereas before, just about any version of libffi sufficed, libffi 3.x
is now required for its much improved closure support. Accordingly,
the included version of libffi has been updated to 3.0.4. Note that
this change in requirements will cause Leopard's integrated version
of libffi to be rejected by the build system.
- The user is now able to define Objective-C methods from Lisp.
- CMUCL is not supported in this release.
- CLISP compatibility is finally a reality.
- 0.1.0's build system was broken by choosing to run `make' in the
wrong directory, thereby neglecting to run `configure' if needed.
This has been fixed.
- The Objective-C 2.0 runtime is supported (in theory, at least; no one
is known to have tested the support so far).
- Objective-C classes are mapped onto CLOS classes via the MOP.
Metaclasses are likewise mapped to CLOS metaclasses. Foreign slots
can be accessed by way of SLOT-VALUE.
- Selectors have been made funcallable.
- On the NeXT runtime, bit fields don't confuse the type specification
- All internal method calls have been made independent of the
- The build procedure now tries to use a preinstalled libffi, if such a
thing can be found on the system.
- The libffi build procedure used to be buggy on Mac OS X. It should
- This is the first public release.
- We've got method invocation and object instantiation. More is
planned for later.
Matthias Benkard, 2008-03-23, 13:25 CET