practice
Doi: 10.1145/2330667.2330682
Article development led by
queue.acm.org
Backward compatibility always
trumps new features.
By DaViD ChiSnaLL
a new
objective-C
Runtime:
From
Research to
Production
ON My Way out of academia, before Cambridge
persuaded me to return, the last paper I wrote
was a description of a new objective-C runtime for use
by the Étoilé project. 1 An objective-C implementation
requires two components: a runtime library that
implements the dynamic parts of the language and
a compiler that emits calls to this library.
When I wrote that paper in 2009, there were two
choices for objective-C: Apple’s stack, with a number
of new features but an implementation that relied
on some proprietary features and ones
that shipped only with Darwin; and the
GNU Compiler Collection (GCC) stack
maintained by the Free Software Foundation. The GCC implementation had
several limitations, not least of which
was the license, which effectively prevented the runtime library from being used with any compiler other than
GCC (this situation was resolved in
later versions).
One of the goals of Étoilé was that
no program should contain more than
1,000 nonreusable lines of code. This
typically requires a lot of help from do-main-specific languages, which is the
research area where I spend most of
my time. I had implemented a proof-of-concept Smalltalk compiler on top
of the GCC runtime, but it had some
IllustratIon By gaVIn potenZa