Skip to content

Commit f569aeb

Browse files
committed
Add 1.9 release announcement to 2.x series.
1 parent f48403d commit f569aeb

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

ANNOUNCE.1.9

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
GNUstep Objective-C Runtime 1.9
2+
===============================
3+
4+
This the ninth official release of the GNUstep Objective-C runtime (a.k.a.
5+
libobjc2). This runtime was designed to support the features of modern
6+
dialects of Objective-C for use with GNUstep and other Objective-C programs.
7+
Highlights of this release include:
8+
9+
- Support for 64-bit ARM (AArch64) processors, including assembly fast paths
10+
for message sending.
11+
12+
- Improved the dispatch table representation to improve performance and cache
13+
usage on the fast path.
14+
15+
- The implementation of `imp_implementationWithBlock`, the function that allows
16+
blocks to be used as methods, no longer requires physical pages to be mapped
17+
both writeable and executable.
18+
19+
- Numerous improvements to the interaction between runtime functions and ARC.
20+
21+
- Support for Thumb-2 interworking on ARM. Note that the library must be
22+
compiled for ARMv7 or ARMv6T2 for this code to be enabled. Once it has been,
23+
other Objective-C binaries linked with the library can be compiled as ARM or
24+
Thumb-2 code. This will also generate Thumb-2 message send functions,
25+
improving instruction cache usage.
26+
27+
- Significant improvements to ARC, including
28+
29+
* The runtime no longer acquires a global lock on every object deallocation (a
30+
global lock is still used for objects that have weak references). *NOTE:*
31+
This is incompatible with other code directly inspecting the reference
32+
count and will break with older versions of GNUstep Base!
33+
34+
* Weak references use a scheme closer to C++ `std::weak_pointer` and are
35+
lazily zeroed on access. This reduces the space overheads for weak
36+
references.
37+
38+
* Some additional helper functions are added for use in `NSObject` and other
39+
root classes, which simplifies the layering between the runtime and the
40+
Foundation (or equivalent) implementation.
41+
42+
- Improvements to how the runtime handles layout of ivars with strong alignment
43+
requirements, which should fix issues relating to using vector types in
44+
Objective-C objects.
45+
46+
- The option to build a separate libobjcxx has been removed. The runtime will
47+
now depend on the C++ standard library implementation if no useable C++
48+
runtime is available. Note that C++ exception interworking does not work
49+
because LLVM's libc++abi (shipped by Apple) does not provide GNU-compatible
50+
hooks and so Objective-C++ exception support will be automatically disabled
51+
on this platform. Any other platforms shipping libc++abi should consider
52+
either GNU libsupc++ or libcxxrt as an alternative.
53+
54+
You may obtain the code for this release from git and use the 1.9 branch:
55+
56+
https://github.com/gnustep/libobjc2.git
57+
58+
Alternatively, a tarball is available from:
59+
60+
https://github.com/gnustep/libobjc2/archive/v1.9.zip
61+
https://github.com/gnustep/libobjc2/archive/v1.9.tar.gz
62+
63+
The runtime library is responsible for implementing the core features of the
64+
object model, as well as exposing introspection features to the user. The
65+
GNUstep runtime implements Apple's Objective-C Runtime APIs, and a small number
66+
of GCC APIs for legacy compatibility.
67+
68+
This library is based on the Étoilé Objective-C Runtime, an earlier research
69+
prototype, and includes support for non-fragile instance variables,
70+
type-dependent dispatch, and object planes. It is fully backwards compatible
71+
with the FSF's GCC 4.2.1 Objective-C ABI and also implements a new ABI that is
72+
supported by Clang and Étoilé's LanguageKit and is required for some of the
73+
newer features.
74+
75+
If you come across any problems, please file them in the issue tracker:
76+
77+
https://github.com/gnustep/libobjc2/issues

0 commit comments

Comments
 (0)