Releases: ava-labs/firewood
Releases · ava-labs/firewood
v0.0.18
What's Changed
- fix: hash mismatch when proposing on uncommitted proposal by @AminR443 in #1557
- test: Guarantee that revisions work after commit by @alarso16 in #1558
- chore(release): prepare for v0.0.18 by @demosdemon in #1559
Full Changelog: v0.0.17...v0.0.18
v0.0.17
What's Changed
- chore: Update GitHub templates by @alarso16 in #1525
- feat(ffi): Stub for code hashes in proof by @alarso16 in #1526
- feat: Add ffi support for dump() by @rkuris in #1527
- feat: disable automatic io-uring enablement by @demosdemon in #1528
- chore(benchmark/bootstrap): remove Coreth branch option by @RodrigoVillar in #1530
- refactor!: remove branch_factor_256 by @demosdemon in #1533
- fix(io-uring): use sqwait to correctly synchronize kernel updates by @demosdemon in #1523
- refactor!: Go DB config to functional options pattern by @Copilot in #1534
- feat!: open database with directory instead of filepath by @RodrigoVillar in #1532
- fix(rootstore): respect db truncation by @RodrigoVillar in #1538
- chore(firewood): clean up RevisionManager fields by @RodrigoVillar in #1536
- chore: Remove reference to RELEASES.md by @rkuris in #1544
- test(fwdctl): parallelize test suite by @RodrigoVillar in #1540
- fix(ffi/iterator): keep view alive for iterator lifetime by @AminR443 in #1542
- refactor(ffi/iterator): move tests into a separate file by @AminR443 in #1543
- test(firewood): reduce iteration count by @RodrigoVillar in #1547
- ci: switch to cargo-nextest by @RodrigoVillar in #1541
- fix: generated instance names have whitespace by @rkuris in #1550
- chore: aws-launch.sh: libevm-commit -> libevm-branch by @rkuris in #1552
- chore(nextest): skip slow tests in local development by @RodrigoVillar in #1551
- chore(release): prepare for v0.0.17 by @demosdemon in #1556
Full Changelog: v0.0.16...v0.0.17
v0.0.16
What's Changed
- docs(ffi): Update godoc by @alarso16 in #1466
- feat: use
parking_lotto eliminate lock poisoning by @AminR443 in #1476 - chore(deps): bump golang.org/x/crypto from 0.36.0 to 0.45.0 in /ffi/tests/firewood by @dependabot[bot] in #1479
- chore(deps): bump golang.org/x/crypto from 0.35.0 to 0.45.0 in /ffi/tests/eth by @dependabot[bot] in #1478
- refactor(rootstore): remove
MockStoreby @RodrigoVillar in #1477 - refactor(firewood/db): unify reopen methods by @RodrigoVillar in #1481
- refactor(db/revisionmanager): move
RootStorecreation toRevisionManagerby @RodrigoVillar in #1482 - refactor(rootstore): remove box pointer by @RodrigoVillar in #1484
- fix: mark node as allocated before serializing parent by @demosdemon in #1489
- chore: update golangci yaml files by @demosdemon in #1492
- chore: remove windows remnants by @RodrigoVillar in #1503
- test: optimize init_merkle by removing redundant verification passes by @rkuris in #1504
- refactor(rootstore): own nodestore logic by @RodrigoVillar in #1495
- fix(parallel): track deleted nodes from root branch in parallel propose by @AminR443 in #1491
- refactor(checker): separate check and fix by @RodrigoVillar in #1506
- fix: refactor io-uring to drive the queue to completion by @demosdemon in #1498
- chore(db): remove unused
all_hashes()method by @RodrigoVillar in #1509 - perf: avoid extra copying when comparing
HashOrRlpby @demosdemon in #1505 - chore(bootstrap): Update SSH authorized key for user 'brandon' by @demosdemon in #1510
- fix(ffi): hold onto verification context in next key range by @demosdemon in #1486
- fix(range-proof): skip leaf nodes that come before lower bound by @demosdemon in #1512
- chore!: Reorganize proof code by @rkuris in #1511
- fix: Correct architecture for m5ad.2xlarge by @rkuris in #1514
- test: enhance aws-launch with show and terminate options by @rkuris in #1517
- feat(ffi): protect unsafe concurrent ops by @alarso16 in #1474
- fix: Race condition between view and commit by @rkuris in #1519
- fix(range-proofs): generate proofs for lower and upper bounds correctly by @demosdemon in #1513
- chore(release): prepare for v0.0.16 by @demosdemon in #1515
Full Changelog: v0.0.15...v0.0.16
v0.0.15
What's Changed
- feat: merge key-value range into trie by @demosdemon in #1427
- docs: add agent instructions by @RodrigoVillar in #1445
- refactor(rootstore): replace RootStoreError with boxed error by @RodrigoVillar in #1446
- feat(storage): replace
ArcSwapwithMutexfor better performance by @AminR443 in #1447 - feat(ffi)!: Remove unused kvBackend interface by @alarso16 in #1448
- docs(firewood): clean up commit steps by @RodrigoVillar in #1453
- perf(ffi)!: Use fixed size Hash by @alarso16 in #1449
- feat(ffi): add keepalive struct to own waitgroup logic by @demosdemon in #1437
- Fix inode exhaustion in benchmark bootstrap by reducing default bytes-per-inode by @Copilot in #1455
- chore(ci): Re-enable ffi-nix job by @maru-ava in #1450
- docs: Merge code review process into CONTRIBUTING.md by @Copilot in #1397
- refactor: remove default 1-minute timeout on
Database.Close()and set 1-sec in tests by @ARR4N in #1458 - docs: Add comprehensive metrics documentation in METRICS.md by @Copilot in #1402
- feat: remove the last bits of arc-swap by @demosdemon in #1464
- feat(ffi): fill in ffi methods for range proofs by @demosdemon in #1429
- ci: relegate build equivalent check to post-merge job by @RodrigoVillar in #1469
- feat(firewood/ffi): add
FjallStoreby @RodrigoVillar in #1395 - test: fix
giant_nodetest by @demosdemon in #1465 - chore(release): prepare for v0.0.15 by @demosdemon in #1461
Full Changelog: v0.0.14...v0.0.15
v0.0.14
What's Changed
- ci: include dependency lockfile by @demosdemon in #1321
- ci: Add race detection in Go by @alarso16 in #1323
- fix(#1324): correct replacement hints in clippy.toml by @demosdemon in #1325
- refactor: unify root storage using Child enum by @rkuris in #1330
- refactor(db):
TestDbconstructor by @RodrigoVillar in #1351 - feat: grafana automatic dashboard and auth set by @AminR443 in #1307
- fix: explicitly release advisory lock on drop by @demosdemon in #1352
- chore(nodestore): remove empty committed err by @RodrigoVillar in #1353
- feat(ffi): implement revision handles and expose to FFI layer by @AminR443 in #1326
- feat(ffi-iterator): Implementation of Iterator in Rust (1/4) by @AminR443 in #1255
- feat(ffi-iterator): Implementation of Iterator in Go (2/4) by @AminR443 in #1256
- fix: EINTR during iouring calls by @rkuris in #1354
- feat(1/7): add U4 type to be used as a path component by @demosdemon in #1336
- feat(2/7): add newtype for PathComponent by @demosdemon in #1337
- feat(3/7): add TriePath trait and path abstraction by @demosdemon in #1338
- feat(4/7): add SplitPath trait by @demosdemon in #1339
- chore: upgrade dependencies by @demosdemon in #1360
- chore(nodestore): access persisted nodestores by @RodrigoVillar in #1355
- chore: update Go to 1.24.8 by @alarso16 in #1361
- feat(ffi-iterator): Batching support for Iterator (3/4) by @AminR443 in #1257
- feat(5/7): add PackedPathRef type by @demosdemon in #1341
- feat(6/7): Children newtype by @demosdemon in #1344
- feat: Use PathComponent in proofs by @demosdemon in #1359
- feat: replace NodeAndPrefix with HashableShunt by @demosdemon in #1362
- feat: Parallel updates to Merkle trie (v2) by @bernard-avalabs in #1258
- fix: Revert "feat: Parallel updates to Merkle trie (v2)" by @bernard-avalabs in #1372
- fix: Revert "fix: Revert "feat: Parallel updates to Merkle trie (v2)"" by @bernard-avalabs in #1374
- ci: print ulimits and set memlock to unlimited before fuzz tests by @demosdemon in #1375
- chore(db/manager): add
MockStoreby @RodrigoVillar in #1346 - feat: Parallel hashing of Merkle trie by @bernard-avalabs in #1303
- chore: update Go to 1.24.9 by @RodrigoVillar in #1380
- feat: Add nix flake for ffi by @maru-ava in #1319
- chore(ffi/firewood): remove
RootStoregenerics by @RodrigoVillar in #1388 - feat: add more info for IO error message by @qusuyan in #1378
- chore: update .golangci.yaml by @demosdemon in #1394
- ci: Update ffi build check to configure cargo with same MAKEFLAGS as nix by @maru-ava in #1392
- feat: add TrieNode trait and related functionality by @demosdemon in #1363
- feat: add hashed key-value trie implementation by @demosdemon in #1365
- chore: fix new lint warning from 1.91 update by @demosdemon in #1417
- fix(storage): flush freelist early to prevent corruption by @rkuris in #1389
- chore: update .golangci.yaml by @demosdemon in #1419
- feat: define explicit associated types on Hashable by @demosdemon in #1366
- feat(ffi):
Database.Close()guarantees proposals committed or freed by @ARR4N in #1349 - docs(benchmark/bootstrap): expand README.md by @RodrigoVillar in #1421
- feat(ffi)!: Support empty values in Update operations by @Copilot in #1420
- chore!: Drop binary support for macos 13 and 14 by @Copilot in #1425
- chore(ci): Disable ffi-nix job pending reliable build equivalency by @maru-ava in #1426
- chore: Added helper to reduce code duplication between Db.propose and Proposal.create_proposal by @bernard-avalabs in #1343
- test: show symbol diff when ffi-nix build equivalency test fails by @Copilot in #1423
- feat: Add just task runner to ensure reproducibility of CI by @maru-ava in #1345
- feat(ffi)!: Add finalization logic for Revisions by @alarso16 in #1435
- chore: Add guidance on Go workspaces by @alarso16 in #1434
- fix(benchmark/bootstrap): consistent go deps by @RodrigoVillar in #1436
- feat(benchmark/bootstrap): add config param by @RodrigoVillar in #1438
- chore(release): prepare for v0.0.14 by @demosdemon in #1442
New Contributors
- @bernard-avalabs made their first contribution in #1258
- @maru-ava made their first contribution in #1319
- @Copilot made their first contribution in #1420
Full Changelog: v0.0.13...v0.0.14
v0.0.13
What's Changed
- feat(async-removal): Phase 3 - make
Dbtrait sync by @demosdemon in #1213 - chore: only allocate the area needed by @qusuyan in #1217
- feat(checker): fix error with free area that is not head of a free list by @qusuyan in #1231
- chore: synchronize .golangci.yaml by @demosdemon in #1234
- ci(metrics-check): Re-use previous comment instead of spamming new ones by @demosdemon in #1232
- feat(async-removal): Phase 4 - Make
DbViewsynchronous by @demosdemon in #1219 - chore: nuke grpc-testtool by @demosdemon in #1220
- feat(ffi-refactor): refactor cached view (1/8) by @demosdemon in #1222
- feat(ffi-refactor): add OwnedSlice and OwnedBytes (2/8) by @demosdemon in #1223
- feat(ffi-refactor): Introduce VoidResult and panic handlers (3/8) by @demosdemon in #1224
- feat(ffi-refactor): Refactor Db opening to use new Result structure (4/8) by @demosdemon in #1225
- feat(ffi-refactor): refactor how hash values are returned (5/8) by @demosdemon in #1226
- feat(ffi-refactor): refactor revision to use database handle (6/8) by @demosdemon in #1227
- feat(ffi-refactor): Add
ValueResulttype (7/8) by @demosdemon in #1228 - chore(release): prepare for v0.0.12 by @demosdemon in #1238
- chore: rename FuzzTree by @rkuris in #1239
- chore: upgrade to rust 1.89 by @rkuris in #1242
- fix: Add an advisory lock by @rkuris in #1244
- chore: rename mut_root to root_mut by @rkuris in #1248
- test: mark new_empty_proposal as test only by @demosdemon in #1249
- feat(checker): print report using template for better readability by @qusuyan in #1237
- feat(checker): fix free lists when the erroneous area is the head by @qusuyan in #1240
- chore: Add missing debug traits by @rkuris in #1254
- feat(ffi-proofs): Stub interfaces for FFI to interact with proofs. by @demosdemon in #1253
- feat: explicit impl of PartialEq/Eq on HashOrRlp by @demosdemon in #1260
- fix: Path iterator returned wrong node by @rkuris in #1259
- chore: these tests actually work now by @rkuris in #1262
- chore: cargo +nightly clippy --fix by @rkuris in #1265
- feat(proofs)!: disable
ValueDigest::Hashfor ethhash by @demosdemon in #1269 - fix: use
countinstead ofsize_hintby @demosdemon in #1268 - ci: update .golangci.yaml by @demosdemon in #1274
- fix: Correct typo in README.md by @sandakersmann in #1276
- build(deps): update typed-builder requirement from 0.21.0 to 0.22.0 by @dependabot[bot] in #1275
- feat!: rename
Hashable::keyby @demosdemon in #1270 - test(firewood): use ctor section to init logger for all tests by @demosdemon in #1277
- fix: resolve build failures by pinning opentelemetry to 0.30 by @demosdemon in #1281
- feat(range-proofs): KeyValuePairIter (1/2) by @rkuris in #1282
- feat(proofs)!: add v0 serialization for RangeProofs by @demosdemon in #1271
- fix(range-proofs): serialize range proof key consistently by @demosdemon in #1278
- fix(range-proofs): fix verify of exclusion proofs by @demosdemon in #1279
- docs: README implies commit == persist by @rkuris in #1283
- test(bootstrap): Bootstrap testing scripts by @rkuris in #1287
- chore: Various script improvements by @rkuris in #1288
- chore(bootstrap): add keys for brandon by @demosdemon in #1289
- chore(bootstrap): add keys for Bernard and Amin by @AminR443 in #1291
- chore!: decorate enums and structs with
#[non_exhaustive]by @demosdemon in #1292 - chore: add spot instance support by @rkuris in #1294
- fix(ffi): GetFromRoot typo by @RodrigoVillar in #1298
- chore: upgrade go by @alarso16 in #1296
- fix: incorrect gauge metrics by @rkuris in #1300
- ci: ask for clippy and rustfmt by @rkuris in #1306
- fix: m6id is a amd64 machine by @rkuris in #1305
- chore: Add support for enormous disk by @rkuris in #1308
- fix: Revert #1116 by @rkuris in #1313
- chore: disable non-security dependabot version bumps by @JonathanOppenheimer in #1315
- chore: upgrade dependencies by @rkuris in #1314
- feat(ffi-refactor): replace sequence id with pointer to proposals (8/8) by @demosdemon in #1221
- chore(benchmark): add ssh key by @RodrigoVillar in #1316
- chore(release): prepare for v0.0.13 by @demosdemon in #1317
New Contributors
- @sandakersmann made their first contribution in #1276
- @AminR443 made their first contribution in #1291
- @JonathanOppenheimer made their first contribution in #1315
Full Changelog: v0.0.11...v0.0.13
v0.0.12
What's Changed
- feat(async-removal): Phase 3 - make
Dbtrait sync by @demosdemon in #1213 - chore: only allocate the area needed by @qusuyan in #1217
- feat(checker): fix error with free area that is not head of a free list by @qusuyan in #1231
- chore: synchronize .golangci.yaml by @demosdemon in #1234
- ci(metrics-check): Re-use previous comment instead of spamming new ones by @demosdemon in #1232
- feat(async-removal): Phase 4 - Make
DbViewsynchronous by @demosdemon in #1219 - chore: nuke grpc-testtool by @demosdemon in #1220
- feat(ffi-refactor): refactor cached view (1/8) by @demosdemon in #1222
- feat(ffi-refactor): add OwnedSlice and OwnedBytes (2/8) by @demosdemon in #1223
- feat(ffi-refactor): Introduce VoidResult and panic handlers (3/8) by @demosdemon in #1224
- feat(ffi-refactor): Refactor Db opening to use new Result structure (4/8) by @demosdemon in #1225
- feat(ffi-refactor): refactor how hash values are returned (5/8) by @demosdemon in #1226
- feat(ffi-refactor): refactor revision to use database handle (6/8) by @demosdemon in #1227
- feat(ffi-refactor): Add
ValueResulttype (7/8) by @demosdemon in #1228
Full Changelog: v0.0.11...v0.0.12
v0.0.11
What's Changed
- ci: metric change detection comments only on 1st-party PRs by @demosdemon in #1167
- ci: run CI on macOS by @demosdemon in #1168
- ci: update .golangci.yaml by @demosdemon in #1166
- feat(checker): checker returns all errors found in the report by @qusuyan in #1176
- chore: allow FreeListIterator to skip to next free list by @qusuyan in #1177
- fix(checker): skip freelist after first encountering an invalid free area by @qusuyan in #1178
- feat: remove Default impl on HashType by @demosdemon in #1169
- feat: update revision manager error by @demosdemon in #1170
- feat(checker): return the leaked areas in the checker report by @qusuyan in #1179
- feat(checker): update unaligned page count by @qusuyan in #1181
- feat(checker): add error when node data is bigger than area size by @qusuyan in #1183
- perf: remove unnecessary Box on
OffsetReaderby @qusuyan in #1185 - chore: address lints triggered with rust 1.89 by @demosdemon in #1182
- fix: Fix race around reading nodes during commit by @rkuris in #1180
- feat: remove
Batchtype alias by @demosdemon in #1171 - test: Add read-during-commit test by @rkuris in #1186
- chore: deny
undocumented-unsafe-blocksby @demosdemon in #1172 - test: fix merkle compatibility test by @demosdemon in #1173
- feat(checker): annotate IO error with parent pointer in checker errors by @qusuyan in #1188
- fix(fwdctl)!: db path consistency + no auto-create by @rkuris in #1189
- chore: fwdctl cleanups by @KushnerykPavel in #1190
- test: ban
rand::rng()and provide an env seeded alternative by @demosdemon in #1192 - chore: AreaIndex newtype by @rkuris in #1193
- feat(checker): do not return physical size to accomodate raw disks by @qusuyan in #1200
- ci: remove setup-protoc by @demosdemon in #1203
- ci: automatically label PRs from external contributors by @demosdemon in #1195
- ci: don't fail fast on certain jobs by @demosdemon in #1198
- feat(ffi): add BorrowedBytes type by @demosdemon in #1174
- feat(checker): more clear print formats for checker report by @qusuyan in #1201
- chore: add PathGuard type when computing hashes by @qusuyan in #1202
- feat(async-removal): Phase 1 - lint on
clippy::unused_asyncby @demosdemon in #1211 - test: reenable eth merkle compatibility test by @qusuyan in #1214
- feat(checker): collect statistics for branches and leaves separately by @qusuyan in #1206
- feat(async-removal): Phase 2 - make
Proposaltrait sync by @demosdemon in #1212 - feat(checker): add checker fix template by @qusuyan in #1199
- chore(checker): add function to compute area counts and bytes by @qusuyan in #1218
- chore(release): prepare for v0.0.11 by @demosdemon in #1216
Full Changelog: v0.0.10...v0.0.11
v0.0.10
What's Changed
- fix(fwdctl): fix fwdctl with ethhash by @qusuyan in #1091
- build: Cargo.toml upgrades and fixes by @rkuris in #1099
- feat(async-iterator): Implement by @rkuris in #1096
- chore: Add propose-on-propose test by @rkuris in #1097
- chore: Implement newtype for LInearAddress by @rkuris in #1086
- style: remove unnecessary string in error by @alarso16 in #1104
- feat: export logs by @RodrigoVillar in #1070
- feat: Render the commit sha in fwdctl by @rkuris in #1109
- chore: refactor verifying value digests by @demosdemon in #1119
- feat: update proof types to be generic over mutable or immutable collections by @demosdemon in #1121
- feat: refactor value types to use the type alias by @demosdemon in #1122
- feat(dumper): child links in hex (easy) by @rkuris in #1124
- docs: update ffi/README.md to include configs, metrics, and logs by @alarso16 in #1111
- feat(deferred-allocate): Part 3: Defer allocate by @rkuris in #1061
- test: add fuzz testing for checker, with fixes by @rkuris in #1118
- feat(checker): disable buggy ethhash checker by @qusuyan in #1127
- feat: add
Children<T>type alias by @demosdemon in #1123 - chore: Checker test cleanups by @rkuris in #1131
- chore: minor cleanups and nits by @demosdemon in #1133
- feat: make NodeStore more generic by @demosdemon in #1134
- feat(checker): add progress bar by @qusuyan in #1105
- feat(checker): checker errors include reference to parent by @qusuyan in #1085
- fix(checker): fix checker with ethhash by @qusuyan in #1130
- build(deps): update criterion requirement from 0.6.0 to 0.7.0 by @dependabot[bot] in #1140
- chore: Add a golang install script by @rkuris in #1141
- fix: Fix broken deserialization of old FreeArea format by @demosdemon in #1147
- feat: Update RangeProof structure by @demosdemon in #1136
- test: Port TestDeepPropose from go->rust by @rkuris in #1115
- chore: move all merkle tests into a subdirectory by @demosdemon in #1150
- feat: update range_proof signature by @demosdemon in #1151
- chore: require license header for ffi code by @demosdemon in #1159
- feat(checker): add InvalidKey error by @qusuyan in #1155
- fix: create metrics registration macros by @KushnerykPavel in #980
- feat(deferred-persist): Part 1: unpersisted gauge by @rkuris in #1116
- feat(checker): collect basic statistics while checking the db image by @qusuyan in #1149
- feat(fwdctl): Add support for dump formats by @rkuris in #1161
- feat(ffi): Remove the Arc wrapper around Proposal by @demosdemon in #1160
- chore: Bump version to v0.0.10 by @demosdemon in #1165
Full Changelog: v0.0.9...v0.0.10
v0.0.9
What's Changed
- chore(build): Remove unused dependencies by @rkuris in #1037
- feat(ffi): Add gauges to metrics reporter by @rkuris in #1035
- chore: update firewood in grpc-testtool by @demosdemon in #1040
- fix: Avoid reference to LinearAddress by @rkuris in #1042
- chore: Aaron is requested only for .github by @rkuris in #1043
- chore: remove
#[allow]s no longer needed by @demosdemon in #1022 - feat(delayed-persist): Part 1: Roots may be in mem by @rkuris in #1041
- feat(delayed-persist): 2.1: Unpersisted deletions by @rkuris in #1045
- feat(delayed-persist): Part 2.2: Branch Children by @rkuris in #1047
- feat!: export firewood metrics by @RodrigoVillar in #1044
- style: Remove unnecessary error descriptor by @alarso16 in #1049
- chore: Split nodestore into functional areas by @rkuris in #1048
- feat(checker): add error to report finding leaked areas by @qusuyan in #1052
- feat(delayed-persist): dump unpersisted nodestore by @rkuris in #1055
- chore: update
golangci-lintby @RodrigoVillar in #1053 - fix: remove dependency on serde by @demosdemon in #1066
- feat(checker): split leaked ranges into valid areas by @qusuyan in #1059
- feat(checker): check for misaligned stored areas by @qusuyan in #1046
- feat!: auto open or create with truncate by @alarso16 in #1064
- feat(deferred-allocate): UnpersistedIterator by @rkuris in #1060
- fix: encoding partial paths for leaf nodes by @demosdemon in #1067
- fix: root_hash_reversed_deletions duplicate keys by @rkuris in #1076
- fix(checker): avoid checking physical file size for compatibility by @qusuyan in #1079
- feat(checker): add hash checks by @qusuyan in #1063
- chore: CODEOWNERS ignores wildcard if a more specific rule matches by @demosdemon in #1080
- ci: run CI with --no-default-features by @demosdemon in #1081
- chore: Release 0.0.9 by @demosdemon in #1084
Full Changelog: v0.0.8...v0.0.9