David, Thank you for the updates...
On Mon, Dec 31, 2018 at 6:34 AM David Chisnall <[email protected]> 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. I will review the Gorm changes and apply them. Thank you. Yours GC > > David > > _______________________________________________ > Discuss-gnustep mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/discuss-gnustep > -- Gregory Casamento GNUstep Lead Developer / OLC, Principal Consultant http://www.gnustep.org - http://heronsperch.blogspot.com http://ind.ie/phoenix/
_______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
