swiftlang/swift

GitHub: swiftlang/swift

Swift 是苹果推出的高性能、内存安全的开源编程语言,用于构建 iOS、macOS 等平台应用及服务端程序。

Stars: 69826 | Forks: 10675

Swift logo # 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, 内存安全, 函数式编程, 协议导向, 威胁情报, 开发者工具, 开源项目, 数据管道, 系统编程, 编程语言, 编译器, 软件工程, 静态类型, 面向对象