top | item 35631488

(no title)

cannam | 2 years ago

> It's not too hard to get an AppKit/Cocoa project from the early 2000s compiling on modern macOS, but Cocoa had already accrued 20 years of age by 2005

That's a mindboggling thought. How much did 2005 Cocoa have in common with 1985 Cocoa? (That's a real question, I have no idea)

Qt and GTK were released (or first labelled stable) in 1995 and 98 respectively, so 20 years gives us 2015 and 2018 which is well within the Qt5 and GTK3 era.

For Qt, I would say Qt4 in 2005 marks a point of maturity, if not terminal stability. Ten years. After that there have been whole substructures and programming idioms added and removed and all sorts of things tidied up, but anything you wrote directly to Qt4 is going to be conceptually similar in current Qt versions.

The Qt2 to Qt3 and Qt3 to Qt4 transitions (I never used Qt 1) broke almost every line of Qt code, but from 4 to 6 is a different prospect. It's a question of updating some details and seeking replacements for specific APIs that haven't been carried across. That can be difficult or totally blocking but it's quite different from having to rewrite everything.

discuss

order

pasc1878|2 years ago

1985 Cocoa and 2005 Cocoa are very similar - I would guess there are less new things than there are in moder Cocoa and 2005.

Except - not strctly Cocoa but memory management has changed a lot and might have changed some APIs.

1985 just had malloc and free or [Class alloc] and [object free] 1986/7 introduced autorelease and retain. 2009? had garbage collection and then 2010? had the autorelease and retain automated (ARC).

llothar|2 years ago

Memory management has not changed. It's just hidden by the compiler. There are just three ways doable: RefCounting, GC or manual.

But a few things changed considerably. The background models and that now you go away from NSCell objects to child windows is the step and the required step to get stuff onto the GPU. The next one is Recycle View anything, removing the concept of NSOutlineView to NSTable View.