Changed CBOR from 'pps bisect_ppx' to 'instrumentation (backend bisect_ppx)'
which is dune's recommended approach for coverage when not using custom
preprocessing.
Benefits:
- Cleaner dune syntax
- Use --instrument-with bisect_ppx flag (no env vars needed)
- Coverage files auto-managed in _build
- More idiomatic dune
Updated documentation to reflect new usage:
dune runtest --instrument-with bisect_ppx
bisect-ppx-report summary --coverage-path=_build
Core library still uses 'pps bisect_ppx' due to per-module preprocessing
requirements (cpp.exe for 3 modules).
Solved the preprocessor conflict by using per-module dune stanza:
- CCAtomic, CCList, CCVector: Use cpp.exe (need version conditionals)
- All other core modules: Use bisect_ppx for coverage
- containers_cbor: Full bisect_ppx coverage (no cpp needed)
This allows coverage collection on ~95% of the codebase while
maintaining version compatibility preprocessing where needed.
Initial coverage results:
- CBOR: 87.50% (203/232 points) from RFC test vectors
- Core: instrumented except 3 modules
To generate coverage:
BISECT_FILE=_coverage/bisect dune runtest
bisect-ppx-report html -o _coverage/html