...nothing is left to guesswork.

Recent Work:
An investigation of connected exceptive constructions and scalarity
Except-phrases and "only" presentation notes
Donkey Anaphora and Variable-Free Semantics

Wednesday, June 28, 2006

Yet another Common Lisp implementation

OpenMCL is an opensourced version of MCL (Macintosh Common Lisp by Digitool) that runs on ppc hardware under Darwin/Mac OS X, Linux ppc, and also x86-64 hardware under Linux. Supposedly a good pick for OS X Common-Lisp hackers as it "compiles to machine code, supports threads, and has quite good integration with OS X's Carbon and Cocoa toolkits," says Seibel in Chapter 2 of Practical Common Lisp. And I'm sure you're all wondering now what the difference between OpenMCL and MCL is...well, straight from the OpenMCL FAQ, here's the answer:

There are some obvious ways in which the enviornments differ. OpenMCL is essentially a UNIX command-line application: it uses #\LineFeed as the #\NewLine character, believes that file systems are case-sensitive (even though this isn't necessarily the case on OSX) and that physical pathname components are delimited by "/" characters.

There are some intentional implementation differences, most notably in the way that CL FLOAT types map to IEEE float types. In MCL, LONG-FLOAT, DOUBLE-FLOAT, and SINGLE-FLOAT all map to (64-bit) IEEE double and SHORT-FLOAT maps to (32-bit) IEEE single; in OpenMCL, LONG-FLOAT and DOUBLE-FLOAT map to IEEE double and SINGLE-FLOAT and SHORT-FLOAT denote IEEE single. Since *READ-DEFAULT-FLOAT-FORMAT* defaults to SINGLE-FLOAT in Common Lisp, unqualified floating-point constants (among other things) denote different IEEE floating-point types in the two implementations.

The implementations began diverging in 1999; there's still a lot of code in common, but there's never been any real effort to keep them in synch. Code that deals with stream internals, network I/O, physical pathnames, threading, etc. is probably not generally much easier to port between MCL and OpenMCL than between any two other CL implementations (though there may be cases where it is.)


Post a Comment

<< Home