The code for the Swift project is divided into several open-source repositories, all hosted on GitHub.
Compiler and Standard Library
- The main Swift repository, which contains the source code for the Swift compiler, standard library, and SourceKit.
- Documents related to the continued evolution of Swift, including goals for upcoming releases proposals for changes to and extensions of Swift.
Directions for building the Swift compiler and standard library, along with its prerequisites, are provided by the main Swift repository’s README file.
- The source code for Foundation, which provides common functionality for all applications.
- The source code for libdispatch, which provides concurrency primitives for working on multicore hardware.
- The source code for XCTest, which provides fundamental testing infrastructure for Swift apps and libraries.
- The source code for the Swift package manager.
- The source code for llbuild, a low-level build system used by the Swift package manager.
- Contains common infrastructural code for both SwiftPM and llbuild.
Xcode Playground Support
- The source code to enable playground integration with Xcode.
- The source code for SwiftSyntax, which enables Swift tools to parse, inspect, generate, and transform Swift source code.
- The source code for the formatting technology for Swift source code.
- The source code for the SourceKit-LSP language service.
- The source code for the index database library.
Swift builds upon several other open-source projects, most notably the LLVM Compiler Infrastructure. Swift’s clones of the repositories of those open-source projects contain Swift-specific changes and are merged regularly from their upstream sources. For more information about the clone of LLVM repository, see the section on LLVM and Swift.
- The source code for LLVM, with a handful of Swift-specific additions. Merged regularly from the LLVM sources at llvm.org.
- The source code for CommonMark, which is used in the Swift compiler.
Directions for building LLDB for Swift are present in the llvm-project/lldb repository’s README file.