Releases: ava-labs/firewood
Releases · ava-labs/firewood
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-lint
by @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
v0.0.8
What's Changed
- fix: Unnecessary quotes in publish action by @alarso16 in #996
- feat(checker): Firewood checker framework by @qusuyan in #936
- build(deps): update lru requirement from 0.14.0 to 0.15.0 by @dependabot in #1001
- fix: Report IO errors by @rkuris in #1005
- refactor(deps): move duplicates to workspace by @RodrigoVillar in #1002
- perf: Cache the latest view by @rkuris in #1004
- perf: Allow cloned proposals by @rkuris in #1010
- chore: suppress clippy::cast_possible_truncation across the workspace by @demosdemon in #1012
- chore: Clippy pushdown by @rkuris in #1011
- feat: enable a configurable free list cache in the FFI by @alarso16 in #1017
- chore: allow some extra pedantic warnings by @demosdemon in #1014
- fix: publish firewood-macros by @demosdemon in #1019
- build(deps): update lru requirement from 0.15.0 to 0.16.0 by @dependabot in #1023
- feat(nodestore): add functionalities to iterate the free list by @qusuyan in #1015
- build(deps): Upgrade sha2, tokio, clap, fastrace, serde... by @rkuris in #1025
- perf: Break up the RevisionManager lock by @rkuris in #1027
- ci: Check for metrics changes by @rkuris in #1013
- refactor(ffi)!: split starting metrics exporter from db startup by @RodrigoVillar in #1016
- docs: README cleanup by @rkuris in #1024
- chore: share workspace metadata and packages by @demosdemon in #1020
- feat(checker): traverse free lists by @qusuyan in #1026
- fix: logger macros causing linting warnings by @demosdemon in #1021
- ci: add concurrency group to attach static libs workflow by @aaronbuchwald in #1038
- chore: Bump version to v0.0.8 by @demosdemon in #1018
New Contributors
- @RodrigoVillar made their first contribution in #1002
Full Changelog: v0.0.7...v0.0.8
v0.0.7
What's Changed
- chore: Simplify + cleanup generate_cgo script by @rkuris in #979
- test: Check support for empty proposals by @alarso16 in #988
- chore: Update Cargo.toml add repository field by @szabgab in #987
- ci(fuzz): add step to upload fuzz testdata on failure by @aaronbuchwald in #990
- fix(ci): include submodule name in ffi tag by @aaronbuchwald in #991
- ci: add special case for non semver tags to attach static libs by @aaronbuchwald in #992
- Cleanup Nodestore Public Interface by @qusuyan in #986
- perf(metrics): Add some metrics around propose and commit times by @rkuris in #989
- ci: Remove requirement for conventional commits by @rkuris in #994
- feat: Add methods to fetch views from any hash by @rkuris in #993
- style: use cbindgen to convert to pointers by @alarso16 in #969
- chore: Release v0.0.7 by @rkuris in #997
New Contributors
Full Changelog: v0.0.6...v0.0.7
v0.0.6
[0.0.6] - 2025-06-21
🚀 Features
- 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)
🐛 Bug Fixes
- 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)
💼 Other
- (deps) Update fastrace-opentelemetry requirement from 0.11.0 to 0.12.0 (#943)
- Move lints to the workspace (#957)
⚡ Performance
- Remove some unecessary allocs during serialization (#965)
🎨 Styling
- (attach-static-libs) Use go mod edit instead of sed to update mod path (#946)
🧪 Testing
- (ethhash) Convert ethhash test to fuzz test for ethhash compatibility (#956)
⚙️ Miscellaneous Tasks
- 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)
v0.0.5
What's Changed
- build(deps): update pprof requirement from 0.12.1 to 0.13.0 by @dependabot in #283
- Correct some spelling errors in README.md by @rkuris in #284
- Update README.md by @JacobEverly in #286
- Nibbles nits by @gubatron in #285
- Corrected various typographical errors in code comments by @gubatron in #288
- Refactor
buffer.rs
for better readability and maintainability by @gubatron in #287 - 1/3 Implement improved API implementation for database by @rkuris in #227
- Remove 'static lifetime on key-type trait by @richardpringle in #289
- 2/3 Implement v2::api for the real DB by @rkuris in #292
- Untangling lifetimes and borrows by @richardpringle in #291
- chore: use
decode
in single key proof verification by @xinifinity in #295 - Move methods to functions that don't reference self by @richardpringle in #296
- Remove proof feature from Cargo.toml by @rkuris in #300
- Renames for readability by @rkuris in #301
- Remove line about Docker in README by @richardpringle in #302
- chore: use
decode
in range proof verification by @xinifinity in #303 - build(deps): update lru requirement from 0.11.0 to 0.12.0 by @dependabot in #306
- Switch to unbounded channel by @rkuris in #304
- chore: naming the elements of
ExtNode
by @xinifinity in #305 - Rely on mutable iterators instead of offsets by @richardpringle in #307
- Use iterators instead of continue by @richardpringle in #309
- chore: Remove the getter pattern over
ExtNode
by @xinifinity in #310 - API implementation part 3 by @rkuris in #308
- Cleanup merkle-insert code by @richardpringle in #311
- Simplify test by @rkuris in #312
- chore: proof cleanup by @xinifinity in #316
- Use bincode for serialization by @rkuris in #319
- Cleanup split logic by @richardpringle in #313
- Fix up example, use new async interface by @rkuris in #314
- build(deps): update typed-builder requirement from 0.16.0 to 0.17.0 by @dependabot in #320
- Add verify option to insert example by @rkuris in #321
- Rkuris/dead code cleanup by @rkuris in #322
- build(deps): update typed-builder requirement from 0.17.0 to 0.18.0 by @dependabot in #324
- Cleanup insert example verification by @richardpringle in #325
- Insert test by @richardpringle in #328
- Check all features by @richardpringle in #330
- More dead code cleanup by @rkuris in #331
- More merkle.rs cleanup by @richardpringle in #329
- Make Db::new async, force use of new API by @rkuris in #323
- Refactor tests by @rkuris in #332
- Shale: Remove dead code by @rkuris in #333
- Remove unused U64Field implementation for Storable by @rkuris in #334
- Remove MSIZE from DiskAddress by @rkuris in #335
- Remove TypedView trait by @rkuris in #336
- More shale cleanups by @rkuris in #337
- Move shale into firewood as a module by @rkuris in #338
- Enable manual trigger of default-cache build by @richardpringle in #339
- Rename hydrate/dehydrate to serialize/deserialize by @rkuris in #340
- Rkuris/streaming iterator from start by @rkuris in #346
- 1/3: kv_dump should be done with the iterator by @rkuris in #347
- Fix new clippy lint (rust 1.74.0) by @rkuris in #355
- Rkuris/range proofs by @rkuris in #345
- README updates by @rkuris in #357
- Enable lints for discussion by @rkuris in #356
- Add proof verification test by @richardpringle in #359
- Move range-proof-builder by @richardpringle in #361
- split node files by @richardpringle in #360
- Box the branch-node by @richardpringle in #367
- Rename Node Constructors by @richardpringle in #368
- Centralize Node Atomics by @richardpringle in #369
- Use leaf-node size by @richardpringle in #370
- Use bitflags for leaf-node attributes by @richardpringle in #371
- Use more strict types in node-(de)serialization by @richardpringle in #372
- Growth ring const function checks by @rkuris in #383
- Growth ring file handling improvements by @rkuris in #381
- Growth ring unwrap cleanups by @rkuris in #382
- Dead code removal by @rkuris in #385
- Unwrap warning addition by @rkuris in #384
- Expose NibblesIterator::is_empty by @rkuris in #389
- Range proof middles should contain all by @rkuris in #387
- Remove test for edge key length differences by @rkuris in #388
- Delegate branch-storage logic to the branch mod by @richardpringle in #373
- Range proofs can contain zero length data by @rkuris in #386
- Deserialize branch by @richardpringle in #374
- Implement Storable for LeafNode by @richardpringle in #376
- Finish deserialization of extension-node by @richardpringle in #377
- Move proof to be a sub-module of merkle by @richardpringle in #378
- growth-ring: Add remaining lint checks by @rkuris in #397
- Add shared-path-on-insert test by @richardpringle in #379
- Remove some unsafe code by @rkuris in #400
- Centralize trie-traversal for proof generation by @richardpringle in #380
- Cleanup
insert_and_return_updates
method by @richardpringle in #391 - Don't ignore results in tests by @richardpringle in #393
- Pluggable encoding for nodes by @xinifinity in #317
- Prefer bytemuck::Pod over Uninit by @rkuris in #405
- Rkuris/deny new unsafe growth ring by @rkuris in #401
- Rename rpc -> grpc-testtool by @rkuris in #407
- Bring grpc-testtool up to the lint standard by @rkuris in #409
- Rkuris/grpc make process server by @rkuris in #413
- More improvements for grpc service by @rkuris in #415
- Update process server proto by @rkuris in #417
- Write panics to the log by @rkuris in #419
- grpc-testtool: Finish error handler mapper by @rkuris in #421
- grpc-testtool: Switch from EmptyDB to Db by @rkuris in #422
- Rename revision() to latest() by @rkuris in #420
- Orchestrator interface changes by @rkuris in #423
- Update milestone by @xinifinity in #427
- Add more iterator tests by @richardpringle in #429
- Add Merkledb encoding schema by @xinifinity in #425
- build(deps): update aquamarine requirement from 0.3.1 to...
v0.0.4
What's Changed
- Add richardpringle to codeowners by @rkuris in #72
- Update versions to 0.0.3 for everything by @rkuris in #71
- chore: refactor
rev.rs
by @xinifinity in #74 - fix: Update release to cargo-workspace-version by @exdx in #75
- Add some terminology to the README.md by @rkuris in #77
- Rename types to use proper PascalCase by @richardpringle in #79
- Code cleanup: unused but constructed if expression by @rkuris in #86
- Turn to_nibbles into an extension method by @richardpringle in #80
- cleanup proof by @richardpringle in #81
- Remove unused imports by @richardpringle in #89
- Update CODEOWNERS to reflect active reviewers by @richardpringle in #94
- Fallback to posix_fallocate by @richardpringle in #90
- Update
Ash
with undo and redo by @xinifinity in #92 - no need for option by @richardpringle in #82
- Return a
Result<(), ObjWriteError>
forObj::write
andObjRef::write
instead ofOption<()>
by @richardpringle in #83 - test files in tmp by @richardpringle in #95
- Update milestones by @rkuris in #100
- Verify pin a specific revision by @xinifinity in #99
- build(deps): update criterion requirement from 0.4.0 to 0.5.1 by @dependabot in #96
- Mark resolved green milestone items done by @xinifinity in #103
- Clippy fixes by @rkuris in #102
- Framework for metrics by @rkuris in #101
- Use unzip instead of mut/push by @rkuris in #105
- get rid of weird closure by @richardpringle in #84
- migrate growth ring fd to tokio file by @richardpringle in #88
- Add CI cacheing by @richardpringle in #108
- Unwind some growth-ring test nesting by @richardpringle in #109
- Remove compose-dev.yml file by @richardpringle in #111
- Add default branch caching by @richardpringle in #112
- Delete cache values associated with a merged branch by @richardpringle in #114
- Always update actions-cache by @richardpringle in #116
- always save actions cache by @richardpringle in #117
- build(deps): update enum-as-inner requirement from 0.5.1 to 0.6.0 by @dependabot in #107
- Remove lazy_static and use the new OnceCell from rust 1.70.0 by @rkuris in #120
- use static dispatch by @richardpringle in #124
- Test WAL read/write by @richardpringle in #123
- Ensure
StoreRevMut
can handle redo by @xinifinity in #115 - migrate growth ring fd to tokio file by @richardpringle in #122
- Add note about metrics work by @rkuris in #106
- chore: disable
test_buffer_with_redo
by @xinifinity in #128 - Fix main cache by @richardpringle in #127
- Another attempt to properly delete main caches by @richardpringle in #129
- Cleanup benchmark code by @richardpringle in #125
- Fix clippy error by @rkuris in #130
- growth ring cleanup by @richardpringle in #133
- Pages should always be boxed by @richardpringle in #134
- Identify a revision with root hash by @xinifinity in #126
- Remove broken disk-buffer by @richardpringle in #131
- Improve concurrency for ShaleStore by @rkuris in #137
- Use dependency injection in DiskBuffer by @richardpringle in #136
- disk buffer async by @richardpringle in #138
- Cleanup test directories by @richardpringle in #139
- Iterator::position FTW? by @richardpringle in #140
- New proposed API by @rkuris in #42
- Basic implementation for proposals by @rkuris in #142
- Add some blank lines (Richardification) by @rkuris in #143
- Remove dyn for MemStoreR by @rkuris in #144
- Remove re-implementation of cmp on slice by @richardpringle in #145
- build(deps): update indexmap requirement from 1.9.1 to 2.0.0 by @dependabot in #147
- Make Revisions Thread Safe by @richardpringle in #148
- Mark green milestone complete by @xinifinity in #151
- build(deps): update pprof requirement from 0.11.1 to 0.12.0 by @dependabot in #152
- build(deps): update typed-builder requirement from 0.14.0 to 0.15.0 by @dependabot in #153
- build(deps): update lru requirement from 0.10.0 to 0.11.0 by @dependabot in #155
- Remove shale-archive by @richardpringle in #156
- Add mermaid diagram for proposal by @xinifinity in #154
- Fix Shale-doc link by @richardpringle in #158
- Make proposals owned by API caller by @rkuris in #161
- Redefine Revision and View by @rkuris in #160
- Remove directory stutter naming by @richardpringle in #162
- Add Shale refactor to seasoned milestone by @richardpringle in #164
- Implement EmptyDb by @rkuris in #159
- Add mermaid diagram for proposals by @rkuris in #169
- api/v2: Update hash fn to root_hash by @exdx in #170
- Return Option instead of erroring with api::Error:::KeyNotFound by @nytzuga in #171
- chore: verify concurrent committing write batches by @xinifinity in #172
- Return &[u8] from val trait (Fixes #165) by @nytzuga in #173
- chore: remove redundant code by @xinifinity in #174
- feat: supports chains of
StoreRevMut
by @xinifinity in #175 - chore: remove unused clone for
StoreRevMutDelta
by @xinifinity in #178 - chore: abstract out mutable store creation by @xinifinity in #176
- Rkuris/cleanup delta by @rkuris in #179
- Modularize database initialization by @rkuris in #65
- feat: add proposal by @xinifinity in #181
- Update README.md with proposal implementation by @xinifinity in #182
- chore: proposal test cleanup by @xinifinity in #184
- Open-options instead of a truncate bool by @richardpringle in #185
- Update Seasoned milestone by @xinifinity in #189
- chore: add comments for
Proposal
by @xinifinity in #186 - Rkuris/db refactor by @rkuris in #180
- chore: deprecate
WriteBatch
and useProposal
instead by @xinifinity in #188 - Remove new_revision_arc method by @richardpringle in #187
- Add #[derive(Debug)] in a few missing places by @rkuris in #193
- Remove get_revision configuration option by @rkuris in #194
- Emptydb is a test, so only compile when testing by @rkuris in #195
- Cleanup: Remove generics on Db by @rkuris in #196
- Cleanup: remove generics for Proposal by @rkuris in #197
- Add all dependendencies to dependabot config by @rkuris in https://github.com/ava-labs/fire...
v0.0.3
What's Changed
- Move DynamicMemory to shale by @hexfusion in #35
- CLI improvements by @rkuris in #55
- tests: Speed up slow unit tests by @exdx in #58
- ci: Add backtrace to e2e tests by @exdx in #59
- shale: move benching to criterion by @hexfusion in #61
- growth_ring: Refactor file operations to use a Path by @exdx in #26
- Get the current committed state with
get_revision(0)
by @xinifinity in #67 - shale: Fix get_item on a dirty write panic by @hexfusion in #66
- shale: improve error handling by @hexfusion in #70
Full Changelog: v0.0.2...v0.0.3
v0.0.2
What's Changed
- Remove old docs by @patrick-ogrady in #22
- docs: Add release notes by @exdx in #27
- docs: Update CODEOWNERS by @exdx in #28
- docs: Add badges to README by @exdx in #33
- Breakout disk buffer from storage and add tests by @hexfusion in #34
- Add benchmarks and inline docs for merkle insert by @rkuris in #31
- rkuris/rename structs by @rkuris in #32
- Conditional compile additional eth-only code by @rkuris in #43
- buffer: Fix test flake by @hexfusion in #44
- firewood-v0.0.2 by @hexfusion in #23
New Contributors
- @hexfusion made their first contribution in #34
Full Changelog: v0.0.1...v0.0.2
v0.0.1
What's Changed
- Recent history by @patrick-ogrady in #1
- Remove unused
.gitmodules
file by @patrick-ogrady in #3 - Add website by @patrick-ogrady in #4
- README + website nits by @patrick-ogrady in #5
- Fix image links by @patrick-ogrady in #6
- Code comments clean up by @xinifinity in #9
- Fix cargo publish by @patrick-ogrady in #10
- Add note about vendored crates by @patrick-ogrady in #11
- Propogate errors in growth-ring by @rkuris in #18
- [locking] Get a revision while a batch is active by @xinifinity in #17
- fix: Update firewood sub-projects by @exdx in #16
- ci: Fail in case of error publishing firewood crate by @exdx in #21
New Contributors
- @patrick-ogrady made their first contribution in #1
- @xinifinity made their first contribution in #9
- @rkuris made their first contribution in #18
- @exdx made their first contribution in #16
Full Changelog: https://github.com/ava-labs/firewood/commits/v0.0.1