All notable changes to this project will be documented in this file.
- (fwdctl) Add import command (#2082)
- (ffi) Close option to force-close outstanding FFI handles for avalanchego async execution engine (#1976)
- (proofs) Change-proof verification accepts forged batch ops (#2109)
- (storage) Validate AreaIndex::TryFrom against NUM_AREA_SIZES (#2119)
- (storage) Document FileBacked struct and its fields (#2112)
- Document the lint-suppression policy (#2116)
- (deps) Bump golang.org/x/net from 0.52.0 to 0.55.0 in /ffi/tests/firewood (#2113)
- (clippy) Allow unwrap and indexing in tests (#2117)
- Run clippy on a pinned nightly, gate maxperf, and add a weekly nightly lint (#2115)
- (deps) Bump golang.org/x/crypto from 0.51.0 to 0.52.0 in /ffi/tests/firewood (#2127)
- (deps) Bump golang.org/x/crypto from 0.45.0 to 0.52.0 in /ffi/tests/eth (#2129)
- (proofs) 5/7 add eth_get_proof entry point producing eth_getProof-compatible proofs (#2053)
- (labels) Introduce versioned label taxonomy (#2084)
- (labels) Add issue intake forms and label lifecycle automation (#2085)
- (ffi) 6/7 add fwd_eth_get_proof FFI surface (#2054)
- (devcontainer) Rewrite as a Dockerfile-less feature-based config (#2087)
- (ffi) 7/7 add Go EthGetProof wrapper and go-ethereum verification test (#2055)
- Support eth_getProof for reconstructed revisions (#2059)
- (proofs) Reconcile partial-storage account values (#2060)
- (launch) Correct restored C-chain config for the validator scenario (#2072)
- (proofs) Reject change proof that drops an in-range Put behind a left-edge exclusion boundary (#2064)
- Prevent OOM DoS in Box<[T]>::read_v0_item via untrusted num_items (#2095)
- (storage) Unify hash_helper receiver (#2093)
- (storage) Add FreeLists newtype (#2097)
- (storage) Remove bitflags dependency from path.rs (#2092)
- Explain how to sign commits in CONTRIBUTING (#2096)
- Update CONTRIBUTING.md for duplicate docs (#2106)
- Skip using FDL when running in archival mode (#2078)
- Add insta snapshot tests for proof and node wire serialization (#2104)
- (proofs) Emit canonical Ethereum MPT-RLP from ProofNode (#2004)
- (storage) Add NodeHashAlgorithm::is_ethereum predicate (#2014)
- (ffi) Code-hash iterator for change proofs (#2033)
- Add update convenience API (#2029)
- (proofs) 4/7 add AccountFields decoder and rlp byte-string parse helpers (#2051)
- (metrics) Add firewood_proof_keys histogram for proof sizes (#2069)
- (launch) Add validator scenario bootstrapping from S3 state snapshot (#2071)
- (storage) 2/2 persist computed storageRoot in account node values (#1938)
- (proofs) Annotate edge-proof hash mismatches with Left/Right edge (#2028)
- Set background in Firewood architecture diagram (#2065)
- (proofs) Hash single storage child as storage-trie root (#2058)
- (launch) Repair grafana/prometheus metrics pipeline on launched instances (#2070)
- (ffi) Run the ffi tests in debug mode (#1562)
- (ffi) Vendor golangci-lint as go tool, drop third-party action (#2026)
- Take &[u8] in key_value_iter_from_key (#2041)
- (changelog) Detect breaking-change PR labels in CHANGELOG automatically (#2016)
- (release) Document undocumented steps, add versioning policy (#2017)
- (storage) Fill predictive read buffer for unaligned reads (#1964)
- (fwdctl) Refactor CLI test setup (#2037)
- Gate canonical-repo workflows on github.repository (#2011)
- Fix nightly clippy warnings (#2019)
- Bump go to 1.25.10 (#2036)
- Add 33m-33.5m benchmark (#2038)
- Add TODO checker (#2044)
- Add pathdb config + 33m block option (#1959)
- (ffi) Implement range proof verification (Trail of Bits finding TOB-FIREWOOD-2) (#1971)
- Add ability to clone reconstructed revisions (#1991)
- Resolve false rejection at straddling nibbles in collapse_strip (#1952)
- Remove duplicate children loop in compute_root_hash_with_proofs (#1948)
- (fwdctl) Drop legacy rustls feature to clear GHSA-82j2-j2ch-gfr8 (#1956)
- (manager) Resolve empty-trie revision under ethhash without RootStore (TOB-FIREWOOD-7) (#1982)
- (range-proof) Use last_kv_key as right-edge anchor for inclusion-style end_proofs (#1970)
- (manager) Hold proposals lock across cleanup and reparent (TOB-FIREWOOD-6) (#1981)
- (manager) Use CommittedId for parent identity, skip trivial commits (#1987)
- (storage) Pin committed parent in Reconstructed to prevent reaping (#2000)
- (ffi) Simplify change proof interface with unified Proposal type (#1966)
- (proofs) Move range/change proof verification helpers from FFI to firewood (#1990)
- (storage) Lift nibbles_to_eth_compact into eth_encoding module (#2003)
- (storage) Add in-tree
crate::rlpmodule + benchmark (#1957) - Migrate firewood off the upstream
rlpcrate (#1958) - (storage) Retain hashed root in Reconstructed for cheap forks (#1999)
- Add edge case tests for change proof verification (#1946)
- Add adversarial attack tests for change proof verification (#1947)
- (deps) Bump DavidAnson/markdownlint-cli2-action from 23.0.0 to 23.1.0 in the github-actions group (#1954)
- (deps) Bump the github-actions group with 2 updates (#1977)
- Remove weekly 50m-60m job (#1983)
- Export errRevisionNotFound (#1955)
- Update workflow to use macOS 26, drop x86_64 mac target (#1996)
- (deps) Bump cachix/cachix-action from 1eb2ef646ac0255473d23a5907ad7b04ce94065c to 5f2d7c5294214f71b873db4b969586b980625e71 in the github-actions group (#1995)
- Use deploy key instead of pat (#2002)
- (proofs) 1/4 Range Proof Verification (#1715)
- (metrics) Add jemalloc metrics (#1837)
- (proofs) 2/6 Range Proof Verification (#1716)
- (range-proof-verification) 4/6 complete range proof verification (#1833)
- (metrics) Add firewood_describe_counter! and firewood_describe_gauge! facades (#1853)
- (change-proof) Add change proof verification error variants and document value_digest (#1866)
- (storage) Autogen area sizes hash and names (#1906)
- (metrics) Export prometheus metrics as structured data (#1868)
- (metrics) [breaking] Overhaul metrics for Prometheus best practices (#1912)
- (ffi) [breaking] Remove http and text exporter (#1913)
- Add verify_change_proof_structure and module documentation (#1918)
- Add verify_change_proof_root_hash for change proof verification (#1930)
- (ffi) Return error from ChangeProof. Allow MarshalBinary after verification (#1828)
- (deferred-persistence) Carry metrics context into worker (#1829)
- (range-proof) Manual audit bug fixes (#1848)
- Add
test_utilsfeature when running benchmarks (#1873) - (proofs) Yield divergent nodes from PathIterator for exclusion proofs (#1875)
- (proofs) Verify proof path follows target key branch (#1881)
- (nix) Update rust-overlay in nix flake for MSRV 1.94.0 (#1888)
- (test) Audit range.rs — fix bugs, add missing coverage, unignore bloated test (#1895)
- Verify proof node values match key_values in range proofs (#1896)
- (proofs) Mark right-edge terminal children as outside in compute_outside_children (#1886)
- Update nix lockfile for rust-overlay (#1899)
- (proofs, de) Verify partial len is within bounds (#1920)
- (clippy) Disallow panicking slice methods via clippy lint (#1926)
- (ffi) Add GC finalizers for change proof types and NextKeyRange (#1921)
- (proofs) 1/2 recompute storageRoot in ethhash proof generation (#1935)
- Update change proof generator end proof key logic (#1931)
- (ci) Replace CI Nix cache with cachix to speed up worst ffi-nix run-time case (#1902)
- (proofs) Reject truncated exclusion proofs with reachable children (#1950)
- (metrics) [breaking] Remove histograms (#1847)
- (proofs) Replace ChildMask [bool; 16] with u16 newtype (#1849)
- (range-proofs) Consolidate ChildrenMap into ChildMask (#1852)
- (merkle) [breaking] Reduce visibility of firewood::merkle module (#1858)
- Rename verify_root_hash to verify_range_proof_root_hash (#1887)
- (ffi) Remove ArcCache from DatabaseHandle (#1891)
- (metrics) Consolidate metric registry definitions with macro (#1867)
- Move ChangeProof from merkle/changes to proofs/change (#1915)
- Update reconcile_branch_proof_node with callback interface (#1914)
- Include go docs in gh-pages (#1819)
- (metrics) Add usage guidance metric-naming conforming examples (#1864)
- Clarify fwdctl launch usage (#1874)
- Replace ignore doctests with runnable examples (Unix only) (#1865) (#1878)
- Document empty-value semantics for batch operations (#1916)
- (storage/hashers) Document ethhash design and refactor replace_hash (#1943)
- (storage) Use binary search in AreaIndex::from_size (#1940)
- (proofs) Add fuzz-style standalone range proof verification
- (proofs) Add round-trip and FrozenChangeProof serialization tests (#1922)
- (merkle) Decouple tests from insert-value-equals-stored-value assumption (#1942)
- Add change proof test infrastructure with bounds and empty tests (#1932)
- Add structural validation and partial proof tests for change proofs (#1934)
- (proofs) Add edge case tests for valid proof structures (#1923)
- (proofs) Add SeededRng fuzz tests for proof round-trips (#1924)
- (proofs) Cover remaining deserialization failure paths (#1925)
- (ci) Pedantically check all golang errors (#1820)
- (ci) Remove metrics check (#1838)
- (deps) Bump the github-actions group with 4 updates (#1871)
- Bump MSRV from 1.91.0 to 1.94.0 (#1885)
- Use RAID0 in reexecution tests (#1884)
- (ci) Avoid running benchmarks on normal nextest (#1903)
- Update go linter rules (#1927)
- (deps) Bump the github-actions group with 3 updates (#1936)
- (storage) Fix 'occured' -> 'occurred' in io_uring.rs doc comment (#1937)
- (deps) Bump devcontainers/ci from 0.3.1900000417 to 0.3.1900000449 in the github-actions group (#1945)
- (c-chain-benchmark) Add firewood-40m-41m test and harden bench-cchain (#1800)
- (reconstruct) Support Reconstructible revisions (#1786)
- (reconstruct) Add benchmarks for rust reconstruction (#1787)
- (reconstruction) Add FFI Rust layer (#1813)
- (reconstruction) Add Go bindings and tests (#1814)
- (reconstruct) Diagram move (#1795)
- (c-chain-benchmark) Add BENCHMARK.md (#1801)
- (benchmark) Improve and consolidate Firewood's benchmarks (#1812)
- (revert) Remove nix flake and all references to it (#1788) (#1794)
- Reduce visibility of flush_nodes() (#1802)
- (deps) Bump the github-actions group with 2 updates (#1809)
- Rootstore cleanups (#1798)
- (fwdctl) Add block height 77m (#1816)
- (ffi) Automatically generate
cgopragma declarations (#1784)
- Enforce
max_revisions>commit_count(#1749) - [breaking] Clock source miss-match between Rust and Go (#1742)
- Fwdctl vm config (#1776)
- Bug where remove_all_entries may not remove all subtries (#1778)
- (perf) Calculate AreaIndex in as_bytes methods (#1675)
- Replace
PersistSemaphorewithPersistChannel(#1710) - (metrics) Migrate ffi histogram recording to macros (#1712)
- Parallel execution helpers (#1764)
- [breaking] Remove v2 module (#1760)
- Read node mode (#1792)
- Clarify deferred persistence terminology (#1733)
- Use
runtime.AddCleanup(#1705) - (ffi) Add cgo pragma declarations (#1722)
- Fix child pruning in iterate_to_key (#1783)
- Update pull request template to include breaking changes (#1723)
- (deps) Bump the github-actions group with 3 updates (#1738)
- (ffi) Fix lint emitted in maxperf builds (#1732)
- (docs) Render mermaid graphs with aquamarine (#1753)
- Remove dead code (#1755)
- [breaking] Remove node_cache_size (#1758)
- Bump go to 1.25.8 (#1775)
- Add additional metrics for
v0.3.0(#1782) - Remove nix flake and all references to it (#1788)
- Verify go.mod files all have the same declared go version (#1790)
- Creating change proofs using FFI (#1637)
- (db) Add explicit close() method (#1650)
- Defer persist every commit (#1656)
- (fwdctl/launch) Add feature-gated fwdctl EC2 deploy workflow for benchmark setup (1/4) (#1662)
- (fwdctl/launch) Add SSM-based monitor/follow flow for cloud-init and bootstrap progress (2/4) (#1663)
- Node cache entry-based to memory-based LRU (#1677)
- Change proof serialization/deserialization (#1638)
- Defer persist every
Ncommits (#1657) - (ffi) Remove explicit garbage collection call (#1681)
- Change proof verification and proposal creation (#1641)
- (fwdctl/launch) Add scenario-driven deploy, list/kill instance management, and dry-run planning (3/4) (#1664)
- [breaking] Remove error returned by Hash (#1671)
- (fwdctl/launch) Add docs, deprecate aws-launch.sh (4/4) (#1665)
- (ffi) [breaking] Add optional node cache memory limit to open args (#1713)
- Change proof commit and find next key (#1646)
- (flake) Grab version from correct location (#1630)
- (storage) Handle possible short writes (#1635)
- (ffi) Force correct alignment on certain c structs (#1652)
- (db) Lock in-memory revisions during commit critical section (#1661)
- (track-performance) Fail hard on gh errors (#1659)
- (track-performance) Stale cron expression in daily bench (#1667)
- (ffi) Prevent potential use-after-free in Go Iterator (#1688)
- Avoid holding the last_committed_revision arc (#1685)
- Acquire lock for displaying MaybePersistedNode (#1719)
- Decouple header from
NodeStore(#1618) - Close consumes itself (#1701)
- Stop keeping around the last committed revision (#1690)
- Increase limits and monitor freelist cache size better (#1668)
- (ffi) [breaking] Remove Pinner interface (#1721)
- Build and lint with --all-features (#1636)
- (perf) Track Firewood Performance via AvalancheGo Benchmarks (#1493)
- Add Bernard as codeowner (#1647)
- Add benchmark workflow (#1643)
- Add scheduled benchmark runs (#1639) (#1645)
- (track-performance) Local iteration (#1642)
- Update to go 1.24.12 (#1658)
- Trace->info logging (#1682)
- Add deferred persistence benchmark (#1670)
- (ffi) Update CGO LDFLAGS to include -ldl (#1686)
- Github actions security audit (#1691)
- (deps) Bump the github-actions group with 14 updates (#1695)
- (ci) Update .golangci.yaml (#1703)
- Add RootStore metrics (#1680)
- Bump go to 1.25.7 (#1707)
- (metrics) Switch to
metrics-exporter-prometheusand histogram support in FFI (#1490) - [breaking] Use AWS profile in launch script (#1587)
- (metrics) [breaking] Proposal tracking (#1571)
- Add
FlushAndSync()(#1595) - Difference iterator for change proofs part 1 (#1553)
- (replay) Add
firewood-replaycrate for operation recording and replay (1/5) (#1590) - Difference iterator for change proofs part 2 (#1554)
- Difference iterator for change proofs part 3 (#1555)
- (ffi/replay) Add
block-replayfeature for recording FFI operations (2/5) (#1591) - (ffi/replay) Add Go replay log decoder and execution tests (3/5) (#1592)
- (fwdctl/replay) Add command for replaying recorded operations (4/5) (#1593)
- CodeHashes() for range proofs (#1597)
- [breaking] Remove
GetFromRootAPI (#1614) - [breaking] Make
NodeHashAlgorithma required option on storage (#1608) - Add cargo_version and git_describe to storage header (#1611)
- [breaking] Add the hash of the root node to the header (#1612)
- (metrics) Metrics crate, separate registries and expensive metrics (1/2) (#1619)
- (metrics) Integrate FFI with expensive metrics and add Go tests (2/2) (#1620)
- (ffi) BatchOp in FFI (#1624)
- Eager evaluation causing fjall store creation when root_store disabled (#1577)
- (ci) Update golang-ci patch (#1584)
- (benchmark) Align metrics config with new avalanchego task format (#1580)
- (benchmark/bootstrap) Update script to use new task (#1601)
- Replace counter! with firewood_counter! macro (#1569)
- Simplify
into_committed()(#1621) - (checker) Extract
check_area_aligned()fromNodeStore(#1623)
- (ffi) Elide panic handling if not needed (#1606)
- (ffi) Add
io-uringfeature flag (#1565) - Add Rodrigo as codeowner (#1573)
- Stop fwdctl from rebuilding every time (#1574)
- Remove 'firewood' from metric names (#1581)
- Update to go 1.24.11 (#1599)
- [breaking] Remove
FlushAndSyncRoot()API (#1617)
- Hash mismatch when proposing on uncommitted proposal (#1557)
- Guarantee that revisions work after commit (#1558)
- (ffi) Stub for code hashes in proof (#1526)
- Add ffi support for dump() (#1527)
- Disable automatic io-uring enablement (#1528)
- [breaking] Open database with directory instead of filepath (#1532)
- (io-uring) Use sqwait to correctly synchronize kernel updates (#1523)
- (rootstore) Respect db truncation (#1538)
- (ffi/iterator) Keep view alive for iterator lifetime (#1542)
- Generated instance names have whitespace (#1550)
- [breaking] Remove branch_factor_256 (#1533)
- [breaking] Go DB config to functional options pattern (#1534)
- (ffi/iterator) Move tests into a separate file (#1543)
- Update GitHub templates (#1525)
- (benchmark/bootstrap) Remove Coreth branch option (#1530)
- (firewood) Clean up RevisionManager fields (#1536)
- Remove reference to RELEASES.md (#1544)
- Switch to cargo-nextest (#1541)
- Aws-launch.sh: libevm-commit -> libevm-branch (#1552)
- (nextest) Skip slow tests in local development (#1551)
- Mark node as allocated before serializing parent (#1489)
- (parallel) Track deleted nodes from root branch in parallel propose (#1491)
- Refactor io-uring to drive the queue to completion (#1498)
- (ffi) Hold onto verification context in next key range (#1486)
- (range-proof) Skip leaf nodes that come before lower bound (#1512)
- Correct architecture for m5ad.2xlarge (#1514)
- Race condition between view and commit (#1519)
- (range-proofs) Generate proofs for lower and upper bounds correctly (#1513)
- (rootstore) Remove
MockStore(#1477) - (firewood/db) Unify reopen methods (#1481)
- (db/revisionmanager) Move
RootStorecreation toRevisionManager(#1482) - (rootstore) Remove box pointer (#1484)
- (rootstore) Own nodestore logic (#1495)
- (checker) Separate check and fix (#1506)
- (ffi) Update godoc (#1466)
- Avoid extra copying when comparing
HashOrRlp(#1505)
- Optimize init_merkle by removing redundant verification passes (#1504)
- Enhance aws-launch with show and terminate options (#1517)
- Update golangci yaml files (#1492)
- Remove windows remnants (#1503)
- (db) Remove unused
all_hashes()method (#1509) - (bootstrap) Update SSH authorized key for user 'brandon' (#1510)
- [breaking] Reorganize proof code (#1511)
- Merge key-value range into trie (#1427)
- (storage) Replace
ArcSwapwithMutexfor better performance (#1447) - (ffi) [breaking] Remove unused kvBackend interface (#1448)
- (ffi) Add keepalive struct to own waitgroup logic (#1437)
- Remove the last bits of arc-swap (#1464)
- (ffi) Fill in ffi methods for range proofs (#1429)
- (firewood/ffi) Add
FjallStore(#1395)
- (rootstore) Replace RootStoreError with boxed error (#1446)
- Remove default 1-minute timeout on
Database.Close()and set 1-sec in tests (#1458)
- Add agent instructions (#1445)
- (firewood) Clean up commit steps (#1453)
- Merge code review process into CONTRIBUTING.md (#1397)
- Add comprehensive metrics documentation in METRICS.md (#1402)
- (ffi) [breaking] Use fixed size Hash (#1449)
- Fix
giant_nodetest (#1465)
- (monitoring) Grafana automatic dashboard and auth provisioning (#1307)
- (ffi) Implement revision handles and expose to FFI layer (#1326)
- (ffi-iterator) Implementation of Iterator in Rust (1/4) (#1255)
- (ffi-iterator) Implementation of Iterator in Go (2/4) (#1256)
- (1/7) Add U4 type to be used as a path component (#1336)
- (2/7) Add newtype for PathComponent (#1337)
- (3/7) Add TriePath trait and path abstraction (#1338)
- (4/7) Add SplitPath trait (#1339)
- (ffi-iterator) Batching support for Iterator (3/4) (#1257)
- (5/7) Add PackedPathRef type (#1341)
- (6/7) Children newtype (#1344)
- Use PathComponent in proofs (#1359)
- Replace NodeAndPrefix with HashableShunt (#1362)
- Parallel updates to Merkle trie (v2) (#1258)
- Parallel hashing of Merkle trie (#1303)
- Add nix flake for ffi (#1319)
- Add more info for IO error message (#1378)
- Add TrieNode trait and related functionality (#1363)
- Add hashed key-value trie implementation (#1365)
- Define explicit associated types on Hashable (#1366)
- (ffi)
Database.Close()guarantees proposals committed or freed (#1349) - (ffi) [breaking] Support empty values in Update operations (#1420)
- Add just task runner to ensure reproducibility of CI (#1345)
- (ffi) [breaking] Add finalization logic for Revisions (#1435)
- (benchmark/bootstrap) Add config param (#1438)
- Explicitly release advisory lock on drop (#1352)
- EINTR during iouring calls (#1354)
- Revert "feat: Parallel updates to Merkle trie (v2)" (#1372)
- Revert "fix: Revert "feat: Parallel updates to Merkle trie (v2)"" (#1374)
- (storage) Flush freelist early to prevent corruption (#1389)
- (benchmark/bootstrap) Consistent go deps (#1436)
- (benchmark/bootstrap) Expand README.md (#1421)
- Show symbol diff when ffi-nix build equivalency test fails (#1423)
- Include dependency lockfile (#1321)
- Add race detection in Go (#1323)
- (nodestore) Remove empty committed err (#1353)
- Upgrade dependencies (#1360)
- (nodestore) Access persisted nodestores (#1355)
- Update Go to 1.24.8 (#1361)
- Print ulimits and set memlock to unlimited before fuzz tests (#1375)
- (db/manager) Add
MockStore(#1346) - Update Go to 1.24.9 (#1380)
- (ffi/firewood) Remove
RootStoregenerics (#1388) - Update .golangci.yaml (#1394)
- Update ffi build check to configure cargo with same MAKEFLAGS as nix (#1392)
- Fix new lint warning from 1.91 update (#1417)
- Update .golangci.yaml (#1419)
- [breaking] Drop binary support for macos 13/14 (#1425)
- (ci) Disable ffi-nix job pending reliable build equivalency (#1426)
- Added helper to reduce code duplication between Db.propose and Proposal.create_proposal (#1343)
- Add guidance on Go workspaces (#1434)
- (async-removal) Phase 3 - make
Dbtrait sync (#1213) - (checker) Fix error with free area that is not head of a free list (#1231)
- (async-removal) Phase 4 - Make
DbViewsynchronous (#1219) - (ffi-refactor) Refactor cached view (1/8) (#1222)
- (ffi-refactor) Add OwnedSlice and OwnedBytes (2/8) (#1223)
- (ffi-refactor) Introduce VoidResult and panic handlers (3/8) (#1224)
- (ffi-refactor) Refactor Db opening to use new Result structure (4/8) (#1225)
- (ffi-refactor) Refactor how hash values are returned (5/8) (#1226)
- (ffi-refactor) Refactor revision to use database handle (6/8) (#1227)
- (ffi-refactor) Add
ValueResulttype (7/8) (#1228) - (checker) Print report using template for better readability (#1237)
- (checker) Fix free lists when the erroneous area is the head (#1240)
- (ffi-proofs) Stub interfaces for FFI to interact with proofs. (#1253)
- Explicit impl of PartialEq/Eq on HashOrRlp (#1260)
- (proofs) [breaking] Disable
ValueDigest::Hashfor ethhash (#1269) - [breaking] Rename
Hashable::key(#1270) - (range-proofs) KeyValuePairIter (1/2) (#1282)
- (proofs) [breaking] Add v0 serialization for RangeProofs (#1271)
- (ffi-refactor) Replace sequence id with pointer to proposals (8/8) (#1221)
- Add an advisory lock (#1244)
- Path iterator returned wrong node (#1259)
- Use
countinstead ofsize_hint(#1268) - Correct typo in README.md (#1276)
- Resolve build failures by pinning opentelemetry to 0.30 (#1281)
- (range-proofs) Serialize range proof key consistently (#1278)
- (range-proofs) Fix verify of exclusion proofs (#1279)
- (ffi) GetFromRoot typo (#1298)
- Incorrect gauge metrics (#1300)
- M6id is a amd64 machine (#1305)
- Revert #1116 (#1313)
- (deps) Update typed-builder requirement from 0.21.0 to 0.22.0 (#1275)
- README implies commit == persist (#1283)
- Mark new_empty_proposal as test only (#1249)
- (firewood) Use ctor section to init logger for all tests (#1277)
- (bootstrap) Bootstrap testing scripts (#1287)
- Only allocate the area needed (#1217)
- Synchronize .golangci.yaml (#1234)
- (metrics-check) Re-use previous comment instead of spamming new ones (#1232)
- Nuke grpc-testtool (#1220)
- Rename FuzzTree (#1239)
- Upgrade to rust 1.89 (#1242)
- Rename mut_root to root_mut (#1248)
- Add missing debug traits (#1254)
- These tests actually work now (#1262)
- Cargo +nightly clippy --fix (#1265)
- Update .golangci.yaml (#1274)
- Various script improvements (#1288)
- (bootstrap) Add keys for brandon (#1289)
- (bootstrap) Add keys for Bernard and Amin (#1291)
- [breaking] Decorate enums and structs with
#[non_exhaustive](#1292) - Add spot instance support (#1294)
- Upgrade go (#1296)
- Ask for clippy and rustfmt (#1306)
- Add support for enormous disk (#1308)
- Disable non-security dependabot version bumps (#1315)
- Upgrade dependencies (#1314)
- (benchmark) Add ssh key (#1316)
- (checker) Checker returns all errors found in the report (#1176)
- Remove Default impl on HashType (#1169)
- Update revision manager error (#1170)
- (checker) Return the leaked areas in the checker report (#1179)
- (checker) Update unaligned page count (#1181)
- (checker) Add error when node data is bigger than area size (#1183)
- Remove
Batchtype alias (#1171) - (checker) Annotate IO error with parent pointer in checker errors (#1188)
- (checker) Do not return physical size to accomodate raw disks (#1200)
- (ffi) Add BorrowedBytes type (#1174)
- (checker) More clear print formats for checker report (#1201)
- (async-removal) Phase 1 - lint on
clippy::unused_async(#1211) - (checker) Collect statistics for branches and leaves separately (#1206)
- (async-removal) Phase 2 - make
Proposaltrait sync (#1212) - (checker) Add checker fix template (#1199)
- (checker) Skip freelist after first encountering an invalid free area (#1178)
- Fix race around reading nodes during commit (#1180)
- (fwdctl) [breaking] Db path consistency + no auto-create (#1189)
- Remove unnecessary Box on
OffsetReader(#1185)
- Add read-during-commit test (#1186)
- Fix merkle compatibility test (#1173)
- Ban
rand::rng()and provide an env seeded alternative (#1192) - Reenable eth merkle compatibility test (#1214)
- Metric change detection comments only on 1st-party PRs (#1167)
- Run CI on macOS (#1168)
- Update .golangci.yaml (#1166)
- Allow FreeListIterator to skip to next free list (#1177)
- Address lints triggered with rust 1.89 (#1182)
- Deny
undocumented-unsafe-blocks(#1172) - Fwdctl cleanups (#1190)
- AreaIndex newtype (#1193)
- Remove setup-protoc (#1203)
- Automatically label PRs from external contributors (#1195)
- Don't fail fast on certain jobs (#1198)
- Add PathGuard type when computing hashes (#1202)
- (checker) Add function to compute area counts and bytes (#1218)
- (async-iterator) Implement (#1096)
- Export logs (#1070)
- Render the commit sha in fwdctl (#1109)
- Update proof types to be generic over mutable or immutable collections (#1121)
- Refactor value types to use the type alias (#1122)
- (dumper) Child links in hex (easy) (#1124)
- (deferred-allocate) Part 3: Defer allocate (#1061)
- (checker) Disable buggy ethhash checker (#1127)
- Add
Children<T>type alias (#1123) - Make NodeStore more generic (#1134)
- (checker) Add progress bar (#1105)
- (checker) Checker errors include reference to parent (#1085)
- Update RangeProof structure (#1136)
- Update range_proof signature (#1151)
- (checker) Add InvalidKey error
- (deferred-persist) Part 1: unpersisted gauge (#1116)
- (checker) Collect basic statistics while checking the db image (#1149)
- (fwdctl) Add support for dump formats (#1161)
- (ffi) Remove the Arc wrapper around Proposal (#1160)
- (fwdctl) Fix fwdctl with ethhash (#1091)
- (checker) Fix checker with ethhash (#1130)
- Fix broken deserialization of old FreeArea format (#1147)
- Create metrics registration macros (#980)
- Cargo.toml upgrades and fixes (#1099)
- (deps) Update criterion requirement from 0.6.0 to 0.7.0 (#1140)
- Update ffi/README.md to include configs, metrics, and logs (#1111)
- Remove unnecessary string in error (#1104)
- Add propose-on-propose test (#1097)
- Implement newtype for LInearAddress (#1086)
- Refactor verifying value digests (#1119)
- Checker test cleanups (#1131)
- Minor cleanups and nits (#1133)
- Add a golang install script (#1141)
- Move all merkle tests into a subdirectory (#1150)
- Require license header for ffi code (#1159)
- Bump version to v0.0.10 (#1165)
- (ffi) Add gauges to metrics reporter (#1035)
- (delayed-persist) Part 1: Roots may be in mem (#1041)
- (delayed-persist) 2.1: Unpersisted deletions (#1045)
- (delayed-persist) Part 2.2: Branch Children (#1047)
- [breaking] Export firewood metrics (#1044)
- (checker) Add error to report finding leaked areas (#1052)
- (delayed-persist) Dump unpersisted nodestore (#1055)
- (checker) Split leaked ranges into valid areas (#1059)
- (checker) Check for misaligned stored areas (#1046)
- [breaking] Auto open or create with truncate (#1064)
- (deferred-allocate) UnpersistedIterator (#1060)
- (checker) Add hash checks (#1063)
- Avoid reference to LinearAddress (#1042)
- Remove dependency on serde (#1066)
- Encoding partial paths for leaf nodes (#1067)
- Root_hash_reversed_deletions duplicate keys (#1076)
- (checker) Avoid checking physical file size for compatibility (#1079)
- Remove unnecessary error descriptor (#1049)
- (build) Remove unused dependencies (#1037)
- Update firewood in grpc-testtool (#1040)
- Aaron is requested only for .github (#1043)
- Remove
#[allow]s no longer needed (#1022) - Split nodestore into functional areas (#1048)
- Update
golangci-lint(#1053) - Update CODEOWNERS (#1080)
- Run CI with --no-default-features (#1081)
- Release 0.0.9 (#1084)
- (checker) Firewood checker framework (#936)
- Enable a configurable free list cache in the FFI (#1017)
- (nodestore) Add functionalities to iterate the free list (#1015)
- (checker) Traverse free lists (#1026)
- Unnecessary quotes in publish action (#996)
- Report IO errors (#1005)
- Publish firewood-macros (#1019)
- Logger macros causing linting warnings (#1021)
- (deps) Update lru requirement from 0.14.0 to 0.15.0 (#1001)
- (deps) Update lru requirement from 0.15.0 to 0.16.0 (#1023)
- (deps) Upgrade sha2, tokio, clap, fastrace, serde... (#1025)
- (deps) Move duplicates to workspace (#1002)
- (ffi) [breaking] Split starting metrics exporter from db startup (#1016)
- README cleanup (#1024)
- Cache the latest view (#1004)
- Allow cloned proposals (#1010)
- Break up the RevisionManager lock (#1027)
- Suppress clippy::cast_possible_truncation across the workspace (#1012)
- Clippy pushdown (#1011)
- Allow some extra pedantic warnings (#1014)
- Check for metrics changes (#1013)
- Share workspace metadata and packages (#1020)
- Add concurrency group to attach static libs workflow (#1038)
- Bump version to v0.0.8 (#1018)
- Add methods to fetch views from any hash (#993)
- (ci) Include submodule name in ffi tag (#991)
- (metrics) Add some metrics around propose and commit times (#989)
- Use cbindgen to convert to pointers (#969)
- Check support for empty proposals (#988)
- Simplify + cleanup generate_cgo script (#979)
- Update Cargo.toml add repository field (#987)
- (fuzz) Add step to upload fuzz testdata on failure (#990)
- Add special case for non semver tags to attach static libs (#992)
- Remove requirement for conventional commits (#994)
- Release v0.0.7 (#997)
- Improve error handling and add sync iterator (#941)
- (metrics) Add read_node counters (#947)
- Return database creation errors through FFI (#945)
- (ffi) Add go generate switch between enabled cgo blocks (#978)
- Use saturating subtraction for metrics counter (#937)
- (attach-static-libs) Push commit/branch to remote on tag events (#944)
- Add add_arithmetic_side_effects clippy (#949)
- Improve ethhash warning message (#961)
- (storage) Parse and validate database versions (#964)
- (deps) Update fastrace-opentelemetry requirement from 0.11.0 to 0.12.0 (#943)
- Move lints to the workspace (#957)
- Remove some unecessary allocs during serialization (#965)
- (attach-static-libs) Use go mod edit instead of sed to update mod path (#946)
- (ethhash) Convert ethhash test to fuzz test for ethhash compatibility (#956)
- Upgrade actions/checkout (#939)
- Add push to main to attach static libs triggers (#952)
- Check the PR title for conventional commits (#953)
- Add Brandon to CODEOWNERS (#954)
- Set up for publishing to crates.io (#962)
- Remove remnants of no-std (#968)
- (ffi) Rename ffi package to match dir (#971)
- (attach-static-libs) Add pre build command to set MACOSX_DEPLOYMENT_TARGET for static libs build (#973)
- Use new firewood-go-* FFI repo naming (#975)
- Upgrade metrics packages (#982)
- Release v0.0.6 (#985)
- (ffi) Ffi error messages (#860)
- (ffi) Proposal creation isolated from committing (#867)
- (ffi) Get values from proposals (#877)
- (ffi) Full proposal support (#878)
- (ffi) Support
Getfor historical revisions (#881) - (ffi) Add proposal root retrieval (#910)
- (ffi) Prevent memory leak and tips for finding leaks (#862)
- (src) Drop unused revisions (#866)
- (ffi) Clarify roles of
Valueextractors (#875) - (ffi) Check revision is available (#890)
- (ffi) Prevent undefined behavior on empty slices (#894)
- Fix empty hash values (#925)
- (deps) Update pprof requirement from 0.12.1 to 0.13.0 (#283)
- (deps) Update lru requirement from 0.11.0 to 0.12.0 (#306)
- (deps) Update typed-builder requirement from 0.16.0 to 0.17.0 (#320)
- (deps) Update typed-builder requirement from 0.17.0 to 0.18.0 (#324)
- Remove dead code (#333)
- Kv_dump should be done with the iterator (#347)
- Add remaining lint checks (#397)
- Finish error handler mapper (#421)
- Switch from EmptyDB to Db (#422)
- (deps) Update aquamarine requirement from 0.3.1 to 0.4.0 (#434)
- (deps) Update serial_test requirement from 2.0.0 to 3.0.0 (#477)
- (deps) Update aquamarine requirement from 0.4.0 to 0.5.0 (#496)
- (deps) Update env_logger requirement from 0.10.1 to 0.11.0 (#502)
- (deps) Update tonic-build requirement from 0.10.2 to 0.11.0 (#522)
- (deps) Update tonic requirement from 0.10.2 to 0.11.0 (#523)
- (deps) Update nix requirement from 0.27.1 to 0.28.0 (#563)
- Move clippy pragma closer to usage (#578)
- (deps) Update typed-builder requirement from 0.18.1 to 0.19.1 (#684)
- (deps) Update lru requirement from 0.8.0 to 0.12.4 (#708)
- (deps) Update typed-builder requirement from 0.19.1 to 0.20.0 (#711)
- (deps) Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows (#715)
- Insert truncated trie
- Allow for trace and no logging
- Add read_for_update
- Revision history should never grow
- Use a more random hash
- Use smallvec to optimize for 16 byte values
- (deps) Update aquamarine requirement from 0.5.0 to 0.6.0 (#727)
- (deps) Update thiserror requirement from 1.0.57 to 2.0.3 (#751)
- (deps) Update pprof requirement from 0.13.0 to 0.14.0 (#750)
- (deps) Update metrics-util requirement from 0.18.0 to 0.19.0 (#765)
- (deps) Update cbindgen requirement from 0.27.0 to 0.28.0 (#767)
- (deps) Update bitfield requirement from 0.17.0 to 0.18.1 (#772)
- (deps) Update lru requirement from 0.12.4 to 0.13.0 (#771)
- (deps) Update bitfield requirement from 0.18.1 to 0.19.0 (#801)
- (deps) Update typed-builder requirement from 0.20.0 to 0.21.0 (#815)
- (deps) Update tonic requirement from 0.12.1 to 0.13.0 (#826)
- (deps) Update opentelemetry requirement from 0.28.0 to 0.29.0 (#816)
- (deps) Update lru requirement from 0.13.0 to 0.14.0 (#840)
- (deps) Update metrics-exporter-prometheus requirement from 0.16.1 to 0.17.0 (#853)
- (deps) Update rand requirement from 0.8.5 to 0.9.1 (#850)
- (deps) Update pprof requirement from 0.14.0 to 0.15.0 (#906)
- (deps) Update cbindgen requirement from 0.28.0 to 0.29.0 (#899)
- (deps) Update criterion requirement from 0.5.1 to 0.6.0 (#898)
- (deps) Bump golang.org/x/crypto from 0.17.0 to 0.35.0 in /ffi/tests (#907)
- (deps) Bump google.golang.org/protobuf from 1.27.1 to 1.33.0 /ffi/tests (#923)
- (deps) Bump google.golang.org/protobuf from 1.30.0 to 1.33.0 (#924)
- (ffi) Cleanup unused and duplicate code (#926)
- (ffi) Remove private declarations from public docs (#874)
- Use
decodein single key proof verification (#295) - Use
decodein range proof verification (#303) - Naming the elements of
ExtNode(#305) - Remove the getter pattern over
ExtNode(#310) - Proof cleanup (#316)
- (ffi/tests) Update go-ethereum v1.15.7 (#838)
- (ffi) Fix typo fwd_close_db comment (#843)
- (ffi) Add linter (#893)
- Require conventional commit format (#933)
- Bump to v0.5.0 (#934)
- Update release to cargo-workspace-version (#75)
- (deps) Update criterion requirement from 0.4.0 to 0.5.1 (#96)
- (deps) Update enum-as-inner requirement from 0.5.1 to 0.6.0 (#107)
- :position FTW? (#140)
- (deps) Update indexmap requirement from 1.9.1 to 2.0.0 (#147)
- (deps) Update pprof requirement from 0.11.1 to 0.12.0 (#152)
- (deps) Update typed-builder requirement from 0.14.0 to 0.15.0 (#153)
- (deps) Update lru requirement from 0.10.0 to 0.11.0 (#155)
- Update hash fn to root_hash (#170)
- Remove generics on Db (#196)
- Remove generics for Proposal (#197)
- Use quotes around all (#200)
- :get: use Nibbles (#210)
- Variable renames (#211)
- Use thiserror (#221)
- (deps) Update typed-builder requirement from 0.15.0 to 0.16.0 (#222)
- (deps) Update tonic-build requirement from 0.9.2 to 0.10.0 (#247)
- (deps) Update prost requirement from 0.11.9 to 0.12.0 (#246)
- Refactor
rev.rs(#74) - Disable
test_buffer_with_redo(#128) - Verify concurrent committing write batches (#172)
- Remove redundant code (#174)
- Remove unused clone for
StoreRevMutDelta(#178) - Abstract out mutable store creation (#176)
- Proposal test cleanup (#184)
- Add comments for
Proposal(#186) - Deprecate
WriteBatchand useProposalinstead (#188) - Inline doc clean up (#240)
- Remove unused blob in db (#245)
- Add license header to firewood files (#262)
- Revert back
test_proofchanges accidentally changed (#279)
- Move benching to criterion (#61)
- Refactor file operations to use a Path (#26)
- Fix panic get_item on a dirty write (#66)
- Improve error handling (#70)
- Speed up slow unit tests (#58)
- Add backtrace to e2e tests (#59)
- Fix test flake (#44)
- Clippy linting
- Specificy --lib in rustdoc linters
- Unset the pre calculated RLP values of interval nodes
- Run cargo clippy --fix
- Handle empty key value proof arguments as an error
- Tweak repo organization (#130)
- Run clippy --fix across all workspaces (#149)
- Update StoreError to use thiserror (#156)
- Update db::new() to accept a Path (#187)
- Use bytemuck instead of unsafe in growth-ring (#185)
- Update firewood sub-projects (#16)
- Fix additional clippy warnings
- Additional clippy fixes
- Fix additional clippy warnings
- Fix outstanding lint issues
- (deps) Update nix requirement from 0.25.0 to 0.26.1
- Update version to 0.0.1
- Add usage examples
- Add fwdctl create command
- Add fwdctl README and test
- Fix flag arguments; add fwdctl documentation
- Add logger
- Use log-level flag for setting logging level
- (deps) Update lru requirement from 0.8.0 to 0.9.0
- Add generic key value insertion command
- Add get command
- Add delete command
- Move cli tests under tests/
- Only use kv_ functions in fwdctl
- Fix implementation and add tests
- Add exit codes and stderr error logging
- Add tests
- Add serial library for testing purposes
- Add root command
- Add dump command
- Fixup root tests to be serial
- (deps) Update typed-builder requirement from 0.11.0 to 0.12.0
- Add VSCode
- Update merkle_utils to return Results
- Fixup command UX to be positional
- Update firewood to match needed functionality
- Update DB and Merkle errors to implement the Error trait
- Update proof errors
- Add StdError trait to ProofError
- (deps) Update nix requirement from 0.25.0 to 0.26.2
- (deps) Update lru requirement from 0.8.0 to 0.10.0
- (deps) Update typed-builder requirement from 0.12.0 to 0.13.0
- (deps) Update typed-builder requirement from 0.13.0 to 0.14.0 (#144)
- Update create_file to return a Result (#150)
- (deps) Update predicates requirement from 2.1.1 to 3.0.1 (#154)
- Add new library crate (#158)
- (deps) Update serial_test requirement from 1.0.0 to 2.0.0 (#173)
- Refactor kv_remove to be more ergonomic (#168)
- Add e2e test (#167)
- Use eth and proof feature gates across all API surfaces. (#181)
- Add license header to firewood source code (#189)
- Add link to fwdctl README in main README
- Update fwdctl README with storage information
- Update fwdctl README with more examples
- Document get_revisions function with additional information. (#177)
- Add alpha warning to firewood README (#191)
- Add more range proof tests
- Update tests to use Results
- Re-enable integration tests after introduce cargo workspaces