ba2
is a DOM-based reader/writer for archives made for the Creation Engine games. It includes near-complete support for all archive variants from Morrowind up to Starfield. ba2
leverages mem-mapped i/o to cut down on the memory bloat typically associated with DOM-based approaches. It is a Rust port of the equivalent C++ library.
The latest development docs are available at: https://ryan-rsm-mckenzie.github.io/bsa-rs/ba2/index.html
The stable release docs are available at: https://docs.rs/ba2/latest/ba2/
Changelogs are available at: https://github.com/Ryan-rsm-McKenzie/bsa-rs/releases
ba2
is not nearly as mature as its C++ cousin, however it does leverage the C++ test suite, and as such it manages to stand head and shoulders above existing solutions in terms of correctness of implementation. Tests are written directly in the source code, instead of being kept separately. See here, here, and here for the majority of the written tests.
Being an implementation of a relatively static archive file format, ba2
has no set release schedule. However updates will be published sporadically as bug fixes are made, new features are added, and especially when new game releases necessitate support.
Contributions are generally welcome, however I would appreciate if contributions were discussed beforehand using Github issues, before any code is written.