Comment by Daishiman
2 months ago
The problem is that as soon as you do that you're stuck with whatever architecture you already have, which incurs precisely the performance and maintenance burdens that Windows already suffers.
Which is a reasonable design choice for many things. But Linux can move fast in part because it can decide to discard bad ABI and HAL conventions.
I understand that, but I think for an operating system it's more valuable to provide stability for applications than to be able to move fast.
Secondarily, do the same issues not apply to the Linux API as to a hypothetical ABI? If the API changes, don't userspace applications still need to be updated and/or recompiled accordingly, or suffer breakage? At some level, whether it's an ABI, a statically linked API, or a dynamically linked API, there always has to be some interface between applications and the operating system, and breaking changes to that interface must be managed with care.
It comes down to where you decide to draw that interface, and I think the ABI is just a better place to draw it from a user's perspective. This way, applications don't need to be recompiled to work on newer operating system versions, and given how challenging and painful it can be to compile applications reproducibly, and how many applications are only provided in binary form to begin with, this seems like a worthy goal.