Linux 开发者正在琢磨着把 x32 ABI 给淘汰掉。这个 ABI 是在 2012 年被引入 Linux 内核的。Phoronix 报道,Lintronix 的 Sebastian Andrezj Siewior 提议将 x32 ABI 从 Linux 内核中移除,因为它已经过时了,而且从推出到现在一直没多少人正经用。要是没人反对的话,x32 ABI 估计到 2027 年就会从 Linux 内核里被删掉。

x32 ABI 当初引入 Linux,是为了省内存,优化 64 位程序的内存占用。这个接口的设计初衷,就是让 64 位处理器和程序能跑在一种半“64位/32位”的混合模式上。借助 x32 ABI,软件可以访问完整的 64 位寄存器文件和数据处理路径,但仅限于使用 32 位指针。给不懂的人解释一下,指针就是一个二进制数,用来记录系统内存里存的数据。

这项功能使操作系统能够使用超过4GB的内存,同时将指针大小保持在仅4字节,而非64位下的8字节。这种尺寸上的优势正是x32 ABI的最大亮点,因为指针大小减半,CPU多个缓存能容纳更多数据,性能也跟着上去了。

尽管x32 ABI潜力巨大,但它也存在几个缺点。使用x32 ABI给开发者增加了处理上的复杂性,还要求编译器支持这一特性。可以说,它最大的技术问题在于,因为指针大小限制为32位,运行x32 ABI的单个进程无法利用超过4GB的内存。

话虽如此,压垮x32 ABI的最后一根稻草,在于它并未获得软件开发人员的广泛主流采用。这多半是因为x32 ABI仅在Linux上实现,并未移植到Windows或Mac。Sebastian Andrezj Siewior在提案中进一步指出,x32 ABI带来的性能提升,对某些工作负载而言,还不足以吸引它们迁移并专门采用。