Comment by matheusmoreira

2 years ago

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.