Linux 内核是否对其“公共 API”引入了不兼容的更改?

Linux 内核是否对其“公共 API”引入了不兼容的更改?

我正在尝试了解语义版本控制,它指出当发生不兼容的“公共 API”更改时,应更改主版本号。我的思想实验是尝试了解 Linux 内核编号是多少,因为据我所知,主要版本的升级是任意的。

我不熟悉 Linux 内部结构,所以请耐心等待。据我了解,这个“公共 API”将是一组 C 系统调用,例如sys_writesys_mmap,而不是ABI 用于确定二进制兼容性。从系统调用_64.tbl这包括大约 400 个系统调用,其中一些已被弃用。或者 API 是否是此处列出的所有内容内核API

假设系统调用定义,Linux 是否曾经引入过向后不兼容的系统调用接口更改?如果是这样,主版本号会是数百还是数千?

答案1

为了清楚起见,值得一提的是,内核不遵循语义版本控制;正如你所说,主要的障碍是任意的。

就系统调用而言,出现了不兼容的变化,即删除;手册syscalls列出已删除的过时调用。仅此一点就足以要求非 1。X如果应用了语义版本控制规则,则版本号。

内核 API,或者更确切地说,必须保留在内核中的内容,是任何在更改后可能会破坏程序的内容。这涵盖了系统调用定义,还包括数据结构、/proc文件名和内容、ioctl调用,甚至系统行为。内核 API 确实会发生更改,通常是无意的,并且此类更改通常会被恢复(因此将被视为错过的重大变更,然后在语义版本控制中进行修复)。

相关内容