PPysolate SpineREAD THE CODE · UNDERSTAND THE SYSTEM
章节目录
LEARNING NOTES / 07

构建与来源

实际 Wasm 的打包边界与使用条件。

独立仓库的边界

本仓库从原 interview worktree 的 spine/ 抽取,来源提交为 87da0837。新仓库不继承旧 Git 历史,不 import 旧 runtime;首次抽取时仅 CLI 的 Go import 和默认文件路径为独立布局调整;阶段 2 的新实现继续在本仓库开发。原 MIT LICENSE 保留。

当前 Go module 名为 pysolate-spine,是本地模块名,不代表已经创建同名 GitHub 仓库。尚无 remote,也没有发布 artifact。

当前可运行文件

dist/spine.wasm 现为阶段 3 Guest:在 构建机器 重新链接 C bridge,打包 bootstrap.pyplm.pyprefix.py 与 CPython 3.14 标准库,再由重建脚本取回本机。ordinary/PLM/prefix 的验证均使用实际 Wasm。不是阶段 1 的旧文件,也不是重新从零编译 CPython。

这里不建立 hash/receipt 管线。重建来源是下面的独立 Linux 工作目录与本仓库构建脚本;测试会检查真实 Guest 转换,而不是只凭函数名声称支持。

dist/ 被 Git 忽略。新 clone 缺少 Wasm 时测试明确失败,需要构建或从可信的本机/构建机器取回;当前未提供公共下载服务。

构建输入布局

build-guest.sh 要求 Linux x86_64。SPINE_BUILD_INPUTS 指向包含以下内容的目录:

tools/
  wasi-sdk/           clang、sysroot 和链接工具
  wasi-vfs-lib/       libwasi_vfs.a
  wasi-vfs-cli/       wasi-vfs 打包器
  wasm-tools/         Wasm validator
cpython/
  Include/           CPython C API 头文件
  Lib/               标准库源码
  cross-build/wasm32-wasip1/
    pyconfig.h
    libpython3.14.a
    Modules/_decimal/libmpdec/libmpdec.a
    Modules/_hacl/*.a
    Modules/expat/libexpat.a

这是复用已构建 CPython 的链接/打包入口,不是从零构建 CPython 的下载器。迁移没有把大型工具链塞进新仓库,也没有更改旧论文 artifact 或共享 layer。

首次构建的输入来自已有 CPython/WASI cache layer;复制到专用目录后使用。它含有上述头文件、静态库、标准库和工具;并不依赖旧 Go runtime 源码。若未来需要空机器从零重建,再单独补工具链获取流程,不把它伪装成现在已验证的功能。

构建入口

在具备工具链的 Linux x86_64 目录运行:

SPINE_BUILD_INPUTS=/path/to/extracted-build-inputs bash build-guest.sh

具体机器地址、SSH 配置和本机路径不随文档站发布。源码仓库中的远程构建辅助脚本只用于本机操作。

许可

源码沿用 MIT。生成 Wasm 中的 CPython、其支持库及 wasi-vfs 各自仍有第三方许可;Go 依赖也保留自己的许可。本次仅本机开发、未发布打包产物。如果以后分发 Wasm,需要随构建输入核对并携带第三方许可文本,不把本仓库的 MIT 声明当作替代。