swift README

The project's README from github.com/swiftlang/swift. As one markdown file: README.md.

Swift logo

Swift Programming Language

Welcome to Swift

Swift is a high-performance system programming language. It has a clean and modern syntax, offers seamless access to existing C and Objective-C code and frameworks, and is memory-safe by default.

Although inspired by Objective-C and many other languages, Swift is not itself a C-derived language. As a complete and independent language, Swift packages core features like flow control, data structures, and functions, with high-level constructs like objects, protocols, closures, and generics. Swift embraces modules, eliminating the need for headers and the code duplication they entail.

To learn more about using the language, visit swift.org. To learn more about the compiler's internal design, see the documentation index.

Contributing to Swift

Contributions to Swift are welcomed and encouraged! Please see the Contributing to Swift guide.

Before submitting the pull request, please make sure you have tested your changes and that they follow the Swift project guidelines for contributing code.

To be a truly great community, Swift.org needs to welcome developers from all walks of life, with different backgrounds, and with a wide range of experience. A diverse and friendly community will have more great ideas, more unique perspectives, and produce more great code. We will work diligently to make the Swift 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.

Getting Started

If you are interested in:

We also have an FAQ that answers common questions.

Swift Toolchains

Building

Swift toolchains are created using the script build-toolchain. This script is used by swift.org's CI to produce snapshots and can allow for one to locally reproduce such builds for development or distribution purposes. A typical invocation looks like the following:

  $ ./swift/utils/build-toolchain $BUNDLE_PREFIX

where $BUNDLE_PREFIX is a string that will be prepended to the build date to give the bundle identifier of the toolchain's Info.plist. For instance, if $BUNDLE_PREFIX was com.example, the toolchain produced will have the bundle identifier com.example.YYYYMMDD. It will be created in the directory you run the script with a filename of the form: swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz.

Beyond building the toolchain, build-toolchain also supports the following (non-exhaustive) set of useful options:

More options may be added over time. Please pass --help to build-toolchain to see the full set of options.

Installing into Xcode

On macOS if one wants to install such a toolchain into Xcode:

  1. Untar and copy the toolchain to one of /Library/Developer/Toolchains/ or ~/Library/Developer/Toolchains/. E.g.:
  $ sudo tar -xzf swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz -C /
  $ tar -xzf swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz -C ~/

The script also generates an archive containing debug symbols which can be installed over the main archive allowing symbolication of any compiler crashes.

  $ sudo tar -xzf swift-LOCAL-YYYY-MM-DD-a-osx-symbols.tar.gz -C /
  $ tar -xzf swift-LOCAL-YYYY-MM-DD-a-osx-symbols.tar.gz -C ~/
  1. Specify the local toolchain for Xcode's use via Xcode->Toolchains.

Build Failures

Try the suggestions in Troubleshooting build issues.

Make sure you are using the correct release of Xcode.

If you have changed Xcode versions but still encounter errors that appear to be related to the Xcode version, try passing --clean to build-script.

When a new version of Xcode is released, you can update your build without recompiling the entire project by passing --reconfigure to build-script.

swift (swiftlang/swift)

Searching Database…

70.5K ·GitHub
What is this?The source repository of Swift, a high-performance system programming language with clean, modern syntax, seamless access to existing C and Objective-C code, and memory safety by default.
Is this where the Swift compiler is developed, or do I download the language from here?It is the compiler's source code, not an installer. To write Swift you use a ready toolchain from swift.org or Xcode; this repo is for working on the compiler itself.
I want to hack on the compiler — where do I begin?To contribute fixes, follow the How to Submit Your First Pull Request guide; to build the compiler as a one-off, use the Getting Started guide.
Do I need a specific Xcode version to build it?The documented build requirement on macOS is Xcode, and it must be the correct release for your checkout — the build-failure guide starts there.
The build breaks after I updated Xcode — any quick fix?Yes: if errors persist after changing Xcode versions, pass --clean to build-script; and when a new Xcode ships, --reconfigure updates the build without recompiling the entire project.
Is building the compiler a macOS-only affair?The hands-on instructions in this README are macOS-specific: a locally built toolchain untars into /Library/Developer/Toolchains or ~/Library/Developer/Toolchains and is selected in Xcode->Toolchains.
Is Swift a C-derived language?No — although inspired by Objective-C and many other languages, Swift is not itself C-derived. It is a complete, independent language with objects, protocols, closures, and generics, and it embraces modules instead of headers.
Can I build my own Swift toolchain locally?Yes — the build-toolchain script creates toolchains the same way swift.org's CI produces snapshots, yielding an archive like swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz.
Are there flags to test or speed up a toolchain build?Yes: --test runs the test suite after compiling, --distcc distributes the C++ part of the build, --sccache caches C++ artifacts, and --dry-run performs a trial build.
Creator
swiftlang
Size
1.3 GB
Stars
70.5K
Age
10y
Commits · 90 Days