|
|
|
|
@ -1,14 +1,48 @@
|
|
|
|
|
GNUstep Objective-C Runtime 2.1
|
|
|
|
|
===============================
|
|
|
|
|
=================================
|
|
|
|
|
|
|
|
|
|
This the first update to the second major release of the GNUstep Objective-C
|
|
|
|
|
This is first update to the second major 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:
|
|
|
|
|
|
|
|
|
|
- ?
|
|
|
|
|
- Numerous improvements to the Objective-C++ exception interoperation code.
|
|
|
|
|
The runtime now dynamically detects whether the libcxxrt or libsupc++ variant
|
|
|
|
|
of the Itanium C++ Exception ABI is being used
|
|
|
|
|
|
|
|
|
|
- Sending a message to `super` where the corresponding method did not exist was
|
|
|
|
|
silently ignored in previous versions of the runtime. This now correctly
|
|
|
|
|
invokes the forwarding hooks and so (with an implementation of the Foundation
|
|
|
|
|
framework, such as GNUstep Base or WinObjC) will trigger an exception or
|
|
|
|
|
invoke `forwardInvocation:`.
|
|
|
|
|
|
|
|
|
|
- The checks for overloaded memory management methods were incorrect, causing
|
|
|
|
|
some classes to be incorrectly opted into ARC fast paths. These checks are
|
|
|
|
|
now correct.
|
|
|
|
|
|
|
|
|
|
- Several memory management bugs in corner cases of weak reference management
|
|
|
|
|
were fixed.
|
|
|
|
|
|
|
|
|
|
- The ARM assembly implementation of `objc_msgSend` now correctly restores the
|
|
|
|
|
stack after calling a forwarding implementation. This bug caused stack
|
|
|
|
|
corruption and usually crashing on ARM.
|
|
|
|
|
|
|
|
|
|
- The ARC code has been rewritten as C++, using a well-tested third-party
|
|
|
|
|
Robin-Hood hash table to store weak references, replacing the home-grown
|
|
|
|
|
version. This improves performance and reduces the likelihood of bugs
|
|
|
|
|
arising from the hash table implementation.
|
|
|
|
|
|
|
|
|
|
- Control Flow Guard (CGF) checks were added on Windows on x86 (32- and
|
|
|
|
|
64-bit). If Objective-C code is compiled with CFG enabled then
|
|
|
|
|
`objc_msgSend` will crash if it attempts to jump to an address that is not a
|
|
|
|
|
valid function entry point.
|
|
|
|
|
|
|
|
|
|
- The function signatures in the blocks headers were updated for compatibility
|
|
|
|
|
with recent macOS releases.
|
|
|
|
|
|
|
|
|
|
- Support for the C11 _Atomic type qualifier in property metadata was added.
|
|
|
|
|
|
|
|
|
|
You may obtain the code for this release from git and use the 2.1 branch:
|
|
|
|
|
|
|
|
|
|
|