diff --git a/ANNOUNCE b/ANNOUNCE index 4d569a4..1d850db 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -8,7 +8,43 @@ dialects of Objective-C for use with GNUstep and other Objective-C programs. This release introduces a new Objective-C ABI, which is designed to be forward compatible with future changes and removes a large number of hacks that were required for compatibility with the prior ABI that included features introduced -in the 1980s. +in the 1980s. Highlights include: + +- The linker now removes duplicate selectors within a library. + +- The linker will remove duplicate protocol definitions within a library. + +- Protocols and classes are now always accessed via an indirection layer, so + they can be extended by future versions of the ABI without breaking + compatibility. + +- Categories can include property metadata and both categories. + +- Constant strings are now emitted with a richer structure, which provides + faster hashing and better unicode support. + +- Instance variable metadata includes size and alignment, allowing better object + layout and more accurate introspection. + +- Method metadata now includes extended type information, allowing bridged + languages to understand the class that methods expect and not just the fact + that they take an object. This was previously an obstacle to supporting + JavaScriptCore's Objective-C bridge with GNUstep. + +In addition to the new ABI, there are several improvements on Windows: + +- The runtime now uses SEH-based exception handling on Windows. This + interoperates with C++ exceptions in libraries compiled with MSVC or + MSVC-compatible compilers. + +- All of the assembly code paths now fully support i386 and x64 Windows. + +- Public runtime functions are now marked dllexport, so the runtime can be built + as objc.dll on Windows. + +**WARNING**: The new ABI is currently incompatible with incremental linking on +Windows, so projects built with Microsoft's linker must disable incremental +linking. The runtime will now use the new ABI's data structures internally and will automatically upgrade on-disk structures from old ABIs when used with the old