|
|
|
|
|
by solardev
1366 days ago
|
|
Yeah, but there's also a reason why you can still run most Windows 95-era apps on today's PCs, vs not being able to run most 2-year-old games on M1 Macs. Rosetta is pretty amazing but it's far from actual compatibility. Apple's approach to backward compatibility is very different from Microsoft's. It's not uniquely a Microsoft thing, either. Nvidia's driver updates frequently (in fact almost always) have game-specific optimizations. Antivirus and firewall apps frequently have to make exceptions for certain apps. WINE and Proton operate on per-game optimizations. Input controller managers (like Steam's profiles) have different settings per game. DirectX itself does a lot of backward compatibility stuff, AND allow different versions to coexist on the same PC (vs the relatively tiny market that exists for Metal or Vulkan). All these things contribute to PC gaming vastly outselling the tiny Mac gaming market. As a Mac user, I wish that weren't so! But MS's approach is way better for devs and users in that case, even at the cost of the Windows APIs and libs being huge with a decades-long tail. |
|
Also seeing that the iOS game market dwarfs the PC game market in revenue and number of titles (if not quality), I think Apple made the right choice.
Microsoft has been unsuccessful trying to get Windows on ARM to be viable for years before Apple did it and has failed partially because of the behemoth that Windows is.
Speaking of Windows and backwards compatibility. There are at least 8 different ways to define a string in Windows depending on which API you are calling. String handling in C is one of the biggest causes of security vulnerabilities on any platform.
https://learn.microsoft.com/en-us/cpp/text/how-to-convert-be...