13 releases (8 breaking)

Uses new Rust 2024

0.8.1 Jan 30, 2026
0.7.0 Jan 29, 2026

#444 in Database interfaces

Download history 9/week @ 2026-01-24 11/week @ 2026-01-31 10/week @ 2026-02-07 43/week @ 2026-02-14 2/week @ 2026-02-28 131/week @ 2026-03-07 408/week @ 2026-03-14 142/week @ 2026-03-21

683 downloads per month
Used in 3 crates (2 directly)

MIT/Apache

250KB
4K SLoC

signet-libmdbx

Rust bindings for libmdbx.

Forked from reth-libmdbx, which was forked from an earlier Apache licenced version of the libmdbx-rs crate.

NOTE: Most of the repo came from lmdb-rs bindings.

Differences from reth-libmdbx

  • Improve documentation :)
  • Add TxUnsync type for single-threaded transactions.
    • These may be up to 3x faster than the thread-safe versions.
  • Rename Transaction to TxSync for clarity.
  • Improve support for custom TableObject types.
    • Added TableObjectOwned trait to represent types that can be deserialized from a database table without borrowing.
    • Added ReadError error type to represent errors that can occur when reading from the database. This captures MDBX errors as well as codec specific errors.
  • More-accurate lifetime semantics
    • Cursors now have lifetimes tied to the transaction they were created from.
    • Cursors CANNOT hold transactions open.
    • All DB reads borrow from the transaction when available.
  • API consistency review
    • iter and iter_dup now have consistent behavior (previously, iter would start at the next key, while iter_dup would start at the current key).
    • Iteration methods that reposition the cursor now do so BEFORE returning the iterator.
  • Module layout changes
    • sys - Environment and transaction management.
    • tx - module contains transactions, cursors, and iterators

Updating the libmdbx Version

To update the libmdbx version you must clone it and copy the dist/ folder in mdbx-sys/. Make sure to follow the building steps.

# clone libmdbx to a repository outside at specific tag
git clone https://github.com/erthink/libmdbx.git ../libmdbx --branch v0.7.0
make -C ../libmdbx dist

# copy the `libmdbx/dist/` folder just created into `mdbx-sys/libmdbx`
rm -rf mdbx-sys/libmdbx
cp -R ../libmdbx/dist mdbx-sys/libmdbx

# add the changes to the next commit you will make
git add mdbx-sys/libmdbx

Linux Testing

Run tests in a Linux environment (Ubuntu 24.04):

# Build the test image
docker build -t mdbx-linux-tests .

# Run full checks (fmt, clippy, tests)
docker run --rm mdbx-linux-tests

# Run specific commands
docker run --rm mdbx-linux-tests cargo test --all-features
docker run --rm mdbx-linux-tests cargo clippy --all-features --all-targets

Dependencies

~8–11MB
~131K SLoC