[关闭]
@lsmn 2016-10-24T13:34:59.000000Z 字数 1665 阅读 2230

Swift 4路线图

Swift ABI Rust


摘要

Swift 4预计预计在2017年底发布。该版本旨在源代码和ABI层面实现语言的稳定性,新增特性将会包括改进后的泛型以及一个受Rust/Cyclone启发的内存所有权模型。

正文

Swift 4预计预计在2017年底发布。该版本旨在源代码和ABI层面实现语言的稳定性,新增特性将会包括改进后的泛型以及一个受Rust/Cyclone启发的内存所有权模型。

Swift 4的开发将分成两个阶段。第一阶段将包含所有使Swift ABI稳定所需要的特性,同时又要保证兼容Swift 3源代码。第二个阶段还有点不确定,可能也会包含大大小小的新特性,前提是它们不会改变现有语言特性的ABI或者破坏到标准库的ABI。

源代码兼容性

虽然稳定性可能会妨碍语言能力的发展,但源代码兼容是一个基本要求。为了推动语言的快速发展,同时又保证源代码兼容性,Swift团队将扩展现有的@available属性,让它既可以表示某项特性与特定的平台或操作系统版本有关,也可以表示和特定的Swift语言版本相关。

例如,你可以通过下面的代码声明一个API在Swift 3.1中已废除:

@available(swift, obsoleted: 3.1)
class Foo {
//...
}

ABI稳定性

使Swift ABI稳定一方面需要为将要新增的特性奠定基础,这是通过“弹性(resiliency)”特性实现的,它会提供一种方法,让公共API在演化的同时保证ABI的稳定性。这是可以实现的,例如,明确API的哪些部分可以变,而又不会破坏ABI,从而减少在某些面向对象语言中出现的脆弱的基类问题。

另一方面,使ABI稳定需要清理掉语言中现有的依赖,那样,它们就不会成为ABI的固定部分。特别地,有许多这样的改进已经得到确认,比如:

最后,还有许多工作是为了在Swift 4中添加一个类似Rust/Cyclone的内存所有权模型。Rust内存管理以实体所有权的概念为基础,通过它可以跟踪谁负责释放它或谁可以使用它。结合生存期的概念,可以避免最终释放实体时出现悬空引用。C语言方言Cyclone(目前已经不再开发)就使用了一种基于区域的内存管理模型,为每个已分配实体指定一个区域,提高分配/释放的性能,更好地支持已释放实体的检测。扩展Swift内存管理模型对系统程序员以及所有迫切需要性能稳定的情况特别有用。可以预见的是,向Swift添加一种内存所有权模型已经超出了第一阶段的范围,该阶段的目标是有一个整体的设计,以便了解它将给ABI带来什么变化。

查看英文原文:The Roadmap to Swift 4

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注