José Alburquerque wrote:
> José Alburquerque wrote:
>   
>> Jonathon Jongsma wrote:
>>   
>>     
>>> ABI means Application Binary Interface.  The (huge) benefit of keeping
>>> the ABI stable is that you can switch out the shared gtkmm library to a
>>> newer version and have the apps that link against the library work
>>> exactly as they worked on the old version.  If the ABI of the library
>>> had changed from one version to the next, any applications that used the
>>> library would need to be recompiled, you couldn't just switch to a newer
>>> version of the library.  
>>> For example, if gtkmm changed its ABI and your linux distribution
>>> updated to that new version of gtkmm, every single application that used
>>> gtkmm would have to be updated as well.
>>> That's the short answer for why maintaining ABI compatibility is a good
>>> thing.
>>> I don't know all of the guidelines for maintaining ABI compatibility,
>>> but I know that you have to be very careful with virtual functions,
>>> since they affect the size of an object (by changing the vtable), but
>>> adding regular functions should be ok.
>>>   
>>>     
>>>       
>> Thanks so much for that, it's already very clear from your explanation!  
>> What about constructors?  Do they also affect the size of objects?
>>
>>   
>>     
> Searching a bit more, I found the following two links:
>
> http://scm.opendap.org:8090/trac/wiki/libdapABIStability
> http://www.cprogramming.com/tutorial/size_of_class_object.html
>
> I don't see anything in them that would lead me to believe that adding 
> constructors (as in the case of regular functions) would affect ABI 
> compatibility.  Thanks.
>
>   
Though from KDE development, I should also add this other link:

http://techbase.kde.org/index.php?title=Policies/Binary_Compatibility_Issues_With_C%2B%2B

The "Do's and Don'ts" section really clarified the constructor question 
for me by saying:

    You can...

        * add new non-virtual functions including signals and slots and
          constructors.

        ...

-Jose
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to