README, CLAUDE.md, man pages, the user guide and its screenshot script now describe the Rust build and the intentional behaviour changes, which docs/MIGRATION.md lists. Go and Rust micro-benchmarks for the same operations, and scripts/bench.sh for end-to-end comparison. build.sh exports its tree root to the per-target jobs and keeps logs out of the output directory; riscv64 musl builds use getrandom's raw syscall backend, since zig's musl getrandom never reaches the kernel there. Co-Authored-By: Claude <noreply@anthropic.com>
Go oracle (test-only)
oracle/go is a frozen copy of the Go implementation of vault, taken from
commit 4c1507c ("Add unlock --idle, and packaging/repo.sh for
repo.dixon.cx"), the last Go release on master. It is kept as the
reference that the Rust implementation is checked against. It is not
part of the shipped product: release builds, packages and the vault
binary contain no Go code and need no Go toolchain.
Provenance:
- Every file under
oracle/gois byte-identical to the same path at the repository root at4c1507c, except the three added test files below. oracle_vectors_test.go,internal/pqcrypt/oracle_vectors_test.goandinternal/stream/oracle_vectors_test.goare test-only generators. They call the frozen code and write what it computes; they skip themselves unlessVAULT_ORACLE_OUTis set, and add nothing to the oracle binary.- Dependencies are pinned by
go.mod/go.sum: CIRCL v1.6.4, golang.org/x/crypto v0.53.0, x/sys v0.46.0, x/term v0.44.0. The module needs Go 1.26.6 or newer.
Check the copy is still faithful:
git diff --stat 4c1507c HEAD -M -- oracle/go # renames only, plus the generators
Use:
oracle/gen-vectors.sh # rewrite tests/vectors from the oracle
(cd oracle/go && go build -o ../../target/vault-go .) # build the oracle CLI
(cd oracle/go && go test ./...) # its own test-suite
cargo test builds the oracle binary itself for the interoperability tests
when go is on PATH (or uses $VAULT_GO_ORACLE), and reports them as
skipped otherwise.
All passphrases, seeds and plaintexts in the vectors are synthetic and
public (oracle-real passphrase, oracle-decoy passphrase, fixed byte
patterns). Never commit real keys or real vault contents.