Thanks to tireless Release Engineer Andreas Fuchs, McCLIM version
0.9.3 has been released! I was about to write a blog entry about how
this was a release short on shiny features, and that it mostly had
solid bugfixes and changes of that sort. But as I have already
used up my quota of unsubstantiated claims for this week, I
decided to check the list of changes, just to be sure, which
resulted in me being reminded that this release actually has some
pretty major additions. The most shiny new feature is
probably Gtkairo
- a new backend using GTK widgets
and Cairo for
drawing. It's not yet as functional as the default CLX backend, but
it presents the interesting future prospect of McCLIM applications
not being as ugly as they are now. Also, using high-level Cairo
drawing primitives easily beats raw X drawing for
convenience. Personally, the McCLIM change I find most
interesting is that Andreas Fuchs removed a nasty memory leak in the
incremental redisplay code, that would eventually cause applications
using incremental redisplay to gobble up all available memory. This
means
that Climacs
will now run for more than ten minutes before getting unusably slow
due to constant large-scale garbage collections! (It's still slow,
but at least it no longer degrades even further with use.)
Also, making the freeze period so short (McCLIM
was frozen
last saturday) seems to work much better than long freeze periods
that eventually just fizzle out. I doubt freeze periods cause the
McCLIM hackers to start testing obsessively anyway, so the primary
motivation and goal for the freeze period should be to make sure
that no-one will commit any experimental buggy code just before a
release.
McCLIM 0.9.3 probably works best on a threaded SBCL, and doesn't
work on CMUCL and CLISP. The reason for the CMUCL breakage is the
lack of proper support for forward-referenced classes in CMUCL's
CLOS implementation, but that has been fixed in very-recent CMUCLs,
so you might be able to find a patch so you can run McCLIM (it's
fixed in 19d patch1 I'm told). The reason for the CLISP breakage is
somewhat similar - CLISP chokes when compiling certain files that
contain function definitions in whose body can be found a form
resembling (typep x 'foo), where foo is the name
of a class that has not yet been defined. I have not yet been able
to create a small test case for demonstrating this, but CLISP
hackers are most welcome to look at the issue by compiling McCLIM. I
had an idea about how to create a hack that defined stub classes in
advance, but for some reason CLISP suddenly compiles McCLIM without
problems on my system, so I'm unable to get a list of the affected
classes. You might be just as lucky. No matter what, remember that
your CLISP will need to use MIT-CLX, NEW-CLX is known not to work.