7 ms·
Most software on Linux is backward compatible as well, you can get some 90s software, compile it and run it, however it does not have as many hacks as Windows h
by realusername 8y ago
Most software on Linux is backward compatible as well, you can get some 90s software, compile it and run it, however it does not have as many hacks as Windows has at the moment to achieve that.
- userbinator 8y agoyou can get some 90s software, compile it and run it, The "compile" is the tricky part; with Windows, you can get a binary from the early 90s and it will just run. My experience with Linux software is that while the kernel-userspace interface remains stable, userspace is itself full of breaking changes, and software has so many dependencies that trying to compile it quickly turns hairy.
- realusername 8y agoI must admit you are right, it works again on Linux because the API is stable and you have the source, if you take a Linux binary directly from the 90s, there's very little chance it's going to run properly..
- xioxox 8y agoLinux has a stable kernel ABI. If you can get hold of the appropriate libraries of the vintage of the executable and set up the library loading correctly, it is possible to run it. Of course if the binary is a.out format, then we can't do this.
- SteveJS 8y agoCompat in windows was a highly engaged technical problem, in a way that would be considered ‘hack on top of hack’ in linux. Windows ability to shim is significantly more sophisticated then maintaining a stable abi. It can present a facade of old implementation details to specific programs. Here is a Raymond Chen blog post (2006) on making an app with a ridiculous bug continue to ‘work’ by creating a decoy to compensate for the app bug. He mentions app compat in the ‘immature’ days of windows 95 where they ‘only’ had the ability to use app compat flags and hot patch binaries in memory on load: https://blogs.msdn.microsoft.com/oldnewthing/20060109-27/?p=32723 https://blogs.msdn.microsoft.com/oldnewthing/20060109-27/?p=... It can be argued that extreme app compat is a bad thing. Paying customers with line of business apps that ‘simply’ continued working never argued that.
- digi_owl 8y agohttps://www.joelonsoftware.com/2000/05/24/strategy-letter-ii-chicken-and-egg-problems/ https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii... Simcity supported in Win95 by allowing a use-after-free bug (if i am reading it right) to continue working. You get something similar in Linux by how once a userspace facing API is in the wild, the API stays, bugs and all, in case something, somewhere, use that specific behavior. A newer API will be introduce alongside the "broken" one however, with future code highly incentivized to use the newer API. Sadly that level of stringent API behavior is seen not as a virtue but as a burden by higher layer devs. Often to the point that the refuse to work with Torvalds after being berated for their lax attitudes, and dream of the day he retires...
- iforgotpassword 8y agoMake that 1985 for windows 1.0 Can't find the site again, but someone figured out you can use an older version of the Borland resource editor to convert the embedded resources to a newer format, than patch the exe header to say it's a windows 2.0 binary and it will run even on windows 10 (32bit version only since of obviously needs the 16bit subsystem). I was seriously impressed when I saw that.
- digi_owl 8y ago> 32bit version only since of obviously needs the 16bit subsystem And afaik, MS only retired the 16-bit subsystem because AMD64 can't switch between 64 and 16 bit modes. You can either run it in 16/32 or 32/64 modes, but not 16/32/64.
- userbinator 8y agoNot really: https://www.dkia.at/en/node/180 https://www.dkia.at/en/node/180 Interesting enough you can still mark a code segment as 16 Bit and the CPU will execute it in 16 Bit mode. https://www.wine-staging.com/news/2016-02-10-blog-wine-16bit.html https://www.wine-staging.com/news/2016-02-10-blog-wine-16bit... The tricky part is that a LDT entry also contains flags which define if a segment contains 16 bit, 32 bit or 64 bit code. If you change to a segment, the CPU will automatically start interpreting the code inside the segment according to this value. In other words, 16, 32, and 64-bit code can all coexist simultaneously and the CPU can switch between those automatically --- MS just decided not to implement it. Linux with WINE does, however.
- lmkg 8y agoThe following is a video of someone installing Doom II on DOS, upgrading the operating system in-place 11 times, and running Doom on Windows 7 (around 24 years of upgrades). https://www.youtube.com/watch?v=vPnehDhGa14 https://www.youtube.com/watch?v=vPnehDhGa14
- digi_owl 8y agoYeah userspace mess is one i lament getting to know, because it has soured me on the whole Linux-on-desktop thing. Frankly that part is a large contributor to "consumer" Linux never got any traction beyond Google going all out and making their own (Android and ChromeOS), while the DE people keep "polishing" the UX by introducing yet more dependency kudzus. One example on the top of my head is udisk. First there was udisk1, that had a CLI interface as well as a dbus api. Then came udisk2 that trashed the CLI interface and introduced a new dbus api. And now there is probably some equivalent of udisk3 living inside systemd that has yet another dbus api. And all this for what? Mounting and unmounting removable media...
- digi_owl 8y agoThe CLI stuff, yes. In large part thanks to Torvalds holding everyone to strict rules. Higher in the stack, not so much.