<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text" xml:lang="en">Swift.org</title>
  <link type="application/atom+xml" href="https://swift.org/atom.xml" rel="self"/>
  <link type="text/html" href="" rel="alternate"/>
  <updated>2017-01-18T06:39:07-08:00</updated>
  <id>tag:swift.org,2015-12-03:Swift</id>

  
  
  <entry>
    <title>The Swift.org Blog</title>
    
    <author>
    
      <name>Swift.org</name>
    
    </author>
    <link href="https://swift.org/blog/welcome/"/>
    <updated>2015-12-03T02:01:01-08:00</updated>
    <id>https://swift.org/blog/welcome/</id>
    <content type="html">&lt;p&gt;Welcome to the blog on Swift.org! Today we launched the open source Swift project along with the Swift.org website.  We couldn’t be more excited to work together in an open community to find and fix issues, add enhancements, and bring Swift to new platforms.&lt;/p&gt;

&lt;p&gt;This blog is where the engineers working on Swift will make announcements and highlight important community topics.&lt;/p&gt;

&lt;h2 id=&quot;projects&quot;&gt;Projects&lt;/h2&gt;

&lt;p&gt;Swift is made up of a number of different projects, providing a complete ecosystem for building great software.  The Swift compiler project interprets Swift syntax, produces diagnostics to help you write correct code, and employs LLVM to generate machine instructions.  The LLDB project is a first-class debugger that includes a REPL for interactive programming. And the Swift standard library project includes all the core types and basic functionality you need to write software in Swift.&lt;/p&gt;

&lt;p&gt;Today, we released two additional projects for Swift in open source:  the Core Libraries project, and a new Swift Package Manager project.&lt;/p&gt;

&lt;h3 id=&quot;swift-package-manager&quot;&gt;Swift Package Manager&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;https://swift.org/package-manager/&quot;&gt;Swift Package Manager&lt;/a&gt; is a brand new project that strives to create a powerful, user-friendly tool to build and share Swift code.  We are focused on ensuring the package manager is great at sharing source code, rather than compiled binary libraries. This project is very early in development, and will be designed and developed using Swift’s open, collaborative process.&lt;/p&gt;

&lt;p&gt;You can find example package repositories at &lt;a href=&quot;http://github.com/apple&quot;&gt;the Apple home on GitHub&lt;/a&gt;, as well as the source code and additional information for the package manager itself.&lt;/p&gt;

&lt;h3 id=&quot;core-libraries&quot;&gt;Core Libraries&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;https://swift.org/core-libraries/&quot;&gt;Swift Core Libraries&lt;/a&gt; project is a higher-level set of APIs, above the Swift standard library.  These libraries offer functionality such as localization, networking primitives, unit testing, user preferences, and more.  These libraries also introduce coding conventions that will be useful as you write more Swift code, and create new packages.&lt;/p&gt;

&lt;p&gt;The core libraries are based on frameworks included in Apple platforms, namely Foundation, libdispatch, and XCTest.  The Swift open source versions of these frameworks are intended to make it  easy to use the same Swift code with consistent functionality across multiple platforms.&lt;/p&gt;

&lt;h2 id=&quot;swiftorg-website&quot;&gt;Swift.org Website&lt;/h2&gt;

&lt;p&gt;This website is the home of the Swift project with links to the resources you will need to participate in the community.  We invite you to click around the navigation area to explore the site, but we wanted to call out a few key links here in our inaugural post:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The &lt;a href=&quot;http://github.com/apple&quot;&gt;Apple home on GitHub&lt;/a&gt; hosts all the Swift source code&lt;/li&gt;
  &lt;li&gt;The &lt;a href=&quot;https://swift.org/community/#mailing-lists&quot;&gt;Swift mailing lists&lt;/a&gt; are how we interact&lt;/li&gt;
  &lt;li&gt;The &lt;a href=&quot;https://swift.org/getting-started/&quot;&gt;Getting Started&lt;/a&gt; pages will help you setup a Swift development environment&lt;/li&gt;
  &lt;li&gt;The &lt;a href=&quot;https://swift.org/download/&quot;&gt;Download&lt;/a&gt; page includes pre-built binaries for the supported platforms&lt;/li&gt;
  &lt;li&gt;The &lt;a href=&quot;https://swift.org/contributing/#evolution-process&quot;&gt;Swift Evolution Process&lt;/a&gt; describes how new features are proposed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Welcome to the open source Swift community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;– The Swift Team&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>The Swift Linux Port</title>
    
    <author>
    
      <name>Swift.org</name>
    
    </author>
    <link href="https://swift.org/blog/swift-linux-port/"/>
    <updated>2015-12-03T03:01:01-08:00</updated>
    <id>https://swift.org/blog/swift-linux-port/</id>
    <content type="html">&lt;p&gt;With the launch of the open source Swift project, we are also releasing
a port that works with the Linux operating system! You can build it from
the Swift sources or &lt;a href=&quot;/download/&quot;&gt;download pre-built binaries for Ubuntu&lt;/a&gt;. The port
is still a work in progress but we’re happy to say that it is usable
today for experimentation. Currently x86_64 is the only supported
architecture on Linux.&lt;/p&gt;

&lt;p&gt;Here are a few highlights of what’s working in the port today:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Swift without the Objective-C Runtime&lt;/strong&gt;: Swift on Linux does not
depend on the Objective-C runtime nor includes it. While Swift was
designed to interoperate closely with Objective-C when it is present,
it was also designed to work in environments where the Objective-C
runtime does not exist.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;The core Swift Language and &lt;a href=&quot;/compiler-stdlib/&quot;&gt;Standard Library&lt;/a&gt;&lt;/strong&gt; on Linux shares most of
the same implementation and APIs as on Apple platforms. There are some
slight differences of behavior because of the absence of the
Objective-C runtime on Linux (noted below).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;The Glibc Module&lt;/strong&gt;: Most of the Linux C standard library is available
through this module similar to the Darwin module on Apple platforms.
Some headers aren’t yet imported into the module, such as tgmath.h.&lt;/p&gt;

    &lt;p&gt;To try it out, just &lt;code class=&quot;highlighter-rouge&quot;&gt;import Glibc&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Swift Core Libraries&lt;/strong&gt;: The &lt;a href=&quot;/core-libraries/&quot;&gt;Core Libraries&lt;/a&gt; provide implementations
of core APIs from Foundation and XCTest to be used on Linux without
Objective-C . The intention is that these APIs are available in a
cross-platform manner regardless of whether you are using Swift on
Apple’s platforms or Swift on Linux.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;LLDB Swift debugging and the REPL&lt;/strong&gt;: You can &lt;a href=&quot;/getting-started/#using-the-lldb-debugger&quot;&gt;debug your Swift
binaries&lt;/a&gt; and &lt;a href=&quot;/getting-started/#using-the-repl&quot;&gt;experiment in the REPL&lt;/a&gt; just like you do on macOS.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;The Swift Package Manager&lt;/strong&gt; is a first class citizen as it is on
Apple’s platforms.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are some things that aren’t quite working yet or are planned for
the future:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;libdispatch&lt;/strong&gt;: Part of the Core Libraries, updated Linux support is
in progress. You can follow development on the &lt;a href=&quot;https://github.com/apple/swift-corelibs-libdispatch&quot;&gt;libdispatch project on
GitHub&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Some C APIs&lt;/strong&gt;: Although this is generally true for all of our
supported platforms, a few constructs in C aren’t imported yet into
Swift. This will cause some APIs to be unavailable, such as those that
contain varargs / &lt;code class=&quot;highlighter-rouge&quot;&gt;va_list&lt;/code&gt;. However, in recent months Swift’s
interoperability with C has significantly advanced, gaining support
for named and anonymous unions, anonymous structs, and bitfields.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Some &lt;code class=&quot;highlighter-rouge&quot;&gt;String&lt;/code&gt; APIs&lt;/strong&gt;: The Standard Library’s &lt;code class=&quot;highlighter-rouge&quot;&gt;String&lt;/code&gt; is missing implementations
of several important APIs because they are currently tied to the
implementation of &lt;code class=&quot;highlighter-rouge&quot;&gt;NSString&lt;/code&gt; on Apple’s platforms.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Runtime Introspection&lt;/strong&gt;: When a Swift class on Apple’s platforms is
marked &lt;code class=&quot;highlighter-rouge&quot;&gt;@objc&lt;/code&gt; or subclasses &lt;code class=&quot;highlighter-rouge&quot;&gt;NSObject&lt;/code&gt; you can use the Objective-C
runtime to enumerate available methods on an object or call methods
using selectors. Such capabilities are absent because they depend on
the Objective-C runtime.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Array&amp;lt;T&amp;gt; as? Array&amp;lt;S&amp;gt;&lt;/code&gt;: Some mechanisms, such as casting
containers with different associated types, currently do not work as
they relied on bridging mechanisms with Objective-C.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re really excited to be able to release the open source project with
a great head start for Linux support that you can try right now! There
is still plenty of work to be done, so we hope to see you &lt;a href=&quot;/contributing/&quot;&gt;contribute to
Swift&lt;/a&gt; to make the Linux port even more complete.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>Swift 3 API Design Guidelines</title>
    
    <author>
    
      <name>Swift.org</name>
    
    </author>
    <link href="https://swift.org/blog/swift-3-api-design/"/>
    <updated>2015-12-03T04:01:01-08:00</updated>
    <id>https://swift.org/blog/swift-3-api-design/</id>
    <content type="html">&lt;p&gt;The design of commonly-used libraries has a large impact on the
overall feel of a programming language. Great libraries feel like an
extension of the language itself, and consistency across libraries
elevates the overall development experience. To aid in the
construction of great Swift libraries, one of the major &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/README.md&quot; title=&quot;Swift 3 goals&quot;&gt;goals for
Swift 3&lt;/a&gt; is to define a set of API design guidelines
and to apply those design guidelines consistently.&lt;/p&gt;

&lt;p&gt;The effort to define the Swift API Design Guidelines involves several
 major pieces that, together, are intended to provide a more cohesive
 feel to Swift development. Those major pieces are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Swift API Design Guidelines&lt;/strong&gt;: The actual API design guidelines
are under active development. The latest draft of &lt;a href=&quot;/documentation/api-design-guidelines/&quot; title=&quot;Swift API Design Guidelines&quot;&gt;Swift API
Design Guidelines&lt;/a&gt; is available.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Swift Standard Library&lt;/strong&gt;: The entire Swift standard library is
being reviewed and updated to follow the Swift API design
guidelines. The actual work is being performed on the
&lt;a href=&quot;https://github.com/apple/swift/tree/swift-3-api-guidelines&quot; title=&quot;Swift 3 Standard Library updates&quot;&gt;swift-3-api-guidelines branch&lt;/a&gt; of the Swift
repository.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Imported Objective-C APIs&lt;/strong&gt;: The translation of Objective-C APIs
into Swift is being updated to make Objective-C APIs better match
the Swift API design guidelines, using a variety of heuristics. The
&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md&quot; title=&quot;Better Translation of Objective-C APIs into Swift proposal&quot;&gt;Better Translation of Objective-C APIs into Swift&lt;/a&gt;
proposal describes how this transformation
is done. Because this approach naturally involves a number of
heuristics, we track its effects on the Cocoa and Cocoa Touch
frameworks, as well as Swift code using those frameworks. The &lt;a href=&quot;https://github.com/apple/swift-3-api-guidelines-review&quot; title=&quot;Swift 3 API Design Guidelines review repository&quot;&gt;Swift
3 API Design Guidelines Review&lt;/a&gt;
repository provides a way to see how
this automatic translation affects Swift code that uses Cocoa and
Cocoa Touch. Specific Objective-C APIs that translate poorly into
Swift will then be annotated (for example, with &lt;code class=&quot;highlighter-rouge&quot;&gt;NS_SWIFT_NAME&lt;/code&gt;) to improve
the resulting Swift code. While this change primarily impacts Apple
platforms (where Swift uses the Objective-C runtime), it also has a
direct impact on the cross-platform &lt;a href=&quot;/core-libraries&quot; title=&quot;Swift core libraries&quot;&gt;Swift core
libraries&lt;/a&gt; that provide the same APIs as Objective-C
frameworks.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Swift Guideline Checking&lt;/strong&gt;: Existing Swift code has been written
to follow a variety of different coding styles, including the &lt;a href=&quot;https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html&quot; title=&quot;Objective-C Coding Guidelines for Cocoa&quot;&gt;Objective-C
Coding Guidelines for Cocoa&lt;/a&gt;. By leveraging
the heuristics used to import Objective-C APIs, the Swift compiler
can (optionally!) check for common API design patterns that don’t
meet the Swift API Design Guidelines and suggest improvements.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Swift 2 to Swift 3 Migrator&lt;/strong&gt;: The updates to the Swift standard
library and the imported Objective-C APIs are source-breaking
changes. This effort will involve the creation of a migrator to
update Swift 2 code to use the Swift 3 APIs.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these major pieces are under active development. If you’re
interested in following along, check out the &lt;a href=&quot;/documentation/api-design-guidelines/&quot; title=&quot;Swift API Design Guidelines&quot;&gt;Swift API design
guidelines&lt;/a&gt;, the &lt;a href=&quot;https://github.com/apple/swift/tree/swift-3-api-guidelines&quot; title=&quot;Swift 3 Standard Library updates&quot;&gt;Swift standard library
changes&lt;/a&gt;, the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md&quot; title=&quot;Better Translation of Objective-C APIs into Swift proposal&quot;&gt;Objective-C API importer
changes&lt;/a&gt; proposal and corresponding &lt;a href=&quot;https://github.com/apple/swift-3-api-guidelines-review&quot; title=&quot;Swift 3 API Design Guidelines review repository&quot;&gt;review
repository&lt;/a&gt;, then join the discussion on
the &lt;a href=&quot;/community/#swift-evolution&quot;&gt;swift-evolution mailing
list&lt;/a&gt;.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>Swift 2.2 Release Process</title>
    
    <author>
    
      <name>Ted Kremenek</name>
    
    </author>
    <link href="https://swift.org/blog/swift-2-2-release-process/"/>
    <updated>2016-01-05T10:00:00-08:00</updated>
    <id>https://swift.org/blog/swift-2-2-release-process/</id>
    <content type="html">&lt;p&gt;This post describes the goals, release process, and estimated schedule
for Swift 2.2.&lt;/p&gt;

&lt;p&gt;Swift 2.2 is the first offical release of Swift after Swift was
released as open source.  It will be a mostly source-compatible
release with Swift 2.1, containing a large number of core improvements
(e.g., bug fixes, enhancements to diagnostics, faster generated code)
without many significant visible changes to the language itself.  It
is intended to be an intermediate point between Swift 2 and Swift 3,
with Swift 3 containing more disruptive changes to both the language
and Standard Library.&lt;/p&gt;

&lt;p&gt;Swift on Linux will be included in this release.  However it is still
relatively new and has known caveats.  Swift 2.2 will not include the
&lt;a href=&quot;https://swift.org/core-libraries/&quot;&gt;Swift Core Libraries&lt;/a&gt; but will include LLDB and the REPL.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://swift.org/package-manager/&quot;&gt;Swift Package Manager&lt;/a&gt; is still early in development and
will not be included in this release.&lt;/p&gt;

&lt;p&gt;In addition to its Swift.org release, Swift 2.2 will ship in a future version
of Xcode.&lt;/p&gt;

&lt;h2 id=&quot;logistics&quot;&gt;Logistics&lt;/h2&gt;

&lt;h3 id=&quot;impacted-repositories&quot;&gt;Impacted Repositories&lt;/h3&gt;

