[Openmcl-devel] COCOA IDE, Libraries and Frameworks
mikel at evins.net
Fri Nov 5 10:53:38 EST 2004
On Nov 4, 2004, at 4:14 PM, alex crain wrote:
> I've gotten hemlock and the IDE to a position of relative stability -
> it doesn't crash very often and behaves predictably most of the time.
> It still needs a better feature set to compete with Slime, but it
> I want to do a couple of things before I actually push it back to the
> community. First I want to add two new packages to the system: "COCOA"
> and "IDE". The former would get all the COCOA/CLOS Bridge code and
> would be available for inclusion in applications while the latter
> would be IDE specific and would be used by the development
> environment. From there I want to add the ability to create COCOA
> apps, ala XCode.
> The last bit means overcoming the problem where dumped images are OS
> version specific. My idea is to create a way to generate bundles,
> where the executable is a simple bootstrap application that sets up
> the environment variables and then execs the lisp binary which loads
> that standard image (a compiled version of the openmcl shell script).
> The bootstrap loader would then instruct the lisp environment to load
> a boot.lisp file that would look like this:
> (require "COCOA")
> (require "APPLICATION-SPECIFIC-OPTIONS")
> (require "APPLICATION-PACKAGE")
> This works reasonable well in my prototype, although boot time is a
> bit slow.
> My test application works because the lisp kernel, the image and the
> library files are all part of the application bundle. That doesn't
> make much sense, however, since the only application specific code is
> boot.lisp and the application package. I'm thinking that whats needed
> is a framework that would contain the lisp binary, image and
> libraries. Applications would then "link" to the framework at runtime
> and would be otherwise identical to normal obj-c apps.
> I can assemble all this stuff, of course, but I wanted to brain dump
> here and take some input from the rest of the group. Frameworks and
> bundles are darwin specific and the linux folks should have their say,
> although something similar would work with linux for making GTK based
I like your proposal to create the "COCOA" and "IDE" packages.
It would be nice to be able to build lisp-based apps against a
framework, as you describe, as well. You're going to want to be able to
choose different images at launch time, in order to support running
several different lisp-based apps at the same time, and also to support
lisp app development in which incremental gets saved in an image.
My lengthy to-do list includes making a script to install an OpenMCL
Cocoa app by rebuilding the image from source at install time. I had in
mind to make the installer something that could detect at launch time
whether the the system frameworks have changed, and rebuild the app
image if needed for the new frameworks. (I haven't bothered to figure
out yet how--or whether--I can reliably detect changes in system
frameworks at launch time). If such a scheme can be made to work then
your applications or framework can use a saved image so that startup
time is no longer than necessary, but can rebuild the saved image for
compatibility with the system frameworks when needed.
> We should probably consider some kind of version identifiers as well,
> so that applications could load specific versions of the system
> libraries if they should feel the need.
More information about the Openmcl-devel