Skip to content

docs: compatibility matrix, semantic deltas and release packaging (#5) - #35

Merged
hbgit merged 11 commits into
feature/rustfrom
docs/issue-5-compat-release
Oct 15, 2026
Merged

hbgit merged 11 commits into
feature/rustfrom
docs/issue-5-compat-release

Conversation

@hbgit

@hbgit hbgit commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Closes #5

Acceptance criteria

Criterion Where
docs/api-deltas.md with a symbol/signature compatibility matrix Core C API matrix (one row per function in include/map2check.h, exact declaration) and Map2Check pass matrix
docs/semantic-deltas.md with reproducible cases SD-01 to SD-12, each with a classification, a C snippet and the Rust tests that pin it
Changelog and release packaging for the C header and integration guide CHANGELOG.md, docs/integration-guide.md, docs/release.md, scripts/package-release.sh (tested in CI by scripts/test-package-release.sh)
Docs reflect the ABI, JSON and integration decisions #13 (next_current_step, free_resolved_address semantics recorded), #14 (SD-01 pending decision), #21 (pass matrix pending)

Keeping the docs honest

tests/compat_docs.rs fails when:

  • a header export has no matrix row, or its declaration differs from the header;
  • an SD-NN entry points to a test that does not exist, or an SD-NN is cited but not defined;
  • the JSON examples in the integration guide differ from the real serializer output.

ffi_tests.rs also pins the 17 macro-generated exports to the C declarations that build.rs writes by hand, since cbindgen does not see them.

Notes

Suspected regressions (no code changed here; follow-up issues, differential check in #15)

Verification

cargo fmt --check, cargo clippy --all-targets --all-features -- -D warnings, cargo test --all-features (146 unit, compat_docs 8, checklist 11, header_version 3), cargo test, scripts/test-branch-protection.sh, scripts/test-check-no-c-era-artifacts.sh, scripts/check-no-c-era-artifacts.sh and scripts/test-package-release.sh pass locally. scripts/coverage.sh was not run locally (cargo-tarpaulin not installed); CI runs it.

hbgit added 9 commits October 15, 2026 10:46
Core C API rows mirror include/map2check.h exactly; Map2Check pass rows
record what #21 still has to provide. tests/compat_docs.rs fails when
the header and the matrix drift apart. Also records next_current_step
(#13 M3-E1) and the free_resolved_address semantics (#13 M3-I2).
Twelve SD entries, each with a C snippet, a classification and the Rust
tests that pin today's behaviour. SD-03, SD-06 and SD-12 are recorded as
suspected regressions for adjudication in #15; no production code changes.
scripts/package-release.sh ships libmap2check.a (no features) and
libmap2check_libfuzzer.a: the libfuzzer build references
__map2check_main__ and does not link into a plain C program.
CI runs scripts/test-package-release.sh, which links a C program
against the unpacked archive. docs/release.md documents the steps;
README points to the compatibility docs instead of a stale JSON sample.
… declarations (#5)

cbindgen does not see the nondet_ffi!/overflow_ffi_* exports, so build.rs
writes their C declarations by hand and tests/compat_docs.rs could not
catch a Rust signature change. Also pins the byte-sized size argument of
map2check_map_non_static_alloca (SD-12).
)

The sed range dropped the last line of the final CHANGELOG section; the
gh release command now uploads only the archive of the version released.
hbgit added 2 commits October 15, 2026 11:26
…ds (#5)

compat_docs is the first integration test that links the crate. With
--features libfuzzer, LLVMFuzzerTestOneInput references
__map2check_main__, whose stub in libfuzzer.rs is cfg(test)-only and
absent when the crate is a dependency. cargo tarpaulin keeps dead code
(-C link-dead-code), so the test binary failed to link in CI.
@hbgit
hbgit merged commit 3813dde into feature/rust Oct 15, 2026
2 checks passed
@hbgit
hbgit deleted the docs/issue-5-compat-release branch October 15, 2026 20:42
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