You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hermes base-bytecode equivalence check, reworked. With --verifyHermesBase, compareHermesBytecode now reads each disassembly as a structure: string ids are resolved through each side's own table, functions are compared one at a time (a desync no longer cascades), and a dump that exits non-zero or ends early is reported as dump-failed, distinct from different. Rejections now name the function, instruction and first differing entry.
Literals compared per instruction. For HBC v87–96, the Array/Object Key/Object Value buffers are decoded from the binary at each New*WithBuffer instruction's offset, so the builder's overlapping/deduplicated literals no longer cause false rejections of good delta builds. Other bytecode versions (e.g. HBC v98) fall back to whole-buffer comparison.
Outcome reported at version/create. New optional fields hermesBaseOutcome (used | rejected | dump-failed | none) and hermesBaseDetail (≤ 500 chars) let the server track rejection rates. Keys are omitted when unknown; older servers ignore them.
Fixes
When the verification's plain compile fails, the base is now dropped instead of shipping an unverified delta; the plain compile is re-run into the real output.
Tooling
bun run fuzz:hermes-base — seeded differential fuzzer for the equivalence check (planted one-literal changes must still be caught). Docs: docs/hermes-base-verification.md.
中文
主要更新
重写 Hermes base 字节码等价性校验。 开启 --verifyHermesBase 时,compareHermesBytecode 按结构解析反汇编:字符串 id 通过各自的字符串表解析,函数逐个比较(不再因错位级联误判),dump 进程非零退出或提前结束会报告为 dump-failed,与 different 区分。拒绝时会给出函数、指令和第一处差异。