discuss-gnustep
[Top][All Lists]
Advanced

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

Re: ANN: GNUstep Objective-C Runtime 1.2


From: Dr. H. Nikolaus Schaller
Subject: Re: ANN: GNUstep Objective-C Runtime 1.2
Date: Mon, 21 Feb 2011 16:24:45 +0100

Am 21.02.2011 um 15:23 schrieb David Chisnall:

> Hi Nikolaus,
> 
> On 21 Feb 2011, at 14:04, Dr. H. Nikolaus Schaller wrote:
> 
>> 
>> Am 21.02.2011 um 14:56 schrieb David Chisnall:
>> 
>>> In preparation for the next GNUstep release, I've pushed a bug-fix release 
>>> of libobjc2.  This includes numerous small bug fixes and has been tested 
>>> with the -base and -gui test suites.
>>> 
>>> David
>>> 
>>> GNUstep Objective-C Runtime 1.2
>>> ===============================
>> 
>> Hi David,
>> thanks for your great work!
>> 
>> I just wonder if the version numbers aren't confusing. At least
>> for me.
>> 
>> Since it is libobjc2, I would expect some 2.x version numbers.
> 
> libobjc2 is just the unofficial name, since I started it as an Objective-C 2 
> runtime.  Objective-C 2 is, itself, a confusing name, because it's the 
> version that comes after Objective-C 4.  Fortunately, Apple doesn't seem to 
> have use their belief that 4+1=2 elsewhere in their code.
> 
> The official name is the GNUstep Objective-C Runtime, and the library is 
> libobjc.so.  The 1.0 release was the first official release from this 
> codebase.
> 
> The svn repository is called libobjc2, to distinguish it from the libobjc 
> that we have that is an old copy of the GCC runtime for use with even older 
> compilers.  This was required because the GCC runtime does not (officially) 
> support being built outside of the GCC source tree, so it's hard to ship 
> updates to the compiler 
> 
> To confuse matters, Debian has a package called libobjc2, which is GCC 
> libobjc.so.3.  I suspect that they've taken arithmetic lessons from the same 
> people as Apple.
> 
>> And there is libobjc (1). I am not sure if it has(had) version numbers
>> or was just part of gcc.
> 
> GCC libobjc has its own version numbers, but these are independent because it 
> is a different project.  The GNUstep runtime aims to be backwards compatible 
> with GCC libobjc from 4.2 - the last GPLv2 version.  This makes it a smooth 
> transition for people not wishing or able to ship GPLv3 code (e.g. FreeBSD).
> 
> I had hoped that Nicola would either adopt the GNUstep runtime when adding 
> new features to GCC, or at least maintain API and ABI compatibility, but I 
> see that he has implemented some functions using names different to the ones 
> found in the GNUstep runtime and in the ObjectiveC2 compatibility framework 
> in -base, so I can't say whether GCC will continue to remain compatible going 
> forward.  
> 
> Currently, GCC 4.6 can use the new Objective-C 2 features with the old ABI, 
> but users must be careful when calling runtime functions (GCC libobjc in 4.6 
> doesn't use the _np suffix on functions that are not portable to the Apple 
> runtime, for example, so is not compatible with the APIs GNUstep has been 
> using / shipping for the last year or so).  
> 
> LLVM/Clang can target the GCC runtime with the old ABI, or the GNUstep 
> runtime with old and new ABIs.
> 
> LanguageKit can only target the GNUstep runtime, because it requires several 
> features that are not present in the GCC runtime.
> 
> Both LanguageKit and Clang use LLVM on the back end, so can benefit from the 
> extra optimisations in the opts directory in the libobjc2 source tree - I 
> talked a bit about these in my FOSDEM talk[1].
> 
> psclang will only target the GNUstep runtime with the new ABI, when it is 
> released later this year.  It uses a fork of the Open64 back end, so will not 
> use the LLVM optimisations, but the same algorithms will be implemented with 
> their optimiser (maybe not for the first release).
> 
>> I.e. the major version number to denote API changes and the
>> minor numbers to denote bug fixes and minor enhancements.
> 
> This is the case.  Code linked against 1.x is expected to work with 1.(x+1).  
> The subminor revision is used to indicate small bug-fix releases.  1.2 has a 
> number of small changes to the semantics of functions to fix Apple 
> compatibility.
> 
> David
> 
> [1] http://cs.swan.ac.uk/~csdavec/FOSDEM11/ObjC_Handout.pdf From the slide 
> 'What Makes Things Slow?' onwards.
> 
> -- Sent from my brain
> 

While I understand the thousands reasons behind the confusion,
we should make it as simple as possible for newcomers.

They probably don't know about version numbers by
Apple (there it is simply part of "some SDK") nor
GCC nor Debian nor our history...

My assumption is that they just think "Obj-C 1.0 vs. Obj-C 2.0".

BR,
Nikolaus




reply via email to

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