A native Rust reimplementation of libxml2 and libxslt with forensic capabilities.
Project details
libxml-rs provides a custodial forensic reimplementation of libxml2 and libxslt, capturing their observable behaviors throughout history in native Rust. With C ABI compatibility for easy integration, it serves as an oracle for understanding the evolution of these libraries and their functionalities.
libxml-rs is a custodial native-Rust reimplementation of the libxml2 + libxslt ecosystem, providing a comprehensive forensic reconstruction of observable behavior across historical versions of these libraries. Unlike a traditional XML crate or XSLT crate, this project serves as a complete archive and reimplementation, ensuring C ABI compatibility for a seamless drop-in replacement.
Phase 11 focuses on the archaeological heritage of libxml2 and libxslt, delivering insights into how contemporary behavior developed over time. This phase introduces a configurable oracle matrix that evaluates 12 historical libxml2 releases (2.7.8 to 2.15.0) and 5 libxslt releases (1.1.26 to 1.1.42), capturing byte-exact outputs and per-version SHA256 fingerprints through a comprehensive 28-case behavioral corpus.
oracle/historical/build.sh.oracle/historical/run_matrix.sh, storing outcomes in results/matrix.json.atlas/SEMANTIC_EPOCHS.md to explore the mapped behavioral epochs correlated with upstream commits.xmllint --xpath node-set output introduced newline separators in version 2.9.10.The project is evolving towards ensuring external consumer compatibility and conducting a hostile audit to identify and remedy any behavior discrepancies in the implementation. This includes ensuring all exported functions and global variables align with the original library expectations.
The project utilizes Rust's Cargo tools for building and testing, maintaining a strong emphasis on reliability and correctness. Documentation is provided throughout the project with references to various artifacts and paths for deeper understanding of the implementation.
For comprehensive build instructions and technical documentation, visit the GitHub page or check the available crates on crates.io.
This project represents a significant advancement in recreating and understanding the libxml2/libxslt behavior over time, catering to developers looking for both replacement and academic references.
Comments
0Start the conversation
Share the first comment.