Skip to content

Commit 282486d

Browse files
committed
Copy ANNOUNCE for 2.1 release.
1 parent e753b97 commit 282486d

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

ANNOUNCE.2.1

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
GNUstep Objective-C Runtime 2.1
2+
=================================
3+
4+
This is the first update to the second major release of the GNUstep Objective-C
5+
runtime (a.k.a. libobjc2). This runtime was designed to support the features
6+
of modern dialects of Objective-C for use with GNUstep and other Objective-C
7+
programs.
8+
9+
*NOTE:* This is the first release to use submodules. If you are downloading
10+
the sources from git, please make sure that you do a recursive clone. If you
11+
forget, the build system will give you instructions to correct this.
12+
Tarballs from GitHub do not include submodules, so if you are downloading the
13+
tarball then you will need to download the submodule separately.
14+
15+
16+
Highlights of this release include:
17+
18+
- Numerous improvements to the Objective-C++ exception interoperation code.
19+
The runtime now dynamically detects whether the libcxxrt or libsupc++ variant
20+
of the Itanium C++ Exception ABI is being used
21+
22+
- Sending a message to `super` where the corresponding method did not exist was
23+
silently ignored in previous versions of the runtime. This now correctly
24+
invokes the forwarding hooks and so (with an implementation of the Foundation
25+
framework, such as GNUstep Base or WinObjC) will trigger an exception or
26+
invoke `forwardInvocation:`.
27+
28+
- The checks for overloaded memory management methods were incorrect, causing
29+
some classes to be incorrectly opted into ARC fast paths. These checks are
30+
now correct.
31+
32+
- Several memory management bugs in corner cases of weak reference management
33+
were fixed.
34+
35+
- The ARM assembly implementation of `objc_msgSend` now correctly restores the
36+
stack after calling a forwarding implementation. This bug caused stack
37+
corruption and usually crashing on ARM.
38+
39+
- The ARC code has been rewritten as C++, using a well-tested third-party
40+
Robin-Hood hash table to store weak references, replacing the home-grown
41+
version. This improves performance and reduces the likelihood of bugs
42+
arising from the hash table implementation.
43+
44+
- Control Flow Guard (CGF) checks were added on Windows on x86 (32- and
45+
64-bit). If Objective-C code is compiled with CFG enabled then
46+
`objc_msgSend` will crash if it attempts to jump to an address that is not a
47+
valid function entry point.
48+
49+
- The function signatures in the blocks headers were updated for compatibility
50+
with recent macOS releases.
51+
52+
- Support for the C11 _Atomic type qualifier in property metadata was added.
53+
54+
You may obtain the code for this release from git and use the 2.1 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/v2.1.zip
61+
https://github.com/gnustep/libobjc2/archive/v2.1.tar.gz
62+
63+
The submodule is available from:
64+
65+
https://github.com/Tessil/robin-map/archive/757de82.zip
66+
https://github.com/Tessil/robin-map/archive/757de82.tar.gz
67+
68+
This will extract as robin-map-757de829927489bee55ab02147484850c687b620.
69+
You must move the contents of that directory into third_party/robin_map in the
70+
libobjc2 tree.
71+
72+
73+
The runtime library is responsible for implementing the core features of the
74+
object model, as well as exposing introspection features to the user. The
75+
GNUstep runtime implements a superset of Apple's Objective-C Runtime APIs.
76+
77+
If you come across any problems, please file them in the issue tracker:
78+
79+
https://github.com/gnustep/libobjc2/issues

0 commit comments

Comments
 (0)