#2845·wabt

`compact imports` 失败

作者: vshymanskyy创建于 2026年9月6日更新于 2026年9月16日

WABT 1.0.41号卫星

`可操作-可兼容-进口'产生无法兼容的解码器接受的模块,并拒绝契约-进口建议本身的参考模块。 wabt的两边都做出相同的非定点假设,所以两者彼此一致,问题不可见于wabt的来回测试.

在进行[`Wasm3 v. 9.0'](https://GitHub.com/wasm3/wasm3/releases/tag/v. 9.0)时发现的

不幸的是,这也影响到 " 人人皆可 " ,导致模块被打破。 以下为AI辅助分析.

          • 说说看

□提议的内容

`提案/协议-进口-部分/概览.md':

; 之后
* 第2节(清单(进口))
* nm1: name nm2: name externtype;; 单项编码(已存在)
* * nm1:nm:name:name 0x7F 列表(nm2:nameexterntype) -- -- 如果nm=";;紧凑编码 1
QQ nm1: name nm: name 0x7E externtype list( nm2: name) -- -- 如果 nm = ""; 紧凑编码 2

本节为清单(进口)',进口'是整个交替——因此本节领先。 u32计算进项,其中一项紧凑运行是一个可能包含许多进口品的单一入项。

提案的光谱套件中的每一个参考模块都随之而来. 解码 `Wg-3.0光谱测试中的建议/合同-进口-部分/*.WASM ' ,每个模块的输入数 与其导入计数不同的是,宣布条目计数:

4.4. WASM申报=1条目=1进口=2
1. WASM申报=2个条目=2个进口=6
WASM申报=2个条目=2个进口=3个
14. WASM 申报=1条目=1进口=5
WASM 申报=4个条目=4个进口=6

□ 1. Wat2wasm 写着一个计数,不能使用符合的解码器

华特 (单元) (进口"env""a" (func)). (进口"env""b" (日语). (中文(简体) ).


控制台
$ watt2wasm - 可操作的兼容进口 m.wat - o m. WASM
$ xxd. m. ZWASM
0000000: 0061 736d 01000000 0104 016000000210 asm. '.
00000010: 0203 656e 7600 7f02 01610000 01620000.env.a.b.

导入区域 :

02 10; 第2节, 16字节
02; 计数 = 2 < -- 应为 1 : 本节有一个条目
03 65 6e 76; "env" (英语).
00; ""(空项名)
7f;紧凑标记
02; 2项
01 61 00 00; "a", func, 第 0 类
01 62 00 00; "b", func, 第 0 类

一个读出“清单(进口)”的解码器读取一个条目,然后试图读取第二个条目, 运行结束部分 :

控制台 $3m. WASMH 错误: 解析 WASM 二进制时运行不足


每个模块,有两个或两个以上相邻的进口,共享一个模块名称,都是这样出来的.

□ 2. 读者拒绝符合要求的模块

采用按提案编码的相同三个模块名称的例子——三个条目(一个运行两个,
然后是两个单一进口),第3项:

零点 . . . . . . .

内容来源: WebAssembly/wabt