gnustep-dev
[Top][All Lists]
Advanced

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

Re: ABI Compatibility (was Re: Installation woes for the average user...


From: Wolfgang Lux
Subject: Re: ABI Compatibility (was Re: Installation woes for the average user...)
Date: Thu, 21 May 2009 12:42:56 +0200

David Chisnall wrote:

On 21 May 2009, at 10:34, Wolfgang Lux wrote:

Have you ever looked at what Apple is doing? I can use executables compiled on Mac OS X 10.2 on Mac OS X 10.5 without any problems and Mac OS X does ship with only a single instance of all its libraries/frameworks

Only half of this is true. Apple only ships one version of its frameworks. Each framework, however, contains different versions of the libraries. You may have noticed all of the OS X version macros in the headers. Each of those defines the parts of the interface that are visible in a particular version of the framework, but they are also used when compiling. Each version of OS X has a Foundation.framework containing several libFoundation.dylib files, one compiled for compatibility with each previous version. Without access to their source, I can't be completely sure how they are doing this, but my guess is that each ivar and each method - even each typedef - has the same feature macros in front of it and their build system automatically generates a backwards-compatible version as long as these changes are made.

I'm sorry, but this is just plain wrong. There is just one Foundation, AppKit, etc. library on each system. Maybe you are thinking of the libraries in the /Developer/SDKs/MacOSX10xxx.sdk directories, but these are just stub libraries that are provided in order to allow *linking* of executables for another OS version. These stub libraries just contain the necessary symbol definitions but no code at all.

It would be nice if GNUstep make had facilities for doing this, but I imagine it would be a lot of effort. It would also be easier if we could rely on a loader that supported frameworks properly, but I believe Matt Rice is the only person who has one of these on a non- NeXT/Apple platform.

I don't think that frameworks are the issue here. After all, frameworks are just a convenient way to group headers, libraries, and resources of a particular project together. Sure, they also provide for versioning, but Apple does not seem to use that, e.g., Apple's Foundation and AppKit libraries are both at version C since the advent of Mac OS X.

Wolfgang





reply via email to

[Prev in Thread] Current Thread [Next in Thread]