[3] It is composed of the system call interface of the Linux kernel and the subroutines in the C standard library.
The Linux API, by choice, has been kept stable over the decades through a policy of not introducing breaking changes; this stability guarantees the portability of source code.
[4] At the same time, Linux kernel developers have historically been conservative and meticulous about introducing new system calls.
[6] At FOSDEM 2016, Michael Kerrisk explained some of the perceived issues with the Linux kernel's user-space API, describing that it contains multiple design errors by being non-extensible, unmaintainable, overly complex, of limited purpose, in violation of standards, and inconsistent.
Some popular implementations of the C standard library are As in other Unix-like systems, additional capabilities of the Linux kernel exist that are not part of POSIX: DRM has been paramount for the development and implementations of well-defined and performant free and open-source graphics device drivers without which no rendering acceleration would be available at all, only the 2D drivers would be available in the X.Org Server.
A kernel-internal API can be changed when such a need is indicated by new research or insights; all necessary modifications and testing have to be done by the author.
The Linux kernel developers have repeatedly denied guaranteeing stable in-kernel APIs for device drivers.
Guaranteeing such would have faltered the development of the Linux kernel in the past and would still in the future and, due to the nature of free and open-source software, are not necessary.