Documentation

If you are new to Swift, you may want to check out these additional resources.

Swift Language

The Swift Programming Language Book

The Swift Programming Language is the authoritative reference for Swift, offering a guided tour, a comprehensive guide, and a formal reference of the language.

We welcome your contributions to the book — pull requests, new issues, and comments on existing topics — in the book’s repository.

Translations

We encourage you to participate in translating The Swift Programming Language into other languages. Get involved with an existing translation project, or start a new one.

If you know of a quality translation project underway, please let us know on the Swift.org repository by opening an issue or submitting a Pull Request.

Standard Library

The Swift standard library defines a base layer of functionality for writing Swift programs. Documentation for the standard library is presently hosted on the Apple Developer website.

Packages

There are a number of packages that are part of the core Swift project. Below is a list of packages that currently offer hosted documentation.

Swift-DocC

DocC is a documentation compiler that makes it easy for you to produce documentation for your Swift frameworks and packages. The compiler builds your documentation by combining the comments you write in source with extension files, articles, and tutorials that live alongside your package’s source code. This documentation is for using the DocC tool to generate documentation for your project.

API Design Guidelines

Delivering a clear, consistent developer experience when writing Swift code is largely defined by the names and idioms that appear in APIs. These design guidelines explain how to make sure that your code feels like a part of the larger Swift ecosystem.

Mixing Swift and C++

A development version of Swift has support for bidirectional interoperability with C++. A great variety of C++ APIs can be called directly from Swift, and select Swift APIs can be used from C++.

Swift’s support for C++ interoperability is actively evolving. Some C++ APIs and API patterns are not yet available in Swift, and vice-versa. This status page describes the extent to which interoperability is supported between the two languages:

Tools

Swift Package Manager

The Swift Package Manager is a tool for managing the distribution and use of “packages” of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies into target products.

Migration Guidelines

For users of Xcode, there is an included Swift migrator tool that helps you move your project to the latest version of Swift, or update it to work with the latest SDKs.