低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Swift 3 将不包含稳定的 ABI

2016 年 5 月 25 日

近日,苹果公司 Swift 语言创始人 Chris Lattner,在 Swift 官方邮件组服务上声明,Swift 3 原计划的目标之一—— ABI 的稳定性,将会推迟发布。

Lattner 的原话:

刚开始的时候我们不适宜发布这些远大的目标——包括一些重要的为了锁定标准库 ABI 的泛型功能。

因此,Swift Evolution Git 仓库的 ReadMe 文件中已经去掉了ABI 的稳定性。

由于原来的ReadMe 文件中有相关说明,ABI 的稳定性将允许将来Swift 版本开发的应用程序和编译库可以在二进制层次上与 Swift 3.0 版本的应用程序和编译库相互调用。这样,ABI 的稳定性将保证一定程度的二进制兼容性,即使源语言发生了变化,并且第三方更容易发布二进制库。另外,ABI 的稳定性将允许删除需要的Swift 标准库和二进制文件,就像目前情况下通过Xcode 创建的iOS 和OS X 应用程序一样。

Lattner 还解释说,大约会在 2016 年 8 月份左右开始这一特性的讨论并且会讨论什么时候把它纳入 Swift 语言中。目前尚不清楚 ABI 的稳定性是否会纳入 Swift 3.1 或 4.0 版本,但是 Lattner 期望它是一个优先级最高的功能。

Lattner 的声明引起了一些不满, 主要是关于 Swift 3 原计划的大多数目标是如何被取消的。其他的一些评论强调,Swift 刚开源的时候是如何定义 Swift 3 的初始范围的,是否是社区的提议驱使 Swift 在 ABI 稳定之前专注于更需要明确的其它方面的开发,苹果工程师 Greg Parker回复说,ABI 一旦定义了,就很难去改变,就如 OS X 和 iOS 的历史架构转换演示一样。特别地,他提到,Objective C ABI 在极少数情况下存在的有意或无意的缺陷主要是由于时间的压力,如用 BOOL 代替正确的布尔字符,或者由于使用传统的 GCC 而使用 setjmp-longjmp 异常处理机制而不是“零成本”异常处理,等等。所有的一切,他总结:

如果我们在 Swift 3 就试图冲破 ABI 稳定性的大门,我们肯定会以有意或无意的缺陷而结束 […]。能够花时间去做正确的事情是弥足珍贵的。

查看英文原文: Swift 3 Will Not Have a Stable ABI


感谢张龙对本文的审校。

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

2016 年 5 月 25 日 19:002389
用户头像

发布了 31 篇内容, 共 83302 次阅读, 收获喜欢 0 次。

关注

评论

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

如何选择:Bootstrap Or Layui

引花眠

bootstrap layui

全面了解CGI、FastCGI、PHP-FPM

书旅

CGI PHP-FPM Fast-CGI

JDK中居然也有反模式接口常量

看山

Java 源码阅读

16张图入门Nginx——(前端够用,运维入门)

执鸢者

nginx 运维 前端

Nginx之反向代理

xcbeyond

nginx 反向代理 代理

ARTS 07 - 使用 supervisor 配置 ngrok 内网穿透为守护进程

jerry.mei

算法 练习 ARTS 打卡计划 ARTS活动 内网穿透

航运区块链 抗疫危中有机

CECBC区块链专委会

区块链 航运

目前数字人民币试点仍是“4+1” 别误读了

CECBC区块链专委会

数字货币 央行 人民币

异常处理的那些事儿

松花皮蛋me

Java 设计模式

准时下班的秘密:集成 GitLab && JIRA 实现自动化工作流

Phoenix

团队协作 研发效能

spark学习之IDEA配置spark并wordcount提交集群

我是程序员小贱

SpringBoot系列(七):SpringBoot 中使用Redis缓存

xcbeyond

Java redis 微服务 springboot

ARTS打卡 第12周

引花眠

微服务 ARTS 打卡计划

结算场景下的跳坑记

墨凡

IT人为什么难以拿高薪?

看山

成长 随笔杂谈 薪资 心灵鸡汤

毕玄大佬的分享以及给我的感悟

白色蜗牛

Java 程序员 技术 职场 架构师

[python基础]3 python数据类型下篇(不得不看的字典,列表大总结)

我是程序员小贱

SpringBoot系列(八):SpringBoot 中的事务处理

xcbeyond

Java 微服务 事务 springboot

Java统一异常处理(配置文件集中化定义)

xcbeyond

Java 架构 后端 统一异常

区块链技术--公证人机制

CECBC区块链专委会

区块链 数字货币 公证人

正则表达式位置匹配——匹配两个特殊符号中间的内容

jerry.mei

Java 正则表达式 前端 字符串匹配

蓝绿部署、金丝雀发布(灰度发布)、AB测试

看山

微服务 持续集成

一次由默认参数引起的思考

Lart

编程 思考

螺旋矩阵算法,臭代码解析,微服务架构 Service Mesh 服务网格 RPC 协议实现原理 Dubbo 通讯协议,John 易筋 ARTS 打卡 Week 13

John(易筋)

ARTS 打卡计划

这些年看过的Linux相关书籍推荐

我是程序员小贱

[python基础]2 python数据类型上篇

我是程序员小贱

Rust特征与泛型区别点

编号94530

rust 泛型 封装、继承、多态

华为的“少年天才”攀登者,出发向智能存储的“奥林帕斯山”

脑极体

这样看mybatis,谁都会分析源码!

诸葛小猿

源码 mybatis mybatis源码

Bash 脚本的单元测试

柴锋

bash Linux DevOps Unit Test Shell

python必备知识总结

我是程序员小贱

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Swift 3 将不包含稳定的ABI-InfoQ