3 ms·
I think by this they mean the policy of the Linux kernel "never breaking user land". Libc is seen as user land by the Linux kernel, it provides an API for prog
by nibbleshifter 4y ago
I think by this they mean the policy of the Linux kernel "never breaking user land".
Libc is seen as user land by the Linux kernel, it provides an API for programs to abstract them away from syscalls. Libc dies syscalls for programs.
By "never breaking userland", Linux promises to never break libc by never changing syscall numbers/args/types - new syscalls are added in ways that don't break older syscalls.
Other platforms don't make this explicit promise and reserve the right to shuffle syscalls around, change them, remove them, etc as desired - making maintaining a libc for them a pain in the ass, and programmers are told to only use the libc as syscalls don't come with guarantees.
You can (and I often do) program on windows using only syscalls, but your program tends to need rebuilding across major versions as the syscall interface isn't stable.
Fuck me typing that on a phone was painful.
- bogomipz 4y agoAh ok, now the explicit vs other OSes "implicit" guarantees makes sense to me. I had no idea other OSes changed their system call numbers from time to time. Thanks for your detailed response!