Foundation

Foundation 提供了许多应用程序中都有用的基础功能层,包括数字、数据、集合和日期的基本类型,以及任务管理、文件系统访问等功能。

它的设计考虑了以下目标

此项目 swift-foundation 为所有平台提供了关键 Foundation API 的共享实现。

在 macOS、iOS 和其他 Apple 平台上,应用程序应使用操作系统自带的 Foundation。Foundation 框架包含此代码。

在所有其他 Swift 平台上,swift-foundation 作为工具链的一部分提供。只需 import FoundationEssentialsimport FoundationInternationalization 即可使用其 API。它也从 swift-corelibs-foundationFoundationFoundationXMLFoundationNetworking 模块中重新导出。

构建和测试

注意

构建 swift-foundation 需要正在开发中的 Swift 6.0 工具链。您可以从 Swift 网站 下载 Swift 6.0 nightly 工具链。

在构建 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 编写。它为许多关键类型提供了核心实现,包括 URLDataJSONDecoderLocaleCalendar 以及 FoundationEssentialsFoundationInternationalization 模块中的更多类型。它的源代码在所有平台上共享。

swift-foundation 依赖于一组有限的软件包,主要是 swift-collectionsswift-syntax

Swift Corelibs Foundation

Swift 工具链中附带的共享库。它为需要 Foundation 中 pre-Swift API 的客户端提供兼容性 API。它使用 Swift 和 C 编写。它提供 NSObject、基于类的数据结构、NSFormatterNSKeyedArchiver 等类型。它重新导出 FoundationEssentialsFoundationInternationalization 模块,为在 swift-foundation 项目引入之前编写的源代码提供兼容性。由于这些实现与 Objective-C 中编写的实现不同,因此兼容性仅为尽力而为。

swift-corelibs-foundation 仅为非 Darwin 平台构建。它安装 Foundation umbrella 模块、FoundationXMLFoundationNetworking

Foundation ICU

Foundation 的私有库,包装了 ICU。使用标准版本的 ICU 提供了国际化 API 行为的稳定性,并与 Darwin 平台上的最新版本保持一致。它仅从 FoundationInternationalization 模块导入。不需要依赖 ICU 提供的数据的 API 的客户端可以改为导入 FoundationEssentials

Foundation Framework

构建到 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 做出贡献的过程。