Apple’s programing language Swift saw its first preview release branch for 3.0 hit yesterday as the programming language moves closer to a finalized 3.0 release due later this year. Though nowhere near a final release of Swift 3.0, this marks the beginning of the major Swift revisions that developers will see coming later this year.
According to the Swift-Evolution GitHub page, the primary goal of Swift 3.0 is to “solidify and mature the Swift language and development experience.” As it turns out, this also means that there will be source breaking changes this time around, but Swift 3.x and 4+ are said to hopefully remain as source compatible as possible.
Developers looking to test the Swift 3.0 preview release branch can head over to the Swift snapshots download area to grab a recent snapshot copy that can then be implemented into Ubuntu 14.04, 15.10 or directly into Apple’s Xcode. With WWDC 2016 coming in the following weeks, it wouldn’t be too far-fetched to believe that later Xcode betas might have the latest Swift 3.0 previews already integrated with them.
Below is a list of the currently implemented proposals for Swift 3.0:
Update 06/01/2016 5:16 AM PDT: It appears that there may have been a mistake in what was originally titled as the first of the Swift 3.0 previews. On the official Swift Snapshots area where Swift 3.0 Preview 1 was originally listed yesterday, the snapshot download has now been simply renamed to Trunk Development (master). We’ll keep our eyes peeled for any updates here, but it is in this author’s opinion that we might see the first of the Swift 3.0 previews officially releasing with the upcoming Xcode beta releases around WWDC.
- 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-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-0069: Mutability and Foundation Value Types
- SE-0070: Make Optional Requirements Objective-C-only
- SE-0071: Allow (most) keywords in member references
- SE-0072: Fully eliminate implicit bridging conversions from Swift
- SE-0085: Package Manager Command Names
- SE-0094: Add sequence(first:next:) and sequence(state:next:) to the stdlib