gnustep-dev
[Top][All Lists]
Advanced

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

Re: GNUstep on OSX


From: Fred Kiefer
Subject: Re: GNUstep on OSX
Date: Fri, 12 Apr 2013 22:10:00 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130329 Thunderbird/17.0.5

I am very much impressed by what you have done. I really would like to merge back as much of your changes as possible. Please fill out the copyright assignment. Is there a way I can easily see the diff to the current GNustep master branch, or rather to the state when you last merged from? I think many of the gui changes will be small enough to go without copyright assignment.

Cheers
Fred

On 11.04.2013 00:28, Ibadinov Marat wrote:
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.




reply via email to

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