forked from gnustep/libobjc2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add 1.9 release announcement to 2.x series.
- Loading branch information
1 parent
f48403d
commit f569aeb
Showing
1 changed file
with
77 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
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 |