-
Notifications
You must be signed in to change notification settings - Fork 120
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e71db70
commit dd9128a
Showing
2 changed files
with
68 additions
and
38 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
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,55 @@ | ||
GNUstep Objective-C Runtime 2.2 | ||
=============================== | ||
|
||
This is the second 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: | ||
|
||
- Initial support for RISC-V 64-bit (rv64) including an architecture-specific | ||
objc_msgSend, and block trampoline implementation. Please note that | ||
double-precision floating-point support (rv64d) is required for the | ||
objc_msgSend implementation. | ||
- Initial support for Windows on ARM64 with fast-path objc_msgSend. | ||
- Numerous improvements to the Objective-C++ exception interoperation code. | ||
The runtime now dynamically detects whether the libcxxrt, libsupc++, or | ||
libc++abi variant of the Itanium C++ Exception ABI is being used. This is | ||
the first version to support exception interoperability with libc++abi. | ||
- Because we no longer need to identify the specific C++ runtime, we can link | ||
to it indirectly via the C++ standard library, which enables more C++ to be | ||
used in the Objective-C runtime. | ||
- The minimum CMake version has been bumped to 3.16, which supports | ||
Objective-C. This support is now used, simplifying the build. | ||
- Support for GC mode is gone. Apple dropped support for this a long time ago. | ||
- `objc_setUncaughtExceptionHandler` is added, which avoids consuming code | ||
needing to access a library-owned global. | ||
- The selector-table code has been rewritten in C++, improving performance of | ||
adding selectors. This is unlikely to have a measurable impact on | ||
performance outside of contrived test cases, but the new code is more | ||
maintainable. | ||
- Several bug fixes in the ARC code, especially in corner cases surrounding | ||
weak references. | ||
- Support for fast-path allocation / initialisation functions. Root classes | ||
that opt into this should implement `+_TrivialAllocInit` (this can be an | ||
empty method, it is not called). Clang 18 or later will emit calls to the | ||
fast-path functions for `+alloc`, `+allocWithZone:` and `+alloc` + `-init` | ||
calls. This should improve code density as well as performance. | ||
|
||
You may obtain the code for this release from git and use the 2.2 branch: | ||
|
||
https://github.com/gnustep/libobjc2.git | ||
|
||
Alternatively, a tarball is available from: | ||
|
||
https://github.com/gnustep/libobjc2/archive/v2.2.zip | ||
https://github.com/gnustep/libobjc2/archive/v2.2.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 a superset of Apple's Objective-C Runtime APIs. | ||
|
||
If you come across any problems, please file them in the issue tracker: | ||
|
||
https://github.com/gnustep/libobjc2/issues |