Foundation
Foundation 提供了许多应用程序中有用的基础功能层,包括数字、数据、集合和日期的基本类型,以及任务管理、文件系统访问等功能。
它的设计目标包括:
- 提供一小组基本实用类型
- 实现一定程度的平台独立性,以增强可移植性
- 展示可被 Swift 生态系统广泛采用的有用约定
- 支持国际化和本地化,使软件在全球范围内可访问
这个名为 swift-foundation
的项目为所有平台提供了关键 Foundation API 的共享实现。
在 macOS、iOS 和其他 Apple 平台上,应用程序应使用操作系统自带的 Foundation。Foundation 框架包含了这些代码。
在所有其他 Swift 平台上,swift-foundation
作为工具链的一部分提供。只需 import FoundationEssentials
或 import FoundationInternationalization
即可使用其 API。它也被重新导出到 swift-corelibs-foundation 的 Foundation
、FoundationXML
和 FoundationNetworking
模块中。
构建和测试
[!注意] 构建 swift-foundation 需要开发中的 Swift 6.0 工具链。你可以从 Swift 网站 下载 Swift 6.0 每夜构建工具链。
在构建 Foundation 之前,首先确保已安装 Swift 工具链。接下来,查看 Foundation 构建过程 指南中的"入门"部分,了解构建和测试的详细步骤。
项目导航
Foundation 以不同的配置构建,由几个项目组成。
graph TD;
FF[Foundation.framework]-->SF
subgraph GitHub
SCLF[swift-corelibs-foundation]-->SF
SF[swift-foundation]-->FICU[swift-foundation-icu]
SF-->SC[swift-collections]
end
Swift Foundation
一个随 Swift 工具链一起发布的共享库,用 Swift 编写。它提供了许多关键类型的核心实现,包括 URL
、Data
、JSONDecoder
、Locale
、Calendar
等,这些都在 FoundationEssentials
和 FoundationInternationalization
模块中。其源代码在所有平台上共享。
swift-foundation 依赖于有限的包,主要是 swift-collections 和 swift-syntax。
Swift Corelibs Foundation
一个随 Swift 工具链一起发布的共享库。它为需要 Foundation 中 Swift 之前 API 的客户端提供兼容性 API。它用 Swift 和 C 编写。它提供了 NSObject
、基于类的数据结构、NSFormatter
和 NSKeyedArchiver
等类型。它重新导出了 FoundationEssentials
和 FoundationInternationalization
模块,允许在引入 swift-foundation 项目之前编写的源代码保持兼容性。由于这些实现与用 Objective-C 编写的实现不同,兼容性只能尽力而为。
swift-corelibs-foundation 仅为非 Darwin 平台构建。它安装了 Foundation
伞形模块、FoundationXML
和 FoundationNetworking
。
Foundation ICU
Foundation 的私有库,封装了 ICU。使用标准版本的 ICU 可以提供国际化 API 行为的稳定性,并与 Darwin 平台上的最新版本保持一致。它仅由 FoundationInternationalization
模块导入。不需要依赖 ICU 提供的数据的 API 的客户端可以改为导入 FoundationEssentials
。
Foundation 框架
一个内置于 macOS、iOS 和所有其他 Darwin 平台的框架。它用 C、Objective-C 和 Swift 的组合编写。Foundation 框架将 swift-foundation 的源代码编译到其二进制文件中,并提供一个包含所有功能的 Foundation
模块。
治理
Foundation 的目标是创建最佳的基本数据类型和国际化功能,并使其对所有 Swift 开发者可用。它利用语言中新增的特性,使库和应用程序作者能够自信地构建更高级的 API。
该项目是整个 Swift 项目 的一部分。它有一个工作组负责 (a) 监督社区 API 提案,以及 (b) 与 Swift 项目和 Apple 平台的发展密切协调。工作组定期开会审查提案,关注 Swift 生态系统中的新兴趋势,并讨论库应如何发展。
贡献
Foundation 欢迎来自社区的贡献,包括错误修复、测试、文档和对新平台的移植。
我们使用 Swift 论坛进行讨论,使用 GitHub Issues 跟踪错误、功能请求和其他工作。
请查看 CONTRIBUTING 文档以获取更多信息,包括接受社区对 Foundation 新 API 贡献的流程。