Skip to content

Commit feed996

Browse files
committed
Merge pull request #1 from apple/master
updates
2 parents 098296a + d6e6246 commit feed996

File tree

91 files changed

+10137
-420
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+10137
-420
lines changed

0000-template.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
* Proposal: [SE-NNNN](https://github.com/apple/swift-evolution/blob/master/proposals/NNNN-name.md)
44
* Author(s): [Swift Developer](https://github.com/swiftdev)
5-
* Status: **Awaiting review**
5+
* Status: **[Awaiting review](#rationale)**
66
* Review manager: TBD
77

88
## Introduction
@@ -50,3 +50,10 @@ automatically?
5050
Describe alternative approaches to addressing the same problem, and
5151
why you chose this approach instead.
5252

53+
-------------------------------------------------------------------------------
54+
55+
# Rationale
56+
57+
On [Date], the core team decided to **(TBD)** this proposal.
58+
When the core team makes a decision regarding this proposal,
59+
their rationale for the decision will be written here.

README.md

Lines changed: 90 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ concretely, this release is focused on several key areas:
3838
* *How do we maintain high performance?*: Resilient implementations often incur more execution overhead than non-resilient (or *fragile*) implementations, because resilient implementations need to leave some details unspecified until load time, such as the specific sizes of a class or offsets of a stored property.
3939
* **Portability**: Make Swift available on other platforms and ensure that one can write portable Swift code that works properly on all of those platforms.
4040
* **Type system cleanup and documentation**: Revisit and document the various subtyping and conversion rules in the type system, as well as their implementation in the compiler's type checker. The intent is to converge on a smaller, simpler type system that is more rigorously defined and more faithfully represented by the type checker.
41-
* **Complete generics**: Generics are used pervasively in a number of Swift libraries, especially the standard library. However, there are a number of generics features the standard library requires to fully realize its vision, including recursive protocol constraints, the ability to make a constrained extension conform to a new protocol (i.e., an array of `Equatable` elements is `Equatable`), and so on. Swift 3.0 should provide those generics features needed by the standard library, because they affect the standard library's ABI.
41+
* **Complete generics**: Generics are used pervasively in a number of Swift libraries, especially the standard library. However, there are a number of generics features the standard library requires to fully realize its vision, including recursive protocol constraints, the ability to make a constrained extension conform to a new protocol (i.e., an array of `Equatable` elements is `Equatable`), and so on. Swift 3.0 should provide those generics features needed by the standard library, because they affect the standard library's ABI. For more information on generics as envisioned for Swift, please see [Douglas Gregor's *Completing Generics* manifesto](https://github.com/apple/swift/blob/master/docs/GenericsManifesto.md).
4242
* **Focus and refine the language**: Despite being a relatively young language, Swift's rapid development has meant that it has accumulated some language features and library APIs that don't fit well with the language as a whole. Swift 3 will remove or improve those features to provide better overall consistency for Swift.
4343
* **API design guidelines**: The way in which Swift is used in popular
4444
libraries has almost as much of an effect on the character of Swift
@@ -82,6 +82,12 @@ sampling of potentially good ideas that are not in scope for Swift
8282
system to be a workaround that reduces the incentive for making the core
8383
language great.
8484

85+
* **Implicit conversions between numeric types**: We may do this in a future
86+
release, but there is simply too much work to be done first. Before we can
87+
loosen these type rules, we will need to speed up the type checker, redesign
88+
the numerics protocols, and implement a subtyping feature to express the
89+
permitted conversions. This won't all come together before Swift 3.0 ships.
90+
8591
* **Major new library functionality**: The Swift Standard Library is focused on
8692
providing core "language" functionality as well as common data structures. The
8793
"corelibs" projects are focused on providing existing Foundation functionality
@@ -95,64 +101,115 @@ sampling of potentially good ideas that are not in scope for Swift
95101

96102
### Implemented proposals for Swift 3
97103

98-
* [SE-0005: Better Translation of Objective-C APIs Into Swift](proposals/0005-objective-c-name-translation.md)
99-
* [SE-0019: Swift Testing](proposals/0019-package-manager-testing.md)
100-
* [SE-0031: Adjusting inout Declarations for Type Decoration](proposals/0031-adjusting-inout-declarations.md)
101-
* [SE-0023: API Design Guidelines](proposals/0006-apply-api-guidelines-to-the-standard-library.md)
102-
* [SE-0028: Modernizing Swift's Debugging Identifiers (\__FILE__, etc)](proposals/0028-modernizing-debug-identifiers.md)
103-
* [SE-0034: Disambiguating Line Control Statements from Debugging Identifiers](proposals/0034-disambiguating-line.md)
104-
105-
### Accepted proposals for Swift 3.0
106-
107104
* [SE-0002: Removing currying `func` declaration syntax](proposals/0002-remove-currying.md)
108105
* [SE-0003: Removing `var` from Function Parameters](proposals/0003-remove-var-parameters.md)
109106
* [SE-0004: Remove the `++` and `--` operators](proposals/0004-remove-pre-post-inc-decrement.md)
107+
* [SE-0005: Better Translation of Objective-C APIs Into Swift](proposals/0005-objective-c-name-translation.md)
108+
* [SE-0006: Apply API Guidelines to the Standard Library](proposals/0006-apply-api-guidelines-to-the-standard-library.md)
110109
* [SE-0007: Remove C-style for-loops with conditions and incrementers](proposals/0007-remove-c-style-for-loops.md)
110+
* [SE-0008: Add a Lazy flatMap for Sequences of Optionals](proposals/0008-lazy-flatmap-for-optionals.md)
111+
* [SE-0016: Adding initializers to Int and UInt to convert from UnsafePointer and UnsafeMutablePointer](proposals/0016-initializers-for-converting-unsafe-pointers-to-ints.md)
112+
* [SE-0019: Swift Testing](proposals/0019-package-manager-testing.md)
113+
* [SE-0023: API Design Guidelines](proposals/0006-apply-api-guidelines-to-the-standard-library.md)
114+
* [SE-0028: Modernizing Swift's Debugging Identifiers (\__FILE__, etc)](proposals/0028-modernizing-debug-identifiers.md)
111115
* [SE-0029: Remove implicit tuple splat behavior from function applications](proposals/0029-remove-implicit-tuple-splat.md)
116+
* [SE-0031: Adjusting inout Declarations for Type Decoration](proposals/0031-adjusting-inout-declarations.md)
117+
* [SE-0033: Import Objective-C Constants as Swift Types](proposals/0033-import-objc-constants.md)
118+
* [SE-0034: Disambiguating Line Control Statements from Debugging Identifiers](proposals/0034-disambiguating-line.md)
119+
* [SE-0037: Clarify interaction between comments & operators](proposals/0037-clarify-comments-and-operators.md)
120+
* [SE-0039: Modernizing Playground Literals](proposals/0039-playgroundliterals.md)
121+
* [SE-0040: Replacing Equal Signs with Colons For Attribute Arguments](proposals/0040-attributecolons.md)
122+
* [SE-0043: Declare variables in 'case' labels with multiple patterns](proposals/0043-declare-variables-in-case-labels-with-multiple-patterns.md)
123+
* [SE-0044: Import as Member](proposals/0044-import-as-member.md)
124+
* [SE-0046: Establish consistent label behavior across all parameters including first labels](proposals/0046-first-label.md)
125+
* [SE-0049: Move @noescape and @autoclosure to be type attributes](proposals/0049-noescape-autoclosure-type-attrs.md)
126+
* [SE-0053: Remove explicit use of `let` from Function Parameters](proposals/0053-remove-let-from-function-parameters.md)
127+
* [SE-0054: Abolish `ImplicitlyUnwrappedOptional` type](proposals/0054-abolish-iuo.md)
128+
* [SE-0055: Make unsafe pointer nullability explicit using Optional](proposals/0055-optional-unsafe-pointers.md)
129+
* [SE-0057: Importing Objective-C Lightweight Generics](proposals/0057-importing-objc-generics.md)
130+
* [SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly](proposals/0059-updated-set-apis.md)
131+
* [SE-0061: Add Generic Result and Error Handling to autoreleasepool()](proposals/0061-autoreleasepool-signature.md)
132+
* [SE-0064: Referencing the Objective-C selector of property getters and setters](proposals/0064-property-selectors.md)
133+
* [SE-0065: A New Model For Collections and Indices](proposals/0065-collections-move-indices.md)
134+
* [SE-0069: Mutability and Foundation Value Types](proposals/0069-swift-mutability-for-foundation.md)
135+
* [SE-0070: Make Optional Requirements Objective-C-only](proposals/0070-optional-requirements.md)
136+
* [SE-0071: Allow (most) keywords in member references](proposals/0071-member-keywords.md)
137+
* [SE-0072: Fully eliminate implicit bridging conversions from Swift](proposals/0072-eliminate-implicit-bridging-conversions.md)
138+
139+
### Accepted proposals which do not have a complete implementation
140+
141+
This is the list of proposals which have been accepted for inclusion into Swift,
142+
but they are not implemented yet, and may not have anyone signed up to implement
143+
them. If they are not implemented in time for Swift 3, they will roll into a
144+
subsequent release.
145+
146+
* [SE-0017: Change `Unmanaged` to use `UnsafePointer`](proposals/0017-convert-unmanaged-to-use-unsafepointer.md)
147+
* [SE-0025: Scoped Access Level](proposals/0025-scoped-access-level.md)
148+
* [SE-0032: Add `find` method to `SequenceType`](proposals/0032-sequencetype-find.md)
112149
* [SE-0035: Limiting `inout` capture to `@noescape` contexts](proposals/0035-limit-inout-capture.md)
113-
* [SE-0006: Apply API Guidelines to the Standard Library](proposals/0006-apply-api-guidelines-to-the-standard-library.md)
114-
* [SE-0005: Better Translation of Objective-C APIs Into Swift](proposals/0005-objective-c-name-translation.md)
115-
116-
## Development minor version: Swift 2.2
117-
118-
Expected release date: Spring 2016
119-
120-
This release will focus on fixing bugs, improving
121-
quality-of-implementation (QoI) with better warnings and diagnostics,
122-
improving compile times, and improving performance. It may also put
123-
some finishing touches on features introduced in Swift 2.0, and
124-
include some small additive features that don't break Swift code or
125-
fundamentally change the way Swift is used. As a step toward Swift
126-
3.0, it will introduce warnings about upcoming source-incompatible
127-
changes in Swift 3.0 so that users can begin migrating their code
128-
sooner.
129-
130-
### Implemented proposals for Swift 2.2
150+
* [SE-0036: Requiring Leading Dot Prefixes for Enum Instance Member Implementations](proposals/0036-enum-dot.md)
151+
* [SE-0038: Package Manager C Language Target Support](proposals/0038-swiftpm-c-language-targets.md)
152+
* [SE-0042: Flattening the function type of unapplied method references](proposals/0042-flatten-method-types.md)
153+
* [SE-0045: Add scan, prefix(while:), drop(while:), and iterate to the stdlib](proposals/0045-scan-takewhile-dropwhile.md)
154+
* [SE-0047: Defaulting non-Void functions so they warn on unused results](proposals/0047-nonvoid-warn.md)
155+
* [SE-0048: Generic Type Aliases](proposals/0048-generic-typealias.md)
156+
* [SE-0052: Change IteratorType post-nil guarantee](proposals/0052-iterator-post-nil-guarantee.md)
157+
* [SE-0060: Enforcing order of defaulted parameters](proposals/0060-defaulted-parameter-order.md)
158+
* [SE-0062: Referencing Objective-C key-paths](proposals/0062-objc-keypaths.md)
159+
* [SE-0063: SwiftPM System Module Search Paths](proposals/0063-swiftpm-system-module-search-paths.md)
160+
* [SE-0066: Standardize function type argument syntax to require parentheses](proposals/0066-standardize-function-type-syntax.md)
161+
* [SE-0067: Enhanced Floating Point Protocols](proposals/0067-floating-point-protocols.md)
162+
* [SE-0068: Expanding Swift `Self` to class members and value types](proposals/0068-universal-self.md)
163+
* [SE-0076: Add overrides taking an UnsafePointer source to non-destructive copying methods on UnsafeMutablePointer](proposals/0076-copying-to-unsafe-mutable-pointer-with-unsafe-pointer-source.md)
164+
* [SE-0080: Failable Numeric Conversion Initializers](proposals/0080-failable-numeric-initializers.md)
165+
* [SE-0082: Package Manager Editable Packages](proposals/0082-swiftpm-package-edit.md)
166+
167+
## Swift 2.2 - Released on March 21, 2016
168+
169+
[This release](https://swift.org/blog/swift-2-2-released/) focused on fixing
170+
bugs, improving quality-of-implementation (QoI)
171+
with better warnings and diagnostics, improving compile times, and improving
172+
performance. It put some finishing touches on features introduced in Swift 2.0,
173+
and included some small additive features that don't break Swift code or
174+
fundamentally change the way Swift is used. As a step toward Swift 3, it
175+
introduced warnings about upcoming source-incompatible changes in Swift 3
176+
so that users can begin migrating their code sooner.
177+
178+
Aside from warnings, a major goal of this release was to be as source compatible
179+
as practical with Swift 2.0.
180+
181+
### Implemented proposals in Swift 2.2
131182

132183
* [SE-0001: Allow (most) keywords as argument labels](proposals/0001-keywords-as-argument-labels.md)
133-
* [SE-0015: Tuple comparison operators](proposals/0015-tuple-comparison-operators.md)
134-
* [SE-0014: Constraining `AnySequence.init`](proposals/0014-constrained-AnySequence.md)
135184
* [SE-0011: Replace `typealias` keyword with `associatedtype` for associated type declarations](proposals/0011-replace-typealias-associated.md)
185+
* [SE-0014: Constraining `AnySequence.init`](proposals/0014-constrained-AnySequence.md)
186+
* [SE-0015: Tuple comparison operators](proposals/0015-tuple-comparison-operators.md)
187+
* [SE-0020: Swift Language Version Build Configuration](proposals/0020-if-swift-version.md)
136188
* [SE-0021: Naming Functions with Argument Labels](proposals/0021-generalized-naming.md)
137189
* [SE-0022: Referencing the Objective-C selector of a method](proposals/0022-objc-selectors.md)
138190

139-
### Accepted proposals for Swift 2.2
140-
* [SE-0008: Add a Lazy flatMap for Sequences of Optionals](proposals/0008-lazy-flatmap-for-optionals.md)
141-
* [SE-0020: Swift Language Version Build Configuration](proposals/0020-if-swift-version.md)
142191

143192
# Other Proposals
144193

145194
### Rejected proposals
146195
* [SE-0009: Require self for accessing instance members](proposals/0009-require-self-for-accessing-instance-members.md)
196+
* [SE-0010: Add StaticString.UnicodeScalarView](proposals/0010-add-staticstring-unicodescalarview.md)
147197
* [SE-0013: Remove Partial Application of Non-Final Super Methods (Swift 2.2)](proposals/0013-remove-partial-application-super.md)
198+
* [SE-0024: Optional Value Setter `??=`](proposals/0024-optional-value-setter.md)
199+
* [SE-0027: Expose code unit initializers on String](proposals/0027-string-from-code-units.md)
200+
* [SE-0056: Allow trailing closures in `guard` conditions](proposals/0056-trailing-closures-in-guard.md)
201+
* [SE-0073: Marking closures as executing exactly once](proposals/0073-noescape-once.md)
202+
* [SE-0074: Implementation of Binary Search functions](proposals/0074-binary-search.md)
148203

149204
## Review
150205
[Swift Evolution Review Schedule](https://github.com/apple/swift-evolution/blob/master/schedule.md)
151206

152207
### Returned for Revision
153208

154209
* [SE-0018: Flexible Memberwise Initialization](proposals/0018-flexible-memberwise-initialization.md)
210+
* [SE-0030: Property Behaviors](proposals/0030-property-behavior-decls.md)
155211

156212
### Deferred for Future Discussion
157213

158214
* [SE-0026: Abstract classes and methods](proposals/0026-abstract-classes-and-methods.md)
215+
* [SE-0058: Allow Swift types to provide custom Objective-C representations](proposals/0058-objectivecbridgeable.md)

0 commit comments

Comments
 (0)