Linux ecosystem contributions from SteamOS
Linux ecosystem contributions from SteamOS
Posted Oct 5, 2023 19:45 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)In reply to: Linux ecosystem contributions from SteamOS by dullfire
Parent article: Linux ecosystem contributions from SteamOS
DirectX can be considered a part of the Win32 ABI. It's incredibly backwards-compatible. You can still launch games written for DirectX 6, present in Win98. It did deprecate several components (DirectPlay, DirectShow), but the core graphics and sound components are still compatible all the way back to the previous millennium.
> This is the rough analogy of, in a pure windows environment, porting a win32/MFC program to SDL1.2, then later, having only SDL2.0 installed, whining that it wont compile or run.
It's not just SDL, it's more like QT or GTK. Can you run a program written for GTK 1.2 now?
> Maybe this biggest complaint here is that the FLOSS ecosystem has no single "core do-everything" ABI. But, that is more or less by consensus.
It's not by "consensus". It's mostly because anything above the most basic layer is fragmented to hell.
> [2] remember AMD64 came out around 2001 IIRC, so w/e ABI's most people use for their current desktops probably didn't even exist in the 90s or before.
Microsoft still fully supports 32-bit apps! Even on ARM64 platforms via emulation. Think about this: games written in the early 2000-s for a 32-bit architecture, still can work on most recent Windows running on a completely different architecture.
They are not perfect, of course. Nothing is. But Microsoft really tries to keep the old running. And the importance of this is something that Linux ecosystem only now is starting to realize.
Posted Oct 5, 2023 22:38 UTC (Thu)
by pizza (subscriber, #46)
[Link] (1 responses)
Of course, it helps to have a multi-billion-per-year desktop monopoly funding (and directing) the developers ensuring this backwards compatibility continues.
Posted Oct 6, 2023 3:42 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Probably just in time for the classic desktop to become irrelevant.
Posted Oct 6, 2023 11:11 UTC (Fri)
by farnz (subscriber, #17727)
[Link] (2 responses)
There's also a little bit of legacy that resulted in MS taking ABI seriously at a time when open source just didn't care; DLL Hell.
DLL Hell had a lot of contributing factors that weren't present on *nix systems of the same era; first, imports from DLLs could be done by ordinal instead of by name, which meant that if a new version of the DLL didn't retain the same ordinal positions for all functions as the previous version (e.g. because ordinal choice depended on symbol order in the object files), you'd have problems. Worse, the runtime linker couldn't tell that you weren't expecting the function to be different - all it knew is that you'd asked for symbol #4, and that's what it gave you; in contrast, on ELF systems, symbol lookup is always by name, so the runtime linker could say "you asked for print_magic_output, but the library does not contain that symbol".
Add in the single address space of Win16 (so one bad program could take out the entire system), and the fact that there was rarely a separate sysadmin maintaining the platform (so you had non-technical users doing crazy things based on half-understood rumours, not solid understanding of the system), and you had a problem that could only be solved by thinking hard about ABI and getting it right.
Posted Oct 6, 2023 16:42 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link] (1 responses)
Microsoft decided to be very careful with DLLs. They are still extremely limited compared to ELF shared libraries. It's hard to do circular dependencies, and all the exports must be clearly marked.
I remember our Linux guys laughing at my Windows code because I had to add "__declspec(dllexport)" in all kinds of places. By default, Unix shared objects just export everything. Now it's pretty clear that this kind of explicit exports makes shared objects way more reliable.
Posted Oct 6, 2023 18:17 UTC (Fri)
by andresfreund (subscriber, #69562)
[Link]
Posted Oct 17, 2023 8:51 UTC (Tue)
by NAR (subscriber, #1313)
[Link]
Well, I have Civilization IV on CD from 2005 and it doesn't work - the copy protection depends on some kind of service that's no longer included since Windows 10.
Linux ecosystem contributions from SteamOS
Linux ecosystem contributions from SteamOS
Linux ecosystem contributions from SteamOS
Linux ecosystem contributions from SteamOS
Linux ecosystem contributions from SteamOS
Think about this: games written in the early 2000-s for a 32-bit architecture, still can work on most recent Windows running on a completely different architecture.
Linux ecosystem contributions from SteamOS