RE: C++ lib compatibility between Red Hat 9 and 7.3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: redhat-list-admin@xxxxxxxxxx [mailto:redhat-list-admin@xxxxxxxxxx]
> On Behalf Of Jonathan Bartlett
> Sent: Wednesday, October 15, 2003 12:02 PM
> To: redhat-list@xxxxxxxxxx
> Subject: Re: C++ lib compatibility between Red Hat 9 and 7.3
> 
> > The obvious question is of course: Why not?
> 
> Because of variations within C++, especially in regard to implementation
> of name mangling, default function attributes, implementation of classes,
> RTTI, etc.  Anytime the standard changes, you have to change binary
> compatibility.  Likewise, many new optimizations require binary
> differences.  Since there hasn't until recently been a C++ binary
> standard, each compiler was free to implement the language however they
> wish, so if your first compiler compiles the function foo() as
> foo_returns_int() and another compiler compiles foo() as foo$intpp(), then
> applications compiled for one won't work for the other, because the
> function names would be different.  In addition, to support RTTI, you need
> some method of determining types at runtime, which would require
> additional space in each class, which means that the library would be
> expecting an object of X size, when you send it an object of Y size.
> 
> Exceptions are even nastier, because they _really_ slow down your code.
> Therefore, everyone is always trying to make that faster, each time
> breaking binary compatibility.
> 
> Jon
> 
> 
I have watched this thread develop and observed different people struggling
to justify why c++ lib's are not compatible between RH 9 and 7.3.  In
general applications strive to be downward compatible i.e. if built for 7.3
then it should work for 9 but if built for 9 then it probably won't work on
7.3.  This in itself is a standard.  API's are generally allowed to change,
but may optionally include compatibility for earlier versions.  After saying
that libraries are of a particular mode in that they generally contain
routines that are core to the applications and hence should be compatible,
transparent to the user of the library (btw a central feature of OO
methodology ie the black box can change internally but should not affect the
programs). Now I have said all of this to say what.  This has been a major
problem with the open source community, and has not been addressed
completely.  Once something new comes out it causes anyone who adopts it to
have to go through heavy gyrations to make it work.  So this is not just a
problem with c++ lib's but through out the community.  I personally think it
is a resource problem ie the developers have just enough time to create the
product, but don't have the time to ensure it works with previous versions.
So what, the user has to be wary of new product and to ensure that the
selection will not cause major conflict until the open source community can
address this type of issue and resolve how to lessen the impact.



-- 
redhat-list mailing list
unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/redhat-list

[Index of Archives]     [CentOS]     [Kernel Development]     [PAM]     [Fedora Users]     [Red Hat Development]     [Big List of Linux Books]     [Linux Admin]     [Gimp]     [Asterisk PBX]     [Yosemite News]     [Red Hat Crash Utility]


  Powered by Linux