Releases: zaidoon1/rust-rocksdb
Releases · zaidoon1/rust-rocksdb
v0.50.0
What's Changed
Breaking
- MSRV bumped to 1.91.0 per the rolling 6-month policy. 1.91.0 was released 2025-10-30, the most recent stable that satisfied the 6-month window at the time of the bump. No critical compiler bugs or soundness fixes in 1.92+ apply to this codebase. (@zaidoon1)
Features
librocksdb-sys: local C-API extensions for three RocksDB C++ options that have no upstream C wrapper yet. Two new files inlibrocksdb-sys/c-api-extensions/(c_api_extensions.handc_api_extensions.cc) declare and define the new C symbols additively; the vendored RocksDB submodule is never modified. No build-time dependencies beyond the C++ compiler the crate already requires. Three symbols ship, each mirroring an upstream PR against facebook/rocksdb:rocksdb_readoptions_{set,get}_optimize_multiget_for_io(facebook/rocksdb#14752)rocksdb_block_based_options_set_uniform_cv_threshold+rocksdb_block_based_table_index_block_search_type_auto = 2(facebook/rocksdb#14775)rocksdb_options_{set,get}_memtable_batch_lookup_optimization(facebook/rocksdb#14776)
When upstream merges a matching PR and the submodule is bumped to a release containing it, the local entry can be dropped. (@zaidoon1)
rust-rocksdb: three matching safe-Rust setters plus getters for the twobooloptions:BlockBasedOptions::set_index_block_search_type(IndexBlockSearchType)and the newIndexBlockSearchTypeenum (Binary,Interpolation,Auto).BlockBasedOptions::set_uniform_cv_threshold(f64).Options::{set,get}_memtable_batch_lookup_optimization(bool).ReadOptions::{set,get}_optimize_multiget_for_io(bool).
(@zaidoon1)
AsRawPtr<rocksdb_t>implementation forOptimisticTransactionDB<T>(gated on theraw-ptrfeature). Returns the underlying base DB pointer for advanced C-API use cases such as verifying file checksums directly. (@ksurent)
Fixes
- Re-export
ColumnFamilyMetaDataandCSlicefrom the crate root. Both types appeared in the return type of apubfunction in the crate-root surface but were defined in private modules and not re-exported, making them effectively unnameable by downstream callers (#224). A newtests/test_public_api.rscompile-checks both imports so a future accidental un-export fails the test build. Thanks to @JadedBlueEyes for the report. (@zaidoon1)
Full Changelog: v0.49.1...v0.50.0
v0.49.1
What's Changed
- removed: drop the
numacargo feature shipped in 0.49.0. The feature set-DNUMAand linkedlibnuma, butOptions::use_numa_aware_alloc()and thenuma_alloc_onnode()arena path were removed from rocksdb's library proper before 11.1.1 —NUMAis now only referenced bytools/db_bench_tool.ccandtools/trace_analyzer_tool.cc, neither of which rust-rocksdb compiles. The feature was a no-op for library users. For NUMA-local memtable arenas, use OS-level pinning (numactl --cpunodebind --membind, systemdNUMAPolicy=/NUMAMask=). If you hadfeatures = ["numa"], remove it. (@zaidoon1)
v0.49.0
What's Changed
- feat: add transactiondb checkpoint support (@gdorsi)
- feat: add opt-in
coroutinesfeature for multi-level async MultiGet via RocksDB'sUSE_COROUTINES=1/USE_FOLLY=1build path (Linux-only, requires liburing >= 2.7 andROCKSDB_FOLLY_INSTALL_PATH); see README "Async MultiGet with C++20 Coroutines" (@zaidoon1) - feat: add opt-in linking against a system-installed RocksDB via
ROCKSDB_USE_PKG_CONFIG=1orROCKSDB_LIB_DIR=<path>; default vendored build unchanged. Closes #310 (@zaidoon1) - feat: add opt-in
numacargo feature (Linux) enablingOptions::use_numa_aware_alloc()for memtable arena allocations; requireslibnuma-dev(@zaidoon1) - fix: define
ROCKSDB_BACKTRACEon Linux glibc and Apple targets soport/stack_trace.ccproduces C++ frames in crash output instead of a no-op stub (@zaidoon1) - fix: define
ROCKSDB_PTHREAD_ADAPTIVE_MUTEXon Linux glibc for brief adaptive spinning on contended mutexes (@zaidoon1) - refactor: rewrite
librocksdb-sys/build.rsinto typedTargetandBackendabstractions split across modules (@zaidoon1) - fix: bindgen now runs against the chosen backend's headers (vendored vs system), eliminating a silent ABI-mismatch hazard when linking system rocksdb (@zaidoon1)
- fix: link Windows runtime libs (
rpcrt4,shlwapi) in both vendored and system-link paths (@zaidoon1) - fix: target-OS detection reads
CARGO_CFG_TARGET_*instead of host#[cfg(target_os=...)], eliminating cross-compile bugs (@zaidoon1) - fix: FreeBSD branch honors
ROCKSDB_STATICandROCKSDB_INCLUDE_DIR;ROCKSDB_COMPILE=1on FreeBSD is rejected up front (@zaidoon1) - behavior change: on Android, link
libc++(NDK r18+) instead oflibstdc++(@zaidoon1) - feat: emit
cargo::metadata=include=andcargo::metadata=root=; downstream-syscrates can read these asDEP_ROCKSDB_INCLUDEandDEP_ROCKSDB_ROOT(@zaidoon1) - fix: pin iOS deployment target via
-mios-version-min=12.0flag instead of mutating process env (@zaidoon1) - fix: comprehensive
cargo::rerun-if-env-changed=coverage for env vars affecting the build (@zaidoon1) - fix: define
HAVE_FULLFSYNCon Apple targets so RocksDB takes thefcntl(F_FULLFSYNC)path for true on-disk durability (@zaidoon1) - fix: emit
-DWIN32(not-DDWIN32) on Windows targets to match RocksDB's CMakeLists.txt (@zaidoon1) - ci: run the coroutines workflow on both x86_64 and aarch64 Linux (@zaidoon1)
v0.48.0
v0.47.0
What's Changed
- upgrade RocksDB to 11.0.4 (@zaidoon1)
- feat: add flush, flush_wal, flush_cf, flush_cf_opt, flush_cfs_opt to TransactionDB (@gdorsi)
- feat: add timestamp() to DBRawIteratorWithThreadMode (@ali2992)
- feat: add IngestExternalFileOptions AsRawPtr impl (@ali2992)
- feat: add Iterator::Refresh() bindings (@JoshSend)
- fix: memory leak in Options.set_info_logger (@evanj)
- fix: sync build.rs defines with RocksDB; pass through -Ctarget-cpu and set aarch64 CRC32 flags (@evanj)
- breaking: remove set_skip_checking_sst_file_sizes_on_db_open (removed from RocksDB 11.0 C API) (@zaidoon1)
- chore: replace trybuild with compile_fail doctests, removing trybuild dev-dependency (@zaidoon1)
v0.46.0
What's Changed
- upgrade RocksDB to 10.10.1 (@zaidoon1)
- doc: document enable_statistics stats are shared (@evanj)
- feat: add sequence_number method to SnapshotWithThreadMode (@lucacasonato)
- perf: use thread-local ReadOptions in Transaction::multi_get (@zaidoon1)
- refactor: simplify MergeOperands::get_operand using pointer add() method (@zaidoon1)
- chore: remove bincode and serde dev-dependencies, implement manual serialization in merge operator test (@zaidoon1)
- feat: add zero-copy C API support for get_into_buffer, batched_multi_get_cf_slice, and optimized iterator (@zaidoon1)
v0.45.0
What's Changed
- upgrade to RocksDB 10.9.1 (@zaidoon1)
- upgrade to Rust edition 2024 and MSRV 1.89.0 (@zaidoon1)
- breaking: remove set_options_from_string (incorrectly named and wrong implementation) (@zaidoon1)
- feat: expose get_options_from_string (@MarioRuiz)
- feat: add feature-gated raw_ptr trait to expose raw C pointers (@jszwec)
- fix: memory leak in DBCommon.get_column_family_metadata(_cf) (@evanj)
- fix: memory leak in DB.create_cf on error (@evanj)
- fix: memory leak in MemoryUsageBuilder.add_tx_db (@evanj)
- fix: memory leak in DBOptions.get_options_from_string on error (@evanj)
- fix: memory leak in DBOptions.set_compaction_filter (@evanj)
- fix: memory leak in DBOptions.set_comparator(_ts) (@evanj)
- fix: MemoryUsageBuilder now requires DBs/caches to outlive the builder (@evanj)
- improve Cache::new_hyper_clock_cache documentation (@evanj)
- minor documentation improvements (@luohewuyang, @vastonus, @Galoretka)
v0.44.2
What's Changed
- Expose APIs to import and export Column Families by @pcholakov in #178
- add zero-copy MultiGet and prefix existence APIs and various other optimizations by @zaidoon1 in #184
New Contributors
- @pcholakov made their first contribution in #178
Full Changelog: v0.44.1...v0.44.2
v0.44.1
v0.44.0
What's Changed
- upgrade to RocksDB 10.7.5 (@zaidoon1)
- feat: expose enable_file_deletions/disable_file_deletions (@jszwec)
- expose SstFileManager and Options::set_sst_file_manager (@zaidoon1)
- add add_compact_on_deletion_collector_factory_min_file_size option (@zaidoon1)
- expose set_cache_index_and_filter_blocks_with_high_priority (@zaidoon1)
- Options.set_callback_logger: Make closure lifetimes safe (@evanj)
- add support for SingleDelete (@zaidoon1)
Full Changelog: v0.43.0...v0.44.0