FCon7折倒计时最后一周:日程已上线70%!查看详情>>> 了解详情
写点什么

Swift 4 ABI 稳定性的征途

  • 2017-02-09
  • 本文字数:1021 字

    阅读完需:约 3 分钟

最近发布在swift-evolution 邮件杂志上的《Swift ABI 稳定性宣言》旨在汇编公开宣称Swift ABI 稳定前所需解决的所有问题。

《Swift ABI 稳定性宣言》的作者——苹果公司工程师 Michael Ilseman 写道,ABI 稳定性的目标包含以下两个主要部分:

  • 定义一个模块文件,这个模块文件包含了 Swift 编译器关于把公共框架的 API 与在运行时加载的可执行代码捆绑在一起的描述的标准化表示。
  • 定义一系列影响低级别细节的约定,例如如何调用函数,如何在内存中表示数据和元数据等。

Ilseman 特别指出需要致力于以下六个方面:

  • 数据布局,主要是定义如何在内存中布置 struct 和 class 实例。
  • 类型元数据,要求有特定的内存布局或 API 查询。
  • name mangling ,主要是定义编译器如何分别标识外部符号,例如类型和函数。
  • 函数调用约定,主要是定义如何将参数传入 / 传出函数,以及该保留哪些寄存器等。
  • Swift runtime ,主要是提供动态转换、引用计数、反射等的基本机制,属于 ABI 的一部分。
  • 标准库,它的 API 是 ABI 的一部分,应用程序和库都会调用它。

ABI 稳定性是 Swift 4 计划的优先级最高的功能之一,对第三方框架开发人员至关重要。正如 InfoQ报道所指出,Swift 3 因为无法定义锁定ABI 之前需要定义的一些方面,所以没有实现ABI 的稳定性。在最近的 Accidental TechS 播客采访中,前苹果工程师兼 Swift 创始人 Chris Lattner 表示,ABI 稳定性对于应用程序开发人员来说并不重要,但“对苹果公司来说非常重要”,并且它是公司内部采用 Swift 的关键因素:

要真正地在苹果公司全面采用 Swift,Swift 团队必须实现一些特定目标。ABI 稳定性是阻止框架开发人员采用 Swift 的首要因素。这是一件非常重要的事情,也是 ABI 稳定性总是排在很高优先等级的原因之一。

实际上,目前仍然不完全清楚 Swift 4 ABI 是否能被宣称为具有稳定性。Lattner 说,这可能受两个因素的影响,它们是 ABI 稳定性包含的工作量以及它可能不是 Swift 社区最重要的事情。

如果他们什么时候决定专注于 Swift 4 中其他比 ABI 稳定性更重要的方面,我也不会感到惊讶。

Lattner 指出了一些 Swift 社区中排在更高优先级别的问题:比如使编译器更具可靠性,更准确的错误提示,加快编译速度,以及使 Swift 更适用于大型项目。

查看英文原文 The Road to Swift 4 ABI Stability


感谢王纯超对本文的审校。

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

2017-02-09 18:002360
用户头像

发布了 22 篇内容, 共 46648 次阅读, 收获喜欢 3 次。

关注

评论

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

测试人生 | 40+的年龄50W+的年薪,2线城市入职名企,他曾想放弃测试?

霍格沃兹测试开发学社

测试人生 | 专科学历入职世界500强企业,二线城市年薪超30W,这个80后小哥哥很赞!

霍格沃兹测试开发学社

构建开放、智能的企业数字化转型2.0平台,加速运营商创新升级

鲸品堂

IT 运营商

技术分享 | Web测试方法与技术实战演练

霍格沃兹测试开发学社

英特尔与 AMD 谁更强?

雨果

英特尔 AMD

FinOps能力成熟度模型启动,灵雀云助力云原生降本增效标准制定

York

云计算 云原生 能力成熟度模型 降本增效 FinOps

技术分享 | Web自动化之Selenium安装

霍格沃兹测试开发学社

技术分享 | SeleniumIDE用例录制

霍格沃兹测试开发学社

技术分享 | Selenium 测试用例编写

霍格沃兹测试开发学社

把收藏力拉满,前端 50 个优质 Web 在线资源~

掘金安东尼

前端 9月月更

经典面试题-元组和列表的区别

霍格沃兹测试开发学社

测试人生 | 97年双非学历的小哥哥,2线城市涨薪100%,我酸了......

霍格沃兹测试开发学社

测试人生 | 二线城市涨薪近10万 ,还能955,这样的机会你想不想要?

霍格沃兹测试开发学社

【JavaScript】巩固JS开发中十个常用功能/案例(1-10)

海底烧烤店ai

算法 前端 JavaScrip 9月月更

教你如何一分钟内玩过《羊了个羊》| 傻瓜式操作,包教包会

bug菌

9月月更 羊了个羊 微信小程序-游戏

一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?

霍格沃兹测试开发学社

测试人生 | 为了娃的奶粉钱,测试媛妈妈拿出考研的拼劲,半年终圆大厂梦!

霍格沃兹测试开发学社

【微信小程序】——Mobx全局数据共享和分包

海底烧烤店ai

微信小程序 前端 JavaScrip 9月月更

云渲染和传统渲染农场有什么区别?

Renderbus瑞云渲染农场

云渲染 云渲染农场 渲染农场 Renderbus瑞云渲染

测试人生 | 三十而立终圆大厂梦,测试开发开启新征程

霍格沃兹测试开发学社

在线帮助中心-帮助客户更快上手使用你的产品

Baklib

帮助文档

上海交通大学OpenHarmony技术俱乐部正式揭牌成立

Geek_2d6073

测试人生 | 入行3年,年薪36W+,从外包到知名互联网公司,疫情之下薪资不止翻倍~

霍格沃兹测试开发学社

经典面试题-显式等待与隐式等待

霍格沃兹测试开发学社

经典面试题-Python装饰器

霍格沃兹测试开发学社

测试人生 | 毕业2年未满,0经验拿下知名互联网企业30W 年薪,他是怎么做到的?

霍格沃兹测试开发学社

安全419《高级威胁检测与响应解决方案》系列访谈——未来智安(XDR SEC)篇

未来智安XDR SEC

网络安全 威胁检测 XDR扩展威胁检测响应

经典面试题-平时用的测试框架是什么?pytest框架下怎么入参?

霍格沃兹测试开发学社

一道大厂测试开发面试真题,你需要几分钟解答?

霍格沃兹测试开发学社

OSCS开源安全周报第11期:本月微软补丁日修复 vscode 漏洞,请开发者留意自己使用的 vscode 是否受该漏洞影响

墨菲安全

golang vscode 开源安全 软件供应链安全

uni-app黑马优购项目学习记录(二)

海底烧烤店ai

JavaScript 小程序 前端 9月月更

  • 扫码添加小助手
    领取最新资料包
Swift 4 ABI稳定性的征途_移动_Sergio De Simone_InfoQ精选文章