Hi Stefan,

On 11 Feb 2011, at 19:02, Stefan Bidi wrote:

> On Fri, Feb 11, 2011 at 9:15 AM, Richard Frith-Macdonald 
> <[email protected]> wrote:
>> No ... this sort of stuff rarely actually breaks anything (how often does 
>> anyone want to subclass these things) but we have a 'contract' with our uses 
>> not to break ABI compatibility for stable releases (except very rarely on a 
>> major release).  I would really like to be able to make a new minor stable 
>> release (so distributions can adopt it quickly without worrying about 
>> backward compatibility) by copying from svn trunk.  So really we want to 
>> make sure that there are no changes in the size of the ivars of existing 
>> classes.  This means that either we need to modify things so we are not 
>> using any new ivars in NSDateFormatter and NSNumberFormatter, or our next 
>> stable release really can't contain the latest implementation for these two 
>> classes. The 'padding' instance variable in each class definition is there 
>> precisely so that we can set gs_unused to be a pointer to extra data if we 
>> need to add instance variables without breaking the ABI.
>>  
> The changes to the formatters were quite invasive, including breaking the 
> default behavior as they now default to 10.4+ behavior.  I really couldn't 
> use the padding pointer because I added a lot of new ivars.  The only way I 
> could have done anything with it is if I made it a pointer to a structure.  
> Is this what I should have done here?
> 
> The good news is that I didn't modify anything else but add the new behavior, 
> so a new stable release can be done by simply omitting all the changes I did.

I've not looked at the code in detail, but I thought you were creating a 
private subclass for the old and new behaviours - would it not be possible to 
simply return a private subclass instance from the constructors and not change 
the ivar layout of the superclass?

David

-- Sent from my PDP-11
_______________________________________________
Gnustep-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to