LoginSignup
8
9

More than 5 years have passed since last update.

Swift3リリースとこれからの対応

Last updated at Posted at 2016-09-20

Swift3がリリースされてから、約一週間が過ぎました。すでにサードパーティーのライブラリなどは、Swift2.3/3に対応しているものも増えてきました。
ここでは、個人的な記録として現時点でのSwiftの変更点を挙げておきます。すでに知ってる方はスルーしていただければと思います。

では、以下が2016/09/21時点でacceptされたのSwift Evolutionとなります。

Swift Evolutionのステータス

Active reviews

SE-0143
Conditional conformances

Upcoming reviews

(none)

Proposals awaiting scheduling

(none)

Accepted (awaiting implementation)

This is the list of proposals which have been accepted for inclusion into Swift, but they are not implemented yet, and may not have anyone signed up to implement them. If they are not implemented in time for Swift 3, they will roll into a subsequent release.

SE-0042
Flattening the function type of unapplied method references
SE-0068
Expanding Swift Self to class members and value types
SE-0075
Adding a Build Configuration Import Test
SE-0080
Failable Numeric Conversion Initializers
SE-0082
Package Manager Editable Packages
SE-0104
Protocol-oriented integers
SE-0110
Distinguish between single-tuple and multiple-argument function types
SE-0138
UnsafeRawBufferPointer
SE-0139
Bridge Numeric Types to NSNumber and Cocoa Structs to NSValue
SE-0141
Availability by Swift version
SE-0142
Permit where clauses to constrain associated types

Implemented (Swift 4)

(none)

Implemented (Swift 3.1)

SE-0045
Add prefix(while:) and drop(while:) to the stdlib

Implemented (Swift 3.0.1)

SE-0140
Bridge Optional As Its Payload Or NSNull

Implemented (Swift 3)

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-0025
Scoped Access Level
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-0035
Limiting inout capture to @noescape contexts
SE-0036
Requiring Leading Dot Prefixes for Enum Instance Member Implementations
SE-0037
Clarify interaction between comments & operators
SE-0038
Package Manager C Language Target Support
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-0052
Change IteratorType post-nil guarantee
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-0060
Enforcing order of defaulted parameters
SE-0061
Add Generic Result and Error Handling to autoreleasepool()
SE-0062
Referencing Objective-C key-paths
SE-0063
SwiftPM System Module Search 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-0067
Enhanced Floating Point Protocols
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-0076
Add overrides taking an UnsafePointer source to non-destructive copying methods on UnsafeMutablePointer
SE-0077
Improved operator declarations
SE-0081
Move where clause to end of declaration
SE-0085
Package Manager Command Names
SE-0086
Drop NS Prefix in Swift Foundation
SE-0088
Modernize libdispatch for Swift 3 naming conventions
SE-0089
Renaming String.init(_: T)
SE-0091
Improving operator requirements in protocols
SE-0092
Typealiases in protocols and protocol extensions
SE-0093
Adding a public base property to slices
SE-0094
Add sequence(first:next:) and sequence(state:next:) to the stdlib
SE-0095
Replace protocol syntax with P1 & P2 syntax
SE-0096
Converting dynamicType from a property to an operator
SE-0099
Restructuring Condition Clauses
SE-0101
Reconfiguring sizeof and related functions into a unified MemoryLayout struct
SE-0102
Remove @noreturn attribute and introduce an empty Never type
SE-0103
Make non-escaping closures the default
SE-0106
Add a macOS Alias for the OSX Platform Configuration Test
SE-0107
UnsafeRawPointer API
SE-0109
Remove the Boolean protocol
SE-0111
Remove type system significance of function argument labels
SE-0112
Improved NSError Bridging
SE-0113
Add integral rounding functions to FloatingPoint
SE-0114
Updating Buffer "Value" Names to "Header" Names
SE-0115
Rename Literal Syntax Protocols
SE-0116
Import Objective-C id as Swift Any type
SE-0117
Allow distinguishing between public access and public overridability
SE-0118
Closure Parameter Names and Labels
SE-0120
Revise partition Method Signature
SE-0121
Remove Optional Comparison Operators
SE-0124
Int.init(ObjectIdentifier) and UInt.init(ObjectIdentifier) should have a bitPattern: label
SE-0125
Remove NonObjectiveCBase and isUniquelyReferenced
SE-0127
Cleaning up stdlib Pointer and Buffer Routines
SE-0128
Change failable UnicodeScalar initializers to failable
SE-0129
Package Manager Test Naming Conventions
SE-0130
Replace repeating Character and UnicodeScalar forms of String.init
SE-0131
Add AnyHashable to the standard library
SE-0133
Rename flatten() to joined()
SE-0134
Rename two UTF8-related properties on String
SE-0135
Package Manager Support for Differentiating Packages by Swift version
SE-0136
Memory Layout of Values
SE-0137
Avoiding Lock-In to Legacy Protocol Designs

Implemented (Swift 2.2)

SE-0001
Allow (most) keywords as argument labels
SE-0011
Replace typealias keyword with associatedtype for associated type declarations
SE-0014
Constraining AnySequence.init
SE-0015
Tuple comparison operators
SE-0020
Swift Language Version Build Configuration
SE-0021
Naming Functions with Argument Labels
SE-0022
Referencing the Objective-C selector of a method
SE-0028
Modernizing Swift's Debugging Identifiers (FILE, etc)

個人的見解

これらは、Swift Programming Language Evolution: Proposal Statusから引っ張ってきたものです。また、別途参考資料として小野 将之(おの まさゆき)氏Build insiderの記事が、Swiftのこれまでの遍歴や、Swift3のトピック、Swift4への考察が詳しくまとれられているので、まだ読んでいない方は、是非一読する事をお勧めします。

本当に、上記の記事が素晴らしいので言う事は無いのですが、Swiftを追いかけるには英語でやりとりされるメーリングリストを毎日眺め、Phantom Typeなど、他の言語仕様にふれ、IPv6やASTなどの技術的な事など、勉強する事・出来る事が山のように出てきます。Swift2 -> 3へはそこまで破壊的な変更(クラスから構造体になったものなどは別として)は、大人しい印象ですが、Swift4へはABI(Application Binary Interface)などの変更もあり、今の内に自分の中でキャッチアップできていない部分を追いかける、チャンスかなと思っています。

おそらく、年末までには恒例のSwift3対応と、ATSの対応があり忙しいとは思いますが、Haskell本などを読んで別の角度から、Swiftを楽しめればなと思いました。

謝辞

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9