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
