[mac-lisp-ide] Clotho 0.1 release available

mikel evins mikel at evins.net
Sun Feb 1 18:50:53 UTC 2004


On Feb 1, 2004, at 10:31 AM, Brian Mastenbrook wrote:

> I'm having a look at the code here, which is also my first time 
> actually looking at what Cocoa code looks like in OpenMCL. I have a 
> few impressions:
>
> * The Cocoa interface seems very well done and very usable

Folks should be aware that there are some caveats about building code 
with the Cocoa interface. I'm sure that everyone will rapidly run into 
the problem that, unlike a call to a Lisp function, a call to an 
Objective C methods cannot be compiled until the class and method 
referenced are first compiled. This restriction places some awkward 
limitations on load order, limitations that account for a few 
peculiarities in how Clotho and other Bosco-based applications are 
organized.

The general rule of thumb is that you must sort your classes and 
methods to eliminate forward references in the load. When you can't 
eliminate forward references you can work around the limitation by 
interposing a call to a Lisp function instead of a reference to an 
Objective-C class or method, because you can refer to a Lisp function 
before it's defined. The Lisp function can then be defined later in the 
load order, after the Objective C class or method has been defined.

There are several subtleties to using the bridge in its current form. 
For example, it defines a pseudovariable SELF, which, in Objective C 
methods refers to the object that owns the method. You cannot return or 
store the value of SELF and expect to use it; if you want to use it 
that way you must %COPY-MACPTR it first. I imagine people hacking this 
code will at first run into a bunch of gotchas like this. I'll be happy 
to help out wherever problems involve things I've already figured out. 
If Duncan has gotten McCLIM code drawing in Cocoa windows, then he's 
probably also a good person to ask about some of these problems, as he 
will have had to solve many of them in order to get that code working.

> * Why is it that the Cocoa interface is internal to package CCL? This 
> violates my sense of aesthetics :-)

My guess would be because most of Gary's work in in package CCL. :-) I 
see no reason we couldn't change it and put it in package cocoa (or 
whatever).

> * This seems like an eminently hackable start.

Good; I listed you as a project member in the proposal to 
common-lisp.net to create a Clotho project. :-)

>
> I'm now mirroring the Clotho 0.1 release at 
> http://cs.indiana.edu/~bmastenb/misc/Clotho%200.1.dmg .

Thanks. I hope to hear soon from other people who want to hack it.





More information about the Mac-lisp-ide mailing list