Pearl changelog
- Fixed benchmark build error (#296)
- Fixed build warnings (#300)
- Fix the build by adding yanked aHash implementation (#302)
- Add ability to attach metadata to the deletion record (#229)
- Receive timestamp as parameter, store it within record and return it with BlobRecordTimestamp (#231)
Storage::read
now propagates the error further instead of hiding it (#241)Storage::read
now reads Entries first, select latest one and only then loads the data (#276)- Check blob validity on index regeneration (#289)
- Checksum validation in
Entry::load_data
(#274) - Add fsync to header writing in blob (#243)
- Add periodic fsync (#234)
- Reduced internal strucutre size in memory: bloom filter
Config
andFileName
(#260) - Serialize/Deserialize implementation removed from
Record
struct (#282)
- Use
dep:<crate_name>
syntax in feature declaration to avoid unnecessary feature flags (#272) - Only add a deletion record in old blobs if the key is present (#284)
- Update
tokio
,bytes
,async-lock
andnix
crate versions (#278)
- Use InMemoryIndex as an additional filter on Blob level (#238)
- Windows support added (#257)
- CI: build and test on Windows (#261)
- Include file index memory in the calculation of occupied memory (#262)
- Remove hard dependency on io uring (#230)
- Update offset only when write is imminent to prevent data corruption due to async Future cancellation (#228)
- Improved Arc placement in Storage (#185)
- Improved visibility levels in Storage (#186)
Clone
impl removed fromStorage
(#265)- BLOB-wide exclusive lock removed from the write path, instead the short lock on the in-memory index added (#249)
- Include BTreeMap overhead in index calculations (#266)
MEM_SIZE
const has been added into theKey
trait for proper calculation of memory occupied by the Key struct (#270)
- Fix fork in test duplicating test environment (#254)
- Bug in ObserverWorker that prevents its stop and leads to memory leak (#259)
- Converting UnexpectedEOF errors to bincode errors before deserialize() calls (#233)
- Index regeneration checks record data checksum (#215)
ring
crate replaced withsha2
crate (#246)async-std
replaced withasync-lock
to avoid redundant dependencies (#247)- Change locks for filters update (#218)
- Serialization moved out of critical section (#188)
- Removed multiple header checksum calculations (#206)
- Rename functions to show that it returns last entry (#199)
- Special handling for large data write (#192)
- Added different path for sync read/write (#184)
- Fixed skip condition in Storage::get_data_last causing incorrect NotFound result (#235)
- Corrupted blobs count calculation (#224)
- Return delete or not found as distinct results (#208)
- Save delete records in index (#207)
- Use bytes for arguments (#191)
- Crate
crc
(#225)
- Add functions to get info about blobs and indexes (#151)
- Add key_size field to index header (#151)
- Change file operations to work on full buffers (#190)
- Remove iterators from bloom filter (#194)
- Excessive key conversion removed (#193)
- Updated tokio, nix, clap, bitvec versions (#202)
- Update locks (#187)
- File name added to error messages in Blob struct (#183)
- Update rust edition (#175)
- Fix docs (#177)
- Fix order of records after bptree deserialization (#181)
- Correct blob size comparison in index validation (#179)
- Returning error when validating blob with corrupted records (#180)
- Add method to receive occupied disk space (#170)
- Defer index drop on delete (#165)
- Restore documentation publishing (#173)
- Add hierarchical filters support (#126)
- Add tools to recover and migrate blobs and indexes (#148)
- Add blob size to index header (#153)
- Add magic byte to index header (#152)
- Fix delete with no active blob set (#167)
Add support for hierarchical range filters (#154)
- Remove active checking for blob update (#159)
- corrupted blob now should be saved in case of 'unexpected eof' error (#160)
- Add refkey trait (#141)
- Change nightly to stable rust toolchain
- Add record delete api method (#103)
- Add wait cycle for tests with index files (#144)
- In memory index last record retrieval (#147)
- Add hierarchical filters support (#126)
- Add key trait (#123)
- Add method to offload bloom filters (#121)
- Dump blob indices in separate thread on active blob close (#136)
- Remove second file descriptor from File (#124)
- Acquire advisory write lock on files (#124)
- Add more functions to interface to support work with optional active blob (#118)
- B+ Tree indexes (#84)
- Range indexes (#11)
- Move corrupted blobs into speacial directory (#98)
- Blob version validation (#120)
- Rebuild corrupted index automatically during startup (#94)
- Move build_time.rs file to OUT_DIR.
- Create corrupted directory only when needed (#94)
- Setup build and test with GitHub Actions (#113)
- Helpers for build time, commit hash and version moved to
build_info
mod. - Build time format.
build_time.rs
added to.gitignore
.
- Blob version v0 -> v1
- Add key size check for blob from file (#99)
ahash
version fixed on=v0.7.4
(#112)
- Fix lint warnings (#100)
- Fix possible infinite readlock (#97)
- Change all readlocks on writelocks
- add more traces, increase check timer
- disable old blobs dump
- fix benchmark and lock issue
- Fix observer worker leak and simplify logic
- Fix 'core dumped' bug
- Add check before fsync index file in dump (#90)
- Add an option to ignore corrupted blobs (#86)
- Switch to RwLock for storage inner safe (instead of Mutex) (#91)
- update libs
- Add synchronization for closing blobs to keep them in stable state in case of future disk faults (#85)
- Add an option to ignore corrupted blobs (#86)
- tokio update v1.3
- reduced disk IO calls when index used
- remove Entries
- Replace Error::RecordNotFound with Option
- use anyhow crate for result/error handling
- wrong offset of index file read
- use of the io_uring, linux asynchronous I/O API.
- storage records count methods all/active/detailed
- CHANGELOG.md