写点什么

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:002337
用户头像

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

关注

评论

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

NGINX从入门到实践-基础篇

小志Codings

nginx Python3

20《重学JAVA》--集合(二)

杨鹏Geek

Java25周年 28天写作 12月日更

【CSS 学习总结】目录 - CSS 知识点梳理

Brave

CSS 12月日更

【LeetCode】一年中的第几天Java题解

Albert

算法 LeetCode 12月日更

念叨了一年的游戏叙事书中文版终于出了!

博文视点Broadview

一个简单的单体服务流量标记demo

zuozewei

Java 性能测试 全链路压测 12月日更

Python 自动化领域起点篇,Selenium WebDriver 学习第1篇

梦想橡皮擦

12月日更

元宇宙地产:品牌和投资者的大好机会?

devpoint

以太坊 NFT 元宇宙 12月日更

webpack打包过程如何调试?

汪子熙

前端 前端开发 webpack 28天写作 12月日更

语音信号处理 4:语音信号在时域和频域的表示

轻口味

28天写作 12月日更

元宇宙100讲-0x007

hackstoic

元宇宙

如何用Docker Compose部署项目?

秦怀杂货店

Docker springboot

synchronized源码分析之锁的膨胀

Ayue、

synchronized 锁机制 锁升级

React进阶(十二):HOOK

No Silver Bullet

React Hooks 12月日更

React进阶(十一):create-react-app脚手架关闭 eslint 提醒

No Silver Bullet

React 12月日更 creat-react-app

dart系列之:手写Library,Library编写最佳实践

程序那些事

flutter dart 程序那些事 12月日更

XEngine:深度学习模型推理优化

华为云开发者联盟

深度学习 模型推理 显存优化 计算优化 XEngine

[Pulsar] Consumer消费

Zike Yang

Apache Pulsar 12月日更

开始了解DevSecOps 1

搬砖的周狮傅

DevSecOps

Android EventBus 集成问题小结

阿策小和尚

28天写作 Android 小菜鸟 12月日更

面试官:HashSet如何保证元素不重复?

王磊

一文详解TDSQL PG版Oracle兼容性实践

腾讯云数据库

tdsql 国产数据库

云图说|初识数据库和应用迁移UGO

华为云开发者联盟

数据库 华为云 UGO 异构迁移

又拿奖了!腾讯云原生数据库TDSQL-C斩获2021PostgreSQL中国最佳数据库产品奖

腾讯云数据库

tdsql 国产数据库

如何实现Redis限流

喵叔

28天写作 12月日更

什么是VLAN?如何配置?VLAN间路由又是怎样的?一文了解!

Ethereal

VLAN 网络技术

Flutter开发小技巧【Flutter专题23】

坚果

flutter 28天写作 12月日更

跟着动画学Go数据结构之堆排序

宇宙之一粟

golang 数据结构 排序算法 Go 语言 12月日更

Istio的认证授权机制分析

xcbeyond

istio 认证授权 28天写作 12月日更

Kvrocks 在 RocksDB 上的优化实践

Kvrocks

Redis 协议

JDK ThreadPoolExecutor核心原理与实践

vivo互联网技术

jdk ThreadPoolExecutor Java 开发

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