Objective-C runtime

From GNUstepWiki
Jump to navigation Jump to search
This article or section is a stub (i.e., in need of additional material).
You can help us by expanding it

The Objective-C runtime provides C functions and data structures required to execute an Objective C program. It is low-level code that makes your applications work. Every Objective-C program links to the runtime, and the runtime manages objects, looks up methods, and implements the features of Objective-C.


The first Objective-C runtime was created by NeXT in the 1980s for their implementation of Objective-C and NeXTSTEP. The GNU project rewrote it in 1992. This runtime was significantly modified in 1993 by Kresten Krab Thorup. Since then, there have been two runtimes evolving in parallel.

When Jobs returned to Apple, he brought with him NeXTSTEP's code. The Obj-C runtime used in Apple's Mac OS X is inherited from NeXT. Apple has made many changes to it. The biggest change Apple has made is supporting Objective-C 2.0.

The Etoile project maintained its own extension to the GNU runtime for a few years. This updated runtime added support for many of the features that Apple added. However, David Chisnall added all the features from the Etoile runtime into a framework that runs on top of the GNU runtime. This framework, ObjectiveC2.framework obsoletes the Etoile runtime and makes it easier for regular GNUstep applications to use. The Étoilé Runtime is dead, long live the GNUstep runtime!

Choosing a runtime

  • The GNU runtime supports everything needed by traditional Objective-C applications. Apple calls this Objective-C 1.0. Nothing special needs to be done for a GNUstep application to use this runtime.
  • The Apple runtime from 10.0 to 10.4 is another runtime that supports Objective-C 1. Because this runtime is different from the GNUstep runtime, applications from Mac OS X will have to be re-compiled to run on GNUstep (they are not binary-compatible).
  • In Mac OS X 10.5 Apple introduced many new features to the runtime under the name Objective-C 2.0. None of these features were added to the GNUstep runtime.
  • The Etoile runtime added most of the features that Apple announced in Objective-C 2.0, but it was not possible for ordinary GNUstep applications to use. The Etoile runtime has been superseded by the ObjectiveC2 framework.
  • The ObjectiveC2 framework relies on the GNU runtime for most features, yet adds new features on top. It is possible for ordinary GNUstep applications to link to this framework and get the benefits of Objective-C 2.0.

Of course, the Apple runtime is only available on Apple operating systems (Darwin and Mac OS X).