swiftlang/swift
GitHub: swiftlang/swift
Swift 是苹果推出的高性能、内存安全的开源编程语言,用于构建 iOS、macOS 等平台应用及服务端程序。
Stars: 69826 | Forks: 10675
# Swift 编程语言
## 欢迎使用 Swift
Swift 是一种高性能的系统编程语言。它拥有简洁现代的语法,提供对现有 C 和 Objective-C 代码及框架的无缝访问,并且默认是内存安全的。
尽管受到 Objective-C 和许多其他语言的启发,Swift 本身并不是一种 C 派生的语言。作为一种完整且独立的语言,Swift 封装了流程控制、数据结构和函数等核心特性,以及对象、协议、闭包和泛型等高级构造。Swift 采用了模块化设计,消除了对头文件的需求以及由此产生的代码重复。
欲了解更多关于使用该语言的信息,请访问 [swift.org](https://swift.org/documentation/)。
欲了解更多关于编译器内部设计的信息,请参阅 [文档索引](/docs/README.md)。
## 入门指南
如果您对以下内容感兴趣:
- 为编译器贡献修复和功能:请参阅我们的[如何提交您的第一个 Pull Request 指南](/docs/HowToGuides/FirstPullRequest.md)。
- 一次性构建编译器:请参阅我们的[入门指南][]。
- 一次性构建工具链:请遵循[入门指南][],直到“Building the project”部分。之后,请遵循下文 [Swift Toolchains](#swift-toolchains) 部分中的说明。
我们还有一个 [FAQ](/docs/HowToGuides/FAQ.md) 来回答常见问题。
### Swift Toolchains
#### 构建
Swift 工具链是使用脚本 [build-toolchain](https://github.com/apple/swift/blob/main/utils/build-toolchain) 创建的。该脚本被 swift.org 的 CI 用于生成快照,并允许在本地重现此类构建以用于开发或分发目的。典型的调用如下所示:
```
$ ./swift/utils/build-toolchain $BUNDLE_PREFIX
```
其中 ``$BUNDLE_PREFIX`` 是一个字符串,将作为前缀添加到构建日期之前,以构成工具链 ``Info.plist`` 的包标识符。例如,如果 ``$BUNDLE_PREFIX`` 是 ``com.example``,则生成的工具链将具有包标识符 ``com.example.YYYYMMDD``。它将在您运行脚本的目录中创建,文件名格式为:``swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz``。
除了构建工具链外,``build-toolchain`` 还支持以下(非详尽)有用的选项:
- ``--dry-run``:执行试运行构建。默认情况下处于关闭状态。
- ``--test``:在编译完成后测试工具链。默认情况下处于关闭状态。
- ``--distcc``:使用 distcc 分发 Swift 构建的 C++ 部分以加快构建速度。默认情况下处于关闭状态。
- ``--sccache``:通过缓存更多 C++ 构建产物,使用 sccache 加速编译器的后续构建。默认情况下处于关闭状态。
随着时间推移可能会添加更多选项。请向 ``build-toolchain`` 传递 ``--help`` 以查看完整的选项集。
#### 安装到 Xcode
在 macOS 上,如果要将此类工具链安装到 Xcode:
1. 解压并将工具链复制到 `/Library/Developer/Toolchains/` 或 `~/Library/Developer/Toolchains/` 之一。例如:
```
$ 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 ~/
```
该脚本还会生成一个包含调试符号的归档文件,可以将其安装在主归档文件之上,以便对任何编译器崩溃进行符号化。
```
$ 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 ~/
```
2. 通过 `Xcode->Toolchains` 指定供 Xcode 使用的本地工具链。
### 构建失败
请尝试 [构建故障排除](/docs/HowToGuides/GettingStarted.md#troubleshooting-build-issues) 中的建议。
确保您使用的是 [正确版本](/docs/HowToGuides/GettingStarted.md#installing-dependencies) 的 Xcode。
如果您更改了 Xcode 版本,但仍然遇到似乎与 Xcode 版本相关的错误,请尝试向 `build-script` 传递 `--clean`。
当发布新版 Xcode 时,您可以通过向 `build-script` 传递 `--reconfigure` 来更新构建,而无需重新编译整个项目。
标签:Apple, CVE监控, C语言互操作, DNS解析, iOS开发, LLVM, macOS开发, Objective-C, Swift, 内存安全, 函数式编程, 协议导向, 威胁情报, 开发者工具, 开源项目, 数据管道, 系统编程, 编程语言, 编译器, 软件工程, 静态类型, 面向对象