4 ms·
Fun fact: Microsoft has maintained backwards compatibility so effectively that the utilities that shipped with windows 1.0 (notepad, calc, etc) will work on rec
by danjayh 12y ago
Fun fact: Microsoft has maintained backwards compatibility so effectively that the utilities that shipped with windows 1.0 (notepad, calc, etc) will work on recent versions (search for 'man upgrades windows 1.0 to windows 7) ... say what you want about Microsoft, but if you've ever worked on operating systems, this is absolutely incredible.
- ekianjo 12y agoWhen you have the source code available to recompile software, that "compatibility" issue disappears (like for most tools on Linux). It's simply a different approach.
- Aldo_MX 12y agoIf recompiling older sources were as straightforward as running older windows binaries in recent versions...
- ekianjo 12y agoAt least with the sources you can try to do something about it. When "compatibility" fails, you are left with your eyes to cry.
- guardian5x 12y agoOr you emulate an older OS (DosBox etc.) or use a VM.
- Aldo_MX 12y agoYou know, ASM code can be hacked, and the older the ASM code, the less complex it is, because the compilers were not as aggressive as today's. This has been done with abandoned games to fix bugs and compatibility issues, ex. Forgotten Empires (the mod)[1] ASM code can also be ported between platforms (ex. from 16-bit DOS to 64-bit Linux), as long as you replace OS-specific calls, interrupts, IO access, etc., although the effort will be greater. People should stop pretending that a compiled binary is a black box, because it isn't. Still, the point that Windows makes backwards-compatibility as straightforward as possible prevails, since the cases where you need to do complicated maneuvers like hacking ASM code to fix compatibility issues are scarce. I still get amazed that I can play some obscure games designed for Windows 95 and compiled using the DirectX 3 SDK. I can't say the same about Linux since I hadn't been able to recompile without fixing code old open source games, because X kernel version broke Y version of Z framework. [1] http://www.forgottenempires.net/fe http://www.forgottenempires.net/fe
- haberman 12y agoI thought Linux also had a very strict ABI compatibility policy also. Executable formats have changed some, and I don't know if recent Linux systems would support the a.out format of early Linux. And shared libraries change too. But if you had a fully-statically-linked binary (and enabled a.out support if necessary), I think Linux should also support very old binaries.
- cbd1984 12y ago> I thought Linux also had a very strict ABI compatibility policy also. Yes, it does. > But if you had a fully-statically-linked binary (and enabled a.out support if necessary), I think Linux should also support very old binaries. And it does.
- danjayh 12y agoMicrosoft accomplished this with dynamically linked applications, which is a more difficult feat. It also led to 'DLL hell', but they have resolved this fairly effectively in modern versions of windows (at the cost of using gobs of hard drive space, mitigating the benefit of dynamic linking to some extent). In Windows 8 they've introduce a technology called 'page combining' which mitigates some of the problem in physical RAM. It does exactly what it sounds like - it searches RAM for identical pages, and when it finds them, it manipulates the page table to use one physical copy for all of the virtual copies. If some process tries to modify it, a copy-on-write operation is performed. This significantly reduces physical memory usage in Windows 8.
- cbd1984 12y agoAnd Linux (and all Unices, as far as I know) have done the same thing without DLL Hell by using versioned share object files, the .so.0.1 and so.1 and so on you see on the end of binary libraries.
- AReallyGoodName 12y agoWindows 3.1 removed real mode support thus breaking compatibility with Windows 2 and Windows 1 apps. What Microsoft did is replace various included applications completely with every upgrade. There's no compatibility. Things like notepad.exe for Windows 1 is simply replaced with a version made for Windows 3.1 when you upgrade. Likewise when you upgrade from 3.1 to 95. You absolutely cannot run Windows 1 applications in modern day Windows. Heck the CPUs these days literally do not support real mode anymore. You can upgrade but that's really just a series of complete OS replacements in this case.
- JoshTriplett 12y ago> Heck the CPUs these days literally do not support real mode anymore. They do, actually; a brand new Core i7 still runs 16-bit real-mode and 32-bit real-mode. Now, if you're running in 64-bit mode, there's no vm86 mode you can use to run 16-bit applications on a 64-bit kernel. However, the CPU still supports 16-bit real mode, and under a 32-bit kernel you can run 16-bit applications.
- FreeFull 12y agoThere are tricky ways to get vm86 working with 64-bit operating systems, although it's not as nice as with 32-bit. Edit: An edit went on the wrong comment somehow. Ignore what it said.
- pdw 12y agoAnd indeed, Wine can run 16-bit Windows applications on 64-bit Linux. You could say that at this point Linux is more Windows-compatible than Windows itself :)
- einr 12y agoYou absolutely can run Windows 1 applications in modern day Windows, as long as it's the 32-bit version. Here's a screenshot of Windows 8 (32-bit) running four different Windows 1.01 apps: http://toastytech.com/guis/win816bit.png http://toastytech.com/guis/win816bit.png
- adam12 12y agoI wish they did the same with the xbox.