The Objective-C language is designed with a clear separation of the language itself from its standard object model. In practice, though, most Objective-C programmers today use some variant of NeXT's object hierarchies -- either with Cocoa and Apple's Objective-C runtime, or through GNUStep with the GNU runtime libraries (which are a standard component of gcc).
The Apache Portable Runtime is a mature, cross-platform standard library that provides memory management, file I/O, string handling, and many other features. It can in fact replace most of the C standard library, and adds thread handling, synchronization, and "container classes" such as tables and arrays. The APR does an especially good job of providing "predictable if not identical behavior regardless of the platform" on which it is running (quoted from apr.apache.org).
This project aims to expose the full functionality of the APR as a set of fundamental Objective-C classes and interfaces -- in other words, to build a new Objective-C standard library, implemented by the APR. In the object hierarchy, it will fill nearly the same place as the Apple or GNUStep Foundation framework. Its goals include:
- to wrap the APR in a "familiar" object model, similar to the standard libraries of other popular languages.
- to enable "autoconf-less" builds. Because the APR abstracts away all platform dependencies, it should be possible to build the library itself, and many applications that use it, simply using "make".
- to provide full portability between the two common Objective-C runtimes (GNU's and Apple's), transparently to the application developer.
- to prefer the APR's pool-based memory management model, while coexisting with the reference-counting and possibly garbage collection models that the runtimes may provide.
- to interoperate with other frameworks, so that Cocoa or GNUStep components and APR-Objects components can safely coexist in a single application.
- to provide greater developer productivity and better code maintenance, compared to using the APR natively from C.
- to provide higher run-time performance, compared for instance to Java and Python.