Hello, fellow GNUstepers.
For a quite some time i've been maintaining fork of GNUstep primarily focused
on OSX support and reliability.
The first objective is motivated by prevalence of OSX users in Objective-C user
base (the only group people who could help with GNUstep development).
Second one is simply an obligation to my employer (this forks are used in
production environment right now).
I seem to be a little bit tired to be alone on these journey, and am willing to
be a part of a team. So i would like to offer this code base for you
consideration.
Lets try to make you interested, here goes a list of features that i could
remember:
FoundationKit:
* runs on OSX with apple-gnu-gnu combo
* type encoding support written from scratch (Apple's runtime does not
offer it in the public API), and surprisingly it is faster and more robust than
implementations in both GNU and GNUstep runtimes.
* invocations are implemented using assembly and have no external
dependencies (if you are already parsing platform-specific marg_lists, FFI does
seem like an overkill)
* reimplemented SOCKS proxy support, now both NSFileHandle and
NSSocketStream do support SOCKS4a and SOCKS5 simultaneously
* eliminated causes of many crashes (noteworthy changes are in
NSHTTPURLProtocol and NSStream) and memory leaks (found by Clang's static
analyzer, Leaks and Allocations tools in Instruments.app)
* eliminated loads of buffer overruns (spotted by clang's
address-sanitizer)
* slightly redesigned constant string implementation to be ABI
independent (NSConstantString, NXConstantString and CFString are supported
simultaneously by the same gnustep-base build) and
implemented constant CFString support inside the Foundation. This
implementation had proven to be reliable (CFString ABI is default on OSX and
this gnustep-base plays nice with it)
* “NSInteger crusade” is finished, all methods/functions have
reference-compatible signature, implementations are changed accordingly (no
single warning is emitted by clang with -Wshorten-64-to-32 and -Wformat)
* heed was given to all warnings emitted by clang
* introduced NS_FORMAT_FUNCTION, corrected all misuses of NSLog,
[NString stringWithFormat:] etc.
* some improvements were made in compatibility with Apple's Foundation,
also some missing methods were implemented
ApplicationKit:
* works on OSX with apple-gnu-gnu combo
* migration to NSInteger is completed (merged with Fred's changes,
works fine)
Finally, some precautions.
AppKit: NSInteger changes are only tested with xlib backend, CUPS support is
disabled by ./configure on OSX (it is linked against Apple's CoreFoundation
where all toll-free bridged classes are implemented, and causes runtime
clashes), Cairo backend is disabled by ./configure on OSX (same reason as CUPS).
Foundation: GNUTLS support is disabled (it's also liked to Apple's
CoreFoundation), as for now assembly code is only present for x86_64
architecture,
Mountain Lion support is underway (they have moved NSObject into runtime, what
causes a lot of troubles).
Links to repos:
https://github.com/Ibadinov/gnustep-make (necessary configure.ac changes)
https://github.com/Ibadinov/gnustep-libobjc2 (added missing and now required
objc_layout_finish_sructure())
https://github.com/Ibadinov/gnustep-base
https://github.com/Ibadinov/gnustep-gui
https://github.com/Ibadinov/gnustep-back
https://github.com/Ibadinov/gnustep-corebase (minor bugfixes)
https://github.com/Ibadinov/gnustep-projectcenter (makefile changes for OSX
etc.)
https://github.com/Ibadinov/gnustep-gorm (makefile changes for OSX etc.)
https://github.com/Ibadinov/gnustep-sqlclient (bugfixes)
Not everything is currently merged into “master” branches, so it's better to
use “dev” (where it exists) to play with.
P.S. I know about copyright assignment requirement and, if you are willing to
merge this into upstream, i won't hesitate.