Clozure CL 1.2 is out now. It runs on x86-64 and PowerPC processors, under Mac OS X, Linux, and FreeBSD. (I continue to be surprised by how many people think it runs only on Macintosh systems.) This is the first official release in over two and a half years.

Fast compiler, native threads, convenient FFI, Unicode, generational GC, etc. See http://trac.clozure.com/openmcl

One major feature that will be in Clozure CL 1.3 is support for the 32-bit x86 platform. In fact, an experimental 32-bit lisp is already in the trunk for Darwin/x86. I worked on the 32-bit Intel port.

It’s probably a little unusual for software to be ported from x86-64 back to x8632. Anti-progress, as it were.

The existence of an x8664 port made the job quite a bit simpler: one major benefit was that there was already a working assembler (and disassembler, too). I was also able to use the existing low-level x86-64 assembly language code as a model for what the corresponding 32-bit version should look like.

Another thing I had going for me was that the lisp already ran on the 32-bit PowerPC, so the word size issues were mostly ironed out.

I didn’t really know (or care to know) the x86 architecture all that well before I started working on the port. I think other architectures (SPARC, MIPS, PowerPC, …) are much nicer targets.

However, the hardware engineers at Intel and AMD are brilliant, and it’s impossible to ignore the performance of the x86 chips that they build. You just have to hold your nose, study the architecture manuals, and get on with it.

After doing the port, I find it funny that I look on x86-64 as some sort of Nirvana. (I mentioned this on a private IRC channel, and got the reply “It’s not THAT bad. Of the 8 or so architectures that I can think of that’re still in use, it’s in the top 7.”)

I’m afraid that it might be a bit boring to read about issues that face the lisp implementer when targeting x8632, but maybe I’ll write a follow-on post with some more details if there’s any interest.