哪些版本的Xcode支持什么版本的Swift?

时间:2018-07-17 16:58:24

标签: swift xcode versioning choice

我在Swift中开发应用程序为生。我喜欢这种语言,并且会尽可能地遵循它。但是,无论是事实还是事实,无论是我蒙蔽了我的眼光,还是苹果公司对此保持沉默,都是如此。

今天,我发现Swift 3.3和3.4存在。我当时假设3.2是3的最新版本,可用于迁移到4、4.2和5。这种误解主要是由于Swif.orgthe official Git repo和{{ 3}}根本没有提到他们。

因此,我认为它们也是过渡性的,但是我不知道它们出现在什么IDE或编译器中,或者附带什么警告。下表总结了我的知识:

Xcode Release Notes

紫色行中的内容是什么?专门针对3.3和3.4行,但是如果您知道其他行,那也将有所帮助!

权威资料也将很棒。


主要问题的可能答案如下:

  1. Swift 3.3仅处于Xcode 9.3 beta中,从未公开。 Swift 3.4仅适用于Xcode 9.3-9.4
  2. Swift 3.3仅在Xcode 9.3中受支持; Xcode 9.3.1和9.4支持Swift 3.4。 Xli 9.3和9.3.1支持
  3. Swift 3.3。 Xcode 9.4仅支持Swift 3.4
  4. Xli 9.3至9.4支持
  5. Swift 3.3。 Swift 3.4仅在Xcode 10 beta中受支持。

我不认为还有另一种可能性。不过请让我知道我是否不在基地。

2 个答案:

答案 0 :(得分:5)

这不是填充图中所有未知空间的完整答案,但是也许我可以填写一些有用的东西,不管...

Swift 3.x?

Swift 4开发正在进行时(首次在WWDC17上正式宣布),编译器的版本号与该语言的版本无关。 (就像ANSI C标准与clang和GCC编译器具有不同的版本控制。)

语言版本号跟踪源兼容性-语言定义本身,标准库以及Apple平台SDK在Swift中的显示方式。如果您具有“ Swift 3”代码,则应该能够使用Swift编译器的版本3或使用-swift-version 3选项的任何更高版本的编译器进行编译。

但是“ Swift 3”(语言版本)也不是固定不变的。随着Swift的不断发展,对语言,标准库和SDK的更改纯粹是可用于Swift 3的。因此,如果您拥有Swift 3代码库并开始使用较新的编译器,则可以选择是否转换所有内容。到Swift 4,开始使用新的编译器功能,或保持与旧版Swift 3编译器的兼容性。

这意味着存在编译器版本到可能的语言兼容版本的映射:

  • Swift语言3.2是Swift编译器4.0的“ Swift 3模式”
  • Swift语言3.3是Swift编译器4.1的“ Swift 3模式”
  • Swift语言3.4是Swift编译器4.2的“ Swift 3模式”

尚无Swift 5(语言或编译器)版本,但是一旦发生这种情况,它很可能允许以-swift-version 4模式进行构建,从而创建“ Swift 4.3”语言版本。 (假设以后的Swift 4.x版本不会首先考虑这些数字。)

我不知道此答案的单一来源,但是您可以将其汇总为:

版本历史记录

对图表中过去的部分内容进行了一些小的更正:

  • Xcode 8包含两个单独的编译器版本,而不是一个带有-swift-version开关的编译器。 Xcode 8.3 stopped including the Swift 2.3 compiler,使Swift 3.1成为该版本中唯一受支持的Swift语言。

  • Xcode 7 / Swift 2从不支持仅编译Swift 1.x代码。在当前Xcode 10 beta之前的Xcode 7.2及更高版本中,仍然包括“转换为当前的Swift语法”迁移器,该迁移器理论上支持从任何较早版本的Swift进行迁移。

  • Xcode 6.0至6.2.x支持在OS X Mavericks(10.9)上运行Xcode。 Xcode 6.3是第一个需要OS X Yosemite(10.10)的人。

其他来源:old Xcode downloads

受困了吗?

我不确定此标签的适用程度...

  • 在Xcode 8.x包含Swift 2.3编译器的过程中,它完全受支持用于构建应用程序并提交到App Store。您可能会说,当时它还是“受挫”,因为苹果公司表示不会坚持下去,而Swift 3.0将是后来编译器向后兼容的第一个语言版本。

  • 在Xcode 9中已完全支持Swift 3.2-与Swift 2.3-> 3.0不同,Apple或Swift开源项目没有消息“先删除此版本,然后再将其删除”。明确存在Swift语言3.2、3.3和3.4版本是因为允许开发人员维护“ Swift 3”代码库,同时获得更新的编译器和IDE版本的好处。

答案 1 :(得分:5)

由于我一直在收集数据并进行测试,因此我将在此答案中将结果作为更新的图表发布:

A chard depicting the different versions of Swift as compared to their respective versions of Xcode. Last updated 2018-11-01