Comment by LegionMammal978
2 years ago
> It is not the only operating system in the "unstable kernel interface" group though. Linux is actually the only one with a stable system call interface.
It's wrong to say that Linux stands alone in having a stable syscall interface. FreeBSD [0] and NetBSD [1] both retain syscall compatibility for old binaries (the former apparently with some exceptions permitted); DragonFly BSD also appears to keep old syscalls in place. In fact, I only know of Windows, OpenBSD, and presumably macOS as mainstream desktop OSes without mostly-stable syscalls.
[0] https://wiki.freebsd.org/AddingSyscalls#Backward_compatibily
[1] https://www.netbsd.org/docs/internals/en/chap-processes.html...
When I wrote the article I searched the web for the kernel-userspace ABI situation in the BSDs. I found posts that contradict that.
https://forums.freebsd.org/threads/what-is-meant-by-abi.8622...
> I keep reading that the ABI of FreeBSD is constantly changing.
> Someone's system has random crashes and someone else says it's that pesky ABI changing again.
It seems FreeBSD has a reputation of changing binary interfaces. Even when they clarified that they meant the kernel-userspace interface, it was pointed out they're only stable for current releases. There seems to be some emulation but I can't figure out how hard of a guarantee that is.
https://docs.freebsd.org/en/books/handbook/kernelconfig/#ker...
> If the kernel version differs from the one that the system utilities have been built with
> for example, a kernel built from -CURRENT sources is installed on a -RELEASE system
> many system status commands like ps(1) and vmstat(8) will not work.
> To fix this, recompile and install a world built with the same version of the source tree as the kernel.
> It is never a good idea to use a different version of the kernel than the rest of the operating system.
How could the ABI be stable if you have to recompile user space when you update the kernel? Linux is said to be able to run binaries from the 90s.
https://old.reddit.com/r/BSD/comments/8vysxg/a_question_abou...
> FreeBSD breaks syscall ABI compatibility with some regularity.
> Like Windows and unlike Linux, the compatibility layer is considered to be libc, rather than the syscall interface.