3 ms·
Games are an especially difficult case as they have a habit of bypassing higher level APIs and abusing undocumented behavior for performance reasons. Still, a s
by AnIdiotOnTheNet 5y ago
Games are an especially difficult case as they have a habit of bypassing higher level APIs and abusing undocumented behavior for performance reasons. Still, a shockingly high number of games from 20+ years ago work out of the box on the latest Windows despite things like the shift from 32 bit to 64, all without recompilation.
Linux Desktop's compatibility story is laughable by comparison unless you count WINE, which works so well in part because Windows APIs are so stable.
- matheusmoreira 5y agoMicrosoft also used to have a history of maintaining bug compatibility with applications, including use of undocumented data structures and functions. I've read the stories: once they tried to change some data structure only to revert the change when some proprietary software broke because it did insane things like put data into unused bits of some internal data structure. At some point all this must have been lost because I don't see Microsoft going out of its way to fix memory allocation bugs in games for our benefit anymore. I did try playing the game on Wine and it worked, ironically. Wouldn't be surprised if it eventually became the best way to run older Windows software. The ABI compatibility situation of Linux user space sucks. Apparently the kernel itself can run binaries from the 90s with no problem. The more dependencies you have, the worse the situation gets because in the free software world people seem to make it a point to avoid caring about binary compatibility since everyone is supposed to have the source code to everything in order to recompile software as needed. Because of this I've personally resolved to eliminate all dependencies in my own code by using Linux system calls directly.