为什么 Swift 的 ABI 稳定来的这么慢?

从《Swift’s Reflective Underpinnings》这个视频里可以得到一些有效信息。

开发团队希望 Swift 这门语言有很多强大的能力,如果语言的整体设计没有完备就宣布 ABI 稳定的话会影响后期语言特性的加入。因为要考虑兼容的问题。原话是:“we also wanna stabilize these formats without closing any unnecessary doors”。

因为对泛型、和动态能力的修改会影响到语言的底层格式。所以如果这两大块设计没有完成就无法 ABI 稳定。

那么动态能力的设计难在哪里呢?因为这个能力后续影响深远,所以 API 的设计影响面非常广。同时也要考虑与原有设计的兼容的问题。另外一个考量是安全,如果能拿到所有对象的元信息,也会造成第三方库的实现细节泄露。

根据官方的表示,在后续的 4.X 版本中泛型能力会得到改进。动态能力的一些设计也有了眉目。

5.0 版本的主要目标实现 ABI 稳定应该是能做到了。
展开
1