写点什么

Apple 开源了 Swift Migrator

  • 2017-07-12
  • 本文字数:675 字

    阅读完需:约 2 分钟

Apple 近期在 WWDC 2017 大会上宣布,已经开源在了 Xcode 9 中提供的的 Swift 4 Migrator。

Swift Migrator 现已完全重写,业已成为编译器的一个组成部分,而不再是一个独立的工具,并对 Swift 3 和 Swift 4 提供同等优秀的支持。Migrator 的工作是通过下面一系列的测试(Pass)完成的:

  • Pre-fix-it 测试。在编译器不能对主输入文件做类型检查时,执行该测试。在此情况下,Migrator 会应用编译器给出的所有 fix-it 建议,该过程至多重新尝试两次,目的在于生成代码的抽象语法树(AST)表示。
  • AST 测试。如果开发人员需要迁移 Swift 4 之前的代码,那么需要在 Pre-fix-it 测试之后开展 AST 测试。测试包括考虑所有以前的 SDK 在 API 层次上的改进,使得源代码能匹配新的 SDK API。
  • Post-fix-it 测试。该测试尝试去应用所有 Swift 4 模式编译器给出的 fix-it 建议。这一步骤最多执行七次,因为在每个 fix-it 测试过程中可能会出现新的问题。

在 Pre-fix-it 和 Post-fix-it 测试阶段,对于所有关联到错误的 fix-it,Migrator 是默认应用的;而对于关联到警告的 fix-it,Migrator 是选择性使用的。

值得注意的是,虽然Apple 鼓励项目迁移到Swift 4,但代码迁移并非是严格要求的,因为Swift 3.2 和4 的编译目标可以共存并链接到一起。此外,开发人员不应该期待被迁移的代码块会自动生成一个可编译项目,迁移后的代码也无法保证是正确的,或是符合语言习惯的。一系列迁移到Swift 4 的已知问题,以及所有可用的解决方案,都以文档形式提供于 Xcode 9 的发行说明中,文档对所有注册的开发人员可用。

查看英文原文: Apple Open-sources the Swift Language Migrator

2017-07-12 19:002609
用户头像

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

关注

评论

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

一文读懂 MySQL Explain 执行计划

老周聊架构

MySQL 数据库 3月月更 4月月更

MySQL性能优化的5个维度

蝉沐风

MySQL 性能优化

三高Mysql - Mysql索引和查询优化(偏理论部分)

懒时小窝

MySQL 数据库

Linux驱动开发-编写DS18B20驱动

DS小龙哥

4月月更

报名中2022南京智博会 第十四届南京国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

围观报名中2022第十四届南京国际人工智能产品展会

InfoQ_caf7dbb9aa8a

【课程汇总】OpenHarmony成长计划知识赋能第二期系列课程(附链接)

OpenHarmony开发者

OpenHarmony 成长计划

微服务从代码到k8s部署应有尽有系列(四、用户中心)

万俊峰Kevin

微服务 RPC web开发 go-zero Go 语言

在线XML转HTML工具

入门小站

工具

谈谈高并发系统的一些解决方案

xiaoxi666

高并发 高并发系统设计 高并发系统

普渡科技联合韩国VD Company参展IFS创业博览会,引爆韩国服务机器人市场

江湖老铁

vivo 短视频推荐去重服务的设计实践

vivo互联网技术

服务器 架构设计 布隆过滤器

web前端培训-程序员失业后怎样才能再就业

@零度

web前端开发

模块7作业-王者荣耀商城异地多活架构设计

卡西毛豆静爸

#架构实战营

基于Apache组件,分析对象池原理

Apache redis 构架 池化思想 对象池

我要批判架构师!

博文视点Broadview

王者荣耀商城异地多活架构设计

石小天

「架构实战营」

容器 & 服务:Kubernetes运维记录

程序员架构进阶

Kubernetes 容器 4月日更 4月月更

怒肝 JavaScript 数据结构 — 数组篇(一)

杨成功

JavaScript 数据结构 4月月更

新的篇章,Pancake开通STI的流动性LP质押

BlockChain先知

Linux之ssh-copy-id命令

入门小站

Linux

在线OPML美化格式化工具

入门小站

工具

智能时代,应该如何培养中小学AI教师?

脑极体

全链路压测(八):构建三大模型

老张

性能测试 全链路压测 稳定性保障

基于python的struct模块实现简单的ByteBuf

歆晨技术笔记

架构训练营-作业七

默光

异地多活 架构训练营5期

在 Flutter 和 Dart 中取消 Future 的 3 种方法

坚果

4月日更

【Go实现】实践GoF的23种设计模式:单例模式

元闰子

Go 设计模式 单例模式

这样的 Python ,你学得会吗

海拥(haiyong.site)

Python 4月月更

FlyFish模版中心正式上线!快来领取社区周边礼物

云智慧AIOps社区

开源 大前端 数据可视化 大屏可视化

Kubernetes官方java客户端之八:fluent style

程序员欣宸

4月月更

Apple开源了Swift Migrator_Linux_Sergio De Simone_InfoQ精选文章