October 21, 2002
MCL OS X Delay

Gary Byers posted a message to info-mcl with an insightful overview of some of the issues that could be responsible for length of time it's taking to create an OS X-native version of MCL.

MCL relies - at a fairly deep, fundamental level - on low-level OS services (mostly, the ability to handle exceptions that occur during its own execution and the ability to control the protection of its own memory pages.) These OS services are provided by most (if not all) mainstream general-purpose OSes (including MacOS [789X]), though the details and level of support differ. I think that it's fair to say that the vast majority of Macintosh C[++] programs don't use these facilities or don't push them very hard; MCL pushes them very hard ...


To return to the near-present: as recently as December 2000, Apple didn't provide support for the MacOS Exception Manager in Carbon. As I understand it, some (presumably rather shrill) protests from Alice were a signigicant factor in persuading Apple to correct this oversight. If I understand and recall correcty, support for the Exception Manager in Carbon made it into MacOS X as of version 10.1 (September or October 2001.)

I believe (from having spent a few days stepping through machine code in GDB) that there are some serious bugs in the OSX Carbon implementation of the Exception Manager; once I understood the issues, I was able to write small, self-contained C programs that demonstrate the problems, and filed bug reports with Apple. That was a few months ago; I still hope to hear back from them, but haven't so far.

MCL pushes pretty hard on the exception handling primitives that the OS provides; the OSX Carbon Exception Manager falls over in a strong breeze, and if Apple's interested in fixing it they don't seem to have communicated that interest too well.

Posted by jjwiseman at October 21, 2002 03:15 PM
Post a comment

Email Address:


Unless you answer this question, your comment will be classified as spam and will not be posted.
(I'll give you a hint: the answer is “lisp”.)


Remember info?