Fix deterministic compilation with scoped gensym identities #98
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/issue-97-deterministic-compilation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fresh compiler processes can serialize different FASL bytes because private gensym session identities vary. Add the explicit
JERBOA_BUILD_GENSYM_NAMESPACEbuild mode to the bundled runtime, validating a 64-character lowercase SHA-256 namespace. Ordinary runtime behavior stays unchanged when it is unset. The documented manifest policy separates independent artifacts and compiler roles while preserving dependent identities.Fixes #97.
The packaged-runtime regression covers the unpatched negative control, repeated raw FASL equality, independent/shared and mutually dependent identities, malformed inputs, ordinary runtime uniqueness, and actual
jsqlite/cachecompilation and loading. It runs from required CI. Version advances to 0.13.3.Validation on macOS arm64:
The full verification exposed existing gate defects repaired here: release/debug wrapper lookup, typed binary version/loader context, JSON sentinel exhaustiveness, masked command failures, and macOS recursive evidence copying. Verification resumed at evidence assembly after the copy fix; completed suites were retained. Local native-link tests use pinned Rust 1.94.1 with
CARGO_PROFILE_RELEASE_STRIP=noneto avoid this host's Apple linker rejection of stripped dylibs. No browser bypass was used.See
docs/deterministic-compilation.mdfor the required namespace policy anddocs/issue97-verification.mdfor scope and evidence. The downstream adapter is qualification evidence, not a secmon release or lock update. Original reports, final binaries, logs, and the consumer patch are preserved locally for review.