Comment by tomth

3 days ago

Compatibility layers can also introduce security bugs. One of the reasons why it was removed from OpenBSD.

BSD is more for purists anyway. Virtualization seems to be a better option than compatibility layers for the odd program that doesn't work natively.

Maybe that it's different for Windows API's on Linux, because by virtualizing Windows, you're still dealing with an unfree OS.

Technically any software abstraction layer can have bugs (security or otherwise.) That doesn't mean we should abandon higher level abstractions.

If the bsd posix equivalent is the highest layer your willing to use, you'll miss out on some great software.

Theo de Raadt, 2010, on the removal of emulation: “we no longer focus on binary compatibility for executables from other operating systems. we live in a source code world.”

(Since then, OpenBSD has gained support for virtualization for some operating systems including Linux, through the vmm(4) hypervisor.)

  • > Linux: Win32 is the only stable Linux ABI :(

    > OpenBSD: Whatever the C compiler produced last is the only OpenBSD ABI :D

FreeBSD used to have compat libraries for old FreeBSD releases itself. With NetBSD it used to be the same.

OpenBSD, well, by policy running old, insecure binaries it's basically a no-no.

  • Imagine my surprise when I removed these in the kernel-conf, and then the 3C905 didn't work anymore, because it relied on these!