discuss-gnustep
[Top][All Lists]
Advanced

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

Re: GNUstep Objective-C v2 ABI update


From: Patryk Laurent
Subject: Re: GNUstep Objective-C v2 ABI update
Date: Mon, 31 Dec 2018 17:00:46 -0800

Hi David,

A couple days ago I installed FreeBSD 12.0 and after pkg ins Aclock and openapp 
AClock I got a crash. Are you saying that would now be fixed?  Do I just 
uninstall gnustep and reinstall to get the fix?

Thank you,
Patryk



> On Dec 31, 2018, at 03:34, David Chisnall <address@hidden> wrote:
> 
> Hello the list,
> 
> It seems that Christmas is about the only time I get to work on Objective-C 
> things these days.  I started the new ABI project two Christmases ago and 
> this Christmas I've managed to update all of the FreeBSD GNUstep ports to use 
> it.  As far as I can tell, everything is working (I've tried running a few 
> GUI apps and everything seemed happy).
> 
> A few highlights of the new ABI:
> 
> - A new constant string representation, including space to store a hash and 
> better unicode support.  This should improve performance for anything that 
> uses constant strings as dictionary keys.  The compiler will now emit tiny 
> strings (up to 8 ASCII characters) embedded in the pointer.
> 
> - Better introspection metadata.  We now have full introspection metadata for 
> properties (including class properties and properties declared in categories) 
> and the extended type encodings that JavaScriptCore (WebKit) needs for the 
> JavaScript bridge.
> 
> - Significantly reduced redundancy for selectors and protocols.  The linker 
> can now deduplicate these within a library, so we get (for example) one copy 
> of the +alloc selector per library, not one per compilation unit.  This means 
> that we have significantly smaller (5-10%) binary sizes, even with the richer 
> reflection metadata.
> 
> - Protocols and classes are referenced via an indirection layer, so a future 
> version of the ABI can be backwards compatible.
> 
> - @private and @package are now enforced by the linker.  You cannot refer to 
> a @package or @private ivar from a different library.  This means that, aside 
> from reflection, @package and @private ivars are not part of the public ABI 
> and can be removed without breaking any code that does not use reflection.
> 
> The Windows version still has a few rough corners to iron out.  On Windows, a 
> DLL cannot contain a global initialised to be a pointer to a global in 
> another library.  This is normally not a bad thing, because it enforces 
> modularity, but it does mean that Objective-C classes, for example, can't be 
> statically initialised to point to their superclasses (though we can emit 
> code that does this).  Dustin has some patches for clang that should fix 
> these issues.
> 
> I've pushed patches to -base to support the new string representation and to 
> Gorm to make it use reflection instead of directly accessing ivars in -gui 
> classes.  I also have a patch to Pantomime that prevents it from doing the 
> same.
> 
> David
> 
> _______________________________________________
> Discuss-gnustep mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnustep




reply via email to

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