Revise the section on hashing and security
Home /
IntersectMBO /
lsm-tree
Jun 29, 5-6 AM (0)
Jun 29, 6-7 AM (0)
Jun 29, 7-8 AM (0)
Jun 29, 8-9 AM (0)
Jun 29, 9-10 AM (0)
Jun 29, 10-11 AM (0)
Jun 29, 11-12 PM (0)
Jun 29, 12-1 PM (0)
Jun 29, 1-2 PM (0)
Jun 29, 2-3 PM (0)
Jun 29, 3-4 PM (0)
Jun 29, 4-5 PM (0)
Jun 29, 5-6 PM (0)
Jun 29, 6-7 PM (0)
Jun 29, 7-8 PM (0)
Jun 29, 8-9 PM (0)
Jun 29, 9-10 PM (0)
Jun 29, 10-11 PM (0)
Jun 29, 11-12 AM (0)
Jun 30, 12-1 AM (0)
Jun 30, 1-2 AM (0)
Jun 30, 2-3 AM (0)
Jun 30, 3-4 AM (0)
Jun 30, 4-5 AM (0)
Jun 30, 5-6 AM (0)
Jun 30, 6-7 AM (0)
Jun 30, 7-8 AM (0)
Jun 30, 8-9 AM (0)
Jun 30, 9-10 AM (0)
Jun 30, 10-11 AM (0)
Jun 30, 11-12 PM (0)
Jun 30, 12-1 PM (0)
Jun 30, 1-2 PM (0)
Jun 30, 2-3 PM (1)
Jun 30, 3-4 PM (0)
Jun 30, 4-5 PM (0)
Jun 30, 5-6 PM (0)
Jun 30, 6-7 PM (0)
Jun 30, 7-8 PM (0)
Jun 30, 8-9 PM (0)
Jun 30, 9-10 PM (0)
Jun 30, 10-11 PM (0)
Jun 30, 11-12 AM (0)
Jul 01, 12-1 AM (0)
Jul 01, 1-2 AM (0)
Jul 01, 2-3 AM (0)
Jul 01, 3-4 AM (0)
Jul 01, 4-5 AM (0)
Jul 01, 5-6 AM (0)
Jul 01, 6-7 AM (0)
Jul 01, 7-8 AM (1)
Jul 01, 8-9 AM (0)
Jul 01, 9-10 AM (2)
Jul 01, 10-11 AM (0)
Jul 01, 11-12 PM (2)
Jul 01, 12-1 PM (2)
Jul 01, 1-2 PM (0)
Jul 01, 2-3 PM (0)
Jul 01, 3-4 PM (1)
Jul 01, 4-5 PM (0)
Jul 01, 5-6 PM (0)
Jul 01, 6-7 PM (0)
Jul 01, 7-8 PM (0)
Jul 01, 8-9 PM (0)
Jul 01, 9-10 PM (0)
Jul 01, 10-11 PM (0)
Jul 01, 11-12 AM (0)
Jul 02, 12-1 AM (0)
Jul 02, 1-2 AM (0)
Jul 02, 2-3 AM (0)
Jul 02, 3-4 AM (0)
Jul 02, 4-5 AM (0)
Jul 02, 5-6 AM (0)
Jul 02, 6-7 AM (1)
Jul 02, 7-8 AM (0)
Jul 02, 8-9 AM (0)
Jul 02, 9-10 AM (0)
Jul 02, 10-11 AM (0)
Jul 02, 11-12 PM (1)
Jul 02, 12-1 PM (0)
Jul 02, 1-2 PM (0)
Jul 02, 2-3 PM (1)
Jul 02, 3-4 PM (0)
Jul 02, 4-5 PM (0)
Jul 02, 5-6 PM (0)
Jul 02, 6-7 PM (0)
Jul 02, 7-8 PM (0)
Jul 02, 8-9 PM (0)
Jul 02, 9-10 PM (0)
Jul 02, 10-11 PM (0)
Jul 02, 11-12 AM (0)
Jul 03, 12-1 AM (0)
Jul 03, 1-2 AM (0)
Jul 03, 2-3 AM (0)
Jul 03, 3-4 AM (0)
Jul 03, 4-5 AM (0)
Jul 03, 5-6 AM (0)
Jul 03, 6-7 AM (0)
Jul 03, 7-8 AM (2)
Jul 03, 8-9 AM (1)
Jul 03, 9-10 AM (0)
Jul 03, 10-11 AM (1)
Jul 03, 11-12 PM (0)
Jul 03, 12-1 PM (0)
Jul 03, 1-2 PM (6)
Jul 03, 2-3 PM (1)
Jul 03, 3-4 PM (0)
Jul 03, 4-5 PM (0)
Jul 03, 5-6 PM (0)
Jul 03, 6-7 PM (1)
Jul 03, 7-8 PM (1)
Jul 03, 8-9 PM (0)
Jul 03, 9-10 PM (0)
Jul 03, 10-11 PM (0)
Jul 03, 11-12 AM (0)
Jul 04, 12-1 AM (0)
Jul 04, 1-2 AM (0)
Jul 04, 2-3 AM (0)
Jul 04, 3-4 AM (0)
Jul 04, 4-5 AM (0)
Jul 04, 5-6 AM (0)
Jul 04, 6-7 AM (0)
Jul 04, 7-8 AM (0)
Jul 04, 8-9 AM (0)
Jul 04, 9-10 AM (0)
Jul 04, 10-11 AM (8)
Jul 04, 11-12 PM (0)
Jul 04, 12-1 PM (0)
Jul 04, 1-2 PM (0)
Jul 04, 2-3 PM (0)
Jul 04, 3-4 PM (0)
Jul 04, 4-5 PM (0)
Jul 04, 5-6 PM (0)
Jul 04, 6-7 PM (0)
Jul 04, 7-8 PM (0)
Jul 04, 8-9 PM (0)
Jul 04, 9-10 PM (0)
Jul 04, 10-11 PM (0)
Jul 04, 11-12 AM (0)
Jul 05, 12-1 AM (0)
Jul 05, 1-2 AM (0)
Jul 05, 2-3 AM (0)
Jul 05, 3-4 AM (0)
Jul 05, 4-5 AM (0)
Jul 05, 5-6 AM (0)
Jul 05, 6-7 AM (0)
Jul 05, 7-8 AM (0)
Jul 05, 8-9 AM (0)
Jul 05, 9-10 AM (0)
Jul 05, 10-11 AM (0)
Jul 05, 11-12 PM (0)
Jul 05, 12-1 PM (0)
Jul 05, 1-2 PM (0)
Jul 05, 2-3 PM (1)
Jul 05, 3-4 PM (0)
Jul 05, 4-5 PM (0)
Jul 05, 5-6 PM (1)
Jul 05, 6-7 PM (0)
Jul 05, 7-8 PM (0)
Jul 05, 8-9 PM (0)
Jul 05, 9-10 PM (0)
Jul 05, 10-11 PM (0)
Jul 05, 11-12 AM (0)
Jul 06, 12-1 AM (0)
Jul 06, 1-2 AM (0)
Jul 06, 2-3 AM (0)
Jul 06, 3-4 AM (0)
Jul 06, 4-5 AM (0)
Jul 06, 5-6 AM (0)
35 commits this week
Jun 29, 2025
-
Jul 06, 2025
Remove `locator` field from the bibliography
Add integration notes section on possible file system incompatibility with XFS
`blockio`: refactor and document the `Sim` module
`blockio`: update cabal file for the upcoming release of `blockio-0.1.0.0`
`blockio`: refactor and document the `IO` module
`blockio`: expose `serialHasBlockIO` from an internal module
We use `serialHasBlockIO` in the `sim` sub-library and so we have to expose it somewhere, but we'd actually prefer it if it was not part of the public API. Exposing it only from an internal module makes it clear that it should ideally not be used by users.
`blockio`: document the `API` module
We remove documentation about implementation specifics from the `HasBlockIO` type, but we'll include it in the `IO` module in one of the next commits.
`blockio`: move `IOCtxParams` out of `API` and export it from `IO` instead
It's specific to the `IO` implementation
`blockio`: move `IO`-specific functions from `API` to an internal module
Slightly improve the beginning of the introduction
Add (no-break) spaces before citation references
`Eq` instance for `LSMTreeTrace` and others
As I added this, I noticed `OffsetKey` is included in `CursorTrace`, but this is an internal type, so I changed it to `Maybe RawBytes` instead.
Restore spaces dropped by bibliography style
The employed trick is to use no-break spaces, which is a hack but works.
Lift the 8-byte key restriction for the compact index
Now that `topBits64` is fully safe, remove the 8-byte key constraint when using the compact index. Instead, the config option for the index type includes a hint not to use the compact index if their keys are too small, because that will lead to bad performance.
Make `topBits64` safe for raw bytes of size less than 8
When the size of the raw bytes is less than 8, then a fallback method is used that is likely slower. When the size of the raw bytes is 8 or higher, then an additional integer comparison is made, but this has very little impact on performance, which I verified using micro-benchmarks. The upside to making the function safe for any input raw bytes is that the API and test generators become simpler, because there is one fewer constraint to satisfy: the minimum size of 8 bytes for serialised keys.
Lift the 8-byte key restriction for the compact index
Now that `topBits64` is fully safe, remove the 8-byte key constraint when using the compact index. Instead, the config option for the index type includes a hint not to use the compact index if their keys are too small, because that will lead to bad performance.
Fix a small bug in the merge schedule
A small bug related to the merge schedule and union levels was unearted after recent changes to key generators for the state machine tests. ``` ❯ cabal run lsm-tree-test -- --quickcheck-replay="(SMGen 13447116701882578385 16048829213438376903,35)" -p '$NF=="propLockstep_RealImpl_MockFS_IO"' lsm-tree Test.Database.LSMTree.StateMachine propLockstep_RealImpl_MockFS_IO: FAIL (28.54s) *** Failed! Assertion failed (after 1 test and 196 shrinks): ... 1 out of 1 tests failed (28.54s) ``` The bug was that the last level was always removing `Delete` entries even if there was union level. This is now fixed.
Make `topBits64` safe for raw bytes of size less than 8
When the size of the raw bytes is less than 8, then a fallback method is used that is likely slower. When the size of the raw bytes is 8 or higher, then an additional integer comparison is made, but this has very little impact on performance, which I verified using micro-benchmarks. The upside to making the function safe for any input raw bytes is that the API and test generators become simpler, because there is one fewer constraint to satisfy: the minimum size of 8 bytes for serialised keys.
Merge pull request #775 from IntersectMBO/jdral/release-hasblockio
Don't forget to release `HasBlockIO` in the public API
Merge pull request #756 from IntersectMBO/jdral/generate-readme-caching
GHA: fix caching in `lint-generate-readme` job
Rename the 'wp8' benchmarks to 'utxo' benchmarks
That is, `lsm-tree-bench-wp8` becomes `utxo-bench` and `rocksdb-bench-wp8` becomes `utxo-rocksdb-bench`. We put `bench` as the last word because it is consistent with naming of other components in the `lsm-tree` library, e.g., `lsm-tree-test`, `lsm-tree-micro-bench`, etc.
`blockio`: move `IO`-specific functions from `API` to an internal module