Mountain Lion went a long way towards fixing Lion's problems, and Mavericks just about finished the job. Which is why I run Mavericks. The only remaining Lion things I really dislike are the Launchpad, the hidden Library folder, and some minor-ish aesthetic differences. I've patched some of these.
Hm. I've never written anything serious for Apple platforms but of course played around for a bit. But, I've always assumed ARC is implemented purely in the compiler, isn't it? I remember disassembling something I wrote and learning that the compiler inserted retain/release calls as necessary.
> Which is why I run Mavericks.
Actually, I ran Mavericks for several years after it was superseded. I was made fun of by some people (who complained about glitchy WiFi on Yosemite, lol). Had to finally update when I got a new job and needed to compile an iOS app, which required latest Xcode, which required latest macOS. Then I stayed on Mojave for like 2 more years, refusing to update to Catalina to keep using 32-bit apps. And then several months ago I bought an M1 Max MacBook, which means Monterey.
ARC does partially work on Snow Leopard, but only for 64-bit, and it's limited (namely, you can't use weak references).
Updating MacOS means I have to spend weeks:
1. Finding third-party utilities to replace what Apple took away.
2. Finding ways to disable the shiny new things Apple added that get in my way and are not officially turn-offable.
3. Finding workarounds for new bugs Apple introduced.
And recently,
4. Disabling all the new phone-home daemons Apple added.
MacOS has become a shitshow.
I didn't use any icloud stuff and was kinda shocked how much the OS called the mothership after installing little snitch ... Never properly gotten into finding what every daemon does and if I could disable it.
I typically have to spend some time bisecting this script to keep the few services I need (e.g. Messages) running. It's time-consuming because some services depend on others that have different names, so it's not as straightforward as simply re-enabling every daemon that contains the string "message."
Little Snitch [1] is also quite useful; it's probably easier to install LS with everything disabled and then gradually reenable the daemons you want. I use LS more than I use the above script these days...although LS still allows the daemons to run and consume CPU time, which the script stops. Probably best to use some combination of both approaches, and keep track of any edits you make to the script because Apple will likely reenable everything the next time you upgrade MacOS.
[0] https://gist.github.com/pwnsdx/1217727ca57de2dd2a372afdd7a0f...