Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1055 commits
Select commit Hold shift + click to select a range
ac63530
ci: add concurrency group to attach static libs workflow (#1038)
aaronbuchwald Jul 7, 2025
6cbcd3d
chore: Bump version to v0.0.8 (#1018)
demosdemon Jul 7, 2025
6d9e25c
chore(build): Remove unused dependencies (#1037)
rkuris Jul 7, 2025
3fb53e9
feat(ffi): Add gauges to metrics reporter (#1035)
rkuris Jul 7, 2025
7c14009
chore: update firewood in grpc-testtool (#1040)
demosdemon Jul 7, 2025
e929fbe
fix: Avoid reference to LinearAddress (#1042)
rkuris Jul 8, 2025
3666dae
chore: Aaron is requested only for .github (#1043)
rkuris Jul 8, 2025
b9ff9da
chore: remove `#[allow]`s no longer needed (#1022)
demosdemon Jul 8, 2025
d9e93c9
feat(delayed-persist): Part 1: Roots may be in mem (#1041)
rkuris Jul 8, 2025
1c485f5
feat(delayed-persist): 2.1: Unpersisted deletions (#1045)
rkuris Jul 9, 2025
4b12575
feat(delayed-persist): Part 2.2: Branch Children (#1047)
rkuris Jul 9, 2025
91f2ab2
feat!: export firewood metrics (#1044)
RodrigoVillar Jul 10, 2025
53488a7
style: Remove unnecessary error descriptor (#1049)
alarso16 Jul 10, 2025
ee5d1d8
chore: Split nodestore into functional areas (#1048)
rkuris Jul 11, 2025
3bb5e18
feat(checker): add error to report finding leaked areas (#1052)
qusuyan Jul 14, 2025
af8d3dc
feat(delayed-persist): dump unpersisted nodestore (#1055)
rkuris Jul 15, 2025
da2c55d
chore: update `golangci-lint` (#1053)
RodrigoVillar Jul 15, 2025
9b22467
fix: remove dependency on serde (#1066)
demosdemon Jul 16, 2025
89bdaba
feat(checker): split leaked ranges into valid areas (#1059)
qusuyan Jul 16, 2025
639df29
feat(checker): check for misaligned stored areas (#1046)
qusuyan Jul 16, 2025
d72ec2f
feat!: auto open or create with truncate (#1064)
alarso16 Jul 16, 2025
7d9be8a
feat(deferred-allocate): UnpersistedIterator (#1060)
rkuris Jul 16, 2025
ec42992
fix: encoding partial paths for leaf nodes (#1067)
demosdemon Jul 16, 2025
237a7ab
fix: root_hash_reversed_deletions duplicate keys (#1076)
rkuris Jul 16, 2025
18ce0eb
fix(checker): avoid checking physical file size for compatibility (#1…
qusuyan Jul 17, 2025
d8235ba
feat(checker): add hash checks (#1063)
qusuyan Jul 17, 2025
368f98f
chore: Update CODEOWNERS (#1080)
demosdemon Jul 17, 2025
637413d
ci: run CI with --no-default-features (#1081)
demosdemon Jul 17, 2025
6d801a6
chore: Release 0.0.9 (#1084)
demosdemon Jul 17, 2025
fe9986e
fix(fwdctl): fix fwdctl with ethhash (#1091)
qusuyan Jul 18, 2025
5c7aa6e
build: Cargo.toml upgrades and fixes (#1099)
rkuris Jul 21, 2025
b369e1d
feat(async-iterator): Implement (#1096)
rkuris Jul 21, 2025
37a2176
chore: Add propose-on-propose test (#1097)
rkuris Jul 21, 2025
f2876b2
chore: Implement newtype for LInearAddress (#1086)
rkuris Jul 21, 2025
f1d4352
style: remove unnecessary string in error (#1104)
alarso16 Jul 21, 2025
fb714dd
feat: export logs (#1070)
RodrigoVillar Jul 22, 2025
65a9ded
feat: Render the commit sha in fwdctl (#1109)
rkuris Jul 22, 2025
3750f3d
chore: refactor verifying value digests (#1119)
demosdemon Jul 23, 2025
2b2c9a0
feat: update proof types to be generic over mutable or immutable coll…
demosdemon Jul 23, 2025
9323050
feat: refactor value types to use the type alias (#1122)
demosdemon Jul 23, 2025
2dd2d01
feat(dumper): child links in hex (easy) (#1124)
rkuris Jul 23, 2025
f45ea86
docs: update ffi/README.md to include configs, metrics, and logs (#1111)
alarso16 Jul 23, 2025
404e692
feat(deferred-allocate): Part 3: Defer allocate (#1061)
rkuris Jul 23, 2025
03e5764
test: add fuzz testing for checker, with fixes (#1118)
rkuris Jul 23, 2025
72bedbf
feat(checker): disable buggy ethhash checker (#1127)
qusuyan Jul 23, 2025
984123d
feat: add `Children<T>` type alias (#1123)
demosdemon Jul 23, 2025
697e85c
chore: Checker test cleanups (#1131)
rkuris Jul 23, 2025
c915413
chore: minor cleanups and nits (#1133)
demosdemon Jul 24, 2025
7a4a77d
feat: make NodeStore more generic (#1134)
demosdemon Jul 24, 2025
3f9ea53
feat(checker): add progress bar (#1105)
qusuyan Jul 24, 2025
08383cf
feat(checker): checker errors include reference to parent (#1085)
qusuyan Jul 24, 2025
0993e33
fix(checker): fix checker with ethhash (#1130)
qusuyan Jul 24, 2025
9e7fd0a
build(deps): update criterion requirement from 0.6.0 to 0.7.0 (#1140)
dependabot[bot] Jul 25, 2025
62175bf
chore: Add a golang install script (#1141)
rkuris Jul 25, 2025
9061568
fix: Fix broken deserialization of old FreeArea format (#1147)
demosdemon Jul 28, 2025
92cc23c
feat: Update RangeProof structure (#1136)
demosdemon Jul 28, 2025
45ed6ab
test: Port TestDeepPropose from go->rust (#1115)
rkuris Jul 29, 2025
18f3b2b
chore: move all merkle tests into a subdirectory (#1150)
demosdemon Jul 30, 2025
642209c
feat: update range_proof signature (#1151)
demosdemon Jul 30, 2025
a3750f2
chore: require license header for ffi code (#1159)
demosdemon Aug 1, 2025
9767983
feat(checker): add InvalidKey error
qusuyan Aug 1, 2025
31cc5d7
fix: create metrics registration macros (#980)
KushnerykPavel Aug 1, 2025
11c9c95
feat(deferred-persist): Part 1: unpersisted gauge (#1116)
rkuris Aug 1, 2025
db19077
feat(checker): collect basic statistics while checking the db image (…
qusuyan Aug 1, 2025
84dfb58
feat(fwdctl): Add support for dump formats (#1161)
rkuris Aug 1, 2025
9fac19a
feat(ffi): Remove the Arc wrapper around Proposal (#1160)
demosdemon Aug 1, 2025
b0bc90f
chore: Bump version to v0.0.10 (#1165)
demosdemon Aug 1, 2025
2f2bb12
ci: metric change detection comments only on 1st-party PRs (#1167)
demosdemon Aug 2, 2025
715c814
ci: run CI on macOS (#1168)
demosdemon Aug 2, 2025
66fe16d
ci: update .golangci.yaml (#1166)
demosdemon Aug 2, 2025
0f9e676
feat(checker): checker returns all errors found in the report (#1176)
qusuyan Aug 5, 2025
3e148e3
chore: allow FreeListIterator to skip to next free list (#1177)
qusuyan Aug 5, 2025
7e021b6
fix(checker): skip freelist after first encountering an invalid free …
qusuyan Aug 5, 2025
2a5b707
feat: remove Default impl on HashType (#1169)
demosdemon Aug 6, 2025
9a25347
feat: update revision manager error (#1170)
demosdemon Aug 6, 2025
6d72d53
feat(checker): return the leaked areas in the checker report (#1179)
qusuyan Aug 6, 2025
b065228
feat(checker): update unaligned page count (#1181)
qusuyan Aug 6, 2025
c4588ad
feat(checker): add error when node data is bigger than area size (#1183)
qusuyan Aug 7, 2025
f0b8fdb
perf: remove unnecessary Box on `OffsetReader` (#1185)
qusuyan Aug 7, 2025
72528d8
chore: address lints triggered with rust 1.89 (#1182)
demosdemon Aug 7, 2025
a13f5f2
fix: Fix race around reading nodes during commit (#1180)
rkuris Aug 7, 2025
a4a5401
feat: remove `Batch` type alias (#1171)
demosdemon Aug 7, 2025
cfd4970
test: Add read-during-commit test (#1186)
rkuris Aug 7, 2025
15ba61c
chore: deny `undocumented-unsafe-blocks` (#1172)
demosdemon Aug 7, 2025
a1838f1
test: fix merkle compatibility test (#1173)
demosdemon Aug 7, 2025
8ba74f4
feat(checker): annotate IO error with parent pointer in checker error…
qusuyan Aug 7, 2025
91cc573
fix(fwdctl)!: db path consistency + no auto-create (#1189)
rkuris Aug 7, 2025
4ee6d4f
chore: fwdctl cleanups (#1190)
KushnerykPavel Aug 8, 2025
37e125c
test: ban `rand::rng()` and provide an env seeded alternative (#1192)
demosdemon Aug 8, 2025
eb5ff81
chore: AreaIndex newtype (#1193)
rkuris Aug 8, 2025
53c5820
feat(checker): do not return physical size to accomodate raw disks (#…
qusuyan Aug 12, 2025
07c45a6
ci: remove setup-protoc (#1203)
demosdemon Aug 12, 2025
7e08a95
ci: automatically label PRs from external contributors (#1195)
demosdemon Aug 12, 2025
8114f7e
ci: don't fail fast on certain jobs (#1198)
demosdemon Aug 12, 2025
e9d3d7b
feat(ffi): add BorrowedBytes type (#1174)
demosdemon Aug 12, 2025
7f56f18
feat(checker): more clear print formats for checker report (#1201)
qusuyan Aug 12, 2025
65f305c
chore: add PathGuard type when computing hashes (#1202)
qusuyan Aug 12, 2025
6616455
feat(async-removal): Phase 1 - lint on `clippy::unused_async` (#1211)
demosdemon Aug 14, 2025
65d7e8c
test: reenable eth merkle compatibility test (#1214)
qusuyan Aug 14, 2025
85c3137
feat(checker): collect statistics for branches and leaves separately …
qusuyan Aug 19, 2025
b259619
feat(async-removal): Phase 2 - make `Proposal` trait sync (#1212)
demosdemon Aug 19, 2025
4322690
feat(checker): add checker fix template (#1199)
qusuyan Aug 19, 2025
e72fa17
chore(checker): add function to compute area counts and bytes (#1218)
qusuyan Aug 19, 2025
23b05d5
chore(release): prepare for v0.0.11 (#1216)
demosdemon Aug 20, 2025
2c6066b
feat(async-removal): Phase 3 - make `Db` trait sync (#1213)
demosdemon Aug 20, 2025
1b72d7d
chore: only allocate the area needed (#1217)
qusuyan Aug 20, 2025
35c8ec6
feat(checker): fix error with free area that is not head of a free li…
qusuyan Aug 22, 2025
72d0ee9
chore: synchronize .golangci.yaml (#1234)
demosdemon Aug 22, 2025
d3eafee
ci(metrics-check): Re-use previous comment instead of spamming new on…
demosdemon Aug 22, 2025
88a7933
feat(async-removal): Phase 4 - Make `DbView` synchronous (#1219)
demosdemon Aug 22, 2025
f33b8c6
chore: nuke grpc-testtool (#1220)
demosdemon Aug 22, 2025
7c68d5c
feat(ffi-refactor): refactor cached view (1/8) (#1222)
demosdemon Aug 22, 2025
1d6a74f
feat(ffi-refactor): add OwnedSlice and OwnedBytes (2/8) (#1223)
demosdemon Aug 22, 2025
ce8c225
feat(ffi-refactor): Introduce VoidResult and panic handlers (3/8) (#1…
demosdemon Aug 22, 2025
ecbb680
feat(ffi-refactor): Refactor Db opening to use new Result structure (…
demosdemon Aug 22, 2025
364689a
feat(ffi-refactor): refactor how hash values are returned (5/8) (#1226)
demosdemon Aug 22, 2025
471c89f
feat(ffi-refactor): refactor revision to use database handle (6/8) (#…
demosdemon Aug 22, 2025
2d319bc
feat(ffi-refactor): Add `ValueResult` type (7/8) (#1228)
demosdemon Aug 22, 2025
daee56d
chore(release): prepare for v0.0.12 (#1238)
demosdemon Aug 26, 2025
12f88a9
chore: rename FuzzTree (#1239)
rkuris Aug 26, 2025
09e7ab7
chore: upgrade to rust 1.89 (#1242)
rkuris Aug 26, 2025
4d20e83
fix: Add an advisory lock (#1244)
rkuris Aug 27, 2025
b8db2d0
chore: rename mut_root to root_mut (#1248)
rkuris Aug 27, 2025
4f18459
test: mark new_empty_proposal as test only (#1249)
demosdemon Aug 27, 2025
ca6a382
feat(checker): print report using template for better readability (#1…
qusuyan Aug 27, 2025
b91d20a
feat(checker): fix free lists when the erroneous area is the head (#1…
qusuyan Aug 29, 2025
b57f5b4
chore: Add missing debug traits (#1254)
rkuris Sep 4, 2025
0098d12
feat(ffi-proofs): Stub interfaces for FFI to interact with proofs. (#…
demosdemon Sep 5, 2025
28b0498
feat: explicit impl of PartialEq/Eq on HashOrRlp (#1260)
demosdemon Sep 5, 2025
9b2e4aa
fix: Path iterator returned wrong node (#1259)
rkuris Sep 5, 2025
b6efd85
chore: these tests actually work now (#1262)
rkuris Sep 6, 2025
e707b73
chore: cargo +nightly clippy --fix (#1265)
rkuris Sep 8, 2025
e3b53da
feat(proofs)!: disable `ValueDigest::Hash` for ethhash (#1269)
demosdemon Sep 8, 2025
00eb049
fix: use `count` instead of `size_hint` (#1268)
demosdemon Sep 9, 2025
f21ab6b
ci: update .golangci.yaml (#1274)
demosdemon Sep 10, 2025
24a918d
fix: Correct typo in README.md (#1276)
sandakersmann Sep 15, 2025
fe53dd4
build(deps): update typed-builder requirement from 0.21.0 to 0.22.0 (…
dependabot[bot] Sep 15, 2025
eddabe5
feat!: rename `Hashable::key` (#1270)
demosdemon Sep 15, 2025
fee6bb6
test(firewood): use ctor section to init logger for all tests (#1277)
demosdemon Sep 15, 2025
9270be7
fix: resolve build failures by pinning opentelemetry to 0.30 (#1281)
demosdemon Sep 16, 2025
adf1e02
feat(range-proofs): KeyValuePairIter (1/2) (#1282)
rkuris Sep 16, 2025
2a119c8
feat(proofs)!: add v0 serialization for RangeProofs (#1271)
demosdemon Sep 16, 2025
6e2b45b
fix(range-proofs): serialize range proof key consistently (#1278)
demosdemon Sep 16, 2025
783f70c
fix(range-proofs): fix verify of exclusion proofs (#1279)
demosdemon Sep 16, 2025
47a37bb
docs: README implies commit == persist (#1283)
rkuris Sep 16, 2025
2caed71
test(bootstrap): Bootstrap testing scripts (#1287)
rkuris Sep 18, 2025
e135dee
chore: Various script improvements (#1288)
rkuris Sep 18, 2025
dd1a429
chore(bootstrap): add keys for brandon (#1289)
demosdemon Sep 18, 2025
15e9a99
chore(bootstrap): add keys for Bernard and Amin (#1291)
AminR443 Sep 18, 2025
d9a74b1
chore!: decorate enums and structs with `#[non_exhaustive]` (#1292)
demosdemon Sep 19, 2025
1d7a9eb
chore: add spot instance support (#1294)
rkuris Sep 19, 2025
61a80a2
fix(ffi): GetFromRoot typo (#1298)
RodrigoVillar Sep 22, 2025
361ea64
chore: upgrade go (#1296)
alarso16 Sep 22, 2025
fed7c93
fix: incorrect gauge metrics (#1300)
rkuris Sep 24, 2025
93ec244
ci: ask for clippy and rustfmt (#1306)
rkuris Sep 25, 2025
d6be8f1
fix: m6id is a amd64 machine (#1305)
rkuris Sep 25, 2025
3b644fa
chore: Add support for enormous disk (#1308)
rkuris Sep 26, 2025
06430bb
fix: Revert #1116 (#1313)
rkuris Sep 26, 2025
4e612d4
chore: disable non-security dependabot version bumps (#1315)
JonathanOppenheimer Sep 26, 2025
14ed185
chore: upgrade dependencies (#1314)
rkuris Sep 26, 2025
8df1ccc
feat(ffi-refactor): replace sequence id with pointer to proposals (8/…
demosdemon Sep 26, 2025
3a80f61
chore(benchmark): add ssh key (#1316)
RodrigoVillar Sep 26, 2025
80dbeee
chore(release): prepare for v0.0.13 (#1317)
demosdemon Sep 26, 2025
0b5a6ca
ci: include dependency lockfile (#1321)
demosdemon Sep 29, 2025
7fa46ed
ci: Add race detection in Go (#1323)
alarso16 Oct 1, 2025
8d69d19
fix(#1324): correct replacement hints in clippy.toml (#1325)
demosdemon Oct 1, 2025
18a95bd
refactor: unify root storage using Child enum (#1330)
rkuris Oct 3, 2025
fe7c60f
refactor(db): `TestDb` constructor (#1351)
RodrigoVillar Oct 10, 2025
476c72c
feat(monitoring): Grafana automatic dashboard and auth provisioning (…
AminR443 Oct 10, 2025
c9d69a5
fix: explicitly release advisory lock on drop (#1352)
demosdemon Oct 10, 2025
16edd88
chore(nodestore): remove empty committed err (#1353)
RodrigoVillar Oct 10, 2025
5515b0c
feat(ffi): implement revision handles and expose to FFI layer (#1326)
AminR443 Oct 10, 2025
e44391c
feat(ffi-iterator): Implementation of Iterator in Rust (1/4) (#1255)
AminR443 Oct 10, 2025
9dd02f1
feat(ffi-iterator): Implementation of Iterator in Go (2/4) (#1256)
AminR443 Oct 10, 2025
78dfc29
fix: EINTR during iouring calls (#1354)
rkuris Oct 13, 2025
735817c
feat(1/7): add U4 type to be used as a path component (#1336)
demosdemon Oct 13, 2025
69a1541
feat(2/7): add newtype for PathComponent (#1337)
demosdemon Oct 13, 2025
da715a2
feat(3/7): add TriePath trait and path abstraction (#1338)
demosdemon Oct 13, 2025
477bf6b
feat(4/7): add SplitPath trait (#1339)
demosdemon Oct 13, 2025
481125d
chore: upgrade dependencies (#1360)
demosdemon Oct 13, 2025
db2c856
chore(nodestore): access persisted nodestores (#1355)
RodrigoVillar Oct 13, 2025
bf31fe4
chore: update Go to 1.24.8 (#1361)
alarso16 Oct 14, 2025
48ef23d
feat(ffi-iterator): Batching support for Iterator (3/4) (#1257)
AminR443 Oct 15, 2025
94971c6
feat(5/7): add PackedPathRef type (#1341)
demosdemon Oct 15, 2025
2d1556a
feat(6/7): Children newtype (#1344)
demosdemon Oct 15, 2025
a9ba1e1
feat: Use PathComponent in proofs (#1359)
demosdemon Oct 15, 2025
aa34da3
feat: replace NodeAndPrefix with HashableShunt (#1362)
demosdemon Oct 15, 2025
49ab032
feat: Parallel updates to Merkle trie (v2) (#1258)
bernard-avalabs Oct 17, 2025
5d9f502
fix: Revert "feat: Parallel updates to Merkle trie (v2)" (#1372)
bernard-avalabs Oct 17, 2025
cab8f55
fix: Revert "fix: Revert "feat: Parallel updates to Merkle trie (v2)"…
bernard-avalabs Oct 17, 2025
54b9828
ci: print ulimits and set memlock to unlimited before fuzz tests (#1375)
demosdemon Oct 17, 2025
a4089bd
chore(db/manager): add `MockStore` (#1346)
RodrigoVillar Oct 20, 2025
3db72fe
feat: Parallel hashing of Merkle trie (#1303)
bernard-avalabs Oct 20, 2025
a911b6b
chore: update Go to 1.24.9 (#1380)
RodrigoVillar Oct 20, 2025
bdf58f9
feat: Add nix flake for ffi (#1319)
maru-ava Oct 22, 2025
443c2a5
chore(ffi/firewood): remove `RootStore` generics (#1388)
RodrigoVillar Oct 24, 2025
1a541c4
feat: add more info for IO error message (#1378)
qusuyan Oct 29, 2025
2ff7915
chore: update .golangci.yaml (#1394)
demosdemon Oct 29, 2025
c8d35c6
ci: Update ffi build check to configure cargo with same MAKEFLAGS as …
maru-ava Oct 29, 2025
2164262
feat: add TrieNode trait and related functionality (#1363)
demosdemon Oct 29, 2025
9ed71b1
feat: add hashed key-value trie implementation (#1365)
demosdemon Oct 29, 2025
a35f4a7
chore: fix new lint warning from 1.91 update (#1417)
demosdemon Oct 31, 2025
db78de9
fix(storage): flush freelist early to prevent corruption (#1389)
rkuris Oct 31, 2025
c1215ec
chore: update .golangci.yaml (#1419)
demosdemon Oct 31, 2025
49d0f16
feat: define explicit associated types on Hashable (#1366)
demosdemon Oct 31, 2025
f2b9cd3
feat(ffi): `Database.Close()` guarantees proposals committed or freed…
ARR4N Nov 3, 2025
908ede9
docs(benchmark/bootstrap): expand README.md (#1421)
RodrigoVillar Nov 4, 2025
fe27856
feat(ffi)!: Support empty values in Update operations (#1420)
Copilot Nov 4, 2025
03f12df
chore!: Drop binary support for macos 13/14 (#1425)
Copilot Nov 4, 2025
8799a24
chore(ci): Disable ffi-nix job pending reliable build equivalency (#1…
maru-ava Nov 4, 2025
cbb1c5a
chore: Added helper to reduce code duplication between Db.propose and…
bernard-avalabs Nov 5, 2025
fc48a6d
test: show symbol diff when ffi-nix build equivalency test fails (#1423)
Copilot Nov 5, 2025
df8f1c1
feat: Add just task runner to ensure reproducibility of CI (#1345)
maru-ava Nov 5, 2025
801890d
feat(ffi)!: Add finalization logic for Revisions (#1435)
alarso16 Nov 5, 2025
a921e81
chore: Add guidance on Go workspaces (#1434)
alarso16 Nov 5, 2025
c2ec8a3
fix(benchmark/bootstrap): consistent go deps (#1436)
RodrigoVillar Nov 5, 2025
e775eeb
feat(benchmark/bootstrap): add config param (#1438)
RodrigoVillar Nov 6, 2025
cae9899
chore(release): prepare for v0.0.14 (#1442)
demosdemon Nov 7, 2025
1af640f
feat: merge key-value range into trie (#1427)
demosdemon Nov 10, 2025
439ddcc
docs: add agent instructions (#1445)
RodrigoVillar Nov 10, 2025
7d28349
refactor(rootstore): replace RootStoreError with boxed error (#1446)
RodrigoVillar Nov 12, 2025
efdb771
feat(storage): replace `ArcSwap` with `Mutex` for better performance …
AminR443 Nov 13, 2025
6e4fb9b
feat(ffi)!: Remove unused kvBackend interface (#1448)
alarso16 Nov 13, 2025
f4a2cf0
docs(firewood): clean up commit steps (#1453)
RodrigoVillar Nov 13, 2025
8165c36
perf(ffi)!: Use fixed size Hash (#1449)
alarso16 Nov 14, 2025
bac68f5
feat(ffi): add keepalive struct to own waitgroup logic (#1437)
demosdemon Nov 14, 2025
9c33e6d
Fix inode exhaustion in benchmark bootstrap by reducing default bytes…
Copilot Nov 17, 2025
8ad5e19
chore(ci): Re-enable ffi-nix job (#1450)
maru-ava Nov 17, 2025
20786f9
docs: Merge code review process into CONTRIBUTING.md (#1397)
Copilot Nov 17, 2025
2f71077
refactor: remove default 1-minute timeout on `Database.Close()` and s…
ARR4N Nov 17, 2025
1945efa
docs: Add comprehensive metrics documentation in METRICS.md (#1402)
Copilot Nov 17, 2025
b8f30ee
feat: remove the last bits of arc-swap (#1464)
demosdemon Nov 17, 2025
2ab4570
feat(ffi): fill in ffi methods for range proofs (#1429)
demosdemon Nov 18, 2025
40f93a4
ci: relegate build equivalent check to post-merge job (#1469)
RodrigoVillar Nov 18, 2025
8b6e408
feat(firewood/ffi): add `FjallStore` (#1395)
RodrigoVillar Nov 18, 2025
c1b1d7c
test: fix `giant_node` test (#1465)
demosdemon Nov 18, 2025
136a396
chore(release): prepare for v0.0.15 (#1461)
demosdemon Nov 18, 2025
78f459f
docs(ffi): Update godoc (#1466)
alarso16 Nov 18, 2025
f22ddd3
feat: use `parking_lot` to eliminate lock poisoning (#1476)
AminR443 Nov 19, 2025
cddb5c1
chore(deps): bump golang.org/x/crypto from 0.36.0 to 0.45.0 in /ffi/t…
dependabot[bot] Nov 20, 2025
2cbc780
chore(deps): bump golang.org/x/crypto from 0.35.0 to 0.45.0 in /ffi/t…
dependabot[bot] Nov 20, 2025
b5e22b7
refactor(rootstore): remove `MockStore` (#1477)
RodrigoVillar Nov 20, 2025
5f94d4f
refactor(firewood/db): unify reopen methods (#1481)
RodrigoVillar Nov 21, 2025
ec187ba
refactor(db/revisionmanager): move `RootStore` creation to `RevisionM…
RodrigoVillar Nov 21, 2025
bb9c4c7
refactor(rootstore): remove box pointer (#1484)
RodrigoVillar Nov 21, 2025
e192ec3
fix: mark node as allocated before serializing parent (#1489)
demosdemon Nov 26, 2025
dd9cb9f
chore: update golangci yaml files (#1492)
demosdemon Dec 1, 2025
136dba8
[bazel] WIP Initial bazelification
maru-ava Dec 3, 2025
12664de
Add 'firewood/' from commit 'dd9cb9feec1c8ea4261a974ebcfcb8dd64885933'
maru-ava Dec 3, 2025
1377417
Enable firewood build with bazel
maru-ava Dec 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .bazelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Directories to exclude from Bazel's file watching
.git
node_modules
.avalanchego
build
.direnv
result
30 changes: 30 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Bazel configuration for avalanchego

# Enable bzlmod (default in Bazel 7+, explicit for clarity)
common --enable_bzlmod

# Build settings
build --incompatible_enable_cc_toolchain_resolution

# CGO flags for BLST cryptography library
# Must match scripts/build.sh: CGO_CFLAGS="-O2 -D__BLST_PORTABLE__"
build --action_env=CGO_CFLAGS="-O2 -D__BLST_PORTABLE__"
build --action_env=CGO_ENABLED=1

# Use purego build tag for gnark-crypto to avoid assembly include path issues
# gnark-crypto's assembly files use cross-package #include which Bazel doesn't support
build --define gotags=purego

# Test settings
test --test_output=errors

# Performance
build --jobs=auto

# Nix integration - allow network for nix-build
# This may need adjustment based on your Bazel sandbox configuration
build --sandbox_add_mount_pair=/nix

# Version injection - provides STABLE_GIT_COMMIT for x_defs
build --workspace_status_command=tools/bazel/workspace_status.sh
build --stamp
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,6 @@ vendor

# debug files
__debug_*

# Bazel symlinks
/bazel-*
49 changes: 49 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
load("@gazelle//:def.bzl", "gazelle")

# Gazelle configuration
# gazelle:prefix github.com/ava-labs/avalanchego
# gazelle:exclude .git
# gazelle:exclude build
# gazelle:exclude .direnv

# Resolve coreth imports to local packages (handle replace directive)
# gazelle:resolve go github.com/ava-labs/avalanchego/graft/coreth //graft/coreth
# gazelle:resolve go github.com/ava-labs/avalanchego/graft/coreth/plugin/evm //graft/coreth/plugin/evm

# Resolve proto pb imports - prefer the pb versions
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/p2p //proto/pb/p2p
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/rpcdb //proto/pb/rpcdb
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/sharedmemory //proto/pb/sharedmemory
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/aliasreader //proto/pb/aliasreader
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/appsender //proto/pb/appsender
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/validatorstate //proto/pb/validatorstate
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/sdk //proto/pb/sdk
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/platformvm //proto/pb/platformvm
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/warp //proto/pb/warp
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/sync //proto/pb/sync
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/vm //proto/pb/vm
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/http //proto/pb/http
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/http/responsewriter //proto/pb/http/responsewriter
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/io/reader //proto/pb/io/reader
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/io/writer //proto/pb/io/writer
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/net/conn //proto/pb/net/conn
# gazelle:resolve go github.com/ava-labs/avalanchego/proto/pb/signer //proto/pb/signer
# gazelle:resolve go github.com/ava-labs/avalanchego/connectproto/pb/proposervm //connectproto/pb/proposervm
# gazelle:resolve go github.com/ava-labs/avalanchego/connectproto/pb/xsvm //connectproto/pb/xsvm

# Resolve firewood imports to local build (handle both module names)
# gazelle:resolve go github.com/ava-labs/firewood-go-ethhash/ffi //firewood/ffi:ffi
# gazelle:resolve go github.com/ava-labs/firewood/ffi //firewood/ffi:ffi

gazelle(name = "gazelle")

# Target to update external Go dependencies
gazelle(
name = "gazelle-update-repos",
args = [
"-from_file=go.mod",
"-to_macro=deps.bzl%go_dependencies",
"-prune",
],
command = "update-repos",
)
193 changes: 193 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
"""Bazel module definition for avalanchego."""

module(
name = "avalanchego",
version = "0.0.0",
)

# Core dependencies from Bazel Central Registry
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "rules_go", version = "0.59.0")
bazel_dep(name = "gazelle", version = "0.47.0")
bazel_dep(name = "rules_rust", version = "0.67.0")

# Rust toolchain for firewood
rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
rust.toolchain(
edition = "2024",
versions = ["1.91.0"],
)
use_repo(rust, "rust_toolchains")
register_toolchains("@rust_toolchains//:all")

# Crate universe for firewood Rust dependencies
crate = use_extension("@rules_rust//crate_universe:extensions.bzl", "crate")
crate.from_cargo(
name = "firewood_crates",
cargo_lockfile = "//firewood:Cargo.lock",
manifests = [
"//firewood:Cargo.toml",
"//firewood/ffi:Cargo.toml",
"//firewood/firewood:Cargo.toml",
"//firewood/storage:Cargo.toml",
"//firewood/firewood-macros:Cargo.toml",
"//firewood/triehash:Cargo.toml",
],
)

# Add extra crates needed for ethhash feature that aren't auto-detected
crate.spec(
package = "bytes",
version = "1.11.0",
)
use_repo(crate, "firewood_crates")

# Go SDK registration
# Uses same SHA256 checksums as nix/go/default.nix for identical binaries
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(
name = "go_sdk",
sdks = {
# SHA256s from nix/go/default.nix lines 24-29
"linux_amd64": ("go1.24.9.linux-amd64.tar.gz", "5b7899591c2dd6e9da1809fde4a2fad842c45d3f6b9deb235ba82216e31e34a6"),
"linux_arm64": ("go1.24.9.linux-arm64.tar.gz", "9aa1243d51d41e2f93e895c89c0a2daf7166768c4a4c3ac79db81029d295a540"),
"darwin_amd64": ("go1.24.9.darwin-amd64.tar.gz", "961aa2ae2b97e428d6d8991367e7c98cb403bac54276b8259aead42a0081591c"),
"darwin_arm64": ("go1.24.9.darwin-arm64.tar.gz", "af451b40651d7fb36db1bbbd9c66ddbed28b96d7da48abea50a19f82c6e9d1d6"),
},
version = "1.24.9",
)
use_repo(go_sdk, "go_sdk")

# Go dependencies from go.mod
go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
go_deps.from_file(go_mod = "//:go.mod")

# Override libevm's secp256k1 BUILD file to include C source files for CGO
# The gazelle-generated BUILD file doesn't include the libsecp256k1 C sources
go_deps.module_override(
patch_strip = 1,
patches = ["//patches:libevm_secp256k1.patch"],
path = "github.com/ava-labs/libevm",
)

# Disable gazelle for blst and use custom BUILD file via patch
# blst has complex CGO with assembly that gazelle cannot handle automatically
# The patch creates BUILD.bazel from /dev/null (new file) based on Prysm's blst.BUILD
go_deps.gazelle_override(
build_file_generation = "off",
path = "github.com/supranational/blst",
)
go_deps.module_override(
patch_strip = 1,
patches = ["//patches:blst_build.patch"],
path = "github.com/supranational/blst",
)

# Use purego build tag for gnark-crypto to avoid assembly include path issues
# gnark-crypto's assembly files use cross-package #include which Bazel doesn't support
# The purego implementation is slower but avoids the complex assembly setup
go_deps.gazelle_override(
directives = [
"gazelle:build_tags purego",
],
path = "github.com/consensys/gnark-crypto",
)

# Additional dependencies from graft/coreth/go.mod that aren't in the main go.mod
go_deps.module(
path = "github.com/go-cmd/cmd",
sum = "h1:6y3G+3UqPerXvPcXvj+5QNPHT02BUw7p6PsqRxLNA7Y=",
version = "v1.4.3",
)
go_deps.module(
path = "github.com/google/go-cmp",
sum = "h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=",
version = "v0.7.0",
)
use_repo(
go_deps,
"com_connectrpc_connect",
"com_connectrpc_grpcreflect",
"com_github_antithesishq_antithesis_sdk_go",
"com_github_ava_labs_avalanchego_graft_coreth",
"com_github_ava_labs_libevm",
"com_github_ava_labs_simplex",
"com_github_ava_labs_subnet_evm",
"com_github_btcsuite_btcd_btcutil",
"com_github_cespare_xxhash_v2",
"com_github_cockroachdb_pebble",
"com_github_compose_spec_compose_go",
"com_github_datadog_zstd",
"com_github_davecgh_go_spew",
"com_github_deckarep_golang_set_v2",
"com_github_decred_dcrd_dcrec_secp256k1_v4",
"com_github_go_cmd_cmd",
"com_github_google_btree",
"com_github_google_go_cmp",
"com_github_google_renameio_v2",
"com_github_google_uuid",
"com_github_gorilla_mux",
"com_github_gorilla_rpc",
"com_github_gorilla_websocket",
"com_github_grpc_ecosystem_go_grpc_prometheus",
"com_github_hashicorp_go_bexpr",
"com_github_hashicorp_golang_lru",
"com_github_holiman_billy",
"com_github_holiman_bloomfilter_v2",
"com_github_holiman_uint256",
"com_github_huin_goupnp",
"com_github_jackpal_gateway",
"com_github_jackpal_go_nat_pmp",
"com_github_leanovate_gopter",
"com_github_mattn_go_colorable",
"com_github_mattn_go_isatty",
"com_github_mitchellh_mapstructure",
"com_github_mr_tron_base58",
"com_github_nbutton23_zxcvbn_go",
"com_github_onsi_ginkgo_v2",
"com_github_pires_go_proxyproto",
"com_github_prometheus_client_golang",
"com_github_prometheus_client_model",
"com_github_prometheus_common",
"com_github_rs_cors",
"com_github_shirou_gopsutil",
"com_github_spf13_cast",
"com_github_spf13_cobra",
"com_github_spf13_pflag",
"com_github_spf13_viper",
"com_github_stephenbuttolph_canoto",
"com_github_stretchr_testify",
"com_github_supranational_blst",
"com_github_syndtr_goleveldb",
"com_github_thepudds_fzgen",
"com_github_tyler_smith_go_bip39",
"com_github_urfave_cli_v2",
"com_github_victoriametrics_fastcache",
"in_gopkg_natefinch_lumberjack_v2",
"in_gopkg_yaml_v3",
"io_k8s_api",
"io_k8s_apimachinery",
"io_k8s_client_go",
"io_k8s_utils",
"io_opentelemetry_go_otel",
"io_opentelemetry_go_otel_exporters_otlp_otlptrace",
"io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracegrpc",
"io_opentelemetry_go_otel_exporters_otlp_otlptrace_otlptracehttp",
"io_opentelemetry_go_otel_sdk",
"io_opentelemetry_go_otel_trace",
"org_golang_google_genproto_googleapis_rpc",
"org_golang_google_grpc",
"org_golang_google_protobuf",
"org_golang_x_crypto",
"org_golang_x_exp",
"org_golang_x_net",
"org_golang_x_sync",
"org_golang_x_term",
"org_golang_x_time",
"org_golang_x_tools",
"org_gonum_v1_gonum",
"org_uber_go_goleak",
"org_uber_go_mock",
"org_uber_go_zap",
)
Loading
Loading