The original link

As soon as the Swift 5.0 ABI was stable, the Swift team moved on to the Swift 5.1 release with a blog post on the official website announcing the Swift 5.1 release progress. Here’s a translation of the announcement, which also provides a glimpse into Apple’s control over the release process.

Link: swift.org/blog/5-1-re…

This article describes the goals, release process, and projected timeline for Swift 5.1.

Motivation and goals

The main goal of Swift 5.1 is to make the language module-stable.

Binary compatibility

On Apple platforms, Swift 5.1 is binary compatible with Swift 5.0 and is binary compatible with future versions of Swift because the ABI is now stable.

On non-Apple platforms, such as Linux, the ABI is not yet fully stable and needs more scrutiny. New linux-based platforms will require such scrutiny in particular.

Source compatibility

As with Swift 5.0, we expect most source code built using the Swift 5.0 compiler to be compiled using the Swift 5.1 compiler. However, Bug fixes in Swift 5.1 May cause it to detect errors in code that were not previously detected.

Snapshot for Swift 5.1

Downloadable snapshots of the Swift 5.1 version branch will be released periodically as part of continuous integration testing.

Once Swift 5.1 is released, the official final version will be released in addition to the snapshot.

Updates in Swift 5.1

The development of Swift 5.0 requires unusual attention throughout its integration, as each issue must be evaluated for its lasting ABI impact. As a result, Swift 5.1 has a much shorter development window than previous versions. This tighter time limit is needed to ensure that a mature and stable 5.1 release is available and to provide tighter deadlines for disruptive changes.

Swift-5.1-branch contains changes that will be released in Swift 5.1. The branch will be managed as follows:

  • Swift-5.1-branch is pulled from the master primary branch.
  • The Master branch will be merged into swift-5.1-branch periodically until the final branch date.
  • 18 March 2019 (Final branch): swift-5.1-branch will merge from master for the last time. After the last branch date, there will be a bake period in which only critical fixes are selected as release items (via pull requests).

Some notable exceptions to the plan are shown in the table below. Each entry is merged daily from master to Swift-5.1-branch. The final deadline for each exception change will be extended beyond March 18 and will be announced at a later date.

Put changes into the Swift 5.1 guideline

  • All language and API changes for Swift 5.1 will be made through the Swift Evolution process. The Evolution proposal should aim to be completed before the branch date to increase the chance of influencing Swift 5.1. Exceptions will be considered on a case-by-case basis, especially if they are tied to the core goal of the release.
  • Other changes (for example, bug fixes, diagnostic improvements, SourceKit interface improvements) will be accepted based on their risk and impact.
  • Low-risk test adjustments will also be accepted later in the release branch if they help improve the quality of the release.
  • As the release nears, the criteria for accepting changes become more stringent.

Affected Repositories

The following repositories will have a Swift-5.1-branch to track the source code as part of swift 5.1:

  • indexstore-db
  • sourcekit-lsp
  • swift
  • swift-clang
  • swift-cmark
  • swift-compiler-rt
  • swift-corelibs-foundation
  • swift-corelibs-libdispatch
  • swift-corelibs-xctest
  • swift-integration-tests
  • swift-llbuild
  • swift-lldb
  • swift-llvm
  • swift-package-manager
  • swift-stress-tester
  • swift-syntax
  • swift-xcode-playground-support

Publish Pull Requests for branches

In order to include Pull Requests in the publish branch, it must contain the following information:

  • Description: A description of a problem being fixed or enhanced. This can be brief, but it should be clear.
  • Scope: Assess the impact/significance of the change. For example, a change is a change that breaks the source language, etc.
  • SR Issues: SR if the change fixes or implements a problem or enhanced feature on bugs.swift.org.
  • Risk: What is the (specific) risk of a release taking this change?
  • Testing: What specific tests have been done or need to be done to further verify the impact of this change?
  • Reviewer: One or more code owners of the affected component should review the changes. Technical reviews may be delegated by the code owner or otherwise requested as deemed appropriate or useful.

All changes into Swift-5.1-branch (external changes are automatically merged from master) must be accepted through Pull Requests by the appropriate release manager.

Pay attention to our

Please follow our official account ios-tips and join our group to discuss issues. Add coldlight_HH/wSY9871 to our iOS/ FLUTTER wechat group.