【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

回顾 Swift 3,展望 Swift 4

  • 2016-08-14
  • 本文字数:1275 字

    阅读完需:约 4 分钟

在 Swift 3 late 2016 版本临近发布之际,苹果公司开发者工具部门高级总监 Chris Lattner 发给“Swift-evolution”邮件列表一篇长文。文中对 Swift 3 的开发过程进行了回顾,并给出了对 Swift 4 的期望。

在对 Swift 3 的回顾中,Lattner 主要侧重于说明开源软件开发的成效及所存在的缺点。他特别指出,相对于“封闭式设计”而言,“开放式设计”速度慢且更难预测,但是最终结果却是“显著地改善”了。对于开发而言,使开发社区专注于有限数量的主题上,以及使核心团队参与到最前线的关系讨论中,这两者是至关重要的。此外,Lattner 还指出,在开发中具备明确的目标将有助于工作重点的确定,并可避免出现在设计范围之外完成的子项目。

基于上述观点,Lattner 阐明了 Swift 4 所将具有的两个首要设计目标,即“自 3.0 版本起,交付具有源码稳定性承诺的版本,以及为标准库提供 ABI 稳定性”。鉴于此,可预见核心团队直到 2017 年春都将忙碌于第一阶段。该阶段的工作主要是针对影响现有 ABI 或者是导致现有标准库特性发生重要改变的特性。下面列出了核心团队在第一阶段中将优先实现的一些特性:

  • 源码稳定性,例如编译器选项 -std=swift3,使用该选项可有条件地启用更多的目前正在开发但尚不稳定的功能;
  • 适应性,提供在不影响 ABI 稳定性的前提下使公用 API 持续演进的方法;
  • 标准库所需的通用改进,例如:条件性符合(conditional conformances)递归协议约束(recursive protocol requirements),以及其它的一些改进;
  • 对字符串的重评估,目的在于改进 Swift 的字符串编程模型,使得该模型做到与 Perl 字符串处理一样的好。
  • 内存所有权模型(可选项)。该模型受 Cyclone Rust 的内存所有权模型启发,目的在于实现性能的可预测性和确定性。更多细节可参考这里

一旦第一阶段的进展达到顶峰,第二阶段将根据所剩余的时间对新特性进行界定和规划。在第二阶段中会考虑以下特性:

  • 反射,包括一个面向用户的、用于数据和方法反射的 API;
  • 一流的并发,包括:actor、同步 / 等待、原子性、内存模型及其它一些相关主题。不幸的是,据拉特纳所说,在 Swift 4 版本中将无法按时实现这个新的并发模型;
  • 更多的通用改进。但正如泛型声明中所述,这些改进并非是 ABI 稳定性所特需的;
  • .swiftmodule 稳定性,以便于被第三方的二进制框架所使用;
  • 新的脚本语言特性,例如:正则表达式、多行文字的字符串等;
  • 属性行为,目的是在语言内核之外,提供一种定义 lazy、observers、synchronization 等属性行为的灵活模型。

Lattner 最后指出,还有许多在第二阶段中需要考虑的特性,例如:子模块、数值类型间的隐式类型提升、C++ API 的引入、健康宏系统、尾部调用约定、支持枚举类型、“throws”类型化、用户自定义属性、抽象方法或类、更好的 SIMD 支持、数据并行支持、高级类类型等。

核心团队预期在 2017 年秋季能发布 Swift 4。

查看英文原文: Looking Back on Swift 3 and Ahead to Swift 4


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-08-14 19:004005
用户头像

发布了 227 篇内容, 共 71.5 次阅读, 收获喜欢 27 次。

关注

评论

发布
暂无评论
发现更多内容

阿里云 EMAS & 魔笔 :1月产品动态

移动研发平台EMAS

阿里云 App 低代码 移动研发

openGauss社区十一月运作报告

openGauss

基于图数据库 NebulaGraph 实现的欺诈检测方案及代码示例

NebulaGraph

图数据库 反欺诈 安全风控

C#/VB.NET 如何在 Word 文档中添加页眉和页脚

在下毛毛雨

C# .net word文档 页眉页脚

赛意信息荣获2022年深信服优秀ISV合作伙伴奖 强强联手赋能企业再升级

科技热闻

行业大咖云集 多元观点碰撞 OpenHarmony技术峰会与你相约深圳

叶落便知秋

OpenHarmony

openGauss内核分析(五):统计信息与行数估计

openGauss

Java实现Http多次请求复用同一连接

做梦都在改BUG

Java HTTP

如何使用 NFTScan NFT API 检索单个 NFT 资产

NFT Research

API NFT

提升企业管理效率 从权限控制开始

力软低代码开发平台

妙啊,空结构体还能这么用?Go语言的结构体看这篇就够了

王中阳Go

Go golang 高效工作 学习方法

一文详解SpEL表达式注入漏洞

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

兴业银行正式加入openGauss社区

openGauss

数仓专家面对面 | 为什么我选择GaussDB(DWS)

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

SpringBoot与Loki的那些事

做梦都在改BUG

Java Spring Boot 框架

存储拆分后,如何解决唯一主键问题?

小小怪下士

Java 程序员 后端 uuid

万物皆可集成资源包!低代码集成系列一网打尽

葡萄城技术团队

Cadence Allegro如何通过Excel表格创建元器件?

华秋PCB

科普 硬件 元器件

云小课|MRS基础原理之Flink组件介绍

华为云开发者联盟

大数据 华为云 企业号 2 月 PK 榜 华为云开发者联盟

国内开源生态发展现状:开源基金会与开源组织 | 雨林开源行

开源雨林

Linux 开源 基金会 OSPO

【我和openGauss的故事】openGauss的WDR报告解读

openGauss

【漏洞发现】|多个严重CVE漏洞被发现,系内存类安全漏洞

云起无垠

漏洞 Fuzzing

从混沌到清晰,阿里全球商品类目域建设思考

阿里技术

全球化技术能力

openGauss内核分析(四):查询重写

openGauss

GitHub神坛变动!10W字Spring Cloud Alibaba笔记,30W星标登顶第一

做梦都在改BUG

Java 微服务 Spring Cloud

AI不仅造就了ChatGPT,也重新定义了模糊测试

云起无垠

模糊测试

【ECCV 2022】TeSTRa:稳定的流式视频识别

Zilliz

计算机视觉

ChatGPT被开发者嫌弃?真正的用户群体出现

Onegun

人工智能 ChatGPT

设计原则 — L 里氏替换原则

Lemoon Can

SOLID 设计原则 SOLID原则 里氏替换原则

实用指南:如何在Anolis OS上轻松使用 Kata 安全容器?

OpenAnolis小助手

容器 安全 操作系统 龙蜥社区 kata

要想随时编码即刻创新,这个工具你需要一个

华为云开发者联盟

云计算 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

回顾Swift 3,展望Swift 4_开源_Sergio De Simone_InfoQ精选文章