- Compatibility with the new runtime APIs introduced with Mac OS X 10.7 / iOS 5.
- Support for small objects (ones hidden inside a pointer). On 32-bit systems, the runtime permits one small object class, on 64-bit systems it permits 4. This is used by GNUstep for small NSNumber and NSString instances, and these are used by LanguageKit for message sending to small integers.
- Support for Apple-compatible objc_msgSend() functions for x86, x86-64, and ARM. Using these approximately halves the cost of message sending operations and results in a 10% smaller total binary size.
- A fully maintained POSIX Makefile to make bootstrapping builds and packaging easier. This will be used automatically if GNUstep Make is not installed.
- Improvements to the included LLVM optimisation passes. Testing on a 2.8GHz Xeon, a loop of 200,000,000 class messages took 0.8 seconds with all optimisations enabled (including speculative inlining). With -Os, the test took 2 seconds. With explicit IMP caching in the source code, the test took 1.2 seconds. For reference, the same test using the GCC Objective-C runtime took 11 seconds (when compiled with either Clang/LLVM or GCC).
Thursday, November 24, 2011
GNUstep Objective-C Runtime 1.6 Released
GNUstep Objective-C Runtime 1.6 features: