5 ms·
Can I provide an alternative interpretation? I don’t think caring about fast fast fast performance, or legacy codebases, is really in Apple’s DNA I think Apple
by nxobject 3y ago
Can I provide an alternative interpretation? I don’t think caring about fast fast fast performance, or legacy codebases, is really in Apple’s DNA
I think Apple’s always cared about ease of development over the possibility of bare metal optimization - after all, Objective-C was built on dynamic dispatch, and libraries as important Cocoa/AppKit and Apple’s compositors aren’t going to ditch that soon.
And, because of C++’s scars and warts, I don’t see Apple ever valuing stable codebases over Apple’s ruthless deprecation habits when it comes to change and development.
Instead, I’m convinced it’s really to help people trying to port games to macOS; it’s unusual for Apple to ever invest in an ecosystem of porting from different platforms, but here we are.
- astrange 3y agoI think it's odd to say Apple doesn't care about legacy codebases in the same post you mention AppKit. That's 30 years-ish old.
- jwells89 3y agoTo add to this, getting an abandoned mid-00s Mac app project compiling and running usually isn’t too bad, actually. Yeah you’ll have deprecation warnings left and right but it’ll run fine anyway, at which point fixing the deprecations can be done at one’s leisure. It’s binary compatibility that Apple doesn’t care about.
- valty 3y ago> I think Apple’s always cared about ease of development over the possibility of bare metal optimization I would disagree. Apple avoided managed runtimes this whole time and made people think about memory safety a lot compared with Java/C#. Programming was not as easy as it could have been. It has also always been trivial to fallback to C/C++, and the interop story with ObjC code is a lot cleaner. I think the driver for this was because they highly valued a buttery smooth UI, and this requires a lot of bare metal optimization.
- pjmlp 3y agoObjective-C has a runtime, with automatic resource management, dynamic code loading, metaclasses...
- valty 3y agoBy _managed_ runtime I meant virtual machine. The ObjC runtime is just a library that is linked in. It's much easier to drop down to the metal when you need to. > automatic resource management ARC is not runtime-based.
- pjmlp 3y agoA managed runtime is a managed runtime. ARC is definitely runtime based, go read the easily available machine code doing retain / release message calls, when the compiler isn't able to ellide them. You also forgot the remaining capabilities of Objective-C runtime regarding plugins, and metaclasses.