虽然 Swift 是苹果在 macOS 和 iOS 应用开发中的主要语言,但开源社区仍在不断扩大其影响力——推动其在用户界面设计之外的领域被视为多平台甚至跨平台语言。
周二发布的 Swift 6.4 继续推进这项工作。除了常见的类型快捷方式和异步调整外,还宣布 Swift Build 现在成为 Swift Package Manager 的默认构建引擎。协同效应已经出现!
这一组合为更快的构建过程奠定了基础。开发者可以用 Swift 编写程序,Swift Build 会自动下载并安装所需的依赖项,测试其兼容性,然后将代码编译成针对特定 CPU 的二进制文件。
此次合并还统一了无论平台如何的 Swift 开发体验。通过此集成,开发者可以在自己的环境中完成整个构建过程,无论是苹果的 Xcode IDE 还是喜爱的命令行,所有步骤在 Linux、macOS 或 Windows 应用中都完全相同。
或者,开发者可以通过 Open VSX Registry 上的新扩展在 VS Code 中运行构建。
更进一步,集成包附带一个工具,可为每个应用生成 SBOM(软件物料清单),以 SPDX 或 CycloneDX 格式列出所有依赖项(SE-0509)。在软件审计和检查潜在安全漏洞时,SBOM 非常有用。
Swift 的统一工具链 在某种程度上,Swift 正在效仿 Rust 的 Cargo 和 Go 的命令行工具,它们都以统一工具链运行,JavaScript 的 Bun 也是如此。单一的集成工作流可以取代手动依次调用工具将代码推向生产。
Swift Package Manager(SwiftPM)由苹果于 2015 年创建,是一款命令行自动化和依赖管理工具。
Swift Build本身是一套可互操作的软件开发工具,这些工具共同负责代码的编译(使用swiftc编译器)、链接以及测试工作。SwiftPM可以支持任何Git仓库作为Swift代码的来源,同时也能与Bitbucket、JFrog Artifactory等私有仓库服务配合使用。特别值得一提的是,SwiftPM与Swift Package Index(SPI)配合得非常好——SPI是一个专门用于管理Swift项目的开源代码库,成立于2020年,并于同年6月被苹果公司收购。目前,SPI已成为许多Swift开发者的主要代码存储平台,其中包含了超过10,400个Swift软件包。许多开发者都喜欢SPI的一个特点:它会自动检测每个依赖项与不同Swift版本及平台的兼容性。我们很想知道苹果公司是否有计划将SPI的元数据整合到SwiftPM中。那些不使用SwiftPM或Swift Build的Swift开发者,通常会选择使用Google的Bazel、Meta的Buck2或传统的CMake来管理他们的Swift项目资源。
此次更新还优化了代码构建过程中的调试功能:在Swift 6.4版本中,默认的Swift调试器LLDB采用了更高效的存储机制——它能够精确地定位正在使用的模块的路径,而不再需要将整个模块内容嵌入到调试文件中(这种做法会导致文件体积大幅增加)。现在,调试器可以通过指针直接访问原始模块进行调试。此外,该版本还增强了与C++、Java、JavaScript以及WebAssembly的互操作性(WebAssembly甚至拥有自己的开发工具包)。
要开始使用Swift,可以访问“安装Swift”页面;Swift 6.4版本的工具链可以通过Swiftly命令行进行下载。