On 16 Jul 2009, at 17:26, Lars Sonchocky-Helldorf wrote:
Maybe it's not clear to everybody what benefits your patch
introduces. So maybe it would be a good idea to give a short
enumeration of all the gains to the broader public (I know you're
good at writing technical articles since I read quite a few off
them :-)).
As I wrote in my first email, it provides the same benefits as
Apple's non-fragile ABI:
You can add or re-arrange instance variables in a class without
breaking the ABI. You can also remove private instance variables.
Instance variable offsets are now stored in a global variable,
rather than being hard-coded, and are set when the class is loaded
by the runtime. This needs a small amount of compiler and runtime
support. The runtime support was in the diff I sent to this list,
the compiler support is in clang (and hopefully someone will add
equivalent support to GCC).
Unlike the Apple implementation, it does not require the superclass
to be compiled with the non-fragile ABI, so you can still compile
GNUstep with the old ABI and then create subclasses of GNUstep
classes compiled with the non-fragile ABI. If you rearrange or add
ivars in a GNUstep class, then the subclass will still work
correctly, as long as it was compiled with -fnonfragile-abi.