Chungy
There are a few exceptions... Linux has been able to run V7, SysV, SunOS binaries directly with kernel compatibility layers. Likewise FreeBSD and illumos have Linux compatibility layers in their kernels.
Tobiyo
hmm true
Tobiyo
even mac is able to run most linux software
Chungy
Probably not really true. A lot of the command-line applications have ports, but they do need Mac OS specific code most of the time to accomplish it.
Chungy
The same set of software is also able to run on Windows, usually via Cygwin.
Pierre
Chungy
now that's just patently false
Chungy
Some Unices don't do binary backwards compatibility, sure... Linux is not one of them.
Linux takes binary backwards compatibility to extreme measures where literally every binary from 1992 onward is capable of running on a modern kernel.
Chungy
at least assuming an x86(-64) system.
Harrison
until a syscall was deleted in a future version--
Chungy
LInus would spew swear words all over the mailing list if that happens :P
Harrison
Chungy
It's a large part of why time_t's size on x86-32 took so long to have a sane solution with regard to 2038... There can absolutely be no breaks whatsoever in the ABI
Chungy
it's basically still "old application = might break in 2038"
Harrison
yes, linus created it, and approved its removal. set_fs and read_fs are gone :p
Chungy
Those seem to be internal kernel API calls, not the userspace ABI. The userspace ABI never breaks.
Harrison
yep, kernel abi. userspace is pretty consistent
Harrison
more of the scenarios irl would be libc incompatibilities
Pierre
Chungy
yep, kernel abi. userspace is pretty consistent
Kernel ABI has never had that kind of promise, for better or worse. It lets them make kernel interfaces for drivers/modules cleaner and better while also explicitly not supporting drivers from various versions of the kernel (and sometimes the patch releases break it too...).
The userspace ABI has the opposite promise: that it never breaks even when the ABI is demonstrably buggy. You can run whatever old versions of Oracle Database or KDE aRts that use buggy interfaces and they still work.
Chungy
Windows is similar though it alters in a couple ways. Kernel ABI breaks are somewhat rare, but have historically been represented by bumping up the major version number. The exception to this is Windows 10, which is still compatible with all 6.0-6.3 drivers while bumping the kernel version to 10.0. As a workaround, applications are, by default, set to Windows 8.1 compatibility mode if they don't have a manifest declaration for Windows 10
Pierre
Linux has a lot of useless syscalls too, call too much it.
Chungy
Besides that exception, NT 3.51 should be able to run drivers meant for 3.1
4.0 can only run drivers for 4.0
2000, XP, 2003 (5.0, 5.1, 5.2) can run drivers for themselves and the prior 5.x releases.
Vista, 7, 8, 8.1 (6.0, 6.1, 6.2, 6.3) can run drivers for themselves and the prior 6.x releases
Windows 10 is basically another 6.x release and can still run all 6.x drivers.
Chungy
OTOH, the userspace ABI on Windows NT has basically the same promise as Linux: it doesn't break.
Chungy
and on both systems, the libraries you have driving userspace applications can become an issue and it can get complicated to work around, even if the kernel interface hasn't broken.... on Linux it's not uncommon to use chroot or containers to run old software on modern distros.
On Windows, it was a total nightmare until Vista introduced WinSxS and started including basically every DLL Windows has shipped ever.
Harrison
I remember seeing someone discovered a comment in Windows leak that saying this undocumented api must be kept cuz some other products have made use of it.
Pierre
Besides that exception, NT 3.51 should be able to run drivers meant for 3.1
4.0 can only run drivers for 4.0
2000, XP, 2003 (5.0, 5.1, 5.2) can run drivers for themselves and the prior 5.x releases.
Vista, 7, 8, 8.1 (6.0, 6.1, 6.2, 6.3) can run drivers for themselves and the prior 6.x releases
Windows 10 is basically another 6.x release and can still run all 6.x drivers.
Microsoft already said about fully supported Windows 7+ APIs since 2015.
Pierre
Pierre
Imagine relying your systems security to this.
Anonymous
Pierre
Anonymous
Harrison
Chungy
the Microsoft Office team is special... they basically fork and maintain their own version of Win32 just to do things with the standard controls that aren't actually standard in Windows.
Pierre
I thought that the window ghost effect on XP was a bug, not a feature 🇹🇷
Pierre
Harrison
Pierre
Pierre
It's interesting AF, they use HAL to communicating with userspace? 🧐
Chungy
it might not be terribly hard to incorporate it into the actual ROS build system.
Chungy
I mean... it's winfile. How much could they have changed since the NT 3.x days? :D
Chungy
is that the runtime or the application?
Harrison
btw, is it possible to build software *targeting ROS* on recent development environment?
Pierre
Pierre
MinGW.
Chungy
sure it does. mingw targets NT 5.0
Pierre
the OS already compile with GCC, then I think MinGW is better.
Harrison
MinGW.
shall I grab some required static libs from ROS for this job?
Harrison
like, comctl32.lib
Chungy
the old mingw used to make binaries that would work on NT 3.1...
Pierre
Yeah, XP support was dropped from a lot of software.
Chungy
but since the rewrite and incorporation into upstream gcc, it's mostly NT 5.0+
Chungy
technically you can shimmy things to work on NT4 and 95, but 90% of the time you're using APIs that didn't exist on those anyway.
Pierre
A good reference would be RetroArch, it has versions compiled for Windows XP.
Chungy
and Windows 95, for that matter :p
Pierre
Chungy
I'm installing Windows 95 in PCem because of the conversation earlier.... I forgot how long the format phase takes :D
Chungy
Windows 95/98/Me have Unicode support... but through a incompatible set of APIs compared to NT's.
Chungy
it's dumb :D
Harrison
anyway that just a big mess.
Pierre
Chungy
no
Chungy
Windows 95 is derived from the original line of Windows (1.0, 2.0, 3.0, 3.1) that booted from MS-DOS. It's effectively "Windows 4.0" of that line; 98 (4.1) and Me (4.9) are further continuations from there until it was completely abandoned.
Windows NT was a wholly independent operating system, based on OS/2 1.x, that first released as NT 3.1 in 1992 as a fully 32-bit and pre-emptive multitasking system.... it kept the user interface from the contemporary Windows 3.1 but under the hood it was all new. NT 4.0 would modify the UI to match that of Windows 95, but it was still the more solid/modern OS architecture.
Windows 2000 (NT 5.0) was the first point in which Microsoft considered making the NT line the one and only for desktops, but they got cold feet and released Me instead, based on 98.... took another year for Windows XP (NT 5.1) to finally do that.
Harrison
I usually call DOS based Windows after 3.1 as 9x as a whole
Pierre
Chungy
Chungy
also back on 95: these disk space requirements are a killer :D (jk)
Harrison
Pierre
Harrison
let's make a wild guess that it was intentional, for market share of Windows
Pierre
Someone has a beta of XP?
Chungy
Chungy
I don't think 95 has a "famous serial number"
Chungy
ah heh.... I don't have that version anyway.