You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.5 KiB
Groff
78 lines
3.5 KiB
Groff
GNUstep Objective-C Runtime 1.9
|
|
===============================
|
|
|
|
This the ninth official release of the GNUstep Objective-C runtime (a.k.a.
|
|
libobjc2). This runtime was designed to support the features of modern
|
|
dialects of Objective-C for use with GNUstep and other Objective-C programs.
|
|
Highlights of this release include:
|
|
|
|
- Support for 64-bit ARM (AArch64) processors, including assembly fast paths
|
|
for message sending.
|
|
|
|
- Improved the dispatch table representation to improve performance and cache
|
|
usage on the fast path.
|
|
|
|
- The implementation of `imp_implementationWithBlock`, the function that allows
|
|
blocks to be used as methods, no longer requires physical pages to be mapped
|
|
both writeable and executable.
|
|
|
|
- Numerous improvements to the interaction between runtime functions and ARC.
|
|
|
|
- Support for Thumb-2 interworking on ARM. Note that the library must be
|
|
compiled for ARMv7 or ARMv6T2 for this code to be enabled. Once it has been,
|
|
other Objective-C binaries linked with the library can be compiled as ARM or
|
|
Thumb-2 code. This will also generate Thumb-2 message send functions,
|
|
improving instruction cache usage.
|
|
|
|
- Significant improvements to ARC, including
|
|
|
|
* The runtime no longer acquires a global lock on every object deallocation (a
|
|
global lock is still used for objects that have weak references). *NOTE:*
|
|
This is incompatible with other code directly inspecting the reference
|
|
count and will break with older versions of GNUstep Base!
|
|
|
|
* Weak references use a scheme closer to C++ `std::weak_pointer` and are
|
|
lazily zeroed on access. This reduces the space overheads for weak
|
|
references.
|
|
|
|
* Some additional helper functions are added for use in `NSObject` and other
|
|
root classes, which simplifies the layering between the runtime and the
|
|
Foundation (or equivalent) implementation.
|
|
|
|
- Improvements to how the runtime handles layout of ivars with strong alignment
|
|
requirements, which should fix issues relating to using vector types in
|
|
Objective-C objects.
|
|
|
|
- The option to build a separate libobjcxx has been removed. The runtime will
|
|
now depend on the C++ standard library implementation if no useable C++
|
|
runtime is available. Note that C++ exception interworking does not work
|
|
because LLVM's libc++abi (shipped by Apple) does not provide GNU-compatible
|
|
hooks and so Objective-C++ exception support will be automatically disabled
|
|
on this platform. Any other platforms shipping libc++abi should consider
|
|
either GNU libsupc++ or libcxxrt as an alternative.
|
|
|
|
You may obtain the code for this release from git and use the 1.9 branch:
|
|
|
|
https://github.com/gnustep/libobjc2.git
|
|
|
|
Alternatively, a tarball is available from:
|
|
|
|
https://github.com/gnustep/libobjc2/archive/v1.9.zip
|
|
https://github.com/gnustep/libobjc2/archive/v1.9.tar.gz
|
|
|
|
The runtime library is responsible for implementing the core features of the
|
|
object model, as well as exposing introspection features to the user. The
|
|
GNUstep runtime implements Apple's Objective-C Runtime APIs, and a small number
|
|
of GCC APIs for legacy compatibility.
|
|
|
|
This library is based on the Étoilé Objective-C Runtime, an earlier research
|
|
prototype, and includes support for non-fragile instance variables,
|
|
type-dependent dispatch, and object planes. It is fully backwards compatible
|
|
with the FSF's GCC 4.2.1 Objective-C ABI and also implements a new ABI that is
|
|
supported by Clang and Étoilé's LanguageKit and is required for some of the
|
|
newer features.
|
|
|
|
If you come across any problems, please file them in the issue tracker:
|
|
|
|
https://github.com/gnustep/libobjc2/issues
|