What happened to compatiblility?
Just not fashionable, too much bother, these days. I was brought up on mainframes then later, Unix. Backwards compatibility was never negotiable, things just had to carry on working. And if you were writing something new, you’d make efforts to ensure it would run, as far as possible, on older systems too.
I’ll now offend nearly everybody by saying I do actually blame the open source community for the modern attitudes. Trouble is, “open” means “open”, nobody to enforce any rules. So developers get to do whatever is the most fun, rather than what’s best for users. And the constraints of backwards compatibility are never much fun, so simply ignored.
Apple (I know you won’t appreciate this comment) actually do try. If I build an App for iOS 9, then the fact is was built for iOS 9 is burned into the binary. If, at some later version, they decide that black is white and white is black, they can and do check versionung, and strive to make the run time libraries adapt, so my old App continues to run. But then, iOS is of Unix heritage, not Linux.

Also, if I update an old iOS App, maybe one that I released for, say, iOS 9, with new features that depend upon iOS 11, then the new App supercedes the old day in the App store, and will only be available to iOS 11 devices. But I can configure that the old App version remains (semi invisibile) in the App store, so it will be installed if an iOS 9 device requests a download.