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: David Chisnall
Subject: Re: ANN: GNUstep Objective-C Runtime 1.2
Date: Mon, 21 Feb 2011 14:23:57 +0000

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




reply via email to

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