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:)
toBinaryInteger
— (SBL) - SE-0270 Add Collection Operations on Noncontiguous Elements — (SBL)
SE-0220— (done, .2633)count(where:)
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
, andHashable
— (SBL) - SE-0246 Generic Math(s) Functions — (SBL)
Implemented for Swift 5.9
- SE-0402 Generalize
conformance
macros asextension
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
toCodable
- 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
andswitch
expressions - SE-0377
borrowing
andconsuming
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
forweak self
captures, afterself
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— (Not applicable)buildPartialBlock
for result builders- SE-0347 Type inference from default expressions
- SE-0346 Lightweight same-type requirements for primary associated types
SE-0345— (done, .2739)if let
shorthand for shadowing an existing optional variable- 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— (Not applicable)withMemoryRebound
- 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— (done, .2713)any
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
keyedDictionary
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
andAsyncThrowingStream
— (SBL) - SE-0313 Improved control over actor isolation — (#85904)
- SE-0311 Task Local Values
- SE-0310 Effectful Read-only Properties — (#85999)
SE-0308— (done, .2631)#if
for postfix member expressionsSE-0307 Allow interchangeable use of— (Not applicable)CGFloat
andDouble
types- 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— (done, .2473)self
in@escaping
closures when refer…SE-0268 Refine— (Not applicable)didSet
Semantics- SE-0267
where
clauses on contextually generic declarations — (#83755) - SE-0266 Synthesized
Comparable
conformance forenum
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— (done)Self
to class members and value types
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— (Not applicable)Sequence.SubSequence
- SE-0233 Make
Numeric
Refine a newAdditiveArithmetic
Protocol — (SBL) SE-0232 Remove Some Customization Points from the Standard Library's— (Not applicable)Collection
H…SE-0230 Flatten nested optionals resulting from 'try?'— (done, .2371)- SE-0229 SIMD Vectors — (#81921)
SE-0228 Fix— (Not applicable)ExpressibleByStringInterpolation
- SE-0227 Identity key path — (#81920)
- SE-0225 Adding
isMultiple
toBinaryInteger
— (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— (won't implement)Never
toEquatable
andHashable
SE-0214 Renaming the— (Not applicable)DictionaryLiteral
type toKeyValuePairs
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 toMemoryLayout
— (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 toSequence
— (SBL) - SE-0206 Hashable Enhancements — (SBL)
- SE-0205
withUnsafePointer(to:_:)
andwithUnsafeBytes(of:_:)
for immutable value… — (SBL) - SE-0204 Add
last(where:)
andlastIndex(where:)
Methods — (SBL) - SE-0202 Random Unification — (SBL)
SE-0201 Package Manager Local Dependencies— (Not applicable)SE-0199 Adding— (done, .2283)toggle
toBool
- 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 returnSelf
— (SBL) SE-0143 Conditional conformances— (done)- SE-0079 Allow using optional binding to upgrade
self
from a weak to strong refere… SE-0054 Abolish— (Not applicable)ImplicitlyUnwrappedOptional
type
Implemented for Swift 4.1
SE-0198 Playground QuickLook API Revamp #— (Not applicable)- SE-0191 Eliminate
IndexDistance
fromCollection
— (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
andHashable
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— (Not applicable)run
Command- SE-0178 Add
unicodeScalars
property toCharacter
— (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— (done, .2305)private
Declarations and ExtensionsSE-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— (Not applicable)@objc
inferenceSE-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 toAny
, and bridgeOptional
As Its Payloa… - SE-0139 Bridge Numeric Types to
NSNumber
and Cocoa Structs toNSValue
- 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()
tojoined()
— (SBL) - SE-0131 Add
AnyHashable
to the standard library — (SBL) - SE-0130 Replace repeating
Character
andUnicodeScalar
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— (Not applicable)NonObjectiveCBase
andisUniquelyReferenced
- SE-0124
Int.init(ObjectIdentifier)
andUInt.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— (Not applicable)id
as SwiftAny
type- 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— (done, 9.0)macOS
Alias for theOSX
Platform Configuration TestSE-0103 Make non-escaping closures the default— (done, 9.0)SE-0102 Remove— (done, 9.0)@noreturn
attribute and introduce an emptyNever
type- SE-0101 Reconfiguring
sizeof
and related functions into a unifiedMemoryLayout
… — (SBL) SE-0099 Restructuring Condition Clauses— (done, 9.0)SE-0096 Converting— (done)dynamicType
from a property to an operator- SE-0095 Replace
protocol<P1,P2>
syntax withP1 & 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— (done, 9.0)where
clause to end of declaration- 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— (Not applicable)let
from Function Parameters- 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— (won't implement)inout
capture to@noescape
contextsSE-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 toSequence
— (SBL) SE-0031 Adjusting— (done, 9.0)inout
Declarations for Type DecorationSE-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— (Not applicable)Unmanaged
to useUnsafePointer
- 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— (done, 8.3.95)++
and--
operatorsSE-0003 Removing— (done, 9.0)var
from Function Parameters- 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— (done, 8.3)typealias
keyword withassociatedtype
for associated type decla…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— (done, .2353)!!
"Unwrap or Die" operator to the Swift Standard Library- SE-0203 Rename Sequence.elementsEqual — (SBL)
- SE-0159 Fix Private Access Levels
SE-0153 Compensate for the inconsistency of— (Not applicable)@NSCopying
's behaviour- 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
andwillSet
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()
andCollection
conformances forenumerated()
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
andMirror
- 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