&lt;p&gt;The following repositories will have a &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; to track sources as part of
Swift 2.2 release:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift&quot;&gt;swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-lldb&quot;&gt;swift-lldb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-cmark&quot;&gt;swift-cmark&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;schedule&quot;&gt;Schedule&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Swift 2.2 will branch from &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; on &lt;strong&gt;January 13, 2016&lt;/strong&gt;.  After
January 13 the &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; branch will primarily track Swift 3
development.  This specifically applies to the &lt;a href=&quot;https://github.com/apple/swift&quot;&gt;swift&lt;/a&gt;, &lt;a href=&quot;https://github.com/apple/swift-lldb&quot;&gt;swift-lldb&lt;/a&gt;,
and &lt;a href=&quot;https://github.com/apple/swift-cmark&quot;&gt;swift-cmark&lt;/a&gt; repositories.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; branches for the &lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt; and
&lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt; repositories were created earlier, from roughly LLVM revision
252576, to provide a longer period of time to stabilize the underlying
LLVM platform. Those repositories will not be re-merging from
&lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The final release date for Swift 2.2 is TBD.  The intent is for
Swift 2.2 to undergo a convergence period and will likely be
released sometime in March to May of 2016.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://swift.org/download/&quot;&gt;Binary builds&lt;/a&gt; of the Swift 2.2 release branch will be
made available alongside snapshots of Swift’s &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; development branch.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Swift 3 will follow a similar branching process as Swift 2.2 and
will be announced a future date.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;getting-changes-into-swift-22&quot;&gt;Getting Changes into Swift 2.2&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Before January 13 all changes going into Swift’s &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; branch by
definition will be a part of Swift 2.2.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Afterwards, the only language/API changes that will be considered
for Swift 2.2 after the branch will be ones that make it more source
compatible with Swift 2.1 or migration warnings for code that will
be a build error in Swift 3.  New features/extensions will not be
accepted unless there is a really good reason to take them.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Criteria (as set by the release manager) for accepting changes will
becoming increasingly restrictive over time as the release
converges.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Contributions to the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; for those without direct
commit access can be initiated via a &lt;a href=&quot;#pull-requests&quot;&gt;pull request&lt;/a&gt;.
Pull requests should usually be used to pull in changes that are
already in &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; unless those changes are specific to Swift 2.2
and will not be included in Swift 3.  For example, a bug fix should
first land in &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; and then pulled into &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Core contributors with direct commit access will be able to directly
cherry-pick or otherwise apply changes to &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; under
the guidance of the respective code owner or release manager until a
point in the schedule where the branch is under strict change
control.  An announcement will be made to the relevant component
development mailing list (e.g., &lt;a href=&quot;https://lists.swift.org/mailman/listinfo/swift-dev&quot;&gt;swift-dev&lt;/a&gt;) once the
&lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; is under stricter change management. At that
point all changes must go through a nomination process via a
&lt;a href=&quot;#pull-requests&quot;&gt;pull request&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;release-management&quot;&gt;Release Management&lt;/h3&gt;

&lt;p&gt;The overall management of the release will be overseen by the following
individuals, who will announce when stricter control of change
goes into effect for the Swift 2.2 release as the release converges:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/tkremenek&quot;&gt;Ted Kremenek&lt;/a&gt; is the overall release
manager for Swift 2.2.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/bob-wilson&quot;&gt;Bob Wilson&lt;/a&gt; is the release manager
for the LLVM and Clang components of Swift 2.2.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/k8stone&quot;&gt;Kate Stone&lt;/a&gt; is the
release manager for the LLDB component of Swift 2.2.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please feel free to email &lt;a href=&quot;https://lists.swift.org/mailman/listinfo/swift-dev&quot;&gt;swift-dev&lt;/a&gt; or Ted directly concerning any
questions about the release management process.&lt;/p&gt;

&lt;h3 id=&quot;pull-requests&quot;&gt;Pull Requests&lt;/h3&gt;

&lt;p&gt;All pull requests nominating changes for inclusion in the
&lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; should include the following information:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;: A description of the issue being fixed or
enhancement being made.  This can be brief, but it should be
clear.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Scope&lt;/strong&gt;: An assessement of the impact/importance of the change.
For example, is the change a source-breaking language change, etc.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;SR Issue&lt;/strong&gt;: The SR if the change fixes/implements an
issue/enhancement on &lt;a href=&quot;https://bugs.swift.org&quot;&gt;bugs.swift.org&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Risk&lt;/strong&gt;: What is the (specific) risk to the release for taking this
change?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;: What specific testing has been done or needs to be done
to further validate any impact of this change?&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One or more &lt;a href=&quot;https://swift.org/community/#code-owners&quot;&gt;code owners&lt;/a&gt; for the impacted
components should review the change. Technical review can be delegated
by a code owner or otherwise requested as deemed appropriate or
useful.&lt;/p&gt;

&lt;p&gt;Prior to the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; going into restrictive change
control (as announced by the release manager) a code owner is allowed
to directly accept a pull request after it has gone through the
aforementioned technical review.  Once restrictive change control is
in place, only the release manager is allowed to accept a pull request
into &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt;.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>It's Coming: the Great Swift API Transformation</title>
    
    <author>
    
      <name>Dave Abrahams</name>
    
    </author>
    <link href="https://swift.org/blog/swift-api-transformation/"/>
    <updated>2016-01-29T00:00:00-08:00</updated>
    <id>https://swift.org/blog/swift-api-transformation/</id>
    <content type="html">&lt;p&gt;Cocoa, the Swift standard library, maybe even your own types and
methods—it’s all about to change, and you can help determine how.&lt;/p&gt;

&lt;p&gt;Ever since before Swift was released, there’s been a style gap between
Cocoa interfaces and APIs in the Swift standard library; lots of
things just look &lt;em&gt;different&lt;/em&gt;, often needlessly so. This is no mere
aesthetic concern; non-uniformity and lack of predictability make
everything harder, from coding to debugging to maintenance.
Fortunately Swift developers created tons of great code in spite of
that gap, and along the way, there evolved a sense of what 
“Swifty” code looks and feels like.&lt;/p&gt;

&lt;p&gt;Informed by that experience, when looking at our APIs, it’s easy to
see there’s room for improvement, both in the way the compiler imports
Objective-C APIs—where the results just don’t seem quite comfortable
in Swift—and in the Swift standard library, which lacks a level of
regularity and coherence that Cocoa users have come to expect. So we
at Apple decided to do something about it.&lt;/p&gt;

&lt;p&gt;In order to converge Cocoa and the standard library, we needed a
target to shoot for: a unified, written approach to API design that
everyone could follow.  We started by going back and questioning all
our old assumptions.  Existing guidelines were fantastic, but much of
the material was geared to Objective-C, didn’t cover Swift-specific
features such as default arguments, and more importantly, were not
informed by the emergent sense of “Swiftiness” that we felt was so
important to capture.&lt;/p&gt;

&lt;p&gt;As we developed these guidelines we applied them to the standard
library, all of Cocoa, and a couple of sample projects. We evaluated
the results, refined, and repeated.  Before Swift went open source,
we’d have done this all behind closed doors, and presented you with
the results in the next release, but a new era has dawned on Swift:
it’s time to show the world what we’ve been up to.  Here’s a tiny
example of how code looks before transformation:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;UIBezierPath&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;NSObject&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;NSCopying&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;NSCoding&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addLineToPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;CGPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fillWithBlendMode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;kCGBlendModeMultiply&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;and after:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;UIBezierPath&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Object&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Copying&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Coding&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addLineTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;CGPoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fillWith&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;kCGBlendModeMultiply&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;We’ve put three parts of this proposed transformation up for public
review in &lt;a href=&quot;https://swift.org/community/#mailing-lists&quot;&gt;Swift’s evolution group&lt;/a&gt;:
&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md&quot;&gt;changes to how Cocoa is imported&lt;/a&gt;,
&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0006-apply-api-guidelines-to-the-standard-library.md&quot;&gt;changes to the surface of the standard library&lt;/a&gt;,
and the
&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0023-api-guidelines.md&quot;&gt;API guidelines&lt;/a&gt;
that tie this all together. Suggestions for improvement have already
started coming in
from participants, and we’re able to see how they
&lt;a href=&quot;https://github.com/apple/swift-3-api-guidelines-review/pull/5/files&quot;&gt;affect APIs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For example,
&lt;a href=&quot;http://news.gmane.org/find-root.php?message_id=3C5040B3%2dA205%2d46FA%2d98D3%2d5696D678EB39%40gmail.com&quot;&gt;one suggestion&lt;/a&gt;
we’ve
&lt;a href=&quot;http://news.gmane.org/find-root.php?message_id=18A8335F%2d65F3%2d46A1%2dA494%2dAA89AC10836B%40apple.com&quot;&gt;explored&lt;/a&gt;
changes this call:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addArcWithCenter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;origin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;20.0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; 
  &lt;span class=&quot;nv&quot;&gt;startAngle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;endAngle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;CGFloat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;M_PI&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;2.0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;clockwise&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;into this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addArc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;nv&quot;&gt;center&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;origin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;20.0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; 
  &lt;span class=&quot;nv&quot;&gt;startAngle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;endAngle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;CGFloat&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;M_PI&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;2.0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;clockwise&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Will we make this change? The jury is out, but this is the time to
make your voice heard.  The review period has been extended through
&lt;strong&gt;Friday, February 5th&lt;/strong&gt;.  If you’d like to help shape the future of your
language and frameworks,
&lt;a href=&quot;https://swift.org/contributing/#participating-in-the-swift-evolution-process&quot;&gt;join the discussion&lt;/a&gt;.
The proposals and associated review threads are here:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0023-api-guidelines.md&quot;&gt;API Design Guidelines&lt;/a&gt; — &lt;a href=&quot;http://news.gmane.org/find-root.php?message_id=ABB71FFD%2d1AE8%2d43D3%2dB3F5%2d58225A2BAD66%40apple.com&quot;&gt;discussion&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md&quot;&gt;Better Translation of Objective-C APIs Into Swift&lt;/a&gt; — &lt;a href=&quot;http://news.gmane.org/find-root.php?message_id=CC036592%2d085D%2d4095%2d8D73%2d1DA9FC90A07B%40apple.com&quot;&gt;discussion&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0006-apply-api-guidelines-to-the-standard-library.md&quot;&gt;Apply API Guidelines to the Standard Library&lt;/a&gt; — &lt;a href=&quot;http://news.gmane.org/find-root.php?message_id=73E699B0%2dFAD2%2d46DA%2dB74E%2d849445A2F38A%40apple.com&quot;&gt;discussion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>Continuous Integration now Available</title>
    
    <author>
    
      <name>Nicole Jacque</name>
    
    </author>
    <link href="https://swift.org/blog/swift-ci/"/>
    <updated>2016-02-01T10:00:00-08:00</updated>
    <id>https://swift.org/blog/swift-ci/</id>
    <content type="html">&lt;p&gt;We are excited to announce that we have rolled out &lt;a href=&quot;https://swift.org/continuous-integration&quot;&gt;continuous integration&lt;/a&gt; (aka, CI) for the Swift project!&lt;/p&gt;

&lt;p&gt;Our CI system is powered by &lt;a href=&quot;https://jenkins-ci.org&quot;&gt;Jenkins&lt;/a&gt;.  For Apple’s platforms it builds and runs tests for macOS and the iOS simulator.  For Linux it builds and runs tests for Ubuntu 14.04 and Ubuntu 15.10 (both for x86_64).  In addition to using it for testing active branches, the CI system also produces the snapshots that are available for download from Swift.org.&lt;/p&gt;

&lt;p&gt;The intent of the CI is to enable additional configurations to be added over time, especially in the cases where ports to other platforms or architectures reach a critical mass and support from the Swift development community.&lt;/p&gt;

&lt;p&gt;CI is not only a powerful tool for monitoring the health of the Swift project, but can also be used as a part of reviewing changes before they land.  To facilitate this, we have &lt;strong&gt;integrated testing within pull requests&lt;/strong&gt;, allowing testing to occur before commits are made and without destabilizing the &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; branch. The results will be posted inline within the pull request.  When someone makes a change that breaks a build, they will automatically be notified via email.&lt;/p&gt;

&lt;h3 id=&quot;testing-pull-requests&quot;&gt;Testing Pull Requests&lt;/h3&gt;

&lt;p&gt;When a change is reviewed on a pull request, a member of the community with commit access can trigger testing of the pull request by the CI system.  Tests can be triggered to run on macOS, Linux, or both platforms.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../../continuous-integration/images/ci_pull_command.png&quot; alt=&quot;pull request CI trigger&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Testing status is then be posted inline with the pull request, showing that a test is in progress.  You can click the “details” link to go directly to the status page for the test in progress.
&lt;img src=&quot;../../continuous-integration/images/ci_pending.png&quot; alt=&quot;CI Progress&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When tests complete, the result is updated in the pull request.
&lt;img src=&quot;../../continuous-integration/images/ci_pass.png&quot; alt=&quot;CI Pass&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If there are issues found during testing, you will get a link to the details of the failure.
&lt;img src=&quot;../../continuous-integration/images/ci_failure.png&quot; alt=&quot;CI Pass&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In the near future, we will also be supporting running performance tests.  We also welcome community involvement to help us expand testing to additional configurations.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>Swift Benchmark Suite now Available</title>
    
    <author>
    
      <name>Luke Larson</name>
    
    </author>
    <link href="https://swift.org/blog/swift-benchmark-suite/"/>
    <updated>2016-02-08T10:00:00-08:00</updated>
    <id>https://swift.org/blog/swift-benchmark-suite/</id>
    <content type="html">&lt;p&gt;Apple’s Swift Team is happy to announce that Swift’s &lt;a href=&quot;https://github.com/apple/swift/tree/master/benchmark&quot;&gt;benchmark
suite&lt;/a&gt; is now open
source.&lt;/p&gt;

&lt;p&gt;The suite contains source code for benchmarks, libraries, and utilities
designed to help track Swift performance and catch performance regressions
before they are committed, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;75 benchmarks covering a number of important Swift workloads&lt;/li&gt;
  &lt;li&gt;Libraries providing commonly needed benchmarking functions&lt;/li&gt;
  &lt;li&gt;A driver for running benchmarks and displaying performance metrics&lt;/li&gt;
  &lt;li&gt;A utility for comparing benchmark metrics across Swift versions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We look forward to working with the Swift community to make Swift as fast as
possible!&lt;/p&gt;

&lt;h2 id=&quot;building-and-running-benchmarks&quot;&gt;Building and Running Benchmarks&lt;/h2&gt;

&lt;p&gt;Contributors to the Swift project are encouraged to run Swift’s benchmark suite
against their changes before requesting pull requests in order to catch
potential performance regressions. Instructions for building and running Swift
benchmarks are available in
&lt;a href=&quot;https://github.com/apple/swift/tree/master/benchmark&quot;&gt;swift/benchmark/README.md&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the future, we are planning to add support to Swift’s &lt;a href=&quot;https://ci.swift.org&quot;&gt;continuous
integration system&lt;/a&gt; for running benchmarks on pull
requests.&lt;/p&gt;

&lt;h2 id=&quot;contributing-benchmarks-and-improvements&quot;&gt;Contributing Benchmarks and Improvements&lt;/h2&gt;

&lt;p&gt;Contributions to Swift’s benchmark suite are welcome! Pull requests for new
benchmarks covering performance critical workloads, additions to benchmark
helper libraries, and other improvements are encouraged. Please note that
Swift’s benchmark suite shares the Swift project’s
&lt;a href=&quot;https://github.com/apple/swift/blob/master/LICENSE.txt&quot;&gt;license&lt;/a&gt;, so we are
unable to accept Swift ports of benchmarks covered under other licenses.
Additional information about the suite and instructions on adding benchmarks
are available in
&lt;a href=&quot;https://github.com/apple/swift/tree/master/benchmark&quot;&gt;swift/benchmark/README.md&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Expanding Commit Access</title>
    
    <author>
    
      <name>Ewa Matejska</name>
    
    </author>
    <link href="https://swift.org/blog/swift-commit-access/"/>
    <updated>2016-02-29T00:00:00-08:00</updated>
    <id>https://swift.org/blog/swift-commit-access/</id>
    <content type="html">&lt;p&gt;Now that the Swift Continuous Integration system is established and proven, we’d like to grant commit access on a more frequent basis to project contributors who have established a track record of good contributions.  If you would like commit access, please send an email to &lt;a href=&quot;&amp;#109;&amp;#097;&amp;#105;&amp;#108;&amp;#116;&amp;#111;:&amp;#099;&amp;#111;&amp;#100;&amp;#101;&amp;#045;&amp;#111;&amp;#119;&amp;#110;&amp;#101;&amp;#114;&amp;#115;&amp;#064;&amp;#115;&amp;#119;&amp;#105;&amp;#102;&amp;#116;&amp;#046;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;the code owners list&lt;/a&gt; with a list of 5 non-trivial pull requests that we accepted without modifications.&lt;/p&gt;

&lt;p&gt;For more details about what it means to have commit access, please see the &lt;a href=&quot;https://swift.org/contributing/#contributing-code&quot;&gt;Contributing Code&lt;/a&gt; section.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Swift 2.2 Released!</title>
    
    <author>
    
      <name>Ted Kremenek</name>
    
    </author>
    <link href="https://swift.org/blog/swift-2-2-released/"/>
    <updated>2016-03-21T05:00:00-07:00</updated>
    <id>https://swift.org/blog/swift-2-2-released/</id>
    <content type="html">&lt;p&gt;We are very pleased to announce the release of Swift 2.2!  This is the first official release of Swift since it was open-sourced on December 3, 2015.  Notably, the release includes contributions from 212 non-Apple contributors — changes that span from simple bug fixes to enhancements and alterations to the core language and Swift Standard Library.&lt;/p&gt;

&lt;h3 id=&quot;language-changes&quot;&gt;Language Changes&lt;/h3&gt;

&lt;p&gt;Swift 2.2 is a minor language release that is mostly source-compatible with Swift 2.1.  It contains the following language changes that went through the Swift’s &lt;a href=&quot;https://swift.org/contributing/#participating-in-the-swift-evolution-process&quot;&gt;evolution process&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0001-keywords-as-argument-labels.md&quot;&gt;SE-0001: Allow (most) keywords as argument labels&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0015-tuple-comparison-operators.md&quot;&gt;SE-0015: Tuple comparison operators&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0014-constrained-AnySequence.md&quot;&gt;SE-0014: Constraining &lt;code class=&quot;highlighter-rouge&quot;&gt;AnySequence.init&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0011-replace-typealias-associated.md&quot;&gt;SE-0011: Replace &lt;code class=&quot;highlighter-rouge&quot;&gt;typealias&lt;/code&gt; keyword with &lt;code class=&quot;highlighter-rouge&quot;&gt;associatedtype&lt;/code&gt; for associated type declarations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0021-generalized-naming.md&quot;&gt;SE-0021: Naming Functions with Argument Labels&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0022-objc-selectors.md&quot;&gt;SE-0022: Referencing the Objective-C selector of a method&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0020-if-swift-version.md&quot;&gt;SE-0020: Swift Language Version Build Configuration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Beyond these language changes Swift 2.2 also contains numerous bug fixes, enhancements to diagnostics, and produces even faster-running code.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://swift.org/package-manager/&quot;&gt;Swift Package Manager&lt;/a&gt; is still early in development and is not included in this release.&lt;/p&gt;

&lt;h3 id=&quot;documentation&quot;&gt;Documentation&lt;/h3&gt;

&lt;p&gt;An updated version of &lt;a href=&quot;https://swift.org/documentation/#the-swift-programming-language&quot;&gt;The Swift Programming Language&lt;/a&gt; for Swift 2.2 is now available on Swift.org.  It is also available for free on Apple’s iBooks store.&lt;/p&gt;

&lt;h3 id=&quot;platforms&quot;&gt;Platforms&lt;/h3&gt;

&lt;h4 id=&quot;linux-ubuntu-1404-and-ubuntu-1510&quot;&gt;Linux (Ubuntu 14.04 and Ubuntu 15.10)&lt;/h4&gt;

&lt;p&gt;Swift 2.2 includes support for Swift on Linux.  The Linux port is still relatively new and in this release does not include the &lt;a href=&quot;https://swift.org/core-libraries/&quot;&gt;Swift Core Libraries&lt;/a&gt; (which will appear in Swift 3).  The port does, however, include LLDB and the REPL.&lt;/p&gt;

&lt;p&gt;Official binaries for Ubuntu 14.04 and Ubuntu 15.10 are &lt;a href=&quot;https://swift.org/download/&quot;&gt;available for download&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;apple-xcode&quot;&gt;Apple (Xcode)&lt;/h4&gt;

&lt;p&gt;For development on Apple’s platforms, Swift 2.2 ships as part of &lt;a href=&quot;https://developer.apple.com/xcode/download/&quot;&gt;Xcode 7.3&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;sources&quot;&gt;Sources&lt;/h3&gt;

&lt;p&gt;Development on Swift 2.2 was tracked in the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; on the following repositories on GitHub:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift&quot;&gt;swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-lldb&quot;&gt;swift-lldb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-cmark&quot;&gt;swift-cmark&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-RELEASE&lt;/code&gt; designates the specific revisions in those repositories that make up the final version of Swift 2.2.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.2-branch&lt;/code&gt; will remain open — but under the same &lt;a href=&quot;https://swift.org/blog/swift-2-2-release-process/&quot;&gt;release management process&lt;/a&gt; — to accumulate changes for a potential future bug-fix “dot” release.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>New Features in Swift 2.2</title>
    
    <author>
    
      <name>Paul Hudson</name>
    
    </author>
    <link href="https://swift.org/blog/swift-2-2-new-features/"/>
    <updated>2016-03-30T01:00:00-07:00</updated>
    <id>https://swift.org/blog/swift-2-2-new-features/</id>
    <content type="html">&lt;p&gt;Swift 2.2 brings new syntax, new features, and some deprecations too.  It is an interim release before Swift 3 comes later this year &lt;a href=&quot;https://swift.org/blog/swift-api-transformation/&quot;&gt;with even bigger changes&lt;/a&gt;, and the changes in Swift 2.2 align with the broader goals of Swift 3 to focus on gradually stabilizing the core language and Standard Library by adding missing features, refining what is already there, and removing what is no longer needed in the language.  All changes in Swift 2.2 went through the community-driven &lt;a href=&quot;https://swift.org/contributing/#participating-in-the-swift-evolution-process&quot;&gt;Swift evolution process&lt;/a&gt; — where over 30 proposals have been submitted, reviewed, and accepted since Swift was open-sourced a few months ago.&lt;/p&gt;

&lt;p&gt;The changes in Swift 2.2 will have a direct impact on your code, and this article will walk you through what has changed and why, along with code examples to help you migrate quickly to the new Swift 2.2 syntax.&lt;/p&gt;

&lt;p&gt;As a reminder, “deprecation” means that a function or language feature is no longer recommended for use and will be removed entirely at a later date. In practice that means Swift will issue a compiler warning today, and a compiler error in the future — likely Swift 3.&lt;/p&gt;

&lt;h3 id=&quot;compile-time-swift-version-checks&quot;&gt;Compile-time Swift version checks&lt;/h3&gt;

&lt;p&gt;Swift’s continuous march forward can occasionally be hard for app developers to keep up with, but it’s even harder for developers of libraries — if you have thousands of people using your library, you might need to support more than one version of Swift to ensure everyone can use your work no matter what version they are on.&lt;/p&gt;

&lt;p&gt;Swift 2.2 introduces a new compiler directive that makes cross-version compatibility a cinch: you can now specify blocks of code that should be read only if the compiler supports a specific Swift language version. For example:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;#if swift(&amp;gt;=3.0)&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Running Swift 3.0 or later&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;#else&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Running Swift 2.2 or earlier&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;#endif&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This is different from the &lt;code class=&quot;highlighter-rouge&quot;&gt;#available&lt;/code&gt; syntax introduced in Swift 2 because that was a runtime check — this new feature is compile time, so code that fails the language version check is effectively invisible. You could write code like this if you wanted to:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;#if swift(&amp;gt;=3.0)&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Running Swift 3.0 or later&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;#else&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;BRING&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;BACK&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;WASH&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;HE&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;WAS&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;MY&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;FAVORITE&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;#endif&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;As long as the Swift compiler targets 3.0 or greater, that will compile just fine because the message in capital letters is ignored by the compiler.&lt;/p&gt;

&lt;p&gt;A word of warning: this feature is not useable at this time, because a Swift 2.1 compiler will choke on &lt;code class=&quot;highlighter-rouge&quot;&gt;#if swift(&amp;gt;=2.2)&lt;/code&gt; — it has no idea what that means. However, once Swift 3.0 becomes available, and for all future versions, compile-time Swift version checks will be a useful addition to your toolkit.&lt;/p&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0020-if-swift-version.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; for this change.&lt;/p&gt;

&lt;h3 id=&quot;compile-time-checked-selectors&quot;&gt;Compile-time checked selectors&lt;/h3&gt;

&lt;p&gt;In Swift 2.1, code like the below would compile with no problems:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;viewDidLoad&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;viewDidLoad&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;navigationItem&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rightBarButtonItem&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;
        &lt;span class=&quot;kt&quot;&gt;UIBarButtonItem&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;barButtonSystemItem&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;nv&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;addNewFireflyRefernce&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;addNewFireflyReference&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;gratuitousReferences&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;We should start dealing in black-market beagles.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The code itself is syntactically sound, but the app will crash because the navigation bar button calls a method &lt;code class=&quot;highlighter-rouge&quot;&gt;addNewFireflyRefernce()&lt;/code&gt; — it’s missing one of the Es in “reference”. These kinds of simple typos could easily introduce bugs, so Swift 2.2 deprecates using strings for selectors and instead introduces new syntax: &lt;code class=&quot;highlighter-rouge&quot;&gt;#selector&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Using &lt;code class=&quot;highlighter-rouge&quot;&gt;#selector&lt;/code&gt; will check your code at compile time to make sure the method you want to call actually exists. Even better, if the method &lt;em&gt;doesn’t&lt;/em&gt; exist, you’ll get a compile error: Xcode will refuse to build your app, thus banishing to oblivion another possible source of bugs.&lt;/p&gt;

&lt;p&gt;Here is the previous code example rewritten using &lt;code class=&quot;highlighter-rouge&quot;&gt;#selector&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;viewDidLoad&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;viewDidLoad&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;navigationItem&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rightBarButtonItem&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;
        &lt;span class=&quot;kt&quot;&gt;UIBarButtonItem&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;barButtonSystemItem&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;nv&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;selector&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;addNewFireflyRefernce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;addNewFireflyReference&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;gratuitousReferences&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Curse your sudden but inevitable betrayal!&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;When that code is built, the compiler will send back the error “Use of unresolved identifier ‘addNewFireflyRefernce’” — shiny!&lt;/p&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0022-objc-selectors.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; or read the &lt;a href=&quot;https://lists.swift.org/pipermail/swift-evolution-announce/2016-January/000026.html&quot;&gt;swift-evolution-announce post&lt;/a&gt; detailing the rationale.&lt;/p&gt;

&lt;h3 id=&quot;more-keywords-as-argument-labels&quot;&gt;More keywords as argument labels&lt;/h3&gt;

&lt;p&gt;Swift has a lot of keywords: those little things like &lt;code class=&quot;highlighter-rouge&quot;&gt;class&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;func&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;let&lt;/code&gt;, and &lt;code class=&quot;highlighter-rouge&quot;&gt;public&lt;/code&gt; that have special meaning and cannot be used as identifiers. Swift has always allowed you to use keywords as argument labels, but only if you placed them in backticks like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;visitCity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;`&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;I&#39;m going to visit &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; in &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nf&quot;&gt;visitCity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Nashville&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Tennessee&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;As of Swift 2.2, any keyword can be used as an argument label, with the exception of &lt;code class=&quot;highlighter-rouge&quot;&gt;inout&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt;, and &lt;code class=&quot;highlighter-rouge&quot;&gt;let&lt;/code&gt;. If you have code that used keywords in backticks, you’ll get an Xcode Fix-it to remove them. So, code like this is now possible:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;visitCity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;I&#39;m going to visit &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; in &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nf&quot;&gt;visitCity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Nashville&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Tennessee&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0001-keywords-as-argument-labels.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; for this change.&lt;/p&gt;

&lt;h3 id=&quot;tuple-comparison-is-built-in&quot;&gt;Tuple comparison is built-in&lt;/h3&gt;

&lt;p&gt;Tuples are a fundamental data type in Swift, and bring a number of benefits — not least being able to return multiple values from functions. Swift 2.2 introduces the ability to compare two tuples for equality, which means it will check each element in one tuple against the matching element in another, and report true if all elements match.&lt;/p&gt;

&lt;p&gt;For example, the below code will print “No match”:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;singer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;first&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Taylor&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;last&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Swift&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;alien&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;first&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Justin&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;last&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Bieber&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;singer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;alien&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;They match! That explains why you never see them together…&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No match.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Swift 2.2 tuple comparison works up to arity 6, which is a fancy way of saying that tuples can be compared as long as they contain no more than six elements.&lt;/p&gt;

&lt;p&gt;One warning: Swift 2.2 will ignore your element names when checking for equality, so &lt;code class=&quot;highlighter-rouge&quot;&gt;singer&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;bird&lt;/code&gt; will be considered equal in the code below:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;singer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;first&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Taylor&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;last&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Swift&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;bird&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Taylor&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;breed&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Swift&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;singer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;bird&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;This explains why she sings so well.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No match.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0015-tuple-comparison-operators.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; for this change.&lt;/p&gt;

&lt;h3 id=&quot;tuple-splat-syntax-is-deprecated&quot;&gt;Tuple splat syntax is deprecated&lt;/h3&gt;

&lt;p&gt;Staying with tuples for a moment longer, Swift 2.2 deprecates a feature that was so rarely used I’m only mentioning it because of the marvelous name. In Swift 2.1 and earlier it was possible to use a carefully crafted tuple to fill the parameters of a function. So, if you had a function that took two parameters, you could call it with a two-element tuple as long as the tuple had the correct types and element names. For example:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;describePerson&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;age&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; is &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;age&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; years old&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;person&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Malcolm Reynolds&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;age&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;49&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;describePerson&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;person&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This syntax — affectionately called “tuple splat syntax” — is the antithesis of idiomatic Swift’s self-documenting, readable style, and so it’s deprecated in Swift 2.2.&lt;/p&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0029-remove-implicit-tuple-splat.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; or read the &lt;a href=&quot;https://lists.swift.org/pipermail/swift-evolution-announce/2016-February/000033.html&quot;&gt;swift-evolution-announce post&lt;/a&gt; detailing the rationale.&lt;/p&gt;

&lt;h3 id=&quot;c-style-for-loops-are-deprecated&quot;&gt;C-style &lt;code class=&quot;highlighter-rouge&quot;&gt;for&lt;/code&gt; loops are deprecated&lt;/h3&gt;

&lt;p&gt;Even though Swift has several idiomatic loop options, C-style for loops were still part of the language and occasionally used. For example:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;These have been deprecated in Swift 2.2 and will be removed entirely in Swift 3.0 — one more step towards never typing a semi-colon again.&lt;/p&gt;

&lt;p&gt;If you use Xcode, you may be offered a Fix-it that will convert your C-style for loops into modern Swift. In the previous case, the result uses a range like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;..&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;However, Fix-it’s capabilities are limited, so you will need to do some work yourself. For example, the two loops below are ones that Fix-it will not help you with at this time:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;In the first case, you should create a reverse range using &lt;code class=&quot;highlighter-rouge&quot;&gt;(1...10).reverse()&lt;/code&gt;. This is &lt;em&gt;not&lt;/em&gt; the same as writing &lt;code class=&quot;highlighter-rouge&quot;&gt;i in 10...1&lt;/code&gt;, which will compile but crash at runtime. In the second case, you should use &lt;code class=&quot;highlighter-rouge&quot;&gt;stride(to:by:)&lt;/code&gt; to count in twos. So, the correct way to rewrite both loops for Swift 2.2 is like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;reverse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;stride&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;by&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; or read the &lt;a href=&quot;https://lists.swift.org/pipermail/swift-evolution-announce/2015-December/000001.html&quot;&gt;swift-evolution-announce post&lt;/a&gt; detailing the rationale.&lt;/p&gt;

&lt;h3 id=&quot;and----are-deprecated&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;++&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;--&lt;/code&gt; are deprecated&lt;/h3&gt;

&lt;p&gt;If you were using C-style for loops, this next change might surprise you even more: &lt;code class=&quot;highlighter-rouge&quot;&gt;++&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;--&lt;/code&gt; are also deprecated, both as prefix and postfix operators. This means that code such as &lt;code class=&quot;highlighter-rouge&quot;&gt;for var i = 0; i &amp;lt; 10; i++&lt;/code&gt; contains not one but &lt;em&gt;two&lt;/em&gt; deprecations, which is quite remarkable even in the fast-moving Swift world.&lt;/p&gt;

&lt;p&gt;This change means that all the code below is now deprecated, and will stop working entirely in Swift 3:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;--&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;You will instead need to use &lt;code class=&quot;highlighter-rouge&quot;&gt;i += 1&lt;/code&gt; or &lt;code class=&quot;highlighter-rouge&quot;&gt;i -= 1&lt;/code&gt;, and Xcode will offer you Fix-its for each of the examples above. In the interests of full disclosure: the Fix-it for &lt;code class=&quot;highlighter-rouge&quot;&gt;i = i++&lt;/code&gt; will give you a compiler error, which is not really a surprise — what is &lt;code class=&quot;highlighter-rouge&quot;&gt;i = i++&lt;/code&gt; supposed to do anyway?&lt;/p&gt;

&lt;p&gt;There is no single reason for this change. Instead, it’s a number of small reasons that add up, not least:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Writing &lt;code class=&quot;highlighter-rouge&quot;&gt;i++&lt;/code&gt; was only slightly shorter than writing &lt;code class=&quot;highlighter-rouge&quot;&gt;i += 1&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;If a newcomer to Swift was not already familiar with &lt;code class=&quot;highlighter-rouge&quot;&gt;++&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;--&lt;/code&gt; they just steepened the learning curve.&lt;/li&gt;
  &lt;li&gt;C-style loops — a common place where &lt;code class=&quot;highlighter-rouge&quot;&gt;++&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;--&lt;/code&gt; are used — are also being deprecated.&lt;/li&gt;
  &lt;li&gt;Using the result of these operators depends on whether they are used prefix or postfix, which can cause confusion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s a quote in the Swift Evolution proposal for this change that sums up the rationale concisely: these fail the metric of “if we didn’t already have these, would we add them to Swift 3?” [&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md&quot;&gt;1&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; for this change.&lt;/p&gt;

&lt;h3 id=&quot;var-parameters-are-deprecated&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt; parameters are deprecated&lt;/h3&gt;

&lt;p&gt;Prior to Swift 2.2, function parameters could be declared as &lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt; if you wanted to modify them inside the function. For example:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;greet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;uppercaseString&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Hello, &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;!&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Taylor&quot;&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;greet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;After function, name is &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;While this was a helpful shortcut, it did add some extra confusion: does that final &lt;code class=&quot;highlighter-rouge&quot;&gt;print()&lt;/code&gt; statement output “Taylor” or “TAYLOR”? This was made even more confusing by the presence of the &lt;code class=&quot;highlighter-rouge&quot;&gt;inout&lt;/code&gt; keyword: using &lt;code class=&quot;highlighter-rouge&quot;&gt;inout&lt;/code&gt; rather than &lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt; in that example, then adding a single ampersand, produces this code:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;greet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;inout&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;uppercaseString&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Hello, &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;!&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Taylor&quot;&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;greet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;After function, name is &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;When run, the &lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt; example produces different output to the &lt;code class=&quot;highlighter-rouge&quot;&gt;inout&lt;/code&gt; example, because changes to &lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt; parameters apply only inside the function whereas changes to &lt;code class=&quot;highlighter-rouge&quot;&gt;inout&lt;/code&gt; parameters affect the original value directly.&lt;/p&gt;

&lt;p&gt;In Swift 2.2, this confusion is cleared up by deprecating the &lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt; keyword for function parameters, ahead of its removal in Swift 3.0. If you want to replicate the old behavior, simply create your own copy inside the function like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;greet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;uppercaseName&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;uppercaseString&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Hello, &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;uppercaseName&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;!&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0003-remove-var-parameters.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; or read the &lt;a href=&quot;https://lists.swift.org/pipermail/swift-evolution-announce/2016-January/000027.html&quot;&gt;swift-evolution-announce post&lt;/a&gt; detailing the rationale.&lt;/p&gt;

&lt;h3 id=&quot;renamed-debug-identifiers&quot;&gt;Renamed debug identifiers&lt;/h3&gt;

&lt;p&gt;The Swift compiler automatically provides some symbols that are useful when debugging. Previously these were in “screaming snake case”, so &lt;code class=&quot;highlighter-rouge&quot;&gt;__FILE__&lt;/code&gt; would be replaced with the name of the current Swift file, &lt;code class=&quot;highlighter-rouge&quot;&gt;__LINE__&lt;/code&gt; with the line number and so on. In Swift 2.2 those old identifiers are deprecated and replaced with &lt;code class=&quot;highlighter-rouge&quot;&gt;#file&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;#line&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;#column&lt;/code&gt;, and &lt;code class=&quot;highlighter-rouge&quot;&gt;#function&lt;/code&gt;, which introduces “a convention where # means invoke compiler substitution logic here.” [&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0028-modernizing-debug-identifiers.md&quot;&gt;2&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Here’s an example demonstrating the old and new syntax:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;visitCity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;// old - deprecated!&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;This is on line &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;__LINE__&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; of &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;__FUNCTION__&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;I&#39;m going to visit &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; in &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;// new - shiny!&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;This is on line &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; of &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;As with many other changes, Xcode has a Fix-it that will update your code correctly.&lt;/p&gt;

&lt;p&gt;For more information, see the &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0028-modernizing-debug-identifiers.md&quot;&gt;Swift Evolution proposal&lt;/a&gt; or read the &lt;a href=&quot;https://lists.swift.org/pipermail/swift-evolution-announce/2016-February/000030.html&quot;&gt;swift-evolution-announce post&lt;/a&gt; detailing the rationale.&lt;/p&gt;

&lt;h3 id=&quot;and-theres-more&quot;&gt;And there’s more…&lt;/h3&gt;

&lt;p&gt;This post has covered the changes that are likely to affect most developers, but other smaller changes have been introduced alongside improved compiler messages and performance enhancements. &lt;a href=&quot;https://swift.org/blog/swift-2-2-released/&quot;&gt;Click here for the official release notes&lt;/a&gt;, where you can find links to full discussions on the changes as well as install instructions for Linux.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Swift 3.0 Release Process</title>
    
    <author>
    
      <name>Ted Kremenek</name>
    
    </author>
    <link href="https://swift.org/blog/swift-3-0-release-process/"/>
    <updated>2016-05-06T06:00:00-07:00</updated>
    <id>https://swift.org/blog/swift-3-0-release-process/</id>
    <content type="html">&lt;p&gt;This post describes the goals, release process, and estimated schedule for Swift
3.0.&lt;/p&gt;

&lt;p&gt;Swift 3.0 is a major release that is &lt;em&gt;not&lt;/em&gt; source-compatible with Swift 2.2. It
contains fundamental changes to the language and Swift Standard Library.  A
comprehensive list of implemented changes for Swift 3.0 can be found on the
&lt;a href=&quot;https://github.com/apple/swift-evolution#implemented-proposals-for-swift-3&quot;&gt;Swift evolution
site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Swift 3.0 is also the first release to include the &lt;a href=&quot;https://swift.org/package-manager/&quot;&gt;Swift Package Manager&lt;/a&gt;.  While the Swift Package Manager is still early
in its development, it supports the development and distribution of
cross-platform Swift packages.  The Swift Package Manager will be available on
both Darwin and Linux.&lt;/p&gt;

&lt;p&gt;For Linux, Swift 3 will also be the first release to contain the &lt;a href=&quot;https://swift.org/core-libraries/&quot;&gt;Swift Core
Libraries&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Swift 3.0 is expected to be released sometime in late 2016. In addition to its
Swift.org release, Swift 3.0 will ship in a future version of Xcode.&lt;/p&gt;

&lt;h2 id=&quot;developer-previews&quot;&gt;Developer Previews&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Swift 3.0 will have a series of developer previews (i.e., “seeds” or “betas”)
that provide qualified and converged builds of Swift 3.  The goal is to
provide users with more stable and qualified Swift binaries that they can
&lt;a href=&quot;https://swift.org/download&quot;&gt;download&lt;/a&gt; and try out (and file bugs against)
instead of just grabbing the latest snapshot of &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The cadence between Developer Previews will likely be irregular, but likely
every 4-6 weeks.  They will be partially driven by the volume of change going
into &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; and how much time is needed to stabilize a developer preview
branch.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Swift 3.0 will be declared “GM” from the last developer preview branch.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Content going into developer previews will be managed by the appropriate
release manager (see below).&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;getting-changes-into-swift-30&quot;&gt;Getting Changes into Swift 3.0&lt;/h2&gt;

&lt;h3 id=&quot;branches&quot;&gt;Branches&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;master&lt;/strong&gt;: Development of Swift 3.0 happens in &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt;.  All changes
going in &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; will be part of the final Swift 3.0 release until the
last developer preview branch is created.  At that point &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; tracks
development for future Swift releases.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;swift-3.0-preview-&lt;em&gt;&amp;lt;X&amp;gt;&lt;/em&gt;-branch&lt;/strong&gt;: Branches for developer previews will be
created from &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt;. All changes to those branches will need to be submitted
via pull requests that initiate testing on continuous integration. The release
manager for the given repository approves merging a pull request into the
developer preview branch.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;swift-3.0-branch&lt;/strong&gt;: The last developer preview branch created from &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt;
will be called &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-branch&lt;/code&gt;.  This will be the final “release branch”.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;philosophy-on-taking-changes-into-swift-30&quot;&gt;Philosophy on Taking Changes into Swift 3.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;As Swift 3.0 converges only changes that align with the core goals of the
release will be considered.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Source-breaking changes to the language will be
considered on a case-by-case basis.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;All language and API changes for Swift 3.0 will go through the &lt;a href=&quot;https://github.com/apple/swift-evolution&quot;&gt;Swift
Evolution&lt;/a&gt; process.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Criteria — as set by the release manager — for accepting changes
will becoming increasingly restrictive over time as the release
converges.  The same policy applies to developer preview branches, which
are essentially mini-releases.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;schedule&quot;&gt;Schedule&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The first developer preview branch &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-preview-1-branch&lt;/code&gt; will
be created from &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; on &lt;strong&gt;May 12&lt;/strong&gt;.  It will be released 4-6 weeks
later.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The date for creating the last developer preview branch
— &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-branch&lt;/code&gt; — has
not yet been established.  When that date is determined the plan will be
communicated both on &lt;a href=&quot;https://lists.swift.org/mailman/listinfo/swift-dev&quot;&gt;swift-dev&lt;/a&gt; and by updating this post.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;impacted-repositories&quot;&gt;Impacted Repositories&lt;/h2&gt;

&lt;p&gt;The following repositories will have
&lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-preview-&amp;lt;X&amp;gt;-branch&lt;/code&gt;/&lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-branch&lt;/code&gt; branches to track
sources as part of Swift 3.0 release:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift&quot;&gt;swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-lldb&quot;&gt;swift-lldb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-cmark&quot;&gt;swift-cmark&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-llbuild&quot;&gt;swift-llbuild&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-package-manager&quot;&gt;swift-package-manager&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-libdispatch&quot;&gt;swift-corelibs-libdispatch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-foundation&quot;&gt;swift-corelibs-foundation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-xctest&quot;&gt;swift-corelibs-xctest&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following repositories will only have a &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-branch&lt;/code&gt; instead of
developer preview branches, as they have already effectively converged:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;release-managers&quot;&gt;Release Managers&lt;/h2&gt;

&lt;p&gt;The overall management of the release will be overseen by the following
individuals, who will announce when stricter control of change
goes into effect for the Swift 3.0 release as the release converges:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/tkremenek&quot;&gt;Ted Kremenek&lt;/a&gt; is the overall release manager for Swift 3.0.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/fredriss&quot;&gt;Frédéric Riss&lt;/a&gt;
is the release manager for &lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt; and &lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/k8stone&quot;&gt;Kate Stone&lt;/a&gt; is the
release manager for &lt;a href=&quot;https://github.com/apple/swift-lldb&quot;&gt;swift-lldb&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/parkera&quot;&gt;Tony Parker&lt;/a&gt; is the release
manager for &lt;a href=&quot;https://github.com/apple/swift-corelibs-foundation&quot;&gt;swift-corelibs-foundation&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/das&quot;&gt;Daniel Steffen&lt;/a&gt; is the release
manager for &lt;a href=&quot;https://github.com/apple/swift-corelibs-libdispatch&quot;&gt;swift-corelibs-libdispatch&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/mike-ferris-apple&quot;&gt;Mike Ferris&lt;/a&gt; is the
release manager for &lt;a href=&quot;https://github.com/apple/swift-corelibs-xctest&quot;&gt;swift-corelibs-xctest&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/rballard&quot;&gt;Rick Ballard&lt;/a&gt; is the release
manager for &lt;a href=&quot;https://github.com/apple/swift-package-manager&quot;&gt;swift-package-manager&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please feel free to email &lt;a href=&quot;https://lists.swift.org/mailman/listinfo/swift-dev&quot;&gt;swift-dev&lt;/a&gt; or &lt;a href=&quot;https://github.com/tkremenek&quot;&gt;Ted Kremenek&lt;/a&gt; directly concerning any
questions about the release management process.&lt;/p&gt;

&lt;h2 id=&quot;pull-requests-for-developer-previews&quot;&gt;Pull Requests for Developer Previews&lt;/h2&gt;

&lt;p&gt;All pull requests nominating changes for inclusion in developer preview
branches should include the following information:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;: A description of the issue being fixed or
enhancement being made.  This can be brief, but it should be
clear.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Scope&lt;/strong&gt;: An assessment of the impact/importance of the change.
For example, is the change a source-breaking language change, etc.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;SR Issue&lt;/strong&gt;: The SR if the change fixes/implements an
issue/enhancement on &lt;a href=&quot;https://bugs.swift.org&quot;&gt;bugs.swift.org&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Risk&lt;/strong&gt;: What is the (specific) risk to the release for taking this
change?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;: What specific testing has been done or needs to be done
to further validate any impact of this change?&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One or more &lt;a href=&quot;https://swift.org/community/#code-owners&quot;&gt;code owners&lt;/a&gt; for the impacted
components should review the change. Technical review can be delegated
by a code owner or otherwise requested as deemed appropriate or
useful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All change&lt;/strong&gt; going into developer preview branches &lt;strong&gt;must go through
pull requests&lt;/strong&gt; that are accepted by the corresponding release manager.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>Swift 2.3</title>
    
    <author>
    
      <name>Ted Kremenek</name>
    
    </author>
    <link href="https://swift.org/blog/swift-2-3/"/>
    <updated>2016-06-12T19:00:00-07:00</updated>
    <id>https://swift.org/blog/swift-2-3/</id>
    <content type="html">&lt;p&gt;We are pleased to announce &lt;strong&gt;Swift 2.3&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Swift 2.3 is a minor update from Swift 2.2.1.  The primary difference between
Swift 2.2.1 and Swift 2.3 is that it is intended to be paired with Apple’s
macOS 10.12, iOS 10, watchOS 3, and tvOS 10 SDKs.  It also updates the underlying
LLVM and Clang versions to match with those in the Swift 3 compiler.&lt;/p&gt;

&lt;h3 id=&quot;sources&quot;&gt;Sources&lt;/h3&gt;

&lt;p&gt;Sources for Swift 2.3 are available in the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-2.3-branch&lt;/code&gt; branch on GitHub.&lt;/p&gt;

&lt;h3 id=&quot;downloads&quot;&gt;Downloads&lt;/h3&gt;

&lt;h4 id=&quot;apple-xcode&quot;&gt;Apple (Xcode)&lt;/h4&gt;

&lt;p&gt;Swift 2.3 is available for free as part of &lt;a href=&quot;https://developer.apple.com/xcode/download&quot;&gt;Xcode 8&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;linux-ubuntu-1404-and-ubuntu-1510&quot;&gt;Linux (Ubuntu 14.04 and Ubuntu 15.10)&lt;/h4&gt;

&lt;p&gt;Official binaries for Linux will be available shortly after the upgrade to the
continuous integration system (which produces the binaries).  Note that for
Linux, Swift 2.2.1 and Swift 2.3 are nearly identical.  This post will be updated
once binaries are available.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Swift 3.0 Preview 1 Released!</title>
    
    <author>
    
      <name>Ted Kremenek</name>
    
    </author>
    <link href="https://swift.org/blog/swift-3-0-preview-1-released/"/>
    <updated>2016-06-13T05:00:00-07:00</updated>
    <id>https://swift.org/blog/swift-3-0-preview-1-released/</id>
    <content type="html">&lt;p&gt;We are very pleased to announce &lt;strong&gt;Developer Preview 1&lt;/strong&gt; of Swift 3.0!&lt;/p&gt;

&lt;p&gt;As described in the &lt;a href=&quot;https://swift.org/blog/swift-3-0-release-process/&quot;&gt;Swift 3.0 Release Process&lt;/a&gt;, developer previews (i.e., “seeds” or
“betas”) provide qualified builds of Swift 3 that are more stable than just
grabbing the latest snapshot of &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; (i.e., tip-of-trunk development).
Developer previews capture Swift 3 as a work-in-progress and should not
be considered the final version of Swift 3 unless otherwise stated.&lt;/p&gt;

&lt;h3 id=&quot;implemented-swift-evolution-proposals&quot;&gt;Implemented Swift Evolution Proposals&lt;/h3&gt;

&lt;p&gt;The following &lt;a href=&quot;https://github.com/apple/swift-evolution&quot;&gt;Swift Evolution&lt;/a&gt; proposals are newly implemented
in Swift 3.0 Preview 1:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0002-remove-currying.md&quot;&gt;SE-0002: Removing currying &lt;code class=&quot;highlighter-rouge&quot;&gt;func&lt;/code&gt; declaration syntax&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0003-remove-var-parameters.md&quot;&gt;SE-0003: Removing &lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt; from Function Parameters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md&quot;&gt;SE-0004: Remove the &lt;code class=&quot;highlighter-rouge&quot;&gt;++&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;--&lt;/code&gt; operators&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md&quot;&gt;SE-0005: Better Translation of Objective-C APIs Into Swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0006-apply-api-guidelines-to-the-standard-library.md&quot;&gt;SE-0006: Apply API Guidelines to the Standard Library&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md&quot;&gt;SE-0007: Remove C-style for-loops with conditions and incrementers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0008-lazy-flatmap-for-optionals.md&quot;&gt;SE-0008: Add a Lazy flatMap for Sequences of Optionals&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0016-initializers-for-converting-unsafe-pointers-to-ints.md&quot;&gt;SE-0016: Adding initializers to Int and UInt to convert from UnsafePointer and UnsafeMutablePointer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0017-convert-unmanaged-to-use-unsafepointer.md&quot;&gt;SE-0017: Change &lt;code class=&quot;highlighter-rouge&quot;&gt;Unmanaged&lt;/code&gt; to use &lt;code class=&quot;highlighter-rouge&quot;&gt;UnsafePointer&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0019-package-manager-testing.md&quot;&gt;SE-0019: Swift Testing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0023-api-guidelines.md&quot;&gt;SE-0023: API Design Guidelines&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0028-modernizing-debug-identifiers.md&quot;&gt;SE-0028: Modernizing Swift’s Debugging Identifiers (__FILE__, etc)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0029-remove-implicit-tuple-splat.md&quot;&gt;SE-0029: Remove implicit tuple splat behavior from function applications&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0031-adjusting-inout-declarations.md&quot;&gt;SE-0031: Adjusting inout Declarations for Type Decoration&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0032-sequencetype-find.md&quot;&gt;SE-0032: Add &lt;code class=&quot;highlighter-rouge&quot;&gt;first(where:)&lt;/code&gt; method to &lt;code class=&quot;highlighter-rouge&quot;&gt;SequenceType&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0033-import-objc-constants.md&quot;&gt;SE-0033: Import Objective-C Constants as Swift Types&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0034-disambiguating-line.md&quot;&gt;SE-0034: Disambiguating Line Control Statements from Debugging Identifiers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0037-clarify-comments-and-operators.md&quot;&gt;SE-0037: Clarify interaction between comments &amp;amp; operators&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0039-playgroundliterals.md&quot;&gt;SE-0039: Modernizing Playground Literals&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0040-attributecolons.md&quot;&gt;SE-0040: Replacing Equal Signs with Colons For Attribute Arguments&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0043-declare-variables-in-case-labels-with-multiple-patterns.md&quot;&gt;SE-0043: Declare variables in ‘case’ labels with multiple patterns&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0044-import-as-member.md&quot;&gt;SE-0044: Import as Member&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0046-first-label.md&quot;&gt;SE-0046: Establish consistent label behavior across all parameters including first labels&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0047-nonvoid-warn.md&quot;&gt;SE-0047: Defaulting non-Void functions so they warn on unused results&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0048-generic-typealias.md&quot;&gt;SE-0048: Generic Type Aliases&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0049-noescape-autoclosure-type-attrs.md&quot;&gt;SE-0049: Move @noescape and @autoclosure to be type attributes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0053-remove-let-from-function-parameters.md&quot;&gt;SE-0053: Remove explicit use of &lt;code class=&quot;highlighter-rouge&quot;&gt;let&lt;/code&gt; from Function Parameters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0054-abolish-iuo.md&quot;&gt;SE-0054: Abolish &lt;code class=&quot;highlighter-rouge&quot;&gt;ImplicitlyUnwrappedOptional&lt;/code&gt; type&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0055-optional-unsafe-pointers.md&quot;&gt;SE-0055: Make unsafe pointer nullability explicit using Optional&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0057-importing-objc-generics.md&quot;&gt;SE-0057: Importing Objective-C Lightweight Generics&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0059-updated-set-apis.md&quot;&gt;SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0061-autoreleasepool-signature.md&quot;&gt;SE-0061: Add Generic Result and Error Handling to autoreleasepool()&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0062-objc-keypaths.md&quot;&gt;SE-0062: Referencing Objective-C key-paths&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0064-property-selectors.md&quot;&gt;SE-0064: Referencing the Objective-C selector of property getters and setters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0065-collections-move-indices.md&quot;&gt;SE-0065: A New Model For Collections and Indices&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0066-standardize-function-type-syntax.md&quot;&gt;SE-0066: Standardize function type argument syntax to require parentheses&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0069-swift-mutability-for-foundation.md&quot;&gt;SE-0069: Mutability and Foundation Value Types&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0070-optional-requirements.md&quot;&gt;SE-0070: Make Optional Requirements Objective-C-only&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0071-member-keywords.md&quot;&gt;SE-0071: Allow (most) keywords in member references&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0085-package-manager-command-name.md&quot;&gt;SE-0085: Package Manager Command Names&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0094-sequence-function.md&quot;&gt;SE-0094: Add sequence(first:next:) and sequence(state:next:) to the stdlib&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;downloads&quot;&gt;Downloads&lt;/h3&gt;

&lt;h4 id=&quot;apple-xcode&quot;&gt;Apple (Xcode)&lt;/h4&gt;

&lt;p&gt;Swift 3.0 Preview 1 is available for free as part of &lt;a href=&quot;https://developer.apple.com/xcode/download&quot;&gt;Xcode 8 beta 1&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;linux-ubuntu-1404-and-ubuntu-1510&quot;&gt;Linux (Ubuntu 14.04 and Ubuntu 15.10)&lt;/h4&gt;

&lt;p&gt;Official binaries for Ubuntu 14.04 and Ubuntu 15.10 are &lt;a href=&quot;https://swift.org/download/&quot;&gt;available for download&lt;/a&gt; on Swift.org.&lt;/p&gt;

&lt;h3 id=&quot;documentation&quot;&gt;Documentation&lt;/h3&gt;

&lt;p&gt;An updated version of &lt;a href=&quot;https://swift.org/documentation/#the-swift-programming-language&quot;&gt;The Swift Programming Language&lt;/a&gt; for Swift 3.0 is now available on Swift.org.  It is also available for free on Apple’s &lt;a href=&quot;https://itunes.apple.com/us/book/the-swift-programming-language/id1002622538?mt=11&quot;&gt;iBooks store&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;foundation-and-linux-core-libraries&quot;&gt;Foundation and Linux (Core Libraries)&lt;/h3&gt;

&lt;p&gt;Not all of the &lt;code class=&quot;highlighter-rouge&quot;&gt;NS&lt;/code&gt; prefix removal changes have propagated to the Core Libraries implementation of Foundation APIs.
This should be resolved in a future beta.&lt;/p&gt;

&lt;h3 id=&quot;migrating-to-swift-3&quot;&gt;Migrating to Swift 3&lt;/h3&gt;

&lt;p&gt;Swift 3 is a source-breaking release over Swift 2.2.1.  It contains many syntactic refinements and improvements,
but also a huge number of changes for how Objective-C APIs import into Swift due to &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md&quot;&gt;SE-0005&lt;/a&gt;. 
Please consult the &lt;a href=&quot;https://swift.org/migration-guide/&quot;&gt;migration guide&lt;/a&gt; for guidance and tips
for migrating to Swift 3.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Xcode Playground Support</title>
    
    <author>
    
      <name>Kate Stone</name>
    
    </author>
    <link href="https://swift.org/blog/swift-xcode-playground-support/"/>
    <updated>2016-07-07T06:00:00-07:00</updated>
    <id>https://swift.org/blog/swift-xcode-playground-support/</id>
    <content type="html">&lt;p&gt;We are delighted to introduce &lt;a href=&quot;https://swift.org/playground-support/&quot;&gt;Xcode Playground Support&lt;/a&gt;
as part of the Swift open source community!&lt;/p&gt;

&lt;p&gt;Swift developers can approach the language in many different ways. In
addition to the traditional command-line compiler and interactive REPL
one of the earliest experiences for many developers was through the
introduction of playgrounds in Xcode. Prior to Swift 3.0 and Xcode 8
this was only possible with the version of Swift included with Xcode.
The Xcode Playground Support project enables building a Swift toolchain
that includes everything necessary to integrate with the Xcode 8
playground experience. Playground Support will be included in
corresponding snapshots. Download a snapshot, install it, and select the
toolchain to work with the latest Swift features in Xcode playgrounds.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Swift 3.0 Released!</title>
    
    <author>
    
      <name>Ted Kremenek</name>
    
    </author>
    <link href="https://swift.org/blog/swift-3-0-released/"/>
    <updated>2016-09-13T05:00:00-07:00</updated>
    <id>https://swift.org/blog/swift-3-0-released/</id>
    <content type="html">&lt;p&gt;Swift 3.0, the first major release of Swift since it was open-sourced, is now officially released!  Swift 3 is a huge release containing major improvements and  refinements to the core language and Standard Library, major additions to the Linux port of Swift, and the first official release of the &lt;a href=&quot;https://swift.org/package-manager&quot;&gt;Swift Package Manager&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;language-changes&quot;&gt;Language Changes&lt;/h2&gt;

&lt;p&gt;Swift 3.0 is a major language release.  It is not source-compatible with Swift 2.2 and 2.3.  It contains the following language changes that went through the Swift’s &lt;a href=&quot;https://swift.org/contributing/#participating-in-the-swift-evolution-process&quot;&gt;evolution process&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0002-remove-currying.md&quot;&gt;SE-0002: Removing currying &lt;code class=&quot;highlighter-rouge&quot;&gt;func&lt;/code&gt; declaration syntax&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0003-remove-var-parameters.md&quot;&gt;SE-0003: Removing &lt;code class=&quot;highlighter-rouge&quot;&gt;var&lt;/code&gt; from Function Parameters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md&quot;&gt;SE-0004: Remove the &lt;code class=&quot;highlighter-rouge&quot;&gt;++&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;--&lt;/code&gt; operators&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md&quot;&gt;SE-0005: Better Translation of Objective-C APIs Into Swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0006-apply-api-guidelines-to-the-standard-library.md&quot;&gt;SE-0006: Apply API Guidelines to the Standard Library&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md&quot;&gt;SE-0007: Remove C-style for-loops with conditions and incrementers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0008-lazy-flatmap-for-optionals.md&quot;&gt;SE-0008: Add a Lazy flatMap for Sequences of Optionals&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0016-initializers-for-converting-unsafe-pointers-to-ints.md&quot;&gt;SE-0016: Adding initializers to Int and UInt to convert from UnsafePointer and UnsafeMutablePointer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0017-convert-unmanaged-to-use-unsafepointer.md&quot;&gt;SE-0017: Change &lt;code class=&quot;highlighter-rouge&quot;&gt;Unmanaged&lt;/code&gt; to use &lt;code class=&quot;highlighter-rouge&quot;&gt;UnsafePointer&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0019-package-manager-testing.md&quot;&gt;SE-0019: Swift Testing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0023-api-guidelines.md&quot;&gt;SE-0023: API Design Guidelines&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0025-scoped-access-level.md&quot;&gt;SE-0025: Scoped Access Level&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0029-remove-implicit-tuple-splat.md&quot;&gt;SE-0029: Remove implicit tuple splat behavior from function applications&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0031-adjusting-inout-declarations.md&quot;&gt;SE-0031: Adjusting inout Declarations for Type Decoration&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0032-sequencetype-find.md&quot;&gt;SE-0032: Add &lt;code class=&quot;highlighter-rouge&quot;&gt;first(where:)&lt;/code&gt; method to &lt;code class=&quot;highlighter-rouge&quot;&gt;SequenceType&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0033-import-objc-constants.md&quot;&gt;SE-0033: Import Objective-C Constants as Swift Types&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0034-disambiguating-line.md&quot;&gt;SE-0034: Disambiguating Line Control Statements from Debugging Identifiers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0035-limit-inout-capture.md&quot;&gt;SE-0035: Limiting &lt;code class=&quot;highlighter-rouge&quot;&gt;inout&lt;/code&gt; capture to &lt;code class=&quot;highlighter-rouge&quot;&gt;@noescape&lt;/code&gt; contexts&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0036-enum-dot.md&quot;&gt;SE-0036: Requiring Leading Dot Prefixes for Enum Instance Member Implementations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0037-clarify-comments-and-operators.md&quot;&gt;SE-0037: Clarify interaction between comments &amp;amp; operators&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0038-swiftpm-c-language-targets.md&quot;&gt;SE-0038: Package Manager C Language Target Support&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0039-playgroundliterals.md&quot;&gt;SE-0039: Modernizing Playground Literals&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0040-attributecolons.md&quot;&gt;SE-0040: Replacing Equal Signs with Colons For Attribute Arguments&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0043-declare-variables-in-case-labels-with-multiple-patterns.md&quot;&gt;SE-0043: Declare variables in ‘case’ labels with multiple patterns&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0044-import-as-member.md&quot;&gt;SE-0044: Import as Member&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0046-first-label.md&quot;&gt;SE-0046: Establish consistent label behavior across all parameters including first labels&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0047-nonvoid-warn.md&quot;&gt;SE-0047: Defaulting non-Void functions so they warn on unused results&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0048-generic-typealias.md&quot;&gt;SE-0048: Generic Type Aliases&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0049-noescape-autoclosure-type-attrs.md&quot;&gt;SE-0049: Move @noescape and @autoclosure to be type attributes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0052-iterator-post-nil-guarantee.md&quot;&gt;SE-0052: Change IteratorType post-nil guarantee&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0053-remove-let-from-function-parameters.md&quot;&gt;SE-0053: Remove explicit use of &lt;code class=&quot;highlighter-rouge&quot;&gt;let&lt;/code&gt; from Function Parameters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0054-abolish-iuo.md&quot;&gt;SE-0054: Abolish &lt;code class=&quot;highlighter-rouge&quot;&gt;ImplicitlyUnwrappedOptional&lt;/code&gt; type&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0055-optional-unsafe-pointers.md&quot;&gt;SE-0055: Make unsafe pointer nullability explicit using Optional&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0057-importing-objc-generics.md&quot;&gt;SE-0057: Importing Objective-C Lightweight Generics&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0059-updated-set-apis.md&quot;&gt;SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0060-defaulted-parameter-order.md&quot;&gt;SE-0060: Enforcing order of defaulted parameters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0061-autoreleasepool-signature.md&quot;&gt;SE-0061: Add Generic Result and Error Handling to autoreleasepool()&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0062-objc-keypaths.md&quot;&gt;SE-0062: Referencing Objective-C key-paths&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0063-swiftpm-system-module-search-paths.md&quot;&gt;SE-0063: SwiftPM System Module Search Paths&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0064-property-selectors.md&quot;&gt;SE-0064: Referencing the Objective-C selector of property getters and setters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0065-collections-move-indices.md&quot;&gt;SE-0065: A New Model For Collections and Indices&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0066-standardize-function-type-syntax.md&quot;&gt;SE-0066: Standardize function type argument syntax to require parentheses&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0067-floating-point-protocols.md&quot;&gt;SE-0067: Enhanced Floating Point Protocols&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0069-swift-mutability-for-foundation.md&quot;&gt;SE-0069: Mutability and Foundation Value Types&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0070-optional-requirements.md&quot;&gt;SE-0070: Make Optional Requirements Objective-C-only&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0071-member-keywords.md&quot;&gt;SE-0071: Allow (most) keywords in member references&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0072-eliminate-implicit-bridging-conversions.md&quot;&gt;SE-0072: Fully eliminate implicit bridging conversions from Swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0076-copying-to-unsafe-mutable-pointer-with-unsafe-pointer-source.md&quot;&gt;SE-0076: Add overrides taking an UnsafePointer source to non-destructive copying methods on UnsafeMutablePointer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0077-operator-precedence.md&quot;&gt;SE-0077: Improved operator declarations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0081-move-where-expression.md&quot;&gt;SE-0081: Move &lt;code class=&quot;highlighter-rouge&quot;&gt;where&lt;/code&gt; clause to end of declaration&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0085-package-manager-command-name.md&quot;&gt;SE-0085: Package Manager Command Names&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0086-drop-foundation-ns.md&quot;&gt;SE-0086: Drop NS Prefix in Swift Foundation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0088-libdispatch-for-swift3.md&quot;&gt;SE-0088: Modernize libdispatch for Swift 3 naming conventions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0089-rename-string-reflection-init.md&quot;&gt;SE-0089: Renaming &lt;code class=&quot;highlighter-rouge&quot;&gt;String.init&amp;lt;T&amp;gt;(_: T)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0091-improving-operators-in-protocols.md&quot;&gt;SE-0091: Improving operator requirements in protocols&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0092-typealiases-in-protocols.md&quot;&gt;SE-0092: Typealiases in protocols and protocol extensions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0093-slice-base.md&quot;&gt;SE-0093: Adding a public &lt;code class=&quot;highlighter-rouge&quot;&gt;base&lt;/code&gt; property to slices&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0094-sequence-function.md&quot;&gt;SE-0094: Add sequence(first:next:) and sequence(state:next:) to the stdlib&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0095-any-as-existential.md&quot;&gt;SE-0095: Replace &lt;code class=&quot;highlighter-rouge&quot;&gt;protocol&amp;lt;P1,P2&amp;gt;&lt;/code&gt; syntax with &lt;code class=&quot;highlighter-rouge&quot;&gt;P1 &amp;amp; P2&lt;/code&gt; syntax&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0096-dynamictype.md&quot;&gt;SE-0096: Converting dynamicType from a property to an operator&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0099-conditionclauses.md&quot;&gt;SE-0099: Restructuring Condition Clauses&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0101-standardizing-sizeof-naming.md&quot;&gt;SE-0101: Reconfiguring &lt;code class=&quot;highlighter-rouge&quot;&gt;sizeof&lt;/code&gt; and related functions into a unified &lt;code class=&quot;highlighter-rouge&quot;&gt;MemoryLayout&lt;/code&gt; struct&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0102-noreturn-bottom-type.md&quot;&gt;SE-0102: Remove &lt;code class=&quot;highlighter-rouge&quot;&gt;@noreturn&lt;/code&gt; attribute and introduce an empty &lt;code class=&quot;highlighter-rouge&quot;&gt;Never&lt;/code&gt; type&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0103-make-noescape-default.md&quot;&gt;SE-0103: Make non-escaping closures the default&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0106-rename-osx-to-macos.md&quot;&gt;SE-0106: Add a &lt;code class=&quot;highlighter-rouge&quot;&gt;macOS&lt;/code&gt; Alias for the &lt;code class=&quot;highlighter-rouge&quot;&gt;OSX&lt;/code&gt; Platform Configuration Test&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md&quot;&gt;SE-0107: UnsafeRawPointer API&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0109-remove-boolean.md&quot;&gt;SE-0109: Remove the &lt;code class=&quot;highlighter-rouge&quot;&gt;Boolean&lt;/code&gt; protocol&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0111-remove-arg-label-type-significance.md&quot;&gt;SE-0111: Remove type system significance of function argument labels&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0112-nserror-bridging.md&quot;&gt;SE-0112: Improved NSError Bridging&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0113-rounding-functions-on-floatingpoint.md&quot;&gt;SE-0113: Add integral rounding functions to FloatingPoint&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0114-buffer-naming.md&quot;&gt;SE-0114: Updating Buffer &quot;Value&quot; Names to &quot;Header&quot; Names&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0115-literal-syntax-protocols.md&quot;&gt;SE-0115: Rename Literal Syntax Protocols&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0116-id-as-any.md&quot;&gt;SE-0116: Import Objective-C &lt;code class=&quot;highlighter-rouge&quot;&gt;id&lt;/code&gt; as Swift &lt;code class=&quot;highlighter-rouge&quot;&gt;Any&lt;/code&gt; type&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0117-non-public-subclassable-by-default.md&quot;&gt;SE-0117: Allow distinguishing between public access and public overridability&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0118-closure-parameter-names-and-labels.md&quot;&gt;SE-0118: Closure Parameter Names and Labels&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0120-revise-partition-method.md&quot;&gt;SE-0120: Revise &lt;code class=&quot;highlighter-rouge&quot;&gt;partition&lt;/code&gt; Method Signature&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0121-remove-optional-comparison-operators.md&quot;&gt;SE-0121: Remove &lt;code class=&quot;highlighter-rouge&quot;&gt;Optional&lt;/code&gt; Comparison Operators&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0124-bitpattern-label-for-int-initializer-objectidentfier.md&quot;&gt;SE-0124: &lt;code class=&quot;highlighter-rouge&quot;&gt;Int.init(ObjectIdentifier)&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;UInt.init(ObjectIdentifier)&lt;/code&gt; should have a &lt;code class=&quot;highlighter-rouge&quot;&gt;bitPattern:&lt;/code&gt; label&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0125-remove-nonobjectivecbase.md&quot;&gt;SE-0125: Remove &lt;code class=&quot;highlighter-rouge&quot;&gt;NonObjectiveCBase&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;isUniquelyReferenced&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0127-cleaning-up-stdlib-ptr-buffer.md&quot;&gt;SE-0127: Cleaning up stdlib Pointer and Buffer Routines&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0128-unicodescalar-failable-initializer.md&quot;&gt;SE-0128: Change failable UnicodeScalar initializers to failable&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0129-package-manager-test-naming-conventions.md&quot;&gt;SE-0129: Package Manager Test Naming Conventions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0130-string-initializers-cleanup.md&quot;&gt;SE-0130: Replace repeating &lt;code class=&quot;highlighter-rouge&quot;&gt;Character&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;UnicodeScalar&lt;/code&gt; forms of String.init&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0131-anyhashable.md&quot;&gt;SE-0131: Add &lt;code class=&quot;highlighter-rouge&quot;&gt;AnyHashable&lt;/code&gt; to the standard library&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0133-rename-flatten-to-joined.md&quot;&gt;SE-0133: Rename &lt;code class=&quot;highlighter-rouge&quot;&gt;flatten()&lt;/code&gt; to &lt;code class=&quot;highlighter-rouge&quot;&gt;joined()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0134-rename-string-properties.md&quot;&gt;SE-0134: Rename two UTF8-related properties on String&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0135-package-manager-support-for-differentiating-packages-by-swift-version.md&quot;&gt;SE-0135: Package Manager Support for Differentiating Packages by Swift version&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0136-memory-layout-of-values.md&quot;&gt;SE-0136: Memory Layout of Values&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0137-avoiding-lock-in.md&quot;&gt;SE-0137: Avoiding Lock-In to Legacy Protocol Designs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;migrating-to-swift-3&quot;&gt;Migrating to Swift 3&lt;/h3&gt;

&lt;p&gt;Swift 3 is a source-breaking release, largely due to the changes in &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md&quot;&gt;SE-0005&lt;/a&gt; and &lt;a href=&quot;https://github.com/apple/swift-evolution/blob/master/proposals/0006-apply-api-guidelines-to-the-standard-library.md&quot;&gt;SE-0006&lt;/a&gt;.  These changes not only impact the names of the Standard Library APIs, but also completely change how Objective-C APIs (particularly from Cocoa) import into Swift.  Many of the changes are largely mechanical, but they can be numerous in a typical Swift project.&lt;/p&gt;

&lt;p&gt;To help with moving to Swift 3, &lt;a href=&quot;https://itunes.apple.com/app/xcode/id497799835&quot;&gt;Xcode 8.0&lt;/a&gt; contains a code migrator that can automatically handle many of the need source changes.  There is also a
&lt;a href=&quot;https://swift.org/migration-guide/&quot;&gt;migration guide&lt;/a&gt; available to guide you through many of the changes — especially through the ones that are less mechanical and require more direct scrutiny.&lt;/p&gt;

&lt;h3 id=&quot;documentation&quot;&gt;Documentation&lt;/h3&gt;

&lt;p&gt;An updated version of &lt;a href=&quot;https://swift.org/documentation/#the-swift-programming-language&quot;&gt;The Swift Programming Language&lt;/a&gt; for Swift 3.0 is now available on Swift.org.  It is also available for free on Apple’s iBooks store.&lt;/p&gt;

&lt;h3 id=&quot;platforms&quot;&gt;Platforms&lt;/h3&gt;

&lt;h4 id=&quot;linux-ubuntu-1404-and-ubuntu-1510&quot;&gt;Linux (Ubuntu 14.04 and Ubuntu 15.10)&lt;/h4&gt;

&lt;p&gt;The Linux port now includes the &lt;a href=&quot;https://swift.org/core-libraries/&quot;&gt;Swift Core Libraries&lt;/a&gt; and the &lt;a href=&quot;https://swift.org/package-manager&quot;&gt;Swift Package Manager&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Official binaries for Ubuntu 14.04 and Ubuntu 15.10 are &lt;a href=&quot;https://swift.org/download/&quot;&gt;available for download&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;apple-xcode&quot;&gt;Apple (Xcode)&lt;/h4&gt;

&lt;p&gt;For development on Apple’s platforms, Swift 3.0 ships as part of &lt;a href=&quot;https://itunes.apple.com/app/xcode/id497799835&quot;&gt;Xcode 8.0&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;sources&quot;&gt;Sources&lt;/h3&gt;

&lt;p&gt;Development on Swift 3.0 was tracked in the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-branch&lt;/code&gt; on the following repositories on GitHub:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift&quot;&gt;swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-lldb&quot;&gt;swift-lldb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-cmark&quot;&gt;swift-cmark&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-foundation&quot;&gt;swift-corelibs-foundation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-libdispatch&quot;&gt;swift-corelibs-libdispatch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-xctest&quot;&gt;swift-corelibs-xctest&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-llbuild&quot;&gt;swift-llbuild&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-package-manager&quot;&gt;swift-package-manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-RELEASE&lt;/code&gt; designates the specific revisions in those repositories that make up the final version of Swift 3.0.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.0-branch&lt;/code&gt; will remain open, but under the same &lt;a href=&quot;https://swift.org/blog/swift-3-0-release-process/&quot;&gt;release management process&lt;/a&gt;, to accumulate changes for a potential future bug-fix “dot” release.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <title>Whole-Module Optimization in Swift 3</title>
    
    <author>
    
      <name>Erik Eckstein</name>
    
    </author>
    <link href="https://swift.org/blog/whole-module-optimizations/"/>
    <updated>2016-10-21T03:00:00-07:00</updated>
    <id>https://swift.org/blog/whole-module-optimizations/</id>
    <content type="html">&lt;p&gt;Whole-module optimization is an optimization mode of the Swift compiler.
The performance win of whole-module optimization heavily depends on the project, but it can be up to two or even five times.&lt;/p&gt;

&lt;p&gt;Whole-module optimization can be enabled with the &lt;code class=&quot;highlighter-rouge&quot;&gt;-whole-module-optimization&lt;/code&gt; (or &lt;code class=&quot;highlighter-rouge&quot;&gt;-wmo&lt;/code&gt;) compiler flag, and in Xcode 8 it is turned on by default for new projects.
Also the Swift Package Manager compiles with whole-module optimizations in release builds.&lt;/p&gt;

&lt;p&gt;So what is it about? Let’s first look at how the compiler works without whole-module optimizations.&lt;/p&gt;

&lt;h3 id=&quot;modules-and-how-to-compile-them&quot;&gt;Modules and how to compile them&lt;/h3&gt;

&lt;p&gt;A module is a set of Swift files. Each module compiles down to a single unit of distribution—either a framework or an executable. In single-file compilation (without &lt;code class=&quot;highlighter-rouge&quot;&gt;-wmo&lt;/code&gt;) the Swift compiler is invoked for each file in the module separately. Actually, this is what happens behind the scenes. As a user you don’t have to do this manually. It is automatically done by the compiler driver or the Xcode build system.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://swift.org/assets/images/wmo-blog/single-file.png&quot; alt=&quot;single file compilation&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After reading and parsing a source file (and doing some other stuff, like type checking), the compiler optimizes the Swift code, generates machine code and writes an object file. Finally the linker combines all object files and generates the shared library or executable.&lt;/p&gt;

&lt;p&gt;In single-file compilation the scope of the compiler’s optimizations is just a single file. This limits cross-function optimizations, like function inlining or generic specialization, to functions which are called and defined in the same file.&lt;/p&gt;

&lt;p&gt;Let’s look at an example. Let’s assume one file of our module, named utils.swift, contains a generic utility data structure &lt;code class=&quot;highlighter-rouge&quot;&gt;Container&amp;lt;T&amp;gt;&lt;/code&gt; with a method &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt; and this method is called throughout the module, for example in main.swift.&lt;/p&gt;

&lt;p&gt;main.swift:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;add&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;c1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;c2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getElement&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getElement&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;utils.swift:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;T&lt;/span&gt;

  &lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;getElement&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;T&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;element&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;When the compiler optimizes main.swift it does not know how &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt; is implemented. It just knows that it exists. So the compiler generates a call to &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt;. On the other hand, when the compiler optimizes utils.swift, it does not know for which concrete types the function is called. So it can only generate the generic version of the function which is much slower than code which is specialized for a concrete type.&lt;/p&gt;

&lt;p&gt;Even the simple return statement in &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt; needs a lookup in the type’s metadata to figure out how to copy the element. It could be a simple &lt;code class=&quot;highlighter-rouge&quot;&gt;Int&lt;/code&gt;, but it could also be a larger type, even involving some reference counting operations. The compiler just doesn’t know.&lt;/p&gt;

&lt;h3 id=&quot;whole-module-optimization&quot;&gt;Whole-module optimization&lt;/h3&gt;

&lt;p&gt;With whole-module optimization the compiler can do a lot better. When compiling with the &lt;code class=&quot;highlighter-rouge&quot;&gt;-wmo&lt;/code&gt; option, the compiler optimizes all files of a module as a whole.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://swift.org/assets/images/wmo-blog/wmo.png&quot; alt=&quot;whole-module compilation&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This has two big advantages. First, the compiler sees the implementation of all functions in a module, so it can perform optimizations like function inlining and function specialization. 
Function specialization means that the compiler creates a new version of a function which is optimized for a specific call-context. For example, the compiler can specialize a generic function for concrete types.&lt;/p&gt;

&lt;p&gt;In our example, the compiler produces a version of the generic &lt;code class=&quot;highlighter-rouge&quot;&gt;Container&lt;/code&gt; which is specialized for the concrete type &lt;code class=&quot;highlighter-rouge&quot;&gt;Int&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Container&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt;

  &lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;getElement&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;element&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Then the compiler can inline the specialized &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt; function into the &lt;code class=&quot;highlighter-rouge&quot;&gt;add&lt;/code&gt; function.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;add&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;c1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;c2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Int&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c1&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;element&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;element&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This compiles down to just a few machine instructions. That’s a big difference compared to the single-file code where we had two calls to the generic &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt; function.&lt;/p&gt;

&lt;p&gt;Function specialization and inlining across files are just examples of optimizations the compiler is able to do with whole-module optimizations. Even if the compiler decides not to inline a function, it helps a lot if the compiler sees the implementation of the function.
For example it can reason about its behavior regarding reference counting operations. With this knowledge the compiler is able to remove redundant reference counting operations around a function call.&lt;/p&gt;

&lt;p&gt;The second important benefit of whole-module optimization is that the compiler can reason about all uses of non-public functions. Non-public functions can only be used within the module, so the compiler can be sure to see all references to such functions. What can the compiler do with this information?&lt;/p&gt;

&lt;p&gt;One very basic optimization is the elimination of so called “dead” functions and methods. These are functions and methods which are never called or otherwise used. With whole-module optimizations the compiler knows if a non-public function or method is not used at all, and if that’s the case it can eliminate it.
So why would a programmer write a function, which is not used at all? Well, this is not the most important use case for dead function elimination. Often functions become dead as a side-effect of other optimizations.&lt;/p&gt;

&lt;p&gt;Let’s assume that the &lt;code class=&quot;highlighter-rouge&quot;&gt;add&lt;/code&gt; function is the only place where &lt;code class=&quot;highlighter-rouge&quot;&gt;Container.getElement&lt;/code&gt; is called. After inlining &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt;, this function is not used anymore, so it can be removed. Even if the compiler decides to not inline &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt;, the compiler can remove the original generic version of &lt;code class=&quot;highlighter-rouge&quot;&gt;getElement&lt;/code&gt;, because the &lt;code class=&quot;highlighter-rouge&quot;&gt;add&lt;/code&gt; function only calls the specialized version.&lt;/p&gt;

&lt;h3 id=&quot;compile-time&quot;&gt;Compile time&lt;/h3&gt;

&lt;p&gt;With single-file compilation the compiler driver starts the compilation for each file in a separate process, which can be done in parallel. Also, files which were not modified since the last compilation don’t need to be recompiled (assuming all dependencies are also unmodified). That’s called incremental compilation.
All this saves a lot of compile time, especially if you only make a small change.
How does this work in whole-module compilation?
Let’s look at how the compiler works in whole-module optimization mode in more detail.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://swift.org/assets/images/wmo-blog/wmo-detail.png&quot; alt=&quot;whole-module compilation details&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Internally the compiler runs in multiple phases: parser, type checking, SIL optimizations, LLVM backend.&lt;/p&gt;

&lt;p&gt;Parsing and type checking is very fast in most cases, and we expect it to get even faster in subsequent Swift releases.
The SIL optimizer (SIL stands for “Swift Intermediate Language”) performs all the important Swift-specific optimizations, like generic specialization, function inlining, etc. This phase of the compiler typically takes about one third of the compilation time.
Most of the compilation time is consumed by the LLVM backend which runs lower-level optimizations and does the code generation.&lt;/p&gt;

&lt;p&gt;After performing whole-module optimizations in the SIL optimizer the module is split again into multiple parts. The LLVM backend processes the split parts in multiple threads. It also avoids re-processing of a part if that part didn’t change since the previous build.
So even with whole-module optimizations, the compiler is able to perform a big part of the compilation work in parallel (multi-threaded) and incrementally.&lt;/p&gt;

&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Whole-module optimization is a great way to get maximum performance without having to worry about how to distribute Swift code across files in a module.
If optimizations, like described above, kick in at a critical code section, performance can be up to five times better than with single-file compilation.
And you get this high performance with much better compile times than typical to monolithic whole-program optimization approaches.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Server APIs Work Group</title>
    
    <author>
    
      <name>Chris Bailey</name>
    
    </author>
    <link href="https://swift.org/blog/server-api-workgroup/"/>
    <updated>2016-10-25T02:00:00-07:00</updated>
    <id>https://swift.org/blog/server-api-workgroup/</id>
    <content type="html">&lt;p&gt;Since Swift became available on Linux there has been a huge amount of interest in using Swift on the server, resulting in the emergence of a number of Web Frameworks, including Kitura, Vapor, Perfect, and Zewo, along with many others. As an important part of the Swift ecosystem, and one that we are keen to foster, we are today announcing the formation of the Server APIs work group.&lt;/p&gt;

&lt;p&gt;The work group provides the framework for participants in the the community with an interest in building server applications and frameworks to come together to work on providing new Swift APIs. These APIs will provide low level “server” functions as the basic building blocks for developing server-side capabilities, removing the reliance on interfacing with generally platform specific C libraries for these functions. This will enable more developers to create frameworks and server applications using pure-Swift code, without the need to also have systems programming skills and knowledge of multiple platforms.&lt;/p&gt;

&lt;p&gt;The work group will initially be looking at APIs for networking, security, and HTTP/WebSocket parsing, with the goal of making it possible for anyone to build a simple, secure, HTTP server, or to start to build other server frameworks like pub/sub message brokers.&lt;/p&gt;

&lt;p&gt;For more information, take a look at the &lt;a href=&quot;https://swift.org/server-apis/&quot;&gt;Server APIs project page&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Swift 3.1 Release Process</title>
    
    <author>
    
      <name>Ted Kremenek</name>
    
    </author>
    <link href="https://swift.org/blog/swift-3-1-release-process/"/>
    <updated>2016-12-09T02:00:00-08:00</updated>
    <id>https://swift.org/blog/swift-3-1-release-process/</id>
    <content type="html">&lt;p&gt;This post describes the goals, release process, and estimated schedule for Swift 3.1.&lt;/p&gt;

&lt;p&gt;Swift 3.1 is intended to be &lt;a href=&quot;https://swift.org/blog/swift-3-1-release-process/#source-compatibility&quot;&gt;source compatible&lt;/a&gt; with Swift 3.0.
It will contain a few additive enhancements to the core language as well as improvements to the Swift Package Manager, Swift on Linux, and general quality improvements to the compiler and Standard Library.&lt;/p&gt;

&lt;p&gt;Swift 3.1 is intended to be released in the spring of 2017.&lt;/p&gt;

&lt;h2 id=&quot;source-compatibility&quot;&gt;Source Compatibility&lt;/h2&gt;

&lt;p&gt;It is a strong goal that the vast majority of sources that built with the Swift 3.0 compiler continue to build with the Swift 3.1 compiler.  The exception will be bug fixes to the compiler that cause it to reject code that should never have been accepted in the first place.  These cases should be relatively rare in practice.&lt;/p&gt;

&lt;p&gt;A description of the intent for source compatibility for Swift releases can be found on a &lt;a href=&quot;https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20161128/029099.html&quot;&gt;thread&lt;/a&gt; on the &lt;a href=&quot;https://lists.swift.org/mailman/listinfo/swift-evolution&quot;&gt;swift-evolution&lt;/a&gt; mailing list.&lt;/p&gt;

&lt;p&gt;Please file &lt;a href=&quot;https://bugs.swift.org&quot;&gt;bug reports&lt;/a&gt; if you encounter cases where the Swift 3.1 compiler unexpectedly rejects code that previously compiled with the Swift 3.0 compiler.&lt;/p&gt;

&lt;h2 id=&quot;snapshots-of-swift-31&quot;&gt;Snapshots of Swift 3.1&lt;/h2&gt;

&lt;p&gt;Previous releases of Swift have had “Developer Previews”, e.g. “Preview 1”, “Preview 2”, etc., that represent stabilized snapshots of a Swift release as it converges.  Developer previews have often been irregularly spaced apart, and have sometimes not provided enough granularity for the Swift community to try out new features or verify bug fixes in a release as it converges.&lt;/p&gt;

&lt;p&gt;For Swift 3.1 there will instead be daily downloadable snapshots of the release branch.  Snapshots will be produced as part of &lt;a href=&quot;https://ci.swift.org&quot;&gt;continuous integration&lt;/a&gt; testing.  The cadence of downloadable snapshots will thus be more frequent and granular.  Snapshots will be posted daily, assuming tests are passing.&lt;/p&gt;

&lt;p&gt;Once Swift 3.1 is released, official final builds will also be posted in addition to the snapshots.&lt;/p&gt;

&lt;h2 id=&quot;getting-changes-into-swift-31&quot;&gt;Getting Changes into Swift 3.1&lt;/h2&gt;

&lt;p&gt;Swift 3.1 is intended to be limited in scope, with the desire to move focus early in 2017 to the development of Swift 4.  To meet this goal, Swift 3.1 will include changes in mainline development (i.e. the &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; branch) only until January 16.  After that date there will be a “bake” period in which only select, critical fixes will go into the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.1-branch&lt;/code&gt; and move &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; on to Swift 4 development.&lt;/p&gt;

&lt;h3 id=&quot;branches&quot;&gt;Branches&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;master&lt;/strong&gt;: With the exception of the &lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt; and &lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt; repositories (see &lt;a href=&quot;https://swift.org/blog/swift-3-1-release-process/#impacted-repositories&quot;&gt;Impacted Repositories&lt;/a&gt;), development of Swift 3.1 happens in &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt;.  All changes going in &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; will be part of the final Swift 3.1 release until January 16.  At that point &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; tracks development for Swift 4.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;swift-3.1-branch&lt;/strong&gt;: Release management for Swift 3.1 happens on the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.1-branch&lt;/code&gt;.  All Swift 3.1 snapshots are built from this branch, and Swift 3.1 will GM from this branch as well.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Operationally, &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; will be regularly merged into &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.1-branch&lt;/code&gt; approximately every two weeks until January 16.  The two week window provides a buffer between hot development on &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; and a curated release branch.  Changes may be cherry-picked (via pull requests) into &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.1-branch&lt;/code&gt; between merges of &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A notable exception to this plan is the &lt;a href=&quot;https://github.com/apple/swift-package-manager&quot;&gt;swift-package-manager&lt;/a&gt;, which will merge from &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; into the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.1-branch&lt;/code&gt; daily.&lt;/p&gt;

&lt;h3 id=&quot;philosophy-on-taking-changes-into-swift-31&quot;&gt;Philosophy on Taking Changes into Swift 3.1&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Source compatibility with Swift 3.0 is a top priority.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;As Swift 3.1 converges only changes that align with the core goals of the release will be considered.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;All language and API changes for Swift 3.1 will go through the &lt;a href=&quot;https://github.com/apple/swift-evolution&quot;&gt;Swift Evolution&lt;/a&gt; process.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Major work for Swift 3.1 should orient around the January 16 date, but changes can still land in 3.1 afterwards per the judgement of the release manager.  As the release converges, the criteria for pulling changes into 3.1 will become increasingly restrictive.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;impacted-repositories&quot;&gt;Impacted Repositories&lt;/h2&gt;

&lt;p&gt;The following repositories will have a &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.1-branch&lt;/code&gt; branch to track sources as part of Swift 3.1 release:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift&quot;&gt;swift&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-lldb&quot;&gt;swift-lldb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-cmark&quot;&gt;swift-cmark&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-llbuild&quot;&gt;swift-llbuild&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-package-manager&quot;&gt;swift-package-manager&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-libdispatch&quot;&gt;swift-corelibs-libdispatch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-foundation&quot;&gt;swift-corelibs-foundation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-corelibs-xctest&quot;&gt;swift-corelibs-xctest&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that the &lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt; and &lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt; repositories have already branched &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.1-branch&lt;/code&gt; from &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; and will not rebranch again.&lt;/p&gt;

&lt;h2 id=&quot;release-managers&quot;&gt;Release Managers&lt;/h2&gt;

&lt;p&gt;The overall management of the release will be overseen by the following individuals, who will announce when stricter control of change goes into effect for the Swift 3.1 release as the release converges:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/tkremenek&quot;&gt;Ted Kremenek&lt;/a&gt; is the overall release manager for Swift 3.1.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/fredriss&quot;&gt;Frédéric Riss&lt;/a&gt;
is the release manager for &lt;a href=&quot;https://github.com/apple/swift-llvm&quot;&gt;swift-llvm&lt;/a&gt; and &lt;a href=&quot;https://github.com/apple/swift-clang&quot;&gt;swift-clang&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/gosnellj&quot;&gt;Jason Gosnell&lt;/a&gt; is the
release manager for &lt;a href=&quot;https://github.com/apple/swift-lldb&quot;&gt;swift-lldb&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/parkera&quot;&gt;Tony Parker&lt;/a&gt; is the release
manager for &lt;a href=&quot;https://github.com/apple/swift-corelibs-foundation&quot;&gt;swift-corelibs-foundation&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/das&quot;&gt;Daniel Steffen&lt;/a&gt; is the release
manager for &lt;a href=&quot;https://github.com/apple/swift-corelibs-libdispatch&quot;&gt;swift-corelibs-libdispatch&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/briancroom&quot;&gt;Brian Croom&lt;/a&gt; is the
release manager for &lt;a href=&quot;https://github.com/apple/swift-corelibs-xctest&quot;&gt;swift-corelibs-xctest&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/rballard&quot;&gt;Rick Ballard&lt;/a&gt; is the release
manager for &lt;a href=&quot;https://github.com/apple/swift-package-manager&quot;&gt;swift-package-manager&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please feel free to email &lt;a href=&quot;https://lists.swift.org/mailman/listinfo/swift-dev&quot;&gt;swift-dev&lt;/a&gt; or &lt;a href=&quot;https://github.com/tkremenek&quot;&gt;Ted Kremenek&lt;/a&gt; directly concerning any
questions about the release management process.&lt;/p&gt;

&lt;h2 id=&quot;pull-requests-for-release-branch&quot;&gt;Pull Requests for Release Branch&lt;/h2&gt;

&lt;p&gt;All pull requests nominating changes for inclusion in the release branch
should include the following information:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Explanation&lt;/strong&gt;: A description of the issue being fixed or
enhancement being made.  This can be brief, but it should be
clear.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Scope&lt;/strong&gt;: An assessment of the impact/importance of the change.
For example, is the change a source-breaking language change, etc.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;SR Issue&lt;/strong&gt;: The SR if the change fixes/implements an
issue/enhancement on &lt;a href=&quot;https://bugs.swift.org&quot;&gt;bugs.swift.org&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Risk&lt;/strong&gt;: What is the (specific) risk to the release for taking this
change?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;: What specific testing has been done or needs to be done
to further validate any impact of this change?&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One or more &lt;a href=&quot;https://swift.org/community/#code-owners&quot;&gt;code owners&lt;/a&gt; for the impacted
components should review the change. Technical review can be delegated
by a code owner or otherwise requested as deemed appropriate or
useful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All change&lt;/strong&gt; going into the &lt;code class=&quot;highlighter-rouge&quot;&gt;swift-3.1-branch&lt;/code&gt; (outside changes being merged in automatically from &lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt;) &lt;strong&gt;must go through pull requests&lt;/strong&gt; that are accepted by the corresponding release manager.&lt;/p&gt;

</content>
  </entry>
  
</feed>
