Swift Evolution

With Elements 12, we are ceasing further efforts to keep Silver in sync with new language features added to the Apple swift language.

When Swift was first announced back in 2014, it seemed that Apple had a winner on their hand – they revealed an exciting new language that was still basic, but showed a lot of potential and introduced a number of intriguing design ideas. So of course we swiftly jumped on board supporting the language in our compiler.

Unfortunately, over the past five or so years, Apple's direction of Swift has change drastically, and is no longer in line with our vision (or, in come cases, platform-driven capabilities) for Swift in Elements.

Ever since open-sourcing the language and switching to a community-driven development process, the language "design" has gotten increasingly insane and unmaintainable. Swift's over-wrought and over-designed generic system has completely lost its plot, and is next to impossible to replicate within the exiting platforms that Elements compiles for. And in general, each new language feature proposal that gets approved and implemented by the Swift team seems more crazy and convoluted than the last, and designed to just make the language (and code written in it) unreadable and the language itself incomprehensible.

We're tempted to list examples, but really just pick any random feature numbered higher than 200, linked below, to see what we mean.

As such, we will cease development efforts of Silver aimed at keeping it up to date with new syntaxes and language features in Apple Swift. We will of course keep Silver updated and supported, in its current form, as part of the Elements language family, and keep it available to build and maintain existing projects.

We do recommend the migration to different Elements languages, for new code. Keep in mind that you can mix languages in Elements, so it is easy to add new source files in, say, Oxygene or C# to your projects. And you can use Oxidizer to convert your Swift code to other languages, as well.


Regardless, the list below will be kept in sync with this overview on swift.org using this little tool. (sorted by ID).

Review

  • SE-0406 Backpressure support for AsyncStream
  • SE-0405 String Initializers with Encoding Validation
  • SE-0403 Package Manager Mixed Language Target Support
  • SE-0395 Observation
  • SE-0288 Adding isPower(of:) to BinaryInteger(SBL)
  • SE-0270 Add Collection Operations on Noncontiguous Elements — (SBL)
  • SE-0220 count(where:)(done, .2633)

Accepted

  • SE-0404 Allow Protocols to be Nested in Non-Generic Contexts
  • SE-0391 Package Registry Publish — (Not applicable)
  • SE-0386 New access modifier: package
  • SE-0383 Deprecate @UIApplicationMain and @NSApplicationMain
  • SE-0378 Package Registry Authentication — (Not applicable)
  • SE-0364 Warning for Retroactive Conformances of External Types
  • SE-0342 Statically link Swift runtime libraries by default on supported platforms — (Not applicable)
  • SE-0327 On Actors and Initialization — (E25037)
  • SE-0321 Package Registry Service - Publish Endpoint — (Not applicable)
  • SE-0301 Package Editor Commands — (Not applicable)
  • SE-0283 Tuples Conform to Equatable, Comparable, and Hashable(SBL)
  • SE-0246 Generic Math(s) Functions — (SBL)

Implemented for Swift 5.9

  • SE-0402 Generalize conformance macros as extension macros
  • SE-0401 Remove Actor Isolation Inference caused by Property Wrappers
  • SE-0400 Init Accessors
  • SE-0399 Tuple of value pack expansion
  • SE-0398 Allow Generic Types to Abstract Over Packs
  • SE-0397 Freestanding Declaration Macros
  • SE-0396 Conform Never to Codable
  • SE-0394 Package Manager Support for Custom Macros
  • SE-0393 Value and Type Parameter Packs
  • SE-0390 Noncopyable structs and enums
  • SE-0389 Attached Macros
  • SE-0388 Convenience Async[Throwing]Stream.makeStream methods — (SBL)
  • SE-0384 Importing Forward Declared Objective-C Interfaces and Protocols
  • SE-0382 Expression Macros
  • SE-0381 DiscardingTaskGroups — (Not applicable)
  • SE-0380 if and switch expressions
  • SE-0377 borrowing and consuming parameter ownership modifiers
  • SE-0374 Add sleep(for:) to Clock — (SBL)
  • SE-0366 consume operator to end the lifetime of a variable binding

