1. Project Overview & Quickstart (swiftlang/swift-evolution)
Swift Evolution
https://www.swift.org/swift-evolution/
This repository tracks the ongoing evolution of the Swift programming language, standard library, and package manager.
Goals and Release Notes
| Version | Announced | Released |
|---|---|---|
| Swift 6.4 | 2026-03-18 | |
| Swift 6.3 | 2025-10-24 | 2026-03-24 |
| Swift 6.2 | 2025-03-08 | 2025-09-15 |
| Swift 6.1 | 2024-10-17 | 2025-03-31 |
| Swift 6.0 | 2024-02-22 | 2024-09-17 |
| Swift 5.10 | 2023-08-23 | 2024-03-05 |
| Swift 5.9 | 2023-03-06 | 2023-09-18 |
| Swift 5.8 | 2022-11-19 | 2023-03-30 |
| Swift 5.7 | 2022-03-29 | 2022-09-12 |
| Swift 5.6 | 2021-11-10 | 2022-03-14 |
| Swift 5.5 | 2021-03-12 | 2021-09-20 |
| Swift 5.4 | 2020-11-11 | 2021-04-26 |
| Swift 5.3 | 2020-03-25 | 2020-09-16 |
| Swift 5.2 | 2019-09-24 | 2020-03-24 |
| Swift 5.1 | 2019-02-18 | 2019-09-20 |
| Swift 5.0 | 2018-09-25 | 2019-03-25 |
| Swift 4.2 | 2018-02-28 | 2018-09-17 |
| Swift 4.1 | 2017-10-17 | 2018-03-29 |
| Swift 4.0 | 2017-02-16 | 2017-09-19 |
| Swift 3.1 | 2016-12-09 | 2017-03-27 |
| Swift 3.0 | 2016-05-06 | 2016-09-13 |
| Swift 2.2 | 2016-01-05 | 2016-03-21 |
2. Official Technical Reference & Guides (swiftlang/docs)
File: README.md
Welcome to the Swift Project Documentation
This repository hosts multiple DocC catalogs that provide the source location for documentation content for the Swift project, hosted at www.swift.org.
The repository provides a location to collect and collaborate on Documentation for the Swift open source project.
For more information on the intent and inception, read the Swift Docs Proposal.
Contributions to the Swift Documentation are welcomed and encouraged!
To be a truly great community, Swift Documentation welcomes developers from all walks of life, with different backgrounds, and with a wide range of experience.
A diverse and friendly community has more great ideas, more unique perspectives, and produces more great code.
We work diligently to make the Swift Documentation community welcoming to everyone.
To give clarity of what is expected of our members, Swift has adopted the code of conduct defined by the Contributor Covenant.
This document is used across many open source communities, and we think it articulates our values well.
For more, see the Code of Conduct.
What's in this repository
The top levels of this repository generally host a very light Swift package that wraps a documentation catalog.
This repository isn't meant for consumable libraries, any documentation for a Swift library should be maintained with that library.
This library hosts general content related to the Swift language, guides, and cross-cutting details that support the Swift ecosystem more broadly.
Each of the catalogs is matched with an entry in the CODEOWNERS file, which provides the technical reviewers for that catalog.
Each directory has it's own Swift package in order to support a full breadth of tooling for documentation and examples, including snippets.
The packages in this repository aren't meant to be depended upon or provide library.
How you can help
- Report issues with existing content
- Report issues with missing content or request content
- Fix typos
- Propose new content
See contributing for more information on proposing new content, style and content guidelines, and the details of how contributors add content to the Swift Documentation.
File: scripts/README.md
Local validation
To build the combined documentation and view the result locally:
- from the docs repository root:
set -e
./scripts/build_docs.py
python3 -m http.server 8123 --directory .build-outputThen in another terminal:
open http://localhost:8123/latest/documentation/Serve from .build-output (the parent), not .build-output/latest: the build
bakes a /latest/ hosting base path into every asset URL, so the /latest/
prefix must map to the latest/ directory. This example avoids port 8000,
which can be commonly used by other apps or examples.
Note: Ensure that you have a version of Swift available that will build the
content that you point at in sources.json. For latest development tree builds,
that typically requires either the latest Xcode beta or a Swift nightly development
build to support Swift, SwiftPM, swift-testing, and other core projects.
Navigation manifest (combined sidebar curation)
navigation.json controls the left-hand navigator of the combined archive
(docc merge output): it groups modules under labelled sections, hides
internal modules, and orders them. Hidden modules are also pruned from the
synthesized landing page body (data/documentation.json), so they disappear
from the main page's module list as well as the sidebar. Each entry names asource (a sources.json id) and the module path it applies to. Every module
in the merged index must be either placed in a group or listed under hidden โbuild_docs.py validates and applies this automatically (thenavigator-curation build step), and fails the build on any mismatch or
uncovered module. See hacking-index-json.md for the underlying mechanics.
A group's title is optional โ omit it (or set it to null) for a headerless
group whose modules render with no section label in either the sidebar or the
landing page.
A group's modules list may also contain external-link entries โ plain
links to content outside the archive, with no backing sources.json id. Give
these a title and an https:// url instead of source/path:
{ "title": "Swift and C++", "url": "https://www.swift.org/documentation/cxx-interop/" }External entries render in the sidebar only โ they get no card on the
synthesized landing page โ and aren't valid under hidden (there's no module
to hide). An optional type overrides the sidebar icon; it defaults to"resources".
Checking the manifest while editing
Run the standalone checker โ it does not modify any build output:
# From the repo root. Validates navigation.json against sources.json
# (no unknown sources, every source represented) and, if a combined archive
# exists at .build-output/<version>, dry-runs curation and previews the sidebar.
python3 scripts/validate_navigation.pyIt exits non-zero when the manifest is invalid or a built archive contains a
module the manifest neither groups nor hides โ so it doubles as a coverage
check. Point it at a specific archive (e.g. one you just built elsewhere) with:
python3 scripts/validate_navigation.py --archive path/to/combined.doccarchive--navigation and --sources can override the input files for experimentation.