Skip to content

Releases: zaidoon1/rust-rocksdb

v0.50.0

23 May 06:19

Choose a tag to compare

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 in librocksdb-sys/c-api-extensions/ (c_api_extensions.h and c_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 two bool options:
    • BlockBasedOptions::set_index_block_search_type(IndexBlockSearchType) and the new IndexBlockSearchType enum (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 for OptimisticTransactionDB<T> (gated on the raw-ptr feature). Returns the underlying base DB pointer for advanced C-API use cases such as verifying file checksums directly. (@ksurent)

Fixes

  • Re-export ColumnFamilyMetaData and CSlice from the crate root. Both types appeared in the return type of a pub function in the crate-root surface but were defined in private modules and not re-exported, making them effectively unnameable by downstream callers (#224). A new tests/test_public_api.rs compile-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

18 May 21:07
04b37c4

Choose a tag to compare

What's Changed

  • removed: drop the numa cargo feature shipped in 0.49.0. The feature set -DNUMA and linked libnuma, but Options::use_numa_aware_alloc() and the numa_alloc_onnode() arena path were removed from rocksdb's library proper before 11.1.1 — NUMA is now only referenced by tools/db_bench_tool.cc and tools/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, systemd NUMAPolicy=/NUMAMask=). If you had features = ["numa"], remove it. (@zaidoon1)

v0.49.0

18 May 20:35
e1ef491

Choose a tag to compare

What's Changed

  • feat: add transactiondb checkpoint support (@gdorsi)
  • feat: add opt-in coroutines feature for multi-level async MultiGet via RocksDB's USE_COROUTINES=1 / USE_FOLLY=1 build path (Linux-only, requires liburing >= 2.7 and ROCKSDB_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=1 or ROCKSDB_LIB_DIR=<path>; default vendored build unchanged. Closes #310 (@zaidoon1)
  • feat: add opt-in numa cargo feature (Linux) enabling Options::use_numa_aware_alloc() for memtable arena allocations; requires libnuma-dev (@zaidoon1)
  • fix: define ROCKSDB_BACKTRACE on Linux glibc and Apple targets so port/stack_trace.cc produces C++ frames in crash output instead of a no-op stub (@zaidoon1)
  • fix: define ROCKSDB_PTHREAD_ADAPTIVE_MUTEX on Linux glibc for brief adaptive spinning on contended mutexes (@zaidoon1)
  • refactor: rewrite librocksdb-sys/build.rs into typed Target and Backend abstractions 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_STATIC and ROCKSDB_INCLUDE_DIR; ROCKSDB_COMPILE=1 on FreeBSD is rejected up front (@zaidoon1)
  • behavior change: on Android, link libc++ (NDK r18+) instead of libstdc++ (@zaidoon1)
  • feat: emit cargo::metadata=include= and cargo::metadata=root=; downstream -sys crates can read these as DEP_ROCKSDB_INCLUDE and DEP_ROCKSDB_ROOT (@zaidoon1)
  • fix: pin iOS deployment target via -mios-version-min=12.0 flag instead of mutating process env (@zaidoon1)
  • fix: comprehensive cargo::rerun-if-env-changed= coverage for env vars affecting the build (@zaidoon1)
  • fix: define HAVE_FULLFSYNC on Apple targets so RocksDB takes the fcntl(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

04 May 06:25
365105f

Choose a tag to compare

What's Changed

v0.47.0

08 Apr 04:34

Choose a tag to compare

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

03 Feb 17:36

Choose a tag to compare

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

07 Jan 06:56

Choose a tag to compare

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

06 Nov 01:54

Choose a tag to compare

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

Full Changelog: v0.44.1...v0.44.2

v0.44.1

23 Oct 07:40

Choose a tag to compare

What's Changed

  • simplify SstFileManager by using default Env internally (@zaidoon1)

Full Changelog: v0.44.0...v0.44.1

v0.44.0

23 Oct 06:21

Choose a tag to compare

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