Implemented for Swift 5.8

  • SE-0376 Function Back Deployment
  • SE-0375 Opening existential arguments to optional parameters
  • SE-0373 Lift all limitations on variables in result builders
  • SE-0372 Document Sorting as Stable — (Not applicable)
  • SE-0370 Pointer Family Initialization Improvements and Better Buffer Slices — (SBL)
  • SE-0369 Add CustomDebugStringConvertible conformance to AnyKeyPath — (SBL)
  • SE-0368 StaticBigInt — (SBL)
  • SE-0367 Conditional compilation for attributes
  • SE-0365 Allow implicit self for weak self captures, after self is unwrapped
  • SE-0362 Piecemeal adoption of upcoming language improvements — (Not applicable)
  • SE-0274 Concise magic file names(done)

Implemented for Swift 5.7

  • SE-0363 Unicode for String Processing — (SBL)
  • SE-0361 Extensions on bound generic types(done)
  • SE-0360 Opaque result types with limited availability
  • SE-0358 Primary Associated Types in the Standard Library
  • SE-0357 Regex-powered string processing algorithms
  • SE-0356 Swift Snippets — (Not applicable)
  • SE-0355 Regex Syntax and Run-time Construction
  • SE-0354 Regex Literals
  • SE-0353 Constrained Existential Types
  • SE-0352 Implicitly Opened Existentials
  • SE-0351 Regex builder DSL — (Not applicable)
  • SE-0350 Regex Type and Overview
  • SE-0349 Unaligned Loads and Stores from Raw Memory — (Not applicable)
  • SE-0348 buildPartialBlock for result builders — (Not applicable)
  • SE-0347 Type inference from default expressions
  • SE-0346 Lightweight same-type requirements for primary associated types
  • SE-0345 if let shorthand for shadowing an existing optional variable(done, .2739)
  • SE-0344 Distributed Actor Runtime
  • SE-0343 Concurrency in Top-level Code
  • SE-0341 Opaque Parameter Declarations
  • SE-0340 Unavailable From Async Attribute
  • SE-0339 Module Aliasing For Disambiguation — (won't implement)
  • SE-0338 Clarify the Execution of Non-Actor-Isolated Async Functions — (E25616)
  • SE-0336 Distributed Actor Isolation — (E25616)
  • SE-0334 Pointer API Usability Improvements — (Not applicable)
  • SE-0333 Expand usability of withMemoryRebound — (Not applicable)
  • SE-0329 Clock, Instant, and Duration — (SBL)
  • SE-0328 Structural opaque result types — (E25620)
  • SE-0326 Enable multi-statement closure parameter/result type inference — (won't implement)
  • SE-0309 Unlock existentials for all protocols
  • SE-0302 Sendable and @Sendable closures
  • SE-0292 Package Registry Service — (Not applicable)

Implemented for Swift 5.6

  • SE-0337 Incremental migration to concurrency checking — (Not applicable)
  • SE-0335 Introduce existential any(done, .2713)
  • SE-0332 Package Manager Command Plugins — (Not applicable)
  • SE-0331 Remove Sendable conformance from unsafe pointer types — (Not applicable)
  • SE-0325 Additional Package Plugin APIs — (Not applicable)
  • SE-0324 Relax diagnostics for pointer arguments to C functions
  • SE-0322 Temporary uninitialized buffers
  • SE-0320 Allow coding of non String / Int keyed Dictionary into a `KeyedContai…
  • SE-0315 Type placeholders (formerly, "Placeholder types")
  • SE-0305 Package Manager Binary Target Improvements — (Not applicable)
  • SE-0290 Unavailability Condition

Implemented for Swift 5.5.2

  • SE-0323 Asynchronous Main Semantics

Implemented for Swift 5.5

  • SE-0319 Conform Never to Identifiable — (SBL)
  • SE-0317 async let bindings
  • SE-0316 Global actors
  • SE-0314 AsyncStream and AsyncThrowingStream(SBL)
  • SE-0313 Improved control over actor isolation — (#85904)
  • SE-0311 Task Local Values
  • SE-0310 Effectful Read-only Properties — (#85999)
  • SE-0308 #if for postfix member expressions(done, .2631)
  • SE-0307 Allow interchangeable use of CGFloat and Double types — (Not applicable)
  • SE-0306 Actors — (#85904)
  • SE-0304 Structured concurrency — (#85916)
  • SE-0300 Continuations for interfacing async tasks with synchronous code
  • SE-0299 Extending Static Member Lookup in Generic Contexts
  • SE-0298 Async/Await: Sequences — (#85914)
  • SE-0297 Concurrency Interoperability with Objective-C
  • SE-0296 Async/await(done, .2629)
  • SE-0295 Codable synthesis for enums with associated values
  • SE-0293 Extend Property Wrappers to Function and Closure Parameters — (#85915)
  • SE-0291 Package Collections — (Not applicable)

Implemented for Swift 5.4

  • SE-0294 Declaring executable targets in Package Manifests — (Not applicable)
  • SE-0289 Result builders — (#85014)
  • SE-0287 Extend implicit member syntax to cover chains of member references(done)
  • SE-0284 Allow Multiple Variadic Parameters in Functions, Subscripts, and Initialize…(done)

Implemented for Swift 5.3

  • SE-0286 Forward-scan matching for trailing closures(done)
  • SE-0285 Ease the transition to concise magic file strings(done)
  • SE-0282 Clarify the Swift memory consistency model ⚛︎ — (#84618)
  • SE-0281 @main: Type-Based Program Entry Points — (#84619)
  • SE-0280 Enum cases as protocol witnesses — (Not applicable)
  • SE-0279 Multiple Trailing Closures(done, .2531)
  • SE-0278 Package Manager Localized Resources — (Not applicable)
  • SE-0277 Float16 — (SBL)
  • SE-0276 Multi-Pattern Catch Clauses — (#83855)
  • SE-0272 Package Manager Binary Dependencies — (Not applicable)
  • SE-0271 Package Manager Resources — (Not applicable)
  • SE-0269 Increase availability of implicit self in @escaping closures when refer…(done, .2473)
  • SE-0268 Refine didSet Semantics — (Not applicable)
  • SE-0267 where clauses on contextually generic declarations — (#83755)
  • SE-0266 Synthesized Comparable conformance for enum types — (#79250)
  • SE-0263 Add a String Initializer with Access to Uninitialized Storage — (SBL)

Implemented for Swift 5.2

  • SE-0253 Callable values of user-defined nominal types — (#82278)
  • SE-0249 Key Path Expressions as Functions — (#82280)

Implemented for Swift 5.1

  • SE-0261 Identifiable Protocol(done, .2433)
  • SE-0260 Library Evolution for Stable ABIs(done)
  • SE-0258 Property Wrappers(done, .2629)
  • SE-0255 Implicit returns from single-expression functions(done)
  • SE-0254 Static and class subscripts(done)
  • SE-0252 Key Path Member Lookup — (#82279)
  • SE-0251 SIMD additions
  • SE-0248 String Gaps and Missing APIs — (SBL)
  • SE-0247 Contiguous Strings — (SBL)
  • SE-0245 Add an Array Initializer with Access to Uninitialized Storage — (SBL)
  • SE-0244 Opaque Result Types(done)
  • SE-0242 Synthesize default values for the memberwise initializer(done)
  • SE-0240 Ordered Collection Diffing — (SBL)
  • SE-0068 Expanding Swift Self to class members and value types(done)

Implemented for Swift 5

  • SE-0241 Deprecate String Index Encoded Offsets — (SBL)
  • SE-0239 Add Codable conformance to Range types — (SBL)
  • SE-0238 Package Manager Target Specific Build Settings — (Not applicable)
  • SE-0237 Introduce withContiguous{Mutable}StorageIfAvailable methods — (SBL)
  • SE-0236 Package Manager Platform Deployment Settings — (Not applicable)
  • SE-0235 Add Result to the Standard Library(done, .2353)
  • SE-0234 Remove Sequence.SubSequence — (Not applicable)
  • SE-0233 Make Numeric Refine a new AdditiveArithmetic Protocol — (SBL)
  • SE-0232 Remove Some Customization Points from the Standard Library's Collection H… — (Not applicable)
  • SE-0230 Flatten nested optionals resulting from 'try?'(done, .2371)
  • SE-0229 SIMD Vectors — (#81921)
  • SE-0228 Fix ExpressibleByStringInterpolation — (Not applicable)
  • SE-0227 Identity key path — (#81920)
  • SE-0225 Adding isMultiple to BinaryInteger(SBL)
  • SE-0224 Support 'less than' operator in compilation conditions(done, .2371)
  • SE-0221 Character Properties — (SBL)
  • SE-0219 Package Manager Dependency Mirroring — (Not applicable)
  • SE-0218 Introduce compactMapValues to Dictionary — (SBL)
  • SE-0216 Introduce user-defined dynamically "callable" types — (#81924)
  • SE-0215 Conform Never to Equatable and Hashable — (won't implement)
  • SE-0214 Renaming the DictionaryLiteral type to KeyValuePairs — (Not applicable)
  • SE-0213 Literal initialization via coercion — (won't implement)
  • SE-0211 Add Unicode Properties to Unicode.Scalar(SBL)
  • SE-0200 Enhancing String Literals Delimiters to Support Raw Text(done, .2393)
  • SE-0192 Handling Future Enum Cases(done, .2393)

Implemented for Swift 4.2

  • SE-0212 Compiler Version Directive — (Not applicable)
  • SE-0210 Add an offset(of:) method to MemoryLayout(SBL)
  • SE-0209 Package Manager Swift Language Version API Update — (Not applicable)
  • SE-0208 Package Manager System Library Targets — (Not applicable)
  • SE-0207 Add an allSatisfy algorithm to Sequence(SBL)
  • SE-0206 Hashable Enhancements — (SBL)
  • SE-0205 withUnsafePointer(to:_:) and withUnsafeBytes(of:_:) for immutable value… — (SBL)
  • SE-0204 Add last(where:) and lastIndex(where:) Methods — (SBL)
  • SE-0202 Random Unification — (SBL)
  • SE-0201 Package Manager Local Dependencies — (Not applicable)
  • SE-0199 Adding toggle to Bool(done, .2283)
  • SE-0197 Adding in-place removeAll(where:) to the Standard Library — (SBL)
  • SE-0196 Compiler Diagnostic Directives(done, .2283)
  • SE-0195 Introduce User-defined "Dynamic Member Lookup" Types — (#79673)
  • SE-0194 Derived Collection of Enum Cases(done, .2333)
  • SE-0193 Cross-module inlining and specialization(done)
  • SE-0174 Change RangeReplaceableCollection.filter to return Self(SBL)
  • SE-0143 Conditional conformances(done)
  • SE-0079 Allow using optional binding to upgrade self from a weak to strong refere…
  • SE-0054 Abolish ImplicitlyUnwrappedOptional type — (Not applicable)

Implemented for Swift 4.1

  • SE-0198 Playground QuickLook API Revamp # — (Not applicable)
  • SE-0191 Eliminate IndexDistance from Collection(SBL)
  • SE-0190 Target environment platform condition(done, .2233)
  • SE-0189 Restrict Cross-module Struct Initializers(done)
  • SE-0188 Make Standard Library Index Types Hashable — (SBL)
  • SE-0187 Introduce Sequence.compactMap(_:) — (SBL)
  • SE-0186 Remove ownership keyword support in protocols(done, .2305)
  • SE-0185 Synthesizing Equatable and Hashable conformance — (#79250)
  • SE-0184 Unsafe[Mutable][Raw][Buffer]Pointer: add missing methods, adjust existing l… — (SBL)
  • SE-0157 Support recursive constraints on associated types — (#80045)
  • SE-0075 Adding a Build Configuration Import Test(done, .2307)

Implemented for Swift 4

  • SE-0183 Substring performance affordances — (SBL)
  • SE-0182 String Newline Escaping(done, 9.2)
  • SE-0181 Package Manager C/C++ Language Standard Support — (Not applicable)
  • SE-0180 String Index Overhaul — (SBL)
  • SE-0179 Swift run Command — (Not applicable)
  • SE-0178 Add unicodeScalars property to Character(SBL)
  • SE-0176 Enforce Exclusive Access to Memory — (#79251)
  • SE-0175 Package Manager Revised Dependency Resolution — (Not applicable)
  • SE-0173 Add MutableCollection.swapAt(_:_:)(SBL)
  • SE-0172 One-sided Ranges(done)
  • SE-0171 Reduce with inout(SBL)
  • SE-0170 NSNumber bridging and Numeric types
  • SE-0169 Improve Interaction Between private Declarations and Extensions(done, .2305)
  • SE-0168 Multi-Line String Literals(done, 9.2)
  • SE-0167 Swift Encoders — (#78130)
  • SE-0166 Swift Archival & Serialization — (#78130)
  • SE-0164 Remove final support in protocol extensions(done)
  • SE-0163 String Revision: Collection Conformance, C Interop, Transcoding — (SBL)
  • SE-0162 Package Manager Custom Target Layouts — (Not applicable)
  • SE-0161 Smart KeyPaths: Better Key-Value Coding for Swift — (#79252)
  • SE-0160 Limiting @objc inference — (Not applicable)
  • SE-0158 Package Manager Manifest API Redesign — (Not applicable)
  • SE-0156 Class and Subtype existentials
  • SE-0154 Provide Custom Collections for Dictionary Keys and Values
  • SE-0150 Package Manager Support for branches — (Not applicable)
  • SE-0149 Package Manager Support for Top of Tree development — (Not applicable)
  • SE-0148 Generic Subscripts — (won't implement)
  • SE-0146 Package Manager Product Definitions — (Not applicable)
  • SE-0142 Permit where clauses to constrain associated types — (#80051)
  • SE-0104 Protocol-oriented integers — (SBL)

Implemented for Swift 3.1

  • SE-0152 Package Manager Tools Version — (Not applicable)
  • SE-0151 Package Manager Swift Language Compatibility Version — (Not applicable)
  • SE-0147 Move UnsafeMutablePointer.initialize(from:) to UnsafeMutableBufferPointer
  • SE-0145 Package Manager Version Pinning — (Not applicable)
  • SE-0141 Availability by Swift version
  • SE-0082 Package Manager Editable Packages — (Not applicable)
  • SE-0080 Failable Numeric Conversion Initializers — (SBL)
  • SE-0045 Add prefix(while:) and drop(while:) to the stdlib — (SBL)

Implemented for Swift 3.0.1

  • SE-0140 Warn when Optional converts to Any, and bridge Optional As Its Payloa…
  • SE-0139 Bridge Numeric Types to NSNumber and Cocoa Structs to NSValue
  • SE-0138 UnsafeRawBufferPointer

Implemented for Swift 3

  • SE-0155 Normalize Enum Case Representation — (#81923)
  • SE-0137 Avoiding Lock-In to Legacy Protocol Designs
  • SE-0136 Memory layout of values
  • SE-0135 Package Manager Support for Differentiating Packages by Swift version — (Not applicable)
  • SE-0134 Rename two UTF8-related properties on String — (SBL)
  • SE-0133 Rename flatten() to joined()(SBL)
  • SE-0131 Add AnyHashable to the standard library — (SBL)
  • SE-0130 Replace repeating Character and UnicodeScalar forms of String.init — (SBL)
  • SE-0129 Package Manager Test Naming Conventions — (Not applicable)
  • SE-0128 Change failable UnicodeScalar initializers to failable — (SBL)
  • SE-0127 Cleaning up stdlib Pointer and Buffer Routines — (Not applicable)
  • SE-0125 Remove NonObjectiveCBase and isUniquelyReferenced — (Not applicable)
  • SE-0124 Int.init(ObjectIdentifier) and UInt.init(ObjectIdentifier) should have … — (SBL)
  • SE-0121 Remove Optional Comparison Operators — (SBL)
  • SE-0120 Revise partition Method Signature — (SBL)
  • SE-0118 Closure Parameter Names and Labels — (#75885)
  • SE-0117 Allow distinguishing between public access and public overridability(done, 9.0)
  • SE-0116 Import Objective-C id as Swift Any type — (Not applicable)
  • SE-0115 Rename Literal Syntax Protocols
  • SE-0114 Updating Buffer "Value" Names to "Header" Names — (SBL)
  • SE-0113 Add integral rounding functions to FloatingPoint — (SBL)
  • SE-0112 Improved NSError Bridging — (won't implement)
  • SE-0111 Remove type system significance of function argument labels(done, 9.0)
  • SE-0109 Remove the Boolean protocol
  • SE-0107 UnsafeRawPointer API — (SBL)
  • SE-0106 Add a macOS Alias for the OSX Platform Configuration Test(done, 9.0)
  • SE-0103 Make non-escaping closures the default(done, 9.0)
  • SE-0102 Remove @noreturn attribute and introduce an empty Never type(done, 9.0)
  • SE-0101 Reconfiguring sizeof and related functions into a unified MemoryLayout … — (SBL)
  • SE-0099 Restructuring Condition Clauses(done, 9.0)
  • SE-0096 Converting dynamicType from a property to an operator(done)
  • SE-0095 Replace protocol<P1,P2> syntax with P1 & P2 syntax
  • SE-0094 Add sequence(first:next:) and sequence(state:next:) to the stdlib(done, 8.3.95)
  • SE-0093 Adding a public base property to slices — (SBL)
  • SE-0092 Typealiases in protocols and protocol extensions
  • SE-0091 Improving operator requirements in protocols(done, .2307)
  • SE-0089 Renaming String.init<T>(_: T)(SBL)
  • SE-0088 Modernize libdispatch for Swift 3 naming conventions
  • SE-0086 Drop NS Prefix in Swift Foundation(done, 9.0)
  • SE-0085 Package Manager Command Names — (Not applicable)
  • SE-0081 Move where clause to end of declaration(done, 9.0)
  • SE-0077 Improved operator declarations — (#75872)
  • SE-0076 Add overrides taking an UnsafePointer source to non-destructive copying met… — (SBL)
  • SE-0072 Fully eliminate implicit bridging conversions from Swift — (Not applicable)
  • SE-0071 Allow (most) keywords in member references(done, 8.3.95)
  • SE-0070 Make Optional Requirements Objective-C-only — (Not applicable)
  • SE-0069 Mutability and Foundation Value Types — (SBL)
  • SE-0067 Enhanced Floating Point Protocols — (SBL)
  • SE-0066 Standardize function type argument syntax to require parentheses(done, 9.0)
  • SE-0065 A New Model for Collections and Indices — (Not applicable)
  • SE-0064 Referencing the Objective-C selector of property getters and setters(done, v10)
  • SE-0063 SwiftPM System Module Search Paths — (Not applicable)
  • SE-0062 Referencing Objective-C key-paths — (#75182)
  • SE-0061 Add Generic Result and Error Handling to autoreleasepool()(done, v10)
  • SE-0060 Enforcing order of defaulted parameters
  • SE-0059 Update API Naming Guidelines and Rewrite Set APIs Accordingly — (Not applicable)
  • SE-0057 Importing Objective-C Lightweight Generics(done)
  • SE-0055 Make unsafe pointer nullability explicit using Optional — (Not applicable)
  • SE-0053 Remove explicit use of let from Function Parameters — (Not applicable)
  • SE-0052 Change IteratorType post-nil guarantee — (SBL)
  • SE-0049 Move @noescape and @autoclosure to be type attributes(done, 9.0)
  • SE-0048 Generic Type Aliases(done, 9.0)
  • SE-0047 Defaulting non-Void functions so they warn on unused results(done, 9.0)
  • SE-0046 Establish consistent label behavior across all parameters including first l…(done, 9.0)
  • SE-0044 Import as member — (#74959)
  • SE-0043 Declare variables in 'case' labels with multiple patterns(done)
  • SE-0040 Replacing Equal Signs with Colons For Attribute Arguments(done, 8.3.95)
  • SE-0039 Modernizing Playground Literals — (Not applicable)
  • SE-0038 Package Manager C Language Target Support — (Not applicable)
  • SE-0037 Clarify interaction between comments & operators(done, 9.0)
  • SE-0036 Requiring Leading Dot Prefixes for Enum Instance Member Implementations(done, 9.0)
  • SE-0035 Limiting inout capture to @noescape contexts — (won't implement)
  • SE-0034 Disambiguating Line Control Statements from Debugging Identifiers(done, 9.0)
  • SE-0033 Import Objective-C Constants as Swift Types — (#74782)
  • SE-0032 Add first(where:) method to Sequence(SBL)
  • SE-0031 Adjusting inout Declarations for Type Decoration(done, 9.0)
  • SE-0029 Remove implicit tuple splat behavior from function applications — (Not applicable)
  • SE-0025 Scoped Access Level(done, 9.0)
  • SE-0023 API Design Guidelines — (Not applicable)
  • SE-0019 Swift Testing — (Not applicable)
  • SE-0017 Change Unmanaged to use UnsafePointer — (Not applicable)
  • SE-0016 Add initializers to Int and UInt to convert from UnsafePointer and UnsafeMu… — (SBL)
  • SE-0008 Add a Lazy flatMap for Sequences of Optionals # — (SBL)
  • SE-0007 Remove C-style for-loops with conditions and incrementers(done, 8.3.95)
  • SE-0006 Apply API Guidelines to the Standard Library — (Not applicable)
  • SE-0005 Better Translation of Objective-C APIs Into Swift(done, 9.0)
  • SE-0004 Remove the ++ and -- operators(done, 8.3.95)
  • SE-0003 Removing var from Function Parameters(done, 9.0)
  • SE-0002 Removing currying func declaration syntax

Implemented for Swift 2.2

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

Implemented for 5.6

  • SE-0303 Package Manager Extensible Build Tools — (Not applicable)

Deferred

Rejected

  • SE-0275 Allow more characters (like whitespaces and punctuations) for escaped ident…(done, .2531)
  • SE-0256 Introduce {Mutable}ContiguousCollection protocol — (SBL)
  • SE-0231 Optional Iteration
  • SE-0222 Lazy CompactMap Sequence — (SBL)
  • SE-0217 Introducing the !! "Unwrap or Die" operator to the Swift Standard Library(done, .2353)
  • SE-0203 Rename Sequence.elementsEqual — (SBL)
  • SE-0159 Fix Private Access Levels
  • SE-0153 Compensate for the inconsistency of @NSCopying's behaviour — (Not applicable)
  • SE-0144 Allow Single Dollar Sign as a Valid Identifier
  • SE-0132 Rationalizing Sequence end-operation names
  • SE-0123 Disallow coercion to optionals in operator arguments
  • SE-0122 Use colons for subscript declarations
  • SE-0119 Remove access modifiers from extensions
  • SE-0108 Remove associated type inference
  • SE-0105 Removing Where Clauses from For-In Loops
  • SE-0098 Lowercase didSet and willSet for more consistent keyword casing
  • SE-0097 Normalizing naming for "negative" attributes
  • SE-0087 Rename lazy to @lazy
  • SE-0084 Allow trailing commas in parameter lists and tuples
  • SE-0083 Remove bridging conversion behavior from dynamic casts
  • SE-0074 Implementation of Binary Search functions
  • SE-0073 Marking closures as executing exactly once
  • SE-0058 Allow Swift types to provide custom Objective-C representations
  • SE-0056 Allow trailing closures in guard conditions
  • SE-0042 Flattening the function type of unapplied method references — (Not applicable)
  • SE-0041 Updating Protocol Naming Conventions for Conversions
  • SE-0027 Expose code unit initializers on String — (SBL)
  • SE-0026 Abstract classes and methods
  • SE-0024 Optional Value Setter ??=(done, 8.3)
  • SE-0013 Remove Partial Application of Non-Final Super Methods (Swift 2.2)
  • SE-0012 Add @noescape to public library API
  • SE-0010 Add StaticString.UnicodeScalarView — (SBL)
  • SE-0009 Require self for accessing instance members

Returned

  • SE-0385 Custom Reflection Metadata — (Not applicable)
  • SE-0371 Isolated synchronous deinit
  • SE-0359 Build-Time Constant Values
  • SE-0330 Conditionals in Collections(done, .2713)
  • SE-0318 Package Creation — (Not applicable)
  • SE-0312 Add indexed() and Collection conformances for enumerated() and `zip(_…
  • SE-0265 Offset-Based Access to Indices, Elements, and Slices — (SBL)
  • SE-0262 Demangle Function — (SBL)
  • SE-0259 Approximate Equality for Floating Point
  • SE-0257 Eliding commas from multiline expression lists — (#82859)
  • SE-0250 Swift Code Style Guidelines and Formatter
  • SE-0177 Add clamp(to:) to the stdlib — (SBL)
  • SE-0090 Remove .self and freely allow type references in expressions
  • SE-0078 Implement a rotate algorithm, equivalent to std::rotate() in C++
  • SE-0018 Flexible Memberwise Initialization

Withdrawn

  • SE-0223 Accessing an Array's Uninitialized Buffer — (SBL)
  • SE-0126 Refactor Metatypes, repurpose T.self and Mirror
  • SE-0100 Add sequence-based initializers and merge methods to Dictionary — (SBL)
  • SE-0051 Conventionalizing stride semantics
  • SE-0050 Decoupling Floating Point Strides from Generic Implementations
  • SE-0030 Property Behaviors