Skip to content

Commit

Permalink
Update ANNOUNCE for 2.2.1
Browse files Browse the repository at this point in the history
  • Loading branch information
qmfrederik committed Mar 21, 2024
1 parent e71db70 commit dd9128a
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 38 deletions.
51 changes: 13 additions & 38 deletions ANNOUNCE
@@ -1,50 +1,25 @@
GNUstep Objective-C Runtime 2.2
===============================
GNUstep Objective-C Runtime 2.2.1
=================================

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.
This a bugfix release for 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:
- Various improvements for building and using libobjc2 on MinGW.
- Improved support for the PowerPC architecture.
- A fix for the detection of the tls-robin-map dependency.

You may obtain the code for this release from git and use the 2.2.1 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
https://github.com/gnustep/libobjc2/archive/v2.2.1.zip
https://github.com/gnustep/libobjc2/archive/v2.2.1.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
Expand Down
55 changes: 55 additions & 0 deletions ANNOUNCE.2.2
@@ -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

0 comments on commit dd9128a

Please sign in to comment.