Swift Biome 已被 Swift Unidoc 取代!

biome
0.3.2

swift-biome 是一个版本化的、多包 Swift 文档编译器。

Biome 旨在成为 Web 服务或静态站点生成器的后端组件。Biome 处理 symbolgraph 解析、依赖关系解析、交叉链接、版本控制、组织、呈现、HTML 渲染和 URI 路由。

Biome 为 swiftinit.org 生态系统文档 提供支持!

screenshot

概述

Biome 构建于与 DocC 相同的许多组件之上。其主要输入源是由 lib/SymbolGraphGen 生成的 symbolgraph 格式。它还读取 Package.resolvedPackage.catalog,后者由 swift-package-catalog 插件生成。

自 v0.3.1 版本起,Biome 将原始 symbolgraph 提前编译成 ss 文件格式,这是一种性能更高、更紧凑且对压缩算法更友好的 symbolgraph 表示形式。

Biome 包含一个工具 swift-symbolgraphc,可用于将原始 symbolgraph 转换为 ss 文件。

swift-biome-resources 子模块包含标准库最新版本的预编译 ss 文件,以及其默认前端的各种资源和 webpacks。

ecosystem 仓库不被此仓库跟踪,但它包含精选生态系统包的历史 symbolgraph、Package.resolved 文件和 Package.catalog 文件。

swift-biome 包包含一个基于 swift-nio 的可执行目标,名为 preview,可用于在本地构建和浏览文档。此服务器没有安全功能,不适合在生产环境中使用

具有更复杂用例的 swift-biome 使用者应期望实现他们自己的 Web 服务器,通过 WebSemantics 与 Biome 交互。

前端使用 Sass 和 Typescript 编写。

构建

构建 Biome 需要 DEVELOPMENT-SNAPSHOT-2022-08-09-a 工具链。工具链要求是精确的,因为 swift-syntaxswift-markdown 链接到 swift 运行时的方式。

目前,Biome 只能在 Linux 上构建。Ubuntu 和 Amazon Linux 2 是官方支持的。阻止 Biome 在 macOS 上构建的唯一技术限制是 PackageLoader 目标使用的一些文件系统 API,我们希望尽快将 Biome 移植到 macOS。

组成部分

子包

  1. swift-balanced-trees

    提供红黑森林实现,供 Biome 的内存数据库使用。(Biome 使用红黑森林,而不是 B 树集合,因为它单独版本化符号。)

库产品

  1. URI

    实现 URI 解析器和基本 URI 操作。

  2. 版本

    实现语义版本。

  3. SymbolGraphs

    解码 swift 编译器发出的原始 symbolgraph 片段,执行模块本地后处理,并将它们编码为 symbolgraph 文件。还为各种源代码构造提供类型定义。

  4. Biome

    实现文档编译器、渲染器和内存数据库。

  5. PackageResolution

    解码 Package.resolved 文件格式。

  6. PackageCatalogs

    解码 Package.catalog 文件格式,并处理从文件系统加载和发现 symbolgraph、DocC 归档和 SPM 代码片段。还可以调用 SymbolGraphs 以动态编译原始 symbolgraph 片段。

  7. PackageLoader

    调用 PackageCatalogsBiome,并提供便捷的 API,用于将 symbolgraph 从前者添加到后者。

可执行产品

  1. Preview (preview)

    一个基本的、不安全的基于 swift-nio 的服务器,适用于在本地浏览 Biome 文档。

  2. SymbolGraphConvert (swift-symbolgraphc)

    一个用于调用 SymbolGraphs 的命令行界面。支持多线程。

外部依赖

  1. swift-grammar
  2. swift-json
  3. swift-highlight
  4. swift-resource
  5. swift-dom
  6. apple/swift-markdown
  7. apple/swift-syntax

swiftinit.org 的部署还依赖于 @Joannis 的 mongokitten,尽管 swift-biome 本身并不依赖于它。