Jason Turner在他的演讲中提议打破 C++ ABI 以保持该语言的发展。他还提到,如果出于兼容性原因需要,可以通过将 C++ 库包装到 C 库中来隔离 C++ ABI 更改。
27:30相关截图:
这里“BinaryLibrary”和“Old C++ stdlib”使用旧的 ABI,“NewExecutable”使用假设的更新 ABI。
据我了解,这是有效的,因为“BinaryLibrary”的旧 C++ ABI 被烘焙成具有更稳定接口的单独二进制文件。
但是什么让 C 成为一个好的替代方案呢?难道它的ABI也不能改变吗?
Joh*_*nck 10
C ABI 可以改变吗?嗯,不容易。某些平台上偶尔会有变化,但如此多的系统和语言都是使用 C ABI 作为公共接口构建的,因此它必须非常稳定。许多语言都有 C FFI,允许它们调用 C 函数,而更改 C ABI 会破坏这些功能。C ABI 是与操作系统交互的常见方式,例如打开文件或发送消息,因此它被许多语言实现(例如解释器和标准库)使用。
请注意,C ABI 不是 C 标准的一部分。每个平台或系统都可以定义自己的C ABI。因此,虽然它在给定平台上随着时间的推移趋于稳定,但在所有平台上并不一致。