[Openmcl-devel] save-application questions.

Michael Price ectospheno at gmail.com
Wed Feb 15 06:51:15 PST 2006

Thanks for the usual quick and thorough reply Gary. It has sparked
another question or two.

On 2/15/06, Gary Byers <gb at clozure.com> wrote:
> :PURIFY and :IMPURIFY are (as one might imagine) inverses of each other.
> To "purify" the image in OpenMCL is to arrange for immutable, likely
> long-lived objects (the "code-vector" components of functions and the
> pnames of interned symbols, currently) be copied to a read-only ("pure")
> section of memory.  There are some memory-management benefits related
> to this (pure/read-only memory is easier on the OS's VM system and
> OpenMCL's GC can mostly ignore that stuff), but in some circumstances
> it may be necessary or desirable to undo this (making everything slosh
> around in the Big Dynamic Memory Pool.)

Having never written a GC or a lisp runtime, I'm having trouble
imagining the scenario where you want or need to undo this. Can you
provide an example?

> Seriously, I -do- understand that some documentation would be better
> than nothing, and that one way of breaking the vicious cycle is to
> provide -some- documentation so that people are encouraged to use it
> more.  I think it's likely that the more it's used, the more problems
> (in both design and implementation) will be encountered.  Those problems
> are more likely to be addressed if people are actively trying to use
> this stuff and encountering them and thinking about them than if the
> problems are just (somewhere) in the back of my mind, as they have
> been for at least a few years.

The reason I end up using openmcl over another lisp is because openmcl
is often much faster. Its hard to beat the code it generates on a
powerpc. My only complaint regarding the product is the sparse
documentation in certain areas. After using other lisp runtimes I was
spoiled on having (describe) actually, uh, describe the function ;)

I was assisted in my guess as to what save-application did by reading
the clisp documentation for saveinitmem which I heard was based on
openmcl's method :)


More information about the Openmcl-devel mailing list