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

Ben*_*ero 15 versioning xcode choice swift

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

今天,我发现Swift 3.3和3.4存在。我当时假设3.2是3的最新版本,可用于迁移到4、4.2和5。这种误解主要是由于Swift.org官方Git存储库Xcode发行说明没有牛逼何况他们在所有

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

下表已过时,仅供参考,因此该问题很有意义。我在下面的答案中发布了此表的更新版本。

一个复杂的表,以Swift和Xcode的许多版本为轴,而支持版本为内容

紫色空间中出现了什么?专门用于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
  3. Xcode 9.3和9.3.1支持Swift 3.3。Xcode 9.4仅支持Swift 3.4
  4. Xcode版本9.3至9.4支持Swift 3.3。Swift 3.4仅在Xcode 10 beta中受支持。

认为没有其他可能性。不过,请让我知道我是否不在基地。

Ben*_*ero 28

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

一张图表,描述了不同版本的Swift与它们各自的Xcode版本相比。 上次更新时间2019-09-10

自从我上次这样做以来,我发现事实上,新版本的Xcode不支持从所有旧版本的Swift迁移。我确实明确测试过Xcodes 10.2至11不支持Swift 3.x和更早版本,因此我将它们涂成白色。我还没有时间测试通过10.1的Xcode 8.3,但是我怀疑它们将迁移3.x,但不会迁移2.x或更早的版本。这就是为什么现在有一个紫色大块的原因

  • 谢谢@BenLeggiero!很有帮助! (2认同)

ric*_*ter 6

这不是填满图表中所有未知空间的完整答案,但是无论如何,我可以填写一些有用的内容...

Swift 3.x?

当Swift 4开发进行时(并在WWDC17上首次正式宣布),编译器的版本号从该语言的版本中派生出来。(这很像说ANSI C标准与clang和GCC编译器具有不同的版本控制。)

语言版本号跟踪源兼容性,包括语言定义本身,标准库的源兼容性,以及Apple平台SDK在Swift中的显示方式。如果您具有“ Swift 3”代码,则在使用该-swift-version 3选项时,应该能够使用Swift编译器的版本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停止包括Swift 2.3编译器,而Swift 3.1成为该版本中唯一受支持的Swift语言。

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

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

其他资源:旧的Xcode下载

泄气?

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

  • 在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版本的好处。