Re: Re: [UnixOS2] libc
Andreas Buening <[email protected]> Thu, 19 Jun 2003 17:15:08 +0200
| Newsgroups | gmane.comp.ide.emx.devel |
|---|---|
| Message-ID | <[email protected]> |
Holger Veit wrote: > > On Wed, Jun 18, 2003 at 07:48:49PM +0200, Andreas Buening wrote: > > Holger Veit wrote: > > > > [snip] > > > > > We only have to preserve compatibility in that we need some fseek() and > > > fseek_64() at all, not with binary compatibility with existing code > > > (this can still access the old EMX DLLs and will be happy). > > > > I can understand why you'd like to break binary compatibility. > > Sure? I am curious... > > To be precise: there are several definitions of binary (in-)compatibility, > so it is important to negotiate what we are talking about. > > One is the question of ELF vs. a.out. > Another is ordinals vs. named DLL entries. > A third is g++ 2.8.x vs. 2.95 vs. 3.x. > The fourth is about API compatibility, as above the example of whether > off_t is 32 bit or 64 bit. > A fifth is the question whether some EMX successor should preserve all > older entry points. Binary compatibility means for me you can replace a DLL and your programs still work. This includes API compatibility and the preservation of the ordinal numbers (if you've ever used them). C++ is another story. We can't do anything about the fact that the g++ people change name mangling with every release (and that's the reason why C is used for the libc and why the libc is called lib_C_). [snip] > Do we really want an improvement of the free OS/2 libc (call it EMX or > different)? Yes. > If the answer is yes, then we *must* break something in order to > build something better, faster,more powerful (whatever the design goal > is). This is the unavoidable price to pay. This is the point I'm not totally convinced of. I agree that you have much more knowlegde of the emx and OS/2 internals than me and, most likely, than most people on this list. I do not say we must not do an incompatible change but I'm very sceptical about it. Sometimes I get the impression (I'm not talking about you, I'm just generally speaking) that some people are going through the world wearing a huge axe and taking no care of compatibility problems other people might have. Nobody ever needs this feature so let's kill it. Switching arguments of function foo() or adding some members to structure bar would perform much better so let's change it. xyz is a much better solution to that problem so let's remove that option. If people really need it they can easily modify their bla files. Who cares? This solution is much more beautyful. And, if in doubt, they recompile everything. Result? A huge bunch of incompatible stuff. If we have to introduce an incompatibility into emx then we may do it only once and never(*) again. And if anybody thinks six months or a year later that xyz could be solved better by foo or nobody needs option bar then the answer must be: Keep compatibility! Otherwise we'll just get a bunch of (more or less) useless libraries. (*) Never in this sense means never within this computer age which is equivalent to 10 years in real time. ;-) [snip] Bye, Andreas