Swift 5中的ABI稳定性–这是什么?

从事Swift工作的人谈到了长期目标,即稳定macOS,iOS,watchOS和tvOS的Swift ABI。 这实际上是什么意思?

ABI

ABI代表Application Binary Interface ,它定义编译的代码如何与其他编译的代码交互。 这意味着我们需要具有良好的调用约定,命名,对象在内存中的布局等。ABI的用途包括用户运行的程序与操作系统之间的接口,该接口将定义如何在机器代码中访问结构。

ABI还是API?

API代表应用程序编程接口 ,这是一个较高级别的接口,通常Swift程序员可以访问该接口访问基于库或基于Web的系统。

ABI兼容性是什么意思?

缺乏ABI兼容性将意味着编译后的代码将无法在运行时与其他编译后的代码进行交互。 因此,有意义的是,Swift始终具有ABI,并且随着语言的成熟,它一直在稳步发展。

那么ABI稳定性对Swift意味着什么

具有兼容ABI的已编译Swift代码(例如应用程序或库)可以彼此交互。 这可以采用相互定义的调用函数和方法的形式,并在它们之间的API边界上来回传递值。

ABI稳定性

为了获得ABI稳定性,Swift需要锁定关键方面或为向前兼容做好准备。 ABI稳定性意味着要使用特定的Swift版本编译一个Swift库,并且仍然能够在运行时从使用更高版本的Swift构建的应用程序中与它进行交互。 同样,使用比特定Swift库更早的Swift版本构建应用程序仍然可以编译和运行。

未来

Swift 5向前发展将允许使用未来版本的编译器进行编译的框架/ SDK仍然可以正常工作。 Swift 5还有其他一些很棒的功能,因此当然还有很多值得期待的地方!

官方资源:https://swift.org/blog/abi-stability-and-more/