Skip to content

Conversation

@cb1kenobi
Copy link
Contributor

@cb1kenobi cb1kenobi commented Jan 6, 2026

  • Reenable unit tests which were mistakenly disabled
  • Fix getLogFileSize(0) test
  • Reset transaction state if commit fails
  • Removed transaction-optimistic.test.ts test
  • Remove napi_adjust_external_memory calls
  • Fixed rate limiting downloading RocksDB prebuild

Supersedes #291.

dependabot bot and others added 8 commits December 29, 2025 05:26
Bumps the patch group with 3 updates in the / directory: [lefthook](https://github.com/evilmartians/lefthook), [tsdown](https://github.com/rolldown/tsdown) and [ast-v8-to-istanbul](https://github.com/AriPerkkio/ast-v8-to-istanbul).


Updates `lefthook` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `tsdown` from 0.18.2 to 0.18.3
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](rolldown/tsdown@v0.18.2...v0.18.3)

Updates `@rolldown/binding-android-arm64` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-darwin-arm64` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-darwin-x64` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-freebsd-x64` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-linux-arm-gnueabihf` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-linux-arm64-gnu` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-linux-arm64-musl` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-linux-x64-gnu` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-linux-x64-musl` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-openharmony-arm64` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-wasm32-wasi` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-win32-arm64-msvc` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/binding-win32-x64-msvc` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `@rolldown/pluginutils` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/pluginutils)

Updates `ast-v8-to-istanbul` from 0.3.9 to 0.3.10
- [Release notes](https://github.com/AriPerkkio/ast-v8-to-istanbul/releases)
- [Commits](AriPerkkio/ast-v8-to-istanbul@v0.3.9...v0.3.10)

Updates `lefthook-darwin-arm64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-darwin-x64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-freebsd-arm64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-freebsd-x64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-linux-arm64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-linux-x64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-openbsd-arm64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-openbsd-x64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-windows-arm64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `lefthook-windows-x64` from 2.0.12 to 2.0.13
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](evilmartians/lefthook@v2.0.12...v2.0.13)

Updates `rolldown-plugin-dts` from 0.19.2 to 0.20.0
- [Release notes](https://github.com/sxzz/rolldown-plugin-dts/releases)
- [Commits](sxzz/rolldown-plugin-dts@v0.19.2...v0.20.0)

Updates `rolldown` from 1.0.0-beta.55 to 1.0.0-beta.57
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.0.0-beta.57/packages/rolldown)

Updates `unrun` from 0.2.20 to 0.2.21
- [Release notes](https://github.com/Gugustinette/unrun/releases)
- [Commits](Gugustinette/unrun@v0.2.20...v0.2.21)

---
updated-dependencies:
- dependency-name: lefthook
  dependency-version: 2.0.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: tsdown
  dependency-version: 0.18.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-android-arm64"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-darwin-arm64"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-darwin-x64"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-freebsd-x64"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-linux-arm-gnueabihf"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-linux-arm64-gnu"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-linux-arm64-musl"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-linux-x64-gnu"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-linux-x64-musl"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-openharmony-arm64"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-wasm32-wasi"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-win32-arm64-msvc"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/binding-win32-x64-msvc"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@rolldown/pluginutils"
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: ast-v8-to-istanbul
  dependency-version: 0.3.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-darwin-arm64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-darwin-x64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-freebsd-arm64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-freebsd-x64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-linux-arm64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-linux-x64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-openbsd-arm64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-openbsd-x64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-windows-arm64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: lefthook-windows-x64
  dependency-version: 2.0.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: rolldown-plugin-dts
  dependency-version: 0.20.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: patch
- dependency-name: rolldown
  dependency-version: 1.0.0-beta.57
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: unrun
  dependency-version: 0.2.21
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the patch group with 2 updates: [tsdown](https://github.com/rolldown/tsdown) and [@napi-rs/wasm-runtime](https://github.com/napi-rs/napi-rs/tree/HEAD/wasi-runtime).


Updates `tsdown` from 0.18.3 to 0.18.4
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](rolldown/tsdown@v0.18.3...v0.18.4)

Updates `@napi-rs/wasm-runtime` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/napi-rs/napi-rs/releases)
- [Commits](https://github.com/napi-rs/napi-rs/commits/@napi-rs/[email protected]/wasi-runtime)

---
updated-dependencies:
- dependency-name: tsdown
  dependency-version: 0.18.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: patch
- dependency-name: "@napi-rs/wasm-runtime"
  dependency-version: 1.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) from 1.35.0 to 1.36.0.
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.36.0/npm/oxlint)

---
updated-dependencies:
- dependency-name: oxlint
  dependency-version: 1.36.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
@github-actions
Copy link

github-actions bot commented Jan 6, 2026

📊 Benchmark Results

encoding.bench.ts

Key encoding > ordered-binary keys - strings (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 27.21K ops/sec 36.75 35.43 201.728 0.261 13,606
🥈 rocksdb 2 4.66K ops/sec 214.376 203.597 937.761 0.539 2,333

Key encoding > ordered-binary keys - numbers (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 30.76K ops/sec 32.51 31.65 238.227 0.284 15,382
🥈 rocksdb 2 4.58K ops/sec 218.134 207.918 410.302 0.277 2,293

Key encoding > ordered-binary keys - mixed types (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 27.30K ops/sec 36.63 35.32 258.582 0.357 13,649
🥈 rocksdb 2 4.76K ops/sec 210.285 199.377 566.151 0.330 2,378

Value encoding > msgpack values - strings (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 18.14K ops/sec 55.13 53.46 232.272 0.326 9,071
🥈 rocksdb 2 4.06K ops/sec 246.542 231.839 550.173 0.383 2,029

Value encoding > msgpack values - numbers (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 28.96K ops/sec 34.53 33.46 215.901 0.349 14,481
🥈 rocksdb 2 4.79K ops/sec 208.614 194.603 882.245 0.440 2,397

Value encoding > msgpack values - arrays (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 10.04K ops/sec 99.60 96.26 306.694 0.413 5,020
🥈 rocksdb 2 3.38K ops/sec 295.826 278.463 638.708 0.544 1,691

Value encoding > msgpack values - small objects (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 6.24K ops/sec 160.196 151.003 492.861 0.679 3,122
🥈 rocksdb 2 2.60K ops/sec 384.682 353.441 1,655.121 0.784 1,300

Value encoding > msgpack values - large objects (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 674.38 ops/sec 1,482.853 1,439.617 2,936.92 0.838 338
🥈 rocksdb 2 623.65 ops/sec 1,603.476 1,446.609 16,898.906 6.19 312

get-sync.bench.ts

getSync() > random keys - small key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 22.74K ops/sec 43.98 41.54 2,644.271 1.05 11,369
🥈 rocksdb 2 4.25K ops/sec 235.555 201.053 25,534.512 10.07 2,123

get.bench.ts

get() > rocksdb - random vs sequential keys (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 random 1 3.92K ops/sec 255.319 239.769 649.248 0.502 1,959
🥈 sequential 2 3.90K ops/sec 256.412 245.791 499.467 0.386 1,950

get() > random keys - max 1978 lmdb key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 3.20K ops/sec 312.823 291.725 1,542.378 1.27 1,599

get() > rocksdb - async vs sync

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 sync 1 4.26K ops/sec 234.483 221.357 1,673.597 0.653 2,133
🥈 async 2 3.76K ops/sec 266.103 254.346 605.974 0.361 1,879

put-sync.bench.ts

putSync() > random keys - insert - small key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 2.34K ops/sec 427.341 406.604 535.666 0.180 1,171
🥈 lmdb 2 1.91K ops/sec 524.277 484.376 25,575.461 9.83 954

putSync() > random keys - update - small key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 2.31K ops/sec 433.349 416.663 611.288 0.170 1,154
🥈 lmdb 2 1.93K ops/sec 519.374 506.083 728.532 0.175 963

putSync() > random keys - insert - max 1978 lmdb key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 1.08K ops/sec 924.714 792.274 1,177.994 0.434 541
🥈 lmdb 2 914.63 ops/sec 1,093.34 1,007.886 1,665.871 0.463 458

putSync() > random keys - update - max 1978 lmdb key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 1.10K ops/sec 908.428 800.316 1,197.65 0.402 551
🥈 lmdb 2 944.36 ops/sec 1,058.92 1,001.901 1,819.073 0.556 473

putSync() > sequential keys - insert (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 2.40K ops/sec 416.456 398.592 539.449 0.173 1,201
🥈 lmdb 2 1.87K ops/sec 535.312 513.945 1,273.314 0.350 935

putSync() > put 100KB value (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 76.72 ops/sec 13,034.207 12,911.868 13,470.662 0.289 39.00
🥈 rocksdb 2 28.58 ops/sec 34,987.245 14,311.199 78,172.153 25.98 16.00

putSync() > put 1MB value (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 12.63 ops/sec 79,160.756 78,778.374 79,742.76 0.310 10.00
🥈 rocksdb 2 1.85 ops/sec 540,687.403 336,626.888 942,970.656 31.85 10.00

putSync() > get 10MB value (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 1.18 ops/sec 847,879.429 841,903.131 861,719.871 0.600 10.00
🥈 rocksdb 2 0.08 ops/sec 12,127,396.813 11,422,222.18 13,324,445.141 3.18 10.00

put.bench.ts

put > small dataset (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 1.91K ops/sec 523.236 498.013 901.379 0.300 956
🥈 lmdb 2 557.98 ops/sec 1,792.17 1,721.087 2,218.095 0.496 279

put > async vs sync overhead

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 sync 1 2.16K ops/sec 464.013 444.912 547.735 0.133 1,078
🥈 async 2 1.95K ops/sec 512.354 493.203 829.389 0.251 976

ranges.bench.ts

getRange() > small range (100 records, 50 range)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 25.05K ops/sec 39.91 37.83 410.304 0.414 12,528
🥈 rocksdb 2 3.45K ops/sec 289.605 259.613 798.506 1.20 1,727

getRange() > full scan vs range scan

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb range scan 1 25.08K ops/sec 39.87 38.60 290.295 0.283 12,542
🥈 lmdb full scan 2 13.21K ops/sec 75.69 72.65 298.158 0.439 6,607
🥉 rocksdb range scan 3 3.51K ops/sec 285.228 262.17 789.175 1.13 1,754
rocksdb full scan 4 1.82K ops/sec 549.616 510.916 1,333.697 1.24 910

getKeys() > keys only (100 records, 50 range)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 57.06K ops/sec 17.52 16.72 215.829 0.240 28,533
🥈 rocksdb 2 5.75K ops/sec 173.886 157.986 744.891 1.15 2,876

Reverse iteration > reverse range (100 records, 50 range)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 579.20K ops/sec 1.73 1.53 2,037.963 0.840 289,603
🥈 rocksdb 2 3.21K ops/sec 311.149 286.17 1,152.213 1.55 1,607

Reverse iteration > rocksdb - reverse vs forward

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 reverse 1 3.28K ops/sec 304.89 280.291 1,411.85 1.66 1,640
🥈 forward 2 3.22K ops/sec 310.795 266.095 3,479.479 1.97 1,609

Range query patterns > prefix scan performance

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 34.68K ops/sec 28.84 27.86 674.073 0.354 17,339
🥈 rocksdb 2 3.56K ops/sec 280.881 256.029 1,923.329 1.75 1,781

Sparse data patterns > sparse - range over gaps

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 65.33K ops/sec 15.31 14.69 661.488 0.355 32,665
🥈 rocksdb 2 6.92K ops/sec 144.534 134.231 1,009.256 0.955 3,460

Sparse data patterns > sparse - prefix with gaps

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 137.68K ops/sec 7.26 6.94 637.796 0.345 68,842
🥈 rocksdb 2 15.13K ops/sec 66.09 59.82 1,900.858 1.19 7,566

remove-sync.bench.ts

removeSync() > random keys - small key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 14.03K ops/sec 71.30 68.24 299.441 0.343 7,013
🥈 rocksdb 2 2.66K ops/sec 375.425 354.061 551.709 0.281 1,332

removeSync() > sequential keys - small key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 13.15K ops/sec 76.02 69.16 309.523 0.543 6,578
🥈 rocksdb 2 2.78K ops/sec 359.792 347.493 571.435 0.183 1,390

removeSync() > rocksdb - random vs sequential keys (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 sequential 1 2.77K ops/sec 361.479 347.683 501.845 0.160 1,384
🥈 random 2 2.72K ops/sec 367.087 348.748 652.61 0.253 1,363

removeSync() > random keys - max 1978 lmdb key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 5.90K ops/sec 169.557 162.44 5,459.921 2.09 2,949
🥈 rocksdb 2 1.19K ops/sec 838.19 767.309 999.964 0.331 597

removeSync() > random access pattern (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 12.88K ops/sec 77.61 73.50 337.236 0.243 6,443
🥈 rocksdb 2 2.68K ops/sec 373.79 357.075 701.012 0.253 1,338

removeSync() > non-existent keys (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 12.72K ops/sec 78.63 74.79 310.745 0.227 6,360
🥈 rocksdb 2 2.71K ops/sec 368.813 353.465 2,026.972 0.699 1,356

transaction-log.bench.ts

Transaction log > write log with 100 byte records

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 86.30K ops/sec 11.59 4.47 426.952 0.410 43,153
🥈 rocksdb 2 52.66K ops/sec 18.99 10.46 858.697 0.736 26,329

Transaction log > read 100 iterators while write log with 100 byte records

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 36.96K ops/sec 27.06 14.17 967.642 0.758 18,481
🥈 lmdb 2 8.91K ops/sec 112.183 71.40 9,857.598 5.12 4,458

Transaction log > read one entry from random position from log with 1000 100 byte records

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 605.23K ops/sec 1.65 1.41 2,515.964 1.04 302,616
🥈 lmdb 2 323.67K ops/sec 3.09 1.67 8,684.077 5.89 161,833

transaction-sync.bench.ts

transaction sync > optimistic > simple put operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 1.83K ops/sec 546.6 521.804 891.79 0.305 915
🥈 rocksdb 2 572.43 ops/sec 1,746.924 1,663.018 4,196.915 1.29 287

transaction sync > optimistic > batch operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 14.08K ops/sec 71.04 68.19 286.885 0.282 7,038
🥈 rocksdb 2 2.68K ops/sec 373.688 354.141 556.756 0.204 1,339

transaction sync > optimistic > read-write operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 440.85 ops/sec 2,268.359 2,108.22 2,788.471 0.673 221
🥈 rocksdb 2 349.12 ops/sec 2,864.349 2,582.028 5,026.401 1.93 175

transaction sync > optimistic > concurrent non-conflicting operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 1.63K ops/sec 613.306 578.612 930.104 0.319 816
🥈 rocksdb 2 549.32 ops/sec 1,820.424 1,761.755 3,258.485 1.00 275

transaction sync > optimistic > rollback operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 13.88K ops/sec 72.07 70.09 205.876 0.256 6,938
🥈 rocksdb 2 5.14K ops/sec 194.739 188.037 793.28 0.288 2,568

transaction sync > optimistic > rocksdb - large transaction vs many small

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 2.74K ops/sec 364.337 344.658 871.875 0.271 1,373
🥈 rocksdb 2 602.25 ops/sec 1,660.433 1,603.259 3,807.329 1.18 302

transaction sync > optimistic > lmdb - large transaction vs many small

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 12.97K ops/sec 77.08 74.60 261.793 0.257 6,488
🥈 lmdb 2 1.78K ops/sec 562.498 537.517 816.127 0.247 889

transaction sync > optimistic > empty transaction overhead

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 631.78K ops/sec 1.58 1.39 193.302 0.398 315,892
🥈 rocksdb 2 86.23K ops/sec 11.60 10.68 2,295.87 1.28 43,114

transaction sync > optimistic > transaction with only reads (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 1.70K ops/sec 589.459 577.421 927.826 0.318 849
🥈 rocksdb 2 263.58 ops/sec 3,793.872 3,603.088 8,385.252 2.49 132

transaction sync > pessimistic > simple put operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 1.79K ops/sec 559.542 532.071 1,492.949 0.438 894
🥈 rocksdb 2 512.46 ops/sec 1,951.354 1,896.679 5,791.391 1.54 257

transaction.bench.ts

transaction > optimistic > simple put operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 348.67 ops/sec 2,868.042 2,732.237 3,320.68 0.514 175
🥈 rocksdb 2 328.75 ops/sec 3,041.787 2,783.429 5,502.68 1.91 165

transaction > optimistic > batch operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 7.80K ops/sec 128.196 99.98 302.842 0.709 3,901
🥈 rocksdb 2 1.71K ops/sec 584.763 529.586 628.427 0.189 856

transaction > optimistic > read-write operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 223.32 ops/sec 4,477.907 3,846.472 6,438.056 2.52 112
🥈 lmdb 2 208.19 ops/sec 4,803.234 4,153.697 6,724.81 3.20 105

transaction > optimistic > concurrent non-conflicting operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 5.62K ops/sec 178.088 136.705 749.744 0.735 2,808
🥈 rocksdb 2 881.52 ops/sec 1,134.406 941.531 2,713.649 1.78 441

transaction > optimistic > rollback operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 7.04K ops/sec 142.122 106.19 321.791 0.613 3,519
🥈 rocksdb 2 4.59K ops/sec 218.012 208.407 797.678 0.474 2,294

transaction > optimistic > rocksdb - large transaction vs many small

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 1.32K ops/sec 759.412 674.612 843.443 0.205 659
🥈 rocksdb 2 348.84 ops/sec 2,866.629 2,776.318 5,055.168 1.54 175

transaction > optimistic > lmdb - large transaction vs many small

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 6.95K ops/sec 143.915 104.994 297.828 0.614 3,475
🥈 lmdb 2 360.99 ops/sec 2,770.133 2,706.579 3,352.202 0.383 181

transaction > optimistic > empty transaction overhead

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 47.33K ops/sec 21.13 19.43 855.299 0.954 23,665
🥈 lmdb 2 45.82K ops/sec 21.83 17.67 326.747 0.375 22,910

transaction > optimistic > transaction with only reads (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 380.84 ops/sec 2,625.75 2,452.329 3,114.588 0.593 191
🥈 rocksdb 2 139.17 ops/sec 7,185.6 6,255.31 10,295.215 2.44 71.00

transaction > pessimistic > simple put operations (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 339.14 ops/sec 2,948.623 2,745.152 3,536.683 1.09 170
🥈 rocksdb 2 286.83 ops/sec 3,486.373 3,059.477 5,249.294 1.82 144

worker-get-sync.bench.ts

Worker > random keys - small key size (100 records, 1 worker)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 16.26K ops/sec 61.48 57.68 259.299 0.334 8,133
🥈 rocksdb 2 3.71K ops/sec 269.88 229.035 784.754 0.721 1,853

Worker > random keys - small key size (100 records, 2 workers)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 15.31K ops/sec 65.33 62.08 239.513 0.339 7,654
🥈 rocksdb 2 3.60K ops/sec 278.046 237.875 676.26 0.649 1,799

Worker > random keys - small key size (100 records, 10 workers)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 7.84K ops/sec 127.488 118.093 358.365 0.295 3,922
🥈 rocksdb 2 1.74K ops/sec 576.163 503.298 1,124.605 1.07 868

worker-put-sync.bench.ts

putSync() > random keys - small key size (100 records, 1 worker)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 1.95K ops/sec 513.862 478.241 753.441 0.263 974
🥈 lmdb 2 3.96 ops/sec 252,825.11 240,463.595 285,259.057 3.89 10.00

putSync() > random keys - small key size (100 records, 2 workers)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 1.58K ops/sec 632.958 607.055 787.676 0.207 790
🥈 lmdb 2 2.10 ops/sec 475,818.848 463,256.573 507,148.338 2.12 10.00

putSync() > random keys - small key size (100 records, 10 workers)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 857.26 ops/sec 1,166.507 1,015.912 1,609.094 0.555 429
🥈 lmdb 2 0.95 ops/sec 1,051,874.461 915,383.072 1,123,758.882 3.63 10.00

worker-transaction-log.bench.ts

Transaction log with workers > write log with 100 byte records

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 17.25K ops/sec 57.96 33.97 1,328.951 1.05 8,627
🥈 lmdb 2 789.17 ops/sec 1,267.162 371.974 7,326.848 9.02 399

Results from commit f58b446

@cb1kenobi cb1kenobi requested a review from kriszyp January 7, 2026 17:38
Copy link
Member

@kriszyp kriszyp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you rebase this on top of reenable-unit-tests? If this is intended to supercede it, I kinda need to see the diff, which is really hard with parallel branches.

@cb1kenobi cb1kenobi changed the base branch from main to reenable-unit-tests January 7, 2026 20:36
@socket-security
Copy link

socket-security bot commented Jan 7, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedordered-binary@​1.6.0 ⏵ 1.6.1100 +110082 +187 +7100
Updatedoxlint@​1.35.0 ⏵ 1.36.087 -410089 +196100
Updatedlefthook@​2.0.12 ⏵ 2.0.1392 +110010096100
Updatedtsdown@​0.18.2 ⏵ 0.18.49810092 +196100

View full report

@socket-security
Copy link

socket-security bot commented Jan 7, 2026

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: npm oxlint is 97.0% likely obfuscated

Confidence: 0.97

Location: Package overview

From: package.jsonnpm/[email protected]

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at [email protected].

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/[email protected]. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

let latestLogId = loadLastPosition();
let latestSize = size;
if (latestLogId > logBuffer.logId) {
const { logId: latestLogId, size: latestSize } = loadLastPosition(transactionLog, !!readUncommitted);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think loadLastPosition returns a number.

if (logBuffer?.logId !== logId) {
// if the current log buffer is not the one we want, load the memory map
logBuffer = getLogMemoryMap(logId)!;
logBuffer = getLogMemoryMap(this, logId);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like this is call getLogMemoryMap with two arguments, but it only takes one.

Copy link
Member

@kriszyp kriszyp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@cb1kenobi cb1kenobi merged commit 3042f0e into reenable-unit-tests Jan 7, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants