Swift 3.0 Preview 1 Released!
JUNE 13, 2016Ted Kremenek Ted Kremenek
We are very pleased to announce Developer Preview 1 of Swift 3.0!
As described in the Swift 3.0 Release Process, developer previews (i.e., “seeds” or “betas”) provide qualified builds of Swift 3 that are more stable than just grabbing the latest snapshot of master (i.e., tip-of-trunk development). Developer previews capture Swift 3 as a work-in-progress and should not be considered the final version of Swift 3 unless otherwise stated.
Implemented Swift Evolution Proposals
The following Swift Evolution proposals are newly implemented in Swift 3.0 Preview 1:
SE-0002: Removing currying func declaration syntax
SE-0003: Removing var from Function Parameters
SE-0004: Remove the ++ and -- operators
SE-0005: Better Translation of Objective-C APIs Into Swift
SE-0006: Apply API Guidelines to the Standard Library
SE-0007: Remove C-style for-loops with conditions and incrementers
SE-0008: Add a Lazy flatMap for Sequences of Optionals
SE-0016: Adding initializers to Int and UInt to convert from UnsafePointer and UnsafeMutablePointer
SE-0017: Change Unmanaged to use UnsafePointer
SE-0019: Swift Testing
SE-0023: API Design Guidelines
SE-0028: Modernizing Swift’s Debugging Identifiers (__FILE__, etc)
SE-0029: Remove implicit tuple splat behavior from function applications
SE-0031: Adjusting inout Declarations for Type Decoration
SE-0032: Add first(where:) method to SequenceType
SE-0033: Import Objective-C Constants as Swift Types
SE-0034: Disambiguating Line Control Statements from Debugging Identifiers
SE-0037: Clarify interaction between comments & operators
SE-0039: Modernizing Playground Literals
SE-0040: Replacing Equal Signs with Colons For Attribute Arguments
SE-0043: Declare variables in ‘case’ labels with multiple patterns
SE-0044: Import as Member
SE-0046: Establish consistent label behavior across all parameters including first labels
SE-0047: Defaulting non-Void functions so they warn on unused results
SE-0048: Generic Type Aliases
SE-0049: Move @noescape and @autoclosure to be type attributes
SE-0053: Remove explicit use of let from Function Parameters
SE-0054: Abolish ImplicitlyUnwrappedOptional type
SE-0055: Make unsafe pointer nullability explicit using Optional
SE-0057: Importing Objective-C Lightweight Generics
SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly
SE-0061: Add Generic Result and Error Handling to autoreleasepool()
SE-0062: Referencing Objective-C key-paths
SE-0064: Referencing the Objective-C selector of property getters and setters
SE-0065: A New Model For Collections and Indices
SE-0066: Standardize function type argument syntax to require parentheses
SE-0069: Mutability and Foundation Value Types
SE-0070: Make Optional Requirements Objective-C-only
SE-0071: Allow (most) keywords in member references
SE-0085: Package Manager Command Names
SE-0094: Add sequence(first:next:) and sequence(state:next:) to the stdlib
Downloads
Apple (Xcode)
Swift 3.0 Preview 1 is available for free as part of Xcode 8 beta 1.
Linux (Ubuntu 14.04 and Ubuntu 15.10)
Official binaries for Ubuntu 14.04 and Ubuntu 15.10 are available for download on Swift.org.
Documentation
An updated version of The Swift Programming Language for Swift 3.0 is now available on Swift.org. It is also available for free on Apple’s iBooks store.
Foundation and Linux (Core Libraries)
Not all of the NS prefix removal changes have propagated to the Core Libraries implementation of Foundation APIs. This should be resolved in a future beta.
Migrating to Swift 3
Swift 3 is a source-breaking release over Swift 2.2.1. It contains many syntactic refinements and improvements, but also a huge number of changes for how Objective-C APIs import into Swift due to SE-0005. Please consult the migration guide for guidance and tips for migrating to Swift 3.
北京时间6月14日,苹果开源语言的高级经理Ted Kremenek在Swift官方博客上发布了一篇题为“Swift 3.0 Preview 1 Released!”的文章,介绍了Swift 3.0的第一个开发者预览版:
正如Swift 3.0发布流程中提到的那样,新的3.0开发者预览版(包括seed或beta版)提供了合格的Swift 3 build包,而不仅是抓取master分支(即tip-of-trunk开发)上的最新快照,这种方式所提供的Swift库更为稳定。
目前Swift 3的所有开发者预览版都还处于开发阶段,若非特别注明,都不是Swift 3的最终版。
下面列出了本次在Swift 3.0开发者预览版第一版中所实现的Swift改进提案,此前为大家关注的几项变动也在其中:
SE-0002: 删除currying func声明语法
SE-0003: 函数参数中不再使用var关键字
SE-0004: 删除++与–操作符
SE-0005: 将Objective-C的API更好地接入Swift中
SE-0006: 将API指南应用于标准库中
SE-0007: 移除了C语言风格的for循环(条件与增量下)
SE-0008: 为可选序列增加一个Lazy flatMap
SE-0019: Swift测试
SE-0023: API设计指南
SE-0028: 更新Swift的debug标识符(如__FILE__等)
SE-0048: 泛型类型别名
SE-0049: 将声明式@noescape与@autoclosure改为类型属性
其他变更还有:
SE-0016: Adding initializers to Int and UInt to convert from UnsafePointer and UnsafeMutablePointer
SE-0017: Change Unmanaged to use UnsafePointer
SE-0029: Remove implicit tuple splat behavior from function applications
SE-0031: Adjusting inout Declarations for Type Decoration
SE-0032: Add first(where:) method to SequenceType
SE-0033: Import Objective-C Constants as Swift Types
SE-0034: Disambiguating Line Control Statements from Debugging Identifiers
SE-0037: Clarify interaction between comments & operators
SE-0039: Modernizing Playground Literals
SE-0040: Replacing Equal Signs with Colons For Attribute Arguments
SE-0043: Declare variables in ‘case’ labels with multiple patterns
SE-0044: Import as Member
SE-0046: Establish consistent label behavior across all parameters including first labels
SE-0047: Defaulting non-Void functions so they warn on unused results
SE-0053: Remove explicit use of let from Function Parameters
SE-0054: Abolish ImplicitlyUnwrappedOptional type
SE-0055: Make unsafe pointer nullability explicit using Optional
SE-0057: Importing Objective-C Lightweight Generics
SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly
SE-0061: Add Generic Result and Error Handling to autoreleasepool()
SE-0062: Referencing Objective-C key-paths
SE-0064: Referencing the Objective-C selector of property getters and setters
SE-0065: A New Model For Collections and Indices
SE-0066: Standardize function type argument syntax to require parentheses
SE-0069: Mutability and Foundation Value Types
SE-0070: Make Optional Requirements Objective-C-only
SE-0071: Allow (most) keywords in member references
SE-0085: Package Manager Command Names
SE-0094: Add sequence(first:next:) and sequence(state:next:) to the stdlib
下载:
苹果(Xcode)
Swift 3.0预览版第一版目前可作为Xcode 8 beta 1的一部分免费下载。
Linux (Ubuntu 14.04 and Ubuntu 15.10)
可用于Ubuntu 14.04和Ubuntu 15.10的官方版目前可在Swift.org下载。
文档:
适用于Swift 3.0的《Swift编程语言》文档目前可以在Swift.org下载,在苹果的iBooks商店也可以免费下载。
迁移到Swift 3
Swift 3与Swift 2.2.1在代码上变化极大,包含了许多语法优化与更新,但在Objective-C API接入Swift的方式上也有巨大的变化(SE-0005),请参见迁移指南来查看迁移到Swift 3的指南与技巧。
(本文参考自Swift官方博客, csdn.net)