26 ms·
Windows 11 will happily execute a binary compiled 30 years ago
- veave 3y agoIt's not really insane, what's insane is Apple refusing to run 32-bit executables.
- deleted 3y ago[deleted]
- kjellsbells 3y agoIts famously determined, but I feel that a DOS CLI app isnt much of a challenge since the DOS subsystem is essentially ossified. What would be the result if, say, you tried to run something DOS-y that was demanding or an early Win16 app? Say, Zortech C++ from 1986 with the Pharlap DOS extender or Minesweeper from windows 3.1. Would they work?
- touseol 3y agoThat’s not a DOS app, it’s a Win32 console app. DOS apps (16-bit or 32-bit) or Win16 apps would not run natively.
- AnotherGoodName 3y agoSomething that confuses me is that this states it's running a binary compiled 30years ago. How is this not 16bit? I'm aware of win32s, I used to run it but still it seems unlikely this is a win32 console app unless there's an incredibly unlikely set of circumstances behind this. Or perhaps it was simply recompiled after all despite what the Twitter post states?
- AnotherGoodName 3y agoIn fact looking into this further the only thing windows 11 lacks is the ntvdm which allows some dos api calls. If your binary is straightforward and not tied to msdos which this is it's fine. So I think the idea that this is a 32bit windows console application is completely untrue. It's also intuitively untrue when you consider the age of the app being run here.
- touseol 3y agoThe fact that there is no Windows 11 version with NTVDM is why this must be a Win32 console app, assuming the poster is truthful. Windows NT 3.1 came out in 1993. This being in a directory called “ntbin” gives another hint.
- AnotherGoodName 3y agoI see that makes sense. I feel it's also a little misleading from the original post. An exceptionally specific binary from 1993 works but the implication here is that the compatibility is more than this.
- mikkohypponen 3y agoAuthor here. I've been running Windows since 3.0 and I copy my old tool folders with me whenever I change machines or upgrade the OS. This GZIP.EXE is the oldest EXE I have in my \ntbin tool folder that still works. The folder has 579 EXE files.
- justinpaulson 3y ago> that still works. I think that is the point being made. This exe is cherry picked as the oldest working exe, it isn't like every 30 year old exe in that folder still works.
- touseol 3y agoWindows NT 3.1 was released on July 27, 1993.
- asveikau 3y ago9x wasn't the only Windows OS. The path contains the phrase "ntbin". It was compiled for NT.
- sumtechguy 3y agoMy guess is this is a PE format type windows application. Though I suppose you could get a NE format file to work correctly if the binary was compiled as 32 bit. My memory is a bit fuzzy on this but I think you did have the option to compile either way.
- mikkohypponen 3y agoCorrect, it's a PE file.
- RajT88 3y agoWin16 got dropped at some point, probably because keeping it didn't add up financially. I have little doubt they could have kept support for much older stuff.
- EvanAnderson 3y agoThere's a "pirate" port of NTVDM to 64-bit Windows (from leaked NT 4.0 source) so it's certainly not technically infeasible: https://github.com/leecher1337/ntvdmx64 https://github.com/leecher1337/ntvdmx64
- bitwize 3y agoThere's also winevdm from the Wine project.
- sumtechguy 3y agoThat depends on if they are using 64 bit or not. The 16bit VDM was deprecated on that move from 32 to 64. Which is the majority of most installs these days. What is kind of neat is every windows application/dll is a valid DOS application. The first part of all of them is a valid MZ DOS 16 EXEcutable. Windows just treats it as a skippable header and reads the real header that is about 100 bytes in and then decides which subsystem to fire up (win3x, win32, OS/2, etc). But if you take a exe compiled today with current tools and put it on a DOS 3.3 box it would run the exe and print out it can not run (the exe has that in there). Also from that era not all DOS applications were exclusively 16 bit. Many were hybrid. Just to have better control over the memory space instead of using segmentation was usually worth the speed boost (as well as the bigger registers). Windows from that era usually had extra 'pid' file where you could basically tag the executable as 'hey you are about to run a 32 bit app get out of the way windows oh and support dpmi while you are at it'.
- touseol 3y agoIf that was a Windows 10 screenshot then yes there would have been the possibility of it being the 32-bit edition running a DOS app through NTVDM. But the poster says Windows 11, which does not have a 32-bit edition. I’m not aware of 64-bit Windows being able to run 32-bit DPMI DOS apps natively, I think those still required NTVDM.
- sumtechguy 3y ago> I think those still required NTVDM Pretty sure you are right. As I think that is what setup the interrupts for it. Win9x did it very differently and would basically just put command.com back in charge of stuff to sort of make it work with a sys file. NT with DPMI programs was usually very hit or or miss (more miss). If they did not play just right with windows the thing would just crash out. Think there might be a win11 32 bit out there. But nothing that MS sells to normal end customers. But my brain may be playing tricks on me and I am confusing different articles I have read. But that would probably be some sort of weird kiosk ODM build. Not what most normal people would have (like in that post).
- 3y ago
- zwieback 3y agoZortech C++ was my rig for a good while - great memories. Pharlap is way too intrusive, my guess, to run on current Windows but would be an interesting experiment. Probably any extended/expanded memory thing doesn't work anymore.
- ls612 3y agoI wish there was a backwards compatibility option to give applications a “virtual display” which runs in a window, for old programs which only know how to run fullscreen at 1024x768.
- swozey 3y agoI can't find it right now, and no idea if it'd work on older things but there's some 3rd party app for Windows that will put a full screen game/app into a stretchable windowed mode.
- akx 3y agoDxWnd (https://sourceforge.net/projects/dxwnd/ https://sourceforge.net/projects/dxwnd/) comes to mind.
- colejohnson66 3y agoDoes the built-in "compatibility mode" not work? https://support.microsoft.com/en-us/windows/make-older-apps-or-programs-compatible-with-windows-783d6dd7-b439-bdb0-0490-54eea0f45938 https://support.microsoft.com/en-us/windows/make-older-apps-...
- smoldesu 3y agoWine does this, it's a lifesaver for older games like Diablo 2.
- account42 3y agoProton (Valve's Wine version) does it even better - it runs windows without a an emulated desktop but transparently scales fullscreen applications to your native resolution so that there are no mode changes needed.
- evmar 3y agoWorking on https://github.com/evmar/retrowin32 https://github.com/evmar/retrowin32, I disassembled one old demo that wouldn't run on my native Windows machine -- turns out it was requesting 320x200 fullscreen resolution and aborting if it couldn't get it. (Not sure why the Windows machine wouldn't do it...)
- xhkkffbf 3y agoI've always been sad that my old Mac software just won't run. It's one thing for Apple to move to new architectures. Maybe that was necessary. But when the emulators break after a few years, well, that's the part that bugs me. Microsoft's devotion to its customers shouldn't be so amazing-- it's the way that every company should behave.
- deleted 3y ago[deleted]
- agumonkey 3y agoApple had a time where they would allow even 1st gen iMacs (300MHz?) to get the latest MacOS X. You might have to max out ram but that was it, and it was very usable.
- mrwnmonm 3y agoI clicked on it thinking something else :(
- baal80spam 3y agoAnd that's why Microsoft will dominate corporate PC market for the foreseeable future.
- pjmlp 3y agoYeah, only beaten by IBM and Unisys compatibility on their UNIX, mainframe and micro systems.
- afavour 3y agoEh. More and more native software is being replaced by web versions (or versions that run inside a webview). I’d argue that is going to be the more important compatibility test in the coming years.
- jbluepolarbear 3y agoEven so, a lot of those corporate web applications rely on .net frameworks for integrating with shared point, ad, and many other established enterprises services and applications so they’re still stuck to windows. An example, all my partners medical software is through a browser but requires multiple system frameworks to function. Also they’re all using Remote Desktop to Amazon workspaces that are running windows.
- c7DJTLrn 3y agoNot really, the average user doesn't give a shit about backwards compatibility, they care about being able to create slideshows and send emails. Windows will dominate for the foreseeable future because of deals with manufacturers.
- hx8 3y agoCorporate IT cares about managing all of the devices inside an organization. If a sizable portion of the workforce needs windows for access to platform specific programs then having non-Windows systems for other users that achieve what Windows can do is just overhead for IT and can see pushback.
- 3y ago
- blibble 3y agoyes it can run things that don't use much of the API surface (just using libc? probably fine) however try running a game from the Windows 95/98 days and you've got a maybe 50/50 chance of it working e.g. they changed the return code from BitBlt from 95/98 -> XP, they used to return the number of scanlines but switched it to a boolean same with the heap management functions, directory traversal functions, etc
- mikkohypponen 3y agoSome stuff works fine. See https://twitter.com/mikko/status/1692552661374005450 https://twitter.com/mikko/status/1692552661374005450
- blibble 3y agojust don't try anything that used safedisc
- pjmlp 3y agoThose issues only apply to Windows 9x linage. Current Windows versions trace back to Windows NT 3.51/2000 linage. Naturally 9X => XP don't work flawlessly, they are two different OS stacks.
- blibble 3y agowell yes however it sort of undermines the "insane compatibility" / "stable API" point if mass-market Windows software produced before the 2001 release of XP mostly doesn't work on modern Windows NT effectively forked Win32 (introduced with Windows 3.1) into something incompatible (meanwhile it all runs on Wine perfectly fine)
- pjmlp 3y agoWhat? Windows NT never forked anything. Windows 3.1 introduced Win16 protected mode with segmented memory. Win32s was a backport from a Win32 subset from Windows NT 4.0. Windows NT linage exists since 1993.
- TkTech 3y agoA fun side-effect of the "general" stability of Windows APIs is that Win32/DX has become a very stable and reliable "universal" API for Linux (and other OSes) via the massive amount of work put into Wine/Proton. I keep seeing games drop their Linux-native releases in favor of just shipping for proton.
- hx8 3y agoThe Proton-aware releases often are easier to setup and run better than the Linux-native releases.
- TkTech 3y agoThat's been my experience as well. EU4's Linux-native release has issues with scaling and cursors on ultrawide monitors. Proton version is flawless. There's been quite a few cases for me, like Star Citizen for example, where games perform significantly better under Proton with DXVK than it does on Windows!
- Barrin92 3y agoYes. Someone blogged about this last year and it generated a lot of discussion here as well. https://sporks.space/2022/02/27/win32-is-the-stable-linux-userland-abi-and-the-consequences/ https://sporks.space/2022/02/27/win32-is-the-stable-linux-us...
- knallfrosch 3y agoSee also https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api-war/ https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost... one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
- candiddevmike 3y agoThis seems like an interesting vector for a virus.
- AnotherGoodName 3y agoThese older games will all work in 640kb so the fix would likely just have been to fence off 640kb completely from other apps while SimCity was running.
- netsharc 3y agoSim City 2000 used DOS/4GW though: https://en.wikipedia.org/wiki/DOS/4G https://en.wikipedia.org/wiki/DOS/4G : > It allows DOS programs to eliminate the 640 KB conventional memory limit by addressing up to 64 MB of extended memory on Intel 80386 and above machines.
- binkHN 3y agoNice. OpenBSD does something similar, with the difference being that there are no exemptions for specific software—they expect developers to fix their broken programs.
- davidcollantes 3y agoIs there a link someone could share (other than the one to the post)?
- 40yearoldman 3y agoIs it? Maybe insane in a bad way. Right click on windows desktop had what now 3 different menus that might show depending on what you want to do. Oh. And let’s not talk about how much of what you see just covers the stuff up from 1998. Still rendering the old stuff only to have a slightly larger menu render right on top of it.
- baal80spam 3y agoYou raise a valid point. Still, I'd rather be able to run software I need than not.
- Supermancho 3y agoWe have containers now. You can still run it.
- bastardoperator 3y agoAgreed. I would say backwards compatibility at this point hinders development and it shows in windows when you're looking at 5 different UI's. I have a 4k monitor, and the installers all look blurry because they can't scale up. We can't even get decent looking icons that were created in the last decade. Honestly, I think a barebones, absolute minimist windows OS would be something that interest a lot of technical users. You can only stack shit so high.
- binkHN 3y ago> ...absolute minimist windows OS... https://support.microsoft.com/en-us/windows/windows-10-and-windows-11-in-s-mode-faq-851057d6-1ee9-b9e5-c30b-93baebeebc85 https://support.microsoft.com/en-us/windows/windows-10-and-w...
- bastardoperator 3y ago"it allows only apps from Microsoft Store" That's a showstopper... but cool, ty for sharing
- 38 3y agoNon crap link http://farside.link/twitter.com/mikko/status/1692503249595584526 http://farside.link/twitter.com/mikko/status/169250324959558...
- rco8786 3y agoI remember hearing that Windows 7 (XP?) had some code specifically to support the original SimCity game in it.
- NullPrefix 3y agoXP games don't work on Win7. Doubt they fixed it for Win10 or whatever the current version is.
- sumtechguy 3y agoThat is very hit or miss. Out of the 1200 or so I own I have maybe 20 or so that do not run because the game did something weird with the APIs (or starforce).
- alaxapta7 3y agoI don't have nearly as large sample size, but all the games I used to play on XP work fine on W10. And I don't think I've used the compatibility mode, ever. Actually yes, C&C Red Alert 2 was running slow, but the community came up with patches that make it play nice, including the multiplayer which now works better than it did back in 2000.
- chrchang523 3y agoRaymond Chen has been providing an inside perspective on this for decades: https://devblogs.microsoft.com/oldnewthing/ https://devblogs.microsoft.com/oldnewthing/
- shortlived 3y agoEven more “insanity”: z/OS (aka OS360 aka MVS) supports programs going back to the 60s and I just talked with a DE at IBM who is still using a program compiled circa Apollo 11 mission.
- rahen 3y agoThat's common in the mainframe world. Unisys (ex Univac) still has its Dorado mainframes binary compatible with the Univac 1100 released in 1962.
- the_only_law 3y agoI think I remember reading a while back that System/360 binaries can still run on modern Z/architecture mainframes.
- shortlived 3y agoYup, that’s the example I cited above.
- the_only_law 3y agoOops, missed that, I came in from the comments link.
- sillywalk 3y agoI thought the Unisys mainframes have been running emulated on X86/X86-64 for a while? I assume they have some sort of binary translator.
- rahen 3y agoYes, you got it right. The Dorados now run a binary emulator on top of a microcomputer (x86_64) architecture, while IBM Z (itself essentially a 64-bit S390 arch) kept a mainframe configuration.
- 3y ago
- deleted 3y ago[deleted]
- paxys 3y agoI'm going to go ahead and say operating systems that don't work this way are the exception. Running a 30 year old binary isn't all that big a deal. Pretty much every mainstream system does so every day in its day to day operation.
- sitzkrieg 3y agotry running a plain c linux userspace program from the 90s without recompiling it on any modern distro of your choice
- AnotherGoodName 3y agoSpecifically you can't run a.out binaries anymore and ELF came about in 98. So that's a pretty hard limit. Linux can run binaries that were compiled to the latest binary standard in 98.
- toast0 3y agoiOS and Android aren't 30 years old, so that's not possible. Assuming you get by signing/appstore/etc, I don't think you can take a compiled app from early iOS and run it on an iPhone now; Apple removes old apis and there's the whole 64-bit transition too. Google isn't as aggressive and most? apps are bytecode only, but I kind of don't expect an apk for Android 1.0 to function properly if run on an Android today. At least if it does anything advanced with networking or needs permissions that changed a lot. Linux should work if it was static compiled, and probably helps if it doesn't use audio; because Linux audio has changed a lot in 30 years. A dynamically linked Linux binary from 30 years ago is nearly hopeless, because it would have been linked against a different libc that's in common use today, and I doubt that will be on your system today. If you had the full filesystem, it should run in a chroot. MacOS was System 7 in 1993, on 68k, not power pc. Those applications aren't running on your M2 without emulation. Dropping 32-bit support doesn't help either, of course. FreeBSD 1.0 was released in November 1993, so it's not quite 30 years old, but I suspect a static compiled app may work, but libraries will be hard. FreeBSD makes compat packages to get libraries to run older software, but I don't see one for 1.x or 2.x, the package for 3.x was marked expired in 2010, but compat4x seems alive and well; that gets you 20 years of probable compatability.
- no_time 3y agoSo much so that even only linux, the most stable API arguably is win32 through wine. Atleast for desktop related tasks.
- doublepg23 3y agoAre the compatibility issues on Linux really an API issue or having incompatible, newer versions of libraries? The effect is the same, your old program doesn’t run, but the cause is very different.
- Asooka 3y agoThe latter. Old versions of libraries aren't maintained and you're on your own to compile effectively from scratch an entire distro's worth of libraries. Ironically, it should be easier to have as strong backwards compatibility on Linux as Windows, since all .so files are versioned and almost never break the API within the same major version, so you're spared the DLL hell of a program linking with blah.dll expecting it to be version 1, but you have version 7 installed. On Linux the program would link with libblah.so.1, not the libblah.so.7 you have installed.
- fredoralive 3y agoIncompatible, newer versions of libraries is an API issue? An OS is more than a kernel, and on Windows if you link to the standard set of libraries provided with the Windows, Microsoft tries not to break them.
- jmkni 3y agoWhat I find so frustrating is that Windows, under the hood, is so solid. It's just the UI with Bing/Ads/telemetrics/etc integration is so crap, like they've ruined a solid OS with crappy surface level stuff.
- FirmwareBurner 3y agoIt's as if, it's a product made by a giant corporation with over a dozen different teams of skilled people, with different managers and different visons on how their own team's work should impact the final product for their own career advancement purposes.
- veec_cas_tant 3y agoSure. Apple is also giant and (probably?) fits those descriptors as well. Why is Mac so solid under similar circumstances?
- nelsondev 3y agoApple employs “Release Managers”, where a single person is ultimately responsible for deciding which features ship in new projects. Apple also, due to the hardware business, adheres to a release schedule where features must all be consolidated onto single branches (“convergence”), rather than letting individual teams ship incrementally.
- roneythomas6 3y agoNot to mention Apple only has to support a limited number of hardware and they regularly drop support for older hardware with each new major release.
- vladvasiliu 3y agoThat may be so, but all the annoyances I have with windows don't seem hardware-support related. The laggy menus, the clock in the taskbar that slides to the right outside of view, etc. This can't possibly be related to the fact I have a shiny, brand-new Wi-Fi card.
- Dwedit 3y agoThat would have to be a Win32 Console App made for Windows NT 3.1?
- pdpi 3y agoMicrosoft's commitment to backwards compatibility is definitely one of the strengths of the Windows platform. On the flipside, it's also at the root at the insanity that is the forbidden word list in MS Teams channel names. https://learn.microsoft.com/en-us/microsoftteams/limits-specifications-teams#channel-names https://learn.microsoft.com/en-us/microsoftteams/limits-spec...
- vb6sp6 3y ago[dead]
- deleted 3y ago[deleted]
- yjftsjthsd-h 3y agoI wonder if they could have mitigated that by leaning more heavily on the ability to have multiple personalities running on top of the kernel. So for instance, you could run a program from 1996 on the "Windows 95" subsystem and get better compatibility, but Teams could run on the "Windows 11" subsystem that treats CON as just another file name. Of course, there might be a problem if programs at different compatibility levels interact with the same files, but there's actually precedent for dealing with that kind of thing quasi-transparently, or perhaps I should say QUASI-~1.
- bartread 3y agoAll the people on that Twitter thread getting butthurt about it and complaining that Windows' backwards compatibility is a bad thing... WTF koolaid have they been drinking? I don't often sing Microsoft's praises but backwards compatibility is something they get absolutely right: something they've always got right. Everything doesn't have to be changing and breaking all the time and, to me, it's a mark of maturity when an organisation can maintain compatibility so as not to inconvenience - and introduce unbudgeted (and sometimes very high) costs to - users, integrators, and consumers. Top marks, Microsoft.
- Asooka 3y agoThe Linux world would benefit strongly from having a much bigger commitment to backwards compatibility in foundational libraries. Obviously there is nobody who can force e.g. OpenSSL to keep supporting old versions or to provide them as wrappers over the latest version, or to force GTK to keep around working versions of libraries exposing all interfaces dating from GTK 1.0 onwards. But if we could have a project to do just that, that would be great. We all want people to move with the times and adopt new versions of their dependencies so security exploits can be patched, but right now if you're writing software for Linux, either you package all your dependencies with it (forever calcifying all security exploits), or you keep on top of all updates of everything you use, or your software simply won't run within a couple of years. The open source community lives and dies by the ability of users to run existing software. Effectively continually deleting open source software from existence, while windows keeps supporting every single program written since 30 years ago, means we're always falling behind in usefulness. There ought to exist an organisation dedicated to maintaining old versions of widely used system libraries either in their original form, or as wrappers over the new versions (to the extent possible), so that people can rely on their existing software. Since we're talking about open source, that would mean maintaining the development kits as well, so old source can be built on new systems. It makes no sense to just let all this work rot, it is our greatest treasure.
- bryanlarsen 3y agoThat's pretty much exactly what Red Hat does with their Enterprise Linux.
- robomartin 3y agoI have always believed this has been one of the primary reasons for which Windows won decisively against MacOS. Apple has never had a problem throwing away their customers’ investment in their ecosystem. I was at a company with several hundred Macs when the transition away from PowerPC happened. It was just brutal. And costly. Not just hardware, software too. And, what for? From a business perspective, you can do the same fundamental work woth both systems. The difference are: My investment is protected in one case and not the other. We have a bunch of Macs here. Only where absolutely necessary and for multi-platform testing. As much as MS is maligned by purists, the truth of the matter is they have always protected their customers by having a remarkable degree if backwards compatibility, which isn’t easy to achieve and maintain.
- kevinsync 3y agoFWIW, Beavis and Butthead in Virtual Stupidity (1995) runs perfectly fine in Windows 10/11 with compatibility mode enabled. No need to test anything else as that's arguably the apex of software (and humanity's collective output). https://www.myabandonware.com/game/mtv-s-beavis-and-butt-head-in-virtual-stupidity-a1c https://www.myabandonware.com/game/mtv-s-beavis-and-butt-hea...
- snickerbockers 3y agoThat's cute and all, but it's fucking gzip. It doesn't have complex dependencies. Pretty sure Linux could run a 30 year old gzip binary too. I've never needed to do that with gzip but I have definitely run binaries of a similar vintage without issue. Windows backwards-compatibility fails miserably on non-trivial programs, you're generally pretty lucky if you can get something from the XP-era or older to work out of the box.
- herpderperator 3y agoSomeone ran the gzip binary on Linux just fine: https://twitter.com/stderrdk/status/1692652013711221045 https://twitter.com/stderrdk/status/1692652013711221045
- sedatk 3y agoThey used an older Debian. Wouldn't work on the latest.
- charonn0 3y ago> you're generally pretty lucky if you can get something from the XP-era or older to work out of the box. That's actually pretty good. XP was released over 20 years ago.
- Dalewyn 3y agoOff the top of my head I'm running Winamp (gotta whip that llama ass!), Paint Shop Pro 5 (predates XP), RPG Maker 2000, and many more stuff from almost or over 20 years ago with no problems. So yeah, I'll take my chances with that luck.
- sedatk 3y ago> Pretty sure Linux could run a 30 year old gzip binary too Not since Linux dropped a.out binary support completely in 5.18. Any newer kernel can't run it.
- deleted 3y ago[deleted]
- znpy 3y agoSomeone’s gonna come and say that linux has that too, and while technically true it’s quite hard in practice. The kernel abi is stable, everything else is pure chaos, and this is mostly due to how applications are usually packaged in linux: your app could load (as long as it’s not in a.out format) but then would fail at loading most libraries. So effectively you need a whole chroot with the reference linux distro (or other runtime in general) and I’m not so sure you could find archives of 30 years old distros. And I’m assuming that the kernel abi hasn’t actually changed a single bit and that no other interfaces changed either (stuff like /proc or /sys - /sys wasn’t even there 30 years ago i think). And if you’re running an Xorg app, I wouldn’t bet my lunch on that level of protocol-level compatibility.
- msla 3y agoIt works in Linux the same way it works on Windows: If you don't have the dynamic libraries and configuration you need, it won't work. Why this is a mark against Linux and not Windows is beyond me.
- znpy 3y agoEh, kinda. On linux you can only assume kernel abi compatibility whereas pn windoes you can assume the basic runtime (win32 or whatever) to be present and available.
- AshamedCaptain 3y agoIn the timeframes this post is talking about, you can practically do the same in any operating system. What "basic runtime" could such an aged Linux binary use, other than glibc and Xlib/motif, which are precisely the ones which have been actually trying to preserve ABI? These 30 year old binaries have a higher change of working than week old ones... This is similar to the fact that Office 95 will work on recent Windows, but Office 2k won't.
- sedatk 3y agoMicrosoft keeps maintaining all those libraries, and keeps them in the OS by default. That may not be the case with Linux.
- rkagerer 3y agoIt's not insane, it's my expectation for a tool. My hammer still works perfectly well with nails I bought 30 years ago. It's impossible to build on shifting foundations that are constantly breaking backward compatibility. You eventually spend all your time maintaining instead of creating. Then you have to go reinvent your wheel, and in my experience as a user your shiny new one isn't necessarily better. Most of the software I use is more than 10 years old. Some is still updated, some is not (or went cloud and left me happily behind).
- bombcar 3y agoMilwaukee still manufactures NiCAD batteries for their tools that have long since been outclassed.
- dehrmann 3y agoI see you haven't bought the Apple Hammer.
- oefrha 3y agoOn the other hand, you’re stuck with stupid limitations in perpetuity: https://news.ycombinator.com/item?id=14286383 https://news.ycombinator.com/item?id=14286383
- account42 3y agoMicrosoft could let new applications opt out of that limit if they cared. They have done this for plenty of other limits, e.g. absurdly low path length restrictions.
- esalman 3y agoMy windows 11 upgrade experience was one of the smoothest ever. I was playing AOE, got a notification that my machine is eligible for upgrade, paused and saved the game, did the update and resumed.
- freitzkriesler2 3y agoI'm ashamed to admit I really like windows 11. Telometry and other questionable things aside, I've loathed and detested every UI change that Microsoft has done since Windows 7. I unequivocally believe that windows 7 was peak windows UX. Every subsequent version, I've limped by using classicshell and then openshell. Windows 11 is the first windows release where I didn't feel the need to install something to bring me back to the late 2000s. My only pet peeve is not allowing me to create accounts that don't tie into outlook. Yes I know there are tricks to bypass this but I shouldnt have to do that.
- armchairhacker 3y agoDoes Linux have this backwards compatibility? What about macOS? I know instruction sets changed from PowerPC to Intel to ARM, so probably not macOS at least. But this is a CLI and I doubt old system calls changed
- anthk 3y agoLinux will just compile 30 yo binaries.
- stjohnswarts 3y ago30 yo source code?
- Too 3y agoBetter bring a 30y old compiler too. The amount of UB that was assumed to work in code from that era will turn into bugs due to more liberal optimizations or fail with compiler warnings thanks to stricter checking.
- anthk 3y agoThere's always a flag to override that, usually the compiler will warn you on how to fix it.
- bombcar 3y agoMacOS is actively hostile ( I still remember when they dropped cocoa or carbon or whatever it was, many apps died that day ). Linux isn’t hostile and if you ONLY use the kernel ABI or statically compile everything, it will work quite a long time. But if you use dynamic libraries, you gonna have a hard time unless you have source.
- ankurdhama 3y ago> MacOS is actively hostile ( I still remember when they dropped cocoa or carbon or whatever it was, many apps died that day ). These changes are not like they announce something and the next day the libraries/APIs are gone. There is always a transition period that is long enough for the apps to be updated.
- _8j50 3y agoBut it is also this compatibility that makes it slower for certain programs.
- kmoser 3y agoI have a command line Windows binary compiled over 30 years ago (June 1996) that won't run on Windows 10 (64 bit). Windows complains, "ANAGRAMS.EXE is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher." Is this issue specific to Windows 10, and would it work on Windows 11?
- brailsafe 3y agoAlmost 30 years ago*
- rootw0rm 3y agohave you tried various compatibility options? right click -> properties -> compatibility there's a troubleshooter there, too
- kmoser 3y agoI just tried the troubleshooter, and it said it fixed the issue but it actually didn't: when I run the program, Windows pops up a modal (before it just displayed an error on the console) with a title bar that says "Unsupported 16-Bit Application" and a message reading, "The program or feature [...] cannot start or run due to incompatibility with 64-bit versions of Windows. Please contact the software vendor to ask if a 64-bit Windows compatible version is available."
- charonn0 3y agoIs it a 16-bit executable?
- Pxtl 3y agoMeanwhile my new Android Pixel phone will run literally none of the Android apks I bought 5 years ago on humble bundle because it's 64-bit only and they're all 32-bit.
- brailsafe 3y agoI mean, Windows 10 comes baked-in with 30 y.o interfaces all over the damn place, this is hardly surprising. They've been poorly applying thin coats of paint for ages.
- shrubble 3y agoSunOS 4.x binaries, if statically compiled, run fine on modern day SPARC systems also...
- withinrafael 3y agoLots of Microsoft app compat success stories out there, but plenty of breakage too. One example: I had to create IndirectInput [1][2] to fix Myst on Windows. Microsoft refused (via private email thread with leadership) to take responsibility for what is clearly an appcompat bug and were borderline jerks to me about it too. Oh well. [1] https://github.com/riverar/IndirectInput https://github.com/riverar/IndirectInput [2] https://support.gog.com/hc/en-us/articles/360019256854-Myst-IV-Revelation-launch-problems-on-Windows-10?product=gog https://support.gog.com/hc/en-us/articles/360019256854-Myst-...
- kstrauser 3y agoI’m seriously impressed that you fixed this with a little drop-in DLL, and also that it was fixable that way.
- octodog 3y agoI remember not being able to play Diablo 2 on my iMac running mac os X and I was so sad about it. I've used Windows ever since.
- kabdib 3y agoHa, the version of ZIP that I use was built in 1996, and I was using a version of 'ls' that I wrote for NT 3.1 -- maybe 1993 or so -- until a couple of years ago. These programs don't use DLLs, and frankly there's little reason they for them to stop working.
- sharts 3y agoSurely there's some kind of legacy Windows containerization / subsystem / emulation technology that would automagically handle such things by now?
- TillE 3y agoWell, there's the WoW64 layer, but nothing particularly sophisticated beyond that. For the most part the old DLL interface (kernel32 et al) just sticks around indefinitely even as parts are officially deprecated. Microsoft is careful not to break their public interfaces.
- petermcneeley 3y agoThis is fun and related "chain of fools 2017" https://www.youtube.com/watch?v=PH1BKPSGcxQ https://www.youtube.com/watch?v=PH1BKPSGcxQ
- Zuiii 3y agoThis works for win32 apps too. It's what gtk should have strived to be. New features should have never been prioritized over API stability. What a shame.
- wly_cdgr 3y agoThat shouldn't be considered remotely impressive. It should be seen as routine and expected, and if it doesn't work, that should be considered a hugely humiliating and unacceptable fail. To be clear, I am not saying that it's not impressive in the shitshow that is 2023. I am saying what norms we should work towards.
- sattoshi 3y agoAgreed. There is absolutely no reason most statically compiled binaries should stop working.
- kuchenbecker 3y agoThey won't if you use the old version.
- BugsJustFindMe 3y agoThere are many reasons. Notably, binaries don't tend to compile the OS into themselves. There's always some kind of interface boundary where something depends on OS-defined behavior, like windows and menu bars and printing and finding the user's personal folder and so on and so forth. Microsoft decided to do all of the work to preserve old interfaces long after making newer ones, but it does come at a heavy maintenance and management cost which only makes sense in a market with extremely lucrative legacy forces.
- CaliforniaKarl 3y agoI used to believe this, but no longer. Any Steam game that used the "Games for Windows – Live" service, and wasn't updated since the service shut down in 2014, would fail to launch on Windows 10 & later, because the DLLs for the service were removed. For a time, folks were able to download the DLL from third-party sites, but that doesn't work now.
- oefrha 3y agoOlder games without DRM or other networked services also may not work due to graphics incompatibility. (cnc-ddraw salvages a lot of them though: https://github.com/FunkyFr3sh/cnc-ddraw https://github.com/FunkyFr3sh/cnc-ddraw)
- account42 3y agoAh, but I bet the pirate versions of those games still work ;)
- mdwalters 3y agoIsn't this the compatibility layer that's built into Windows?
- petabytes 3y agoIt's sad that the windows kernel and API aren't even that bad, but Microsoft insists on shipping as much bloatware and spyware as they can. Do I really have to use a debloater to have a usable OS?
- account42 3y agoI fail to see why 30 years should be considered extraordinary when in the physical world we have standards that ensure compatibility for much much longer than that. If anything, software has it easier: you can layer emulation layer on emulation layer and then only have to adapt the outer layer for whatever pointless changes you are making to the current system.