We have met several problems in maintaining rust-rocksdb as a git-only crate:
- When a new release is published, TiKV usually creates a new branch. rust-rocksdb usually chooses a similar approach. But rust-rocksdb usually doesn’t have any updates, so the old branch will be used. You will find that tikv release-5.3 is using rocksdb branch tikv-5.2, which is confusing.
- The first time compiling rocksdb needs to download the history of all submodules, including rocksdb, titan, which is time consuming given the network quality, especially for rocksdb.
- It prevents adoptions from community. I have receives requests from various channels that want an official published version of the crate.
I hereby propose to polish and re-organize the code in rust-rocksdb and publish it as tirocks.
The adjustment includes:
- Using bindgen to maintain C bindings. Bindings for x86_64/aarch64 GNU/Linux will be pre-generated and committed.
- Renaming structs/traits/functions to match the Rust conventions and organizing the code for readability.
All functionality will be kept either as original or in a new struct or as a new name. Before the clean up is finished, rust-rocksdb will be maintained and used as usual. Once we have migrated to the new version, the old version will only be kept for referencing and only critical bugs will be fixed. tirocks will be published following the semver spec and starts with 1.0.0.
Please share your thoughts in comments, any suggestions are appreciated.