freepdfeditor/spike
ai-ad4 067bb7c362 feat(adr-0005): Rust for image-codec leaf decoders; resolve M0 Rust-vs-C++ decision (§15)
ADR-0005 records the decision deferred in ADR-0003: Rust (staticlib, C ABI)
for the image-codec leaf decoders where the CVE history concentrates
(OpenJPEG ~40 buffer-overflow CVEs incl. 2024, several 'as used in PDFium');
C++ throughout elsewhere. Spike F measures the build-friction cost empirically
(~10s cargo build, one .a link, ASan-clean FFI) rather than estimating it.

- docs/adr/0005-rust-leaf-decoders.md: decision + CVE survey + evidence
- docs/adr/0003 + README: mark deferred portion superseded by ADR-0005
- spike/F_rust_ffi_probe: Rust staticlib leaf + C++ driver, bounded (ptr,len)
  FFI matching §7.2; builds clean under ASan+UBSan
- .gitignore: ignore cargo target/ (keep Cargo.lock for reproducibility)
2026-07-27 10:42:57 +00:00
..
A_verbatim_roundtrip fix(spike-A): adapt to installed QPDF 12.2 API; fix use-after-free 2026-07-25 20:30:37 +00:00
B1_glyph_unicode feat(spike-B1): glyph→Unicode ladder on real embedded font; 98% coverage (§4.1 step 1) 2026-07-25 20:57:02 +00:00
B_reconstruction feat(spike-B): reconstruction pipeline; F1=0.963 on synthetic corpus (§14 step 5) 2026-07-25 20:38:24 +00:00
C_subset_growth feat(spike-C): hb-subset font growth; new glyph renders (§14 step 6) 2026-07-25 20:41:02 +00:00
E_sandbox feat(spike-E): sandbox + IPC bring-up; seccomp-bpf, 18us round-trip (§14 step 8) 2026-07-25 20:52:39 +00:00
F_rust_ffi_probe feat(adr-0005): Rust for image-codec leaf decoders; resolve M0 Rust-vs-C++ decision (§15) 2026-07-27 10:42:57 +00:00
common chore: initial repository scaffold (§14 steps 1-3, 9) 2026-07-25 20:14:22 +00:00
CMakeLists.txt feat(adr-0005): Rust for image-codec leaf decoders; resolve M0 Rust-vs-C++ decision (§15) 2026-07-27 10:42:57 +00:00