|
> No way you could run Linux binaries or MacOS classic binaries from '98 The key problem for desktop Linux is that nobody knows exactly how to build binaries that will run on any reasonable Linux desktop system today, so it's hard to keep that non-existent reasonable subset of ABI stable for an extended period. That said, you CAN do this. The kernel itself does present a mostly pretty stable ABI to userland applications, so you can grab a Debian chroot from 1998 and be on your way. Debian even still serves repositories for everything on archive.debian.org, and Dockerhub has OCI images you can `docker run` for Debian from 1999, under the debian/eol repo. You can `docker run` and `apt-get install` 25+ year old binaries on modern Linux! What would be sweet is if we could build and ship compatibility tools that make these old binaries work mostly transparently. Today, double clicking a binary on Linux won't do anything particularly sophisticated, and there are no compatibility options. But actually, it would be totally doable to write a variety of useful compatibility shims without doing anything horribly grotesque. The DT_INTERP and DT_NEEDED fields of binaries would often give sufficient information for how you might get such a binary to run. It's not like it would be that useful, but I would personally be very pleased if you could just double click e.g. some old Kylix application and have it just run, perhaps after downloading some (shims for?) old libraries. You could extend this to transparently running CPU emulators too, not unlike the tricks people do with binfmt_misc, just possibly with more batteries included (and a bit less transparency.) Another really great feature would be useful error messages when executing an application fails. Today if the DT_INTERP is missing, it looks like the binary itself can't be found since it returns the same errno, and you won't see linker errors if you execute a file in a GUI file explorer. What a great improvement it would be if all of that could be fixed, and there is no technical reason it can't be. Of course, frustratingly, for more reasons than just this, the more likely thing to happen is that nobody bothers since containers are the future anyways, and Win32 instead becomes cemented as the true stable ABI of Linux. Which, in my opinion, is a bummer. We could always have two stable ABIs of Linux... |
Hence, the irony that WSL is the actual Year of Linux Desktop, followed by the macOS Virtualization framework.
OEMs rather ship crippled Chromebooks, or Android, than proper GNU/Linux (or BSDs), devices.
So Linux rules, where UNIX was originally designed for, headless computing and timesharing systems.