- [feat] Implemented support for compaction filters (custom logic during compactions)
- [msrv] Reduced MSRV to 1.90
- [feat] Implemented new block format in
lsm-tree - [feat] Bookkeep LSM-tree changes (flushes, compactions) in
Versionhistory - [feat] Prefix truncation inside data & index blocks
- [feat] Allow unpinning filter blocks
- [feat] Implemented partitioned filters
- [feat] Allow calling bulk ingestion on non-empty keyspaces
- [feat] Introduced level-based configuration policies for most configuration parameters
- [feat] Journal compression for large values
- [feat] Database locking using the new Rust file locking API
- [feat] Rewritten key-value separation to run during compactions, instead of dedicated GC runs
- [feat] Full file checksums to allow fast database corruption checks (in the future)
- [feat] Checksum check on block & blob reads
- [api] Make Ingestion API more flexible
- [feat] Shortening eligible sequence numbers when compacting into the last level to save disk space
- [api] Change constructor to
Database::builderinstead ofConfig::new - [api] Changed naming of keyspace->database, and partition->keyspace
- [api] Change transaction feature flags to be separate structs,
OptimisticTxDatabaseandSingleWriterTxDatabase - [api] Changed snapshot error type, fixes #156
- [api] Unified transactions read operations and snapshots with
Readabletrait - [api] Guard API for iterator values
- [api] Removed old garbage collection APIs
- [api]
metricsfeature flag for cache hit rates etc. (will be exposed in the future) - [api] Change
bytesfeature flag tobytes_1to pin its version - [api] Make read operations in optimistic write transactions non-mut
- [fix] Consider blob files in FIFO compaction size limit, fixes #133
- [perf] Use a single hash per key for filters, instead of two
- [perf] Improve leveled compaction scoring
- [perf] Improve leveled compaction picking to use less hashing and heap allocations
- [perf] Use
quick-cachefor file descriptor caching - [perf] Promote levels immediately to L6 to get rid of tombstones easily
- [perf] Rewritten maintenance task bookkeeping, and write stalling mechanisms to be less aggressive
- [perf] Allow
lsm-treeflushes to merge multiple sealed memtables into L0, if necessary - [perf] Skip heap allocation in blob memtable inserts
- [perf] Skip compression when rewriting compressed blob files
- [msrv] Increased MSRV to 1.91
- [misc] Blob file descriptor caching
- [misc] Use Rust native
path::absolute, removingpath-absolutizedependency - [misc] Remove
std-semaphoredependency - [misc] Remove
miniz(will be replaced in the future) - [misc] Use
byteorder-liteas drop-in replacement forbyteorder - [refactor] Changed background workers to be a single thread pool
- [internal] Store keyspace configurations in a meta keyspace, instead of individual binary config files
- [internal] Use
sfafor most file scaffolding inlsm-tree