Skip to content

feat(openkal): 0.5.2 —— 冻结布局的断言此前只描述了 64 位 - #234

Merged
Sunrisepeak merged 1 commit into
mainfrom
feat/openkal-0.5.2
Aug 20, 2026
Merged

feat(openkal): 0.5.2 —— 冻结布局的断言此前只描述了 64 位#234
Sunrisepeak merged 1 commit into
mainfrom
feat/openkal-0.5.2

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

kal_node_info 的断言写的是 offsetof(modified_ns) == sizeof(kal_uintptr),在 64 位上成立、在 32 位上不成立:modified_ns 是自然对齐的 kal_u64,4 字节的 size 之后补 4 字节填充,偏移仍停在 8

0.5.2 改成 == 8,与指针宽度无关——那正是冻结布局想要的性质。

⚠️ openkal 自己的 CI 在结构上发现不了它:那里每一行都是宿主构建,而宿主全是 64 位。缺陷在消费者处暴露(riscv-virt-rt 的 rv32 腿),那是 32 位布局唯一被实例化的地方。0.5.2 补了一条 rv64/rv32 的只编译 ABI 检查。

两端镜像逐字节核验一致(sha256 相同)。

`kal_node_info` 的断言写的是 `offsetof(modified_ns) == sizeof(kal_uintptr)`,
在 64 位上成立、在 32 位上不成立:`modified_ns` 是自然对齐的 `kal_u64`,
4 字节的 `size` 之后补 4 字节填充,偏移仍停在 8。

0.5.2 改成 `== 8`,与指针宽度无关——那正是冻结布局想要的性质——并一并断言
`sizeof(kal_node_info) == 24`(两种宽度同样成立)。

⚠️ openkal 自己的 CI 在结构上发现不了它:那里每一行都是宿主构建,而宿主
全是 64 位。缺陷在**消费者**处暴露(`mcpplibs/riscv-virt-rt` 的 rv32 腿),
那是 32 位布局唯一被实例化的地方。0.5.2 因此补了一条 rv64/rv32 两个目标的
只编译 ABI 检查。

两端逐字节核验一致。
@Sunrisepeak
Sunrisepeak merged commit b092963 into main Aug 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant