Nov 22, 2025 - Dec 30, 2025 Changelog
Features
- Add release schedule to README: Documented the project's release cadence and compatibility guarantees. (2025-12-30, #1150)
- Add
run-compactorto slatedb CLI: Introduced a CLI command to run the compactor as a standalone process, supporting externalized compaction workflows. (2025-12-18, #1122) - Publicize
CompactorBuilder: Exposed theCompactorBuilderAPI for constructing and running a compactor independently of aDbinstance. Added examples and documentation for standalone compactor usage. (2025-12-17, #1117) - Add read/list .compactions files to Admin/CLI: Enabled reading and listing of
.compactionsfiles via the Admin API and CLI, improving observability of compaction state. (2025-12-26, #1131) - Garbage collect .compactions files: Added support for garbage collecting
.compactionsfiles, with CLI and configuration integration. (2025-12-20, #1129) - Add scan_prefix/scan_prefix_with_options: Introduced efficient prefix-based scan APIs to core, Go, and Python bindings. (2025-12-10, #1084; #1078)
- Add metrics method for Go bindings: Exposed database metrics to Go users via a new
Metrics()method. (2025-12-09, #1082) - Add
total_mem_size_bytesandl0_sst_countmetrics: Added metrics for total memory usage and number of L0 SST files to aid monitoring and tuning. (2025-12-11, #1089; #1093) - Add Malstrom and Massive to adopters list: Updated README to include new users. (2025-12-17, #1116; 2025-12-18, #1120)
- Add ZeroFS to adopters list: Added ZeroFS to the list of known users. (2025-12-12, #1102)
- Add bindings section to README: Documented official and community language bindings. (2025-12-10, #1086)
- Add an RFC template: Provided a standard template for RFCs and updated contribution guidelines. (2025-12-12, #1100)
- Add network chaos tests for SlateDB: Introduced network chaos testing scenarios and CI integration to improve robustness. (2025-11-24, #1014)
- Add unit tests for dbReader get in Go: Improved test coverage for Go bindings. (2025-12-03, #1061)
- Test TTL in DST: Added TTL testing to deterministic simulation tests. (2025-12-22, #1124)
Bug Fixes
- Sync
compactor_epochbetween .manifest and .compactions: Ensured the compactor epoch is synchronized between manifest and compactions files, preventing fencing inconsistencies. (2025-12-30, #1152) - Fix duplicate "bytes" suffix in compaction progress: Corrected log output to avoid redundant units. (2025-12-16, #1115)
- Fix compactor panic on DB close by handling closed channel gracefully: Prevented panics when shutting down the compactor by handling closed channels without crashing. (2025-12-09, #1081)
- Silence expected NotFound warnings in disk cache evictor and metadata get: Reduced log noise by suppressing warnings for expected file-not-found conditions during disk cache eviction and metadata retrieval. (2025-12-16, #1111; 2025-12-19, #1125)
- Fix disk cache size exceeded configured capacity bug: Corrected logic to ensure disk cache does not exceed its configured size. (2025-12-15, #1079)
- Fix a couple bugs with merge rows and snapshots: Fixed issues with merge operator handling and snapshot retention, ensuring correct merge row visibility and retention. (2025-12-03, #1060)
- [golang] make slatedb_reader_get_with_options return NotFound for missing keys: Standardized error handling for missing keys in Go bindings. (2025-11-28, #1045)
- Fix list_checkpoints pyi: Corrected Python type hints for checkpoint listing methods. (2025-12-05, #1070)
Improvements
- Replace
read_active_manifestswithread_referenced_manifests: Refactored manifest reading logic to improve correctness and maintainability in GC and compaction. (2025-12-29, #1149) - Move compactor persistence logic to
CompactorStateWriter: Centralized compactor state persistence, improving reliability and testability. (2025-12-29, #1096) - Use compaction state to calculate low watermark in
GarbageCollector: Improved GC safety by using persisted compaction state for watermark calculations. (2025-12-19, #1071) - Optimize disk cache: Improved disk cache eviction performance and reduced lock contention. (2025-12-13, #1092)
- refactor(disk_cache): reduce the lock acquisition number during disk cache eviction: Further optimized disk cache eviction by minimizing lock acquisitions. (2025-12-26, #1133)
- Avoid cloning entries in SST builder by checking size before consuming: Reduced unnecessary cloning in SST block building, improving write efficiency. (2025-12-17, #1114)
- Refactor size-tiered compaction: Added
Copyderives, removed unnecessary clones, and improved iteration logic for compaction scheduling. (2025-12-16, #1113) - Create more shards by default in
FoyerCacheOptions: Increased default cache sharding for better concurrency. (2025-12-15, #1101) - Honor path suffixes in
resolve_object_store: Ensured object store URLs with path suffixes are correctly handled usingPrefixStore. (2025-12-09, #1076) - Honor
SstIteratorOptions::cache_blocksin index/filter reads: Respected cache block options for index and filter reads, improving cache control. (2025-12-11, #1088) - Scope cache keys to specific databases: Prevented cache key collisions across databases. (2025-12-11, #1087)
- Make "bytes processed" total in compactor output human readable: Improved log readability for compaction progress. (2025-12-16, #1039)
- Expose errors when Open fails in go-bindings: Improved error reporting for database open failures in Go. (2025-12-08, #1056)
- [slatedb-go|py] by default use environment to create object store: Changed default object store resolution to use environment variables, improving configuration consistency. (2025-12-08, #1063)
- [slatedb-go] refactor db creation code to accept url and envFile: Simplified Go binding configuration for object store selection. (2025-11-28, #1048)
- [slatedb-go] add support for local filesystem object store: Enabled local filesystem as an object store in Go bindings. (2025-11-28, #1048)
- [slatedb-go] add metrics method for db: Added Go API for retrieving database metrics. (2025-12-09, #1082)
- [slatedb] add
total_mem_size_bytesmetric: Added a metric to track total memory usage. (2025-12-11, #1089) - [slatedb] add metric for number of l0 sst files: Added a metric to track the number of L0 SST files. (2025-12-13, #1093)
- [slatedb] add
scan_prefixsupport to Python/Go bindings: Exposed prefix scan APIs to Go and Python. (2025-12-10, #1084) - [slatedb-go] add unit tests for dbReader get: Improved Go test coverage for dbReader. (2025-12-03, #1061)
- [slatedb-go] make slatedb_reader_get_with_options return NotFound for missing keys: Standardized error handling for missing keys in Go. (2025-11-28, #1045)
- [slatedb-go] print the internal error instead of a pointer: Improved error message clarity in Go bindings. (2025-12-13, #1103)
- [slatedb] add
mark_read()to transactions: Addedmark_read()to allow tracking read keys for conflict checking in snapshot isolation. (2025-12-26, #1137) - chore: make
slatedb::DbderiveClone: Allowed cloning of theDbstruct. (2025-12-23, #1139) - chore: rename
DBTransactiontoDbTransaction: Renamed transaction struct for consistency. (2025-12-30, #1153) - perf: reduce default garbage collector min age for WAL to 1 hour: Lowered WAL GC min age for faster cleanup. (2025-12-23, #1136)
- Prevent
LogicalClockoverflow in DST: Limited logical clock advancement in deterministic simulation tests. (2025-12-23, #1141) - Bump sequence tracker test to 60s timeout: Increased test timeout for sequence tracker race condition. (2025-12-20, #1132)
- Fix outdated docs in dst.rs: Updated documentation for deterministic simulation tests. (2025-12-05, #1067)
- Remove chaos-http-proxy from chaos tests: Cleaned up unused dependencies in chaos test setup. (2025-11-24, #1046)
- Allow fencing in
reset_peerchaos test: Improved chaos test reliability by handling fencing scenarios. (2025-12-02, #1053) - Set GC min_age and interval to 0 in chaos tests: Tuned GC settings for chaos test speed. (2025-12-02, #1057)
- Added metrics for running compactions: Exposed metrics for in-progress compactions. (2025-12-02, #1027)
- StoredManifest load & clone functions to accept sys clock: Improved testability and encapsulation by passing system clock explicitly. (2025-12-03, #1059)
- Remove unused clock field from ManifestStore struct: Simplified manifest store by removing unused fields. (2025-12-04, #1062)
- StoredManifest init and create_new_db to accept system clock as param: Improved manifest initialization flexibility. (2025-12-02, #1058)
- Persist compaction job skeleton to object storage: Persisted compaction job metadata for improved recovery and GC. (2025-12-08, #1064)
- Replace custom
AWS_andAZURE_handling withwith_config: Simplified object store configuration using builder APIs. (2025-12-16, #1109) - Replace DirtyManifest w/ DirtyObject: Refactored manifest mutation logic for clarity and consistency. (2025-11-24, #1038)
- Prevent GC from deleting very recent L0's: Improved GC safety by preventing deletion of recently written L0 SSTs. (2025-11-22, #1028)
- get operation cache blocks: Added cache control for get operations in Go and Python bindings. (2025-11-27, #1026)
- filter out old sequenced keys when flushing to L0: Ensured only the latest version of each key is flushed to L0, reducing redundancy. (2025-12-09, #1055)
- Merge when flushing to L0: Applied merge operator logic during memtable flush to L0, improving correctness for merge workloads. (2025-12-15, #1090)
Breaking Changes
- Replace DirtyManifest w/ DirtyObject: Refactored manifest mutation APIs; downstream code may need to update usage. (2025-11-24, #1038)
- chore: rename
DBTransactiontoDbTransaction: Renamed transaction struct; update code to useDbTransaction. (2025-12-30, #1153) - [slatedb-go|py] by default use environment to create object store: Changed default object store resolution; users relying on implicit in-memory stores may need to set environment variables or provide explicit configuration. (2025-12-08, #1063)
- Honor path suffixes in
resolve_object_store: Object store URLs with path suffixes now usePrefixStore; may affect storage layout for some configurations. (2025-12-09, #1076) - Remove unused clock field from ManifestStore struct: ManifestStore API changed; update code to avoid relying on removed fields. (2025-12-04, #1062)
Dependencies
- Removed
radix_triedependency: Replaced withHashMap+Vecfor cache eviction logic, improving performance and reducing dependencies. (2025-12-13, #1092) - Added
sysinfodependency: Used for determining default cache sharding based on CPU count. (2025-12-15, #1101)
For more details, see the linked pull requests.
Sources
- https://github.com/slatedb/slatedb/pull/1028
- https://github.com/slatedb/slatedb/pull/1038
- https://github.com/slatedb/slatedb/pull/1014
- https://github.com/slatedb/slatedb/pull/1046
- https://github.com/slatedb/slatedb/pull/1026
- https://github.com/slatedb/slatedb/pull/1048
- https://github.com/slatedb/slatedb/pull/1045
- https://github.com/slatedb/slatedb/pull/1053
- https://github.com/slatedb/slatedb/pull/1057
- https://github.com/slatedb/slatedb/pull/1027
- https://github.com/slatedb/slatedb/pull/1058
- https://github.com/slatedb/slatedb/pull/1061
- https://github.com/slatedb/slatedb/pull/1060
- https://github.com/slatedb/slatedb/pull/1059
- https://github.com/slatedb/slatedb/pull/1062
- https://github.com/slatedb/slatedb/pull/1067
- https://github.com/slatedb/slatedb/pull/1070
- https://github.com/slatedb/slatedb/pull/1056
- https://github.com/slatedb/slatedb/pull/1063
- https://github.com/slatedb/slatedb/pull/1064
- https://github.com/slatedb/slatedb/pull/1055
- https://github.com/slatedb/slatedb/pull/1076
- https://github.com/slatedb/slatedb/pull/1082
- https://github.com/slatedb/slatedb/pull/1078
- https://github.com/slatedb/slatedb/pull/1081
- https://github.com/slatedb/slatedb/pull/1084
- https://github.com/slatedb/slatedb/pull/1086
- https://github.com/slatedb/slatedb/pull/1087
- https://github.com/slatedb/slatedb/pull/1089
- https://github.com/slatedb/slatedb/pull/1088
- https://github.com/slatedb/slatedb/pull/1100
- https://github.com/slatedb/slatedb/pull/1102
- https://github.com/slatedb/slatedb/pull/1092
- https://github.com/slatedb/slatedb/pull/1103
- https://github.com/slatedb/slatedb/pull/1093
- https://github.com/slatedb/slatedb/pull/1090
- https://github.com/slatedb/slatedb/pull/1079
- https://github.com/slatedb/slatedb/pull/1101
- https://github.com/slatedb/slatedb/pull/1111
- https://github.com/slatedb/slatedb/pull/1039
- https://github.com/slatedb/slatedb/pull/1109
- https://github.com/slatedb/slatedb/pull/1113
- https://github.com/slatedb/slatedb/pull/1115
- https://github.com/slatedb/slatedb/pull/1114
- https://github.com/slatedb/slatedb/pull/1116
- https://github.com/slatedb/slatedb/pull/1117
- https://github.com/slatedb/slatedb/pull/1120
- https://github.com/slatedb/slatedb/pull/1122
- https://github.com/slatedb/slatedb/pull/1125
- https://github.com/slatedb/slatedb/pull/1071
- https://github.com/slatedb/slatedb/pull/1129
- https://github.com/slatedb/slatedb/pull/1132
- https://github.com/slatedb/slatedb/pull/1124
- https://github.com/slatedb/slatedb/pull/1136
- https://github.com/slatedb/slatedb/pull/1139
- https://github.com/slatedb/slatedb/pull/1141
- https://github.com/slatedb/slatedb/pull/1137
- https://github.com/slatedb/slatedb/pull/1133
- https://github.com/slatedb/slatedb/pull/1131
- https://github.com/slatedb/slatedb/pull/1096
- https://github.com/slatedb/slatedb/pull/1149
- https://github.com/slatedb/slatedb/pull/1150
- https://github.com/slatedb/slatedb/pull/1153
- https://github.com/slatedb/slatedb/pull/1152