Skip to content

Commit ff24a88

Browse files
committed
docs(changelog): 补回漏掉的那条修复,并订正一句已经过时的说法
⚠️ **载荷版本解析整条没写进去** —— 而它是这一版里用户最先撞上的一条(干净机器 上引导直接停住)。补上,含判据:精化是逐**分量**比而不是逐字符,两个都精化时返回 空而不是按目录序挑,反方向不接受。 订正:`targetHeaderSet` 写的是「store-相对化」,自我 review 时实测发现只做这一档 盖不住最常见的那台机器(`--sysroot=<home>/registry/subos/default` 在 HOME 底下), 已改成 `<store>`/`<home>` 两档。顺带把这个轴分得开什么写清楚。
1 parent 5087d3a commit ff24a88

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,29 @@
5959
A 轴上的每一项都在描述**编译器**,没有一项描述它编译时所依据的**** ——
6060
而两者是分开安装的。`driverIdentity` 按设计也覆盖不了它:
6161
`normalize_driver_output` **故意**抹掉路径,好让一个条目能被两个 home 共享。
62-
新增 `targetHeaderSet` 轴,取自已经解析好的 `linkmodel`,并 store-相对化。
62+
新增 `targetHeaderSet` 轴,取自已经解析好的 `linkmodel`,并**分两档相对化**:
63+
`<store>``<home>`。⚠️ 只做 `<store>` 一档不够 —— 最常见的那台机器走
64+
`CLibMode::Sysroot`,它唯一的编译 token 是 `--sysroot=<home>/registry/subos/default`,
65+
在 HOME 底下而不在 store 底下,于是每个条目都会带上这台机器的 home。分得开什么:
66+
两个载荷(路径里带版本号)⇒ 两个键;一个 home 下的两个 subos ⇒ 两个键;
67+
两个 home 下同名的 subos ⇒ 仍是一个键(由整工程指纹的第 11 项区分)。
6368
⚠️ 不 bump `kCacheEpoch` —— 旧条目是 miss 而不是不可用。
6469

70+
- **⭐⭐ 请求的版本和载荷目录的版本是两套词汇,而每个查找都按请求那套拼。**
71+
72+
RuntimeBinding 带的是**声明的**版本(`glibc@2.44`),而 xlings 把载荷目录按这个
73+
请求**解析成**的版本命名(`2.44.2`)。索引在同一序列内挪动一次包,所有按声明版本
74+
拼目录名的查找就同时失效 —— 在每一台****机器上,在任何已存在的机器上都不出现。
75+
76+
两个查找点各自拼过一遍,所以修好一个还剩另一个,而第二处的失败**根本不提版本**:
77+
glibc 的 include 目录只是没被加上,用户读到的是 libstdc++ 头文件里的
78+
`features.h: No such file`。⇒ 收敛到一个 `payload_dir_for_version`
79+
80+
**判据是「精化」,不是「按目录序挑一个」**:`2.44.2` 的版本**分量**以请求的分量
81+
开头。`2.4` 回答不了 `2.44`(逐分量比,不是逐字符)。两个载荷都精化同一个请求时
82+
返回**** —— 「这个请求的解析结果」得是唯一一个才配叫答案,而按目录序挑正是这里
83+
每个调用者都拒绝做的猜测。反方向(拿更旧的载荷回答更新的请求)不接受。
84+
6585
- **⭐ home 发现有第四份拷贝,而且会伸到别的 home 里去。**
6686

6787
`active_home_xpkgs()` 自己重推了一遍 home(漏掉自包含安装那一档);

0 commit comments

Comments
 (0)