From 8ee7ebcfa8ec516705467ca4dd4d6877c016affe Mon Sep 17 00:00:00 2001 From: speak-agent <248744407+speak-agent@users.noreply.github.com> Date: Fri, 21 Aug 2026 05:31:45 +0800 Subject: [PATCH] =?UTF-8?q?docs(plan):=20=E9=80=89=E5=AE=9A=E8=BD=BD?= =?UTF-8?q?=E8=8D=B7=E4=B9=8B=E5=90=8E=20392MB=20=E2=86=92=2054MB,?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E6=94=B6=E5=BD=95=E8=BF=98=E5=B7=AE=E7=9A=84?= =?UTF-8?q?=E4=B8=89=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 把五条腿都从 meson install 改成显式组装(模拟器 + pc-bios + Windows 上 ldd 实测出的 13 个 MinGW DLL)之后: linux-x64 392MB → 103MB → 54MB(strip 后) linux-arm64 389MB → 100MB → 53MB darwin 两条 341/342MB → 53MB(不 strip:会让 ad-hoc 签名失效) win32-x64 装不出来 → 110MB → 58MB ⭐ 七倍,而且这不是收尾优化:索引的资产预算是实测 0.012 MB/s 的单连接上传、无分片、 无续传 —— 343MB 的载荷在那条链路上不可发布,54MB 的可以。**「载荷选什么」是收录能否 成立的前提。** 五条腿全绿的门槛已达到;收录仍是一个独立决定,而它现在有了做决定所需的全部数字。 剩下三步与 qemu-riscv 同形,已写进文档。 --- ...026-08-21-freestanding-outstanding-four.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.agents/docs/2026-08-21-freestanding-outstanding-four.md b/.agents/docs/2026-08-21-freestanding-outstanding-four.md index c88d30e3..655b38ff 100644 --- a/.agents/docs/2026-08-21-freestanding-outstanding-four.md +++ b/.agents/docs/2026-08-21-freestanding-outstanding-four.md @@ -650,6 +650,38 @@ QEMU 可以从源码构建,而且**只构建需要的目标**能把代价压下 ⚠️ macOS 那两条腿不 strip,并且说明了原因:strip Mach-O 会让 ad-hoc 签名失效,这 正是本生态发布流水线自己的规则。 +### 4.3.2 ⭐ 选定载荷之后的数字:392 MB → 54 MB + +把五条腿都从 `meson install` 改成**显式组装**(模拟器 + `pc-bios` + Windows 上用 +`ldd` 实测出的 13 个 MinGW 运行时 DLL)之后: + +| 宿主 | `meson install` | 显式组装 | strip 后 | +|---|---|---|---| +| linux-x64 | 392 MB | 103 MB | **54 MB** | +| linux-arm64 | 389 MB | 100 MB | **53 MB** | +| darwin-arm64 | 341 MB | — | **53 MB**(不 strip) | +| darwin-x64 | 342 MB | — | **53 MB**(不 strip) | +| win32-x64 | (装不出来) | 110 MB | **58 MB** | + +⭐ **七倍。** 而这不是收尾优化:索引的资产预算是实测 **0.012 MB/s** 的单连接上传、 +无分片、无断点续传,343 MB 的载荷在那条链路上是不可发布的,54 MB 的可以。也就是说 +「载荷选什么」不是打包细节,而是**收录能否成立的前提**。 + +⚠️ `pc-bios` 一个文件都没删。哪些 blob 会在运行时被加载是描述符要回答的问题,靠 +「删到出问题为止」来回答,就是一个载荷在别人机器上少一个 blob 的由来 —— 本次实施在 +这里犯过一次(顺手删了 `keymaps` 与固件描述符),当场撤回。 + +### 4.3.3 收录 `xim:qemu-x86` 还差什么 + +五条腿全绿这个门槛已经达到,而收录仍是一个**独立的决定**,它现在有了做决定所需的 +全部数字。剩下的三步与 `qemu-riscv` 的做法同形: + +1. 把五个资产发布成一个**版本化 release**,每个带 `.sha256` 侧文件; +2. 镜像到 `xlings-res/qemu-x86` 双端,并按「回探下载 URL」而不是退出码判定成功; +3. 写 `xim:qemu-x86` 描述符,`deps` 是否为空按 `qemu-arm` 的做法**实测 DT_NEEDED / + otool 闭包**后决定,而不是从兄弟描述符抄结论。⚠️ Windows 一侧的答案已经量出来了: + **13 个 MinGW 运行时 DLL 必须与 exe 同目录**,因为 PE 没有 rpath。 + ⭐ 这一步的价值在于**先把五条流水线跑通,再谈收录**。GitHub 托管的 runner