6 ms·
I wonder if GNUstep is going to follow in Apple's backwards compatibility breakage or they'll try and keep existing programs working. Free Pascal and Lazarus d
by badsectoracula 4y ago
I wonder if GNUstep is going to follow in Apple's backwards compatibility breakage or they'll try and keep existing programs working.
Free Pascal and Lazarus devs also implement a language and API originally defined by some big company in the past and in general try to implement the new stuff Delphi adds, but they also try to avoid breaking existing code. In Free Pascal this is done by using compiler directives in the source code to opt-in for the Delphi stuff whereas in Lazarus they only implement things that do not break existing code - either way you can have code that works with both Delphi and FPC since they're 90% compatible but you need to use IFDEFs for that that last 10%.
Even though i'm using Window Maker and thus GNUstep apps would feel right at home (for the most part), i haven't actually bothered to look into it because Apple has a bad history with breaking existing applications (i got an iMac in 2009 and pretty much every single Mac OS X / macOS update broke some application that previously worked fine - until macOS itself stopped supporting my iMac) and GNUstep's "we're not implementing NextStep anymore, now we're doing Cocoa" stance gives me an impression of "we're going to break your apps just like Apple does".
(of course that is one reason, another is that when i tried some programs made with it years ago there were major glitches and bugs like the text editor widget locking up the entire program - admittedly that was years ago and it probably has been fixed but it did give me a bad impression since the project was already more than a decade old by then and already in a state where barely any developers worked with/on it)
Basically, what i wonder is, if i make a Linux binary today that links only against glibc and the GNUstep libraries (including the ObjC runtime), will it work in 10 years[0] even if it uses some API that in the meanwhile Apple decided to change or it'll break? Ignoring of course breakage forced on the project from outside forces they could do nothing about (e.g. for some unfathomable reason the C ABI itself changing or everyone switching to RISC-V with all x86 CPUs blowing up at the same time and every x86 emulator out there suddenly losing both its source code and any existing binaries).
I get the impression with ObjC having a very "dynamic" nature it should be possible to do that.
[0] obviously if it works in 10 years it'll also work in 20 years since in 20 years a binary made 10 years from now will still rely on the libraries being backwards compatible - the 10 years was an example to give a sense of scale
- JonChesterfield 4y agoIs backwards compat a thing on osx? The kernel ABI is not stable, I don't know how often their libc equivalent changes. Glibc doesn't make much sense in that environment. My guess would be that your hope is doomed by the platform whatever GNUstep does.
- koito17 4y ago> Is backwards compat a thing on osx? It really depends. I managed to get a universal intel 32/64-bit app compiled on OS X 10.5 run on Catalina, which is 10.15. But it was a very unremarkable app. Just a simple NSWindow and label. Nonetheless demonstrates you can technically have some backwards compatibility. At one point in time (say 2004), you would've been able to launch Classic environment on a PowerMac G5 and emulate 68k software in Classic, all the while enjoying OS X software natively. That should span some decades worth of Macintosh software, but of course this era is simply gone now.
- kitsunesoba 4y agoLast time I played with getting a moderately complex old (Jaguar/Panther/Tiger era) Obj-C/Cocoa OS X app building on modern macOS, fixing the build-stopper errors didn't take too long but there was a mountain of deprecation warnings, despite everything seemingly working as expected. That was a few years ago though so I wouldn't be surprised if some of those deprecations have turned to errors in the meantime.
- fredoralive 4y agoTo an extent, they've removed things like Carbon (the Classic Mac OS descended API) and 32 bit support in general, but they don't go out of their way to gratuitously break the Cocoa API or libc. But they aren't Microsoft with the whole "Win32 must never break compatibility" mantra, so randomly stuff kinda breaks between versions more though neglect than intention?
- pjmlp 4y agoMicrosoft has long forgotten that mantra. See .NET Core migration, Windows Runtime tooling, Xamarin/MAUI, UWP/WinUI 3.0,... The folks that were responsible for that kind of backwards compatibility apparently are no longer there, replaced by younger blood without any knowledge of Windows development history. Nowadays we even get CLI stuff instead of nice VS wizards.