

Apple-style Garbage Collection for GNUstep - Leynos
http://etoileos.com//news/archive/2011/05/26/1933/

======
rbanffy
How hard is to port software written for OSX to GNUstep?

~~~
pavlov
It primarily depends on the following:

\- What Cocoa features does the application use? Something written for OS X
10.2 using "oldschool" APIs is much easier to port than a new app that perhaps
makes extensive use of 10.5+ features, binding magic, Core Data, etc.

\- What other frameworks does the app use? If it makes heavy use of something
like Apple's media and animation APIs (Core Animation, Core Image, QTKit,
etc.), it will be very difficult to port because GNUstep doesn't cover these.

(Edit: one important factor is the degree to which the port needs to integrate
with the target platform. GNUstep doesn't look very native on Windows, for
example. But if the port is something like a custom application targeting
Linux, then the look of widgets and fonts may not matter at all.)

------
terhechte
Would it be possible to use this in an iPhone app? I.e. extending NSObject's
retain / release and having a NSGarbageCollector like thread run around and
collect.

~~~
chc
Bolting on garbage collection to system libraries that weren't made with it in
mind probably wouldn't work well. Even in OS X, when the system had been
designed for garbage collection and extensively tested, it still didn't work
right (memory leaks, extreme slowness at times) in the first version.

------
naner
Has anyone here used GNUstep? How complete is it?

~~~
Leynos
I've found that you can write reasonably complex GUI applications using the
current Apple API documents for reference and for the most part get the
results you expect.

The trouble is the few times when it doesn't behave as expected. I tried
porting a paint program I had once written for OS X to GNUstep. Everything was
going swimmingly until I ran into a behaviour of the OS X NSImageRep caching
mechanism that wasn't replicated. Unfortunately, the program more or less
depended upon that behavior, so coding around it wouldn't have been trivial. I
know where in GNUstep the issue lies but I just haven't had the time to have a
go at fixing it, so for the time being, I remain stumped.

