Commit Graph

154 Commits

Author SHA1 Message Date
Kris Nuttycombe 422889cd5a Improve documentation of private `extend_to_level` method. 2025-02-19 08:42:29 -07:00
Kris Nuttycombe 1ad56addf7 Silence Clippy type complexity complaint. 2025-02-19 08:38:09 -07:00
Kris Nuttycombe 1d7cd427f0 shardtree: make construction of fully-empty Parent nodes an error
Ideally the errors here would all be panics, as construction of such a
node represents a programming error; however, it is preferable to return
extra contextual information about the circumstance that led to this
error where possible, so we model this as an error where possible
without altering the public API.
2025-02-17 16:46:06 -07:00
Kris Nuttycombe 9edc305fa1 Fix clippy beta lints 2025-01-31 13:05:18 -07:00
Kris Nuttycombe 8235a536fc Release shardtree-v0.6.1 2025-01-30 20:55:04 -07:00
Kris Nuttycombe 04280c42ab Release shardtree version 0.6 2025-01-28 12:29:13 -07:00
Kris Nuttycombe 353cf3e9ff Update `shardtree` to depend upon `incrementalmerkletree 0.8.0` 2024-12-11 21:30:32 -07:00
Kris Nuttycombe fb62fb6175 Merge remote-tracking branch 'upstream/hotfix/shardtree-v0.3.x' into merge_shardtree_hotfix 2024-12-11 14:59:44 -07:00
Kris Nuttycombe 63cbc0a223 Release `shardtree v0.3.2` 2024-12-09 14:31:55 -07:00
Jack Grigg 766a00eb66 shardtree: Justify `unwraps` due to upheld pre-conditions 2024-12-09 13:44:38 -07:00
Jack Grigg 150f5544ba shardtree: Justify `unwrap`s due to an `Infallible` error type
Rust 1.82 adds support for omitting empty types in pattern matching,
which would make these much clearer.
2024-12-02 09:46:50 -07:00
Jack Grigg c05f2fac00 shardtree: Make `BatchInsertionResult.max_insert_position` non-optional 2024-11-23 04:03:50 +00:00
Jack Grigg 166872e49b shardtree: Ensure `LocatedTree` is correct by construction
This ensures that the various existing `unwrap`s are correctly
justified.
2024-11-23 03:47:35 +00:00
Jack Grigg 1e81f3ca45 shardtree: Justify `unwraps` due to upheld pre-conditions 2024-11-23 03:21:47 +00:00
Jack Grigg 74410d059f shardtree: Justify `unwrap`s due to an `Infallible` error type
Rust 1.82 adds support for omitting empty types in pattern matching,
which would make these much clearer.
2024-11-23 00:51:30 +00:00
Kris Nuttycombe 771a933d88 Release shardtree version 0.5.0 2024-10-04 08:14:43 -06:00
Kris Nuttycombe 518fa387d7 Use the stable incrementalmerkletree 0.7 dependency in `incrementalmerkletree-testing` and `shardtree` 2024-10-02 12:51:05 -06:00
Kris Nuttycombe 3f59900acf Apply documentation suggestions from code review
Co-authored-by: Jack Grigg <thestr4d@gmail.com>
2024-09-27 10:55:01 -06:00
Kris Nuttycombe 9a77e51cc4 shardtree: Rework rewind & checkpoint depth handling. 2024-09-27 08:44:14 -06:00
Kris Nuttycombe cfc4fcbac8 Extract incrementalmerkletree::testing module to a separate `incrementalmerkletree-testing` crate. 2024-09-25 13:37:03 -06:00
Kris Nuttycombe 6f6699da21 Use common workspace package stanza & workspace dependencies.
This requires us to upgrade our MSRV to 1.64
2024-09-25 13:37:03 -06:00
Eric Tu 8ccb40d088 CHANGELOG 2024-09-12 11:48:22 -04:00
Eric Tu 16eff253ad FnMut instead of Fn 2024-09-10 15:57:50 -04:00
Eric Tu eb3843e0cf for_each_checkpoint 2024-09-10 10:12:30 -04:00
Eric Tu 0e9d4d635a Add max_checkpoints getter 2024-09-06 12:14:28 -04:00
Kris Nuttycombe ef7fcde5fa Release shardtree version 0.4.0 2024-08-12 11:33:36 -06:00
Kris Nuttycombe 1f86f1259a Release incrementalmerkletree version 0.6.0 2024-08-12 10:18:42 -06:00
Kris Nuttycombe 192cb3ffda shardtree: Remove `Node::Pruned`
In 7e48886fd3, `Node::Pruned` was
introduced in order to fix problems with `LocatedTree::max_position`
resulting from reinsertion of subtree information as children of
a previously pruned subtree represented by a `Node::Leaf` at its
root. This fix introduced a large amount of complexity that is
better resolved by fixing the `max_position` function in a different
way and generally minimizing its usage.
2024-06-27 16:30:57 -06:00
Kris Nuttycombe 88681ae335 shardtree: Reduce dependence upon `LocatedTree::max_position` 2024-06-27 16:30:57 -06:00
Kris Nuttycombe b38b9d5d62 shardtree: Minor cleanups & documentation improvements. 2024-06-27 16:30:52 -06:00
Kris Nuttycombe f5adcd5a2c shardtree: Fix pruning of annotated `Parent` nodes with `Nil` children.
The current behavior of `unite` incorrectly discards annotation data.
2024-06-27 14:39:48 -06:00
Jack Grigg 020a7d76d7 shardtree: Use `Tree` constructors instead of struct creation
This makes it easier for us to track where new tree nodes are created,
and how the node kinds are used within the `ShardTree` data model.
2024-06-26 14:08:25 +00:00
Kris Nuttycombe d40e178f8d shardtree: Do not unify pruned nodes with empty nodes. 2024-05-28 19:22:45 -06:00
Kris Nuttycombe 7e48886fd3 shardtree: Add `Pruned` node type
In circumstances where insertion into a subtree results in pruning, and
then a subsequent insertion within the same range contains leaves that
must be retained, it is necessary to be able to distinguish the maximum
position among notes that have been observed but later pruned. This
fixes a bug wherein an insertion into an already-pruned tree could cause
the maximum position reported for the subtree to regress.
2024-05-28 19:22:45 -06:00
Kris Nuttycombe ffc087424d shardtree: Discard `REFERENCE` retention in leaf overwrites.
Also, disallow value-conflicted overwrites at the leaf level.
2024-05-28 17:13:31 -06:00
Kris Nuttycombe e55ff2d7f2 incrementalmerkletree: add `Reference` retention type.
This new retention type is intended to be used when inserting frontiers
that should not automatically be pruned.

Also, improve documentation for the `Retention` type.
2024-05-28 17:10:38 -06:00
Kris Nuttycombe 57b6e8999f shardtree: `Nil` nodes cannot replace any other sort of node in the tree. 2024-05-28 15:54:18 -06:00
Kris Nuttycombe 811d384bd4 shardtree: Improve tracing 2024-05-28 15:50:07 -06:00
Kris Nuttycombe 7c862c16b3 Release shardtree version 0.3.1 2024-04-03 13:49:13 -06:00
Kris Nuttycombe 52e956b8ec shardtree: Ensure `test-dependencies` feature enables `incrementalmerkletree/test-dependencies`
This is intended to fix an issue with the `docs.rs` build.
2024-04-03 11:58:37 -06:00
Kris Nuttycombe 22ee3d8f4e Release shardtree version 0.3.0 2024-03-24 18:29:25 -06:00
Kris Nuttycombe ac9ecaca12 shardtree: Add `InsertionError::MarkedRetentionInvalid` 2024-03-24 18:26:00 -06:00
Kris Nuttycombe 17f2bcd037
Apply suggestions from code review
Co-authored-by: str4d <thestr4d@gmail.com>
2024-03-11 16:51:06 -06:00
Kris Nuttycombe fa147c89c6 shardtree: Add `ShardTree::store_mut` 2024-03-11 13:03:03 -06:00
Kris Nuttycombe 25cb18973e shardtree: Add `ShardTree::insert_frontier` 2024-03-11 13:02:34 -06:00
Kris Nuttycombe 214d76e40a shardtree: Add an accessor for a `ShardTree`'s underlying `ShardStore` 2024-03-09 17:12:19 -07:00
Kris Nuttycombe 769fd2be45 shardtree: Release version 0.2.0 2023-11-07 09:57:48 -07:00
Kris Nuttycombe 39ce028701 Apply suggestions from code review
Co-authored-by: str4d <thestr4d@gmail.com>
2023-11-07 07:44:07 -07:00
Kris Nuttycombe b2c5cd9fc4 shardtree: Correct erroneous `ShardStore::get_checkpoint_at_depth` documentation 2023-11-07 07:44:07 -07:00
Kris Nuttycombe 8d301a14dd shardtree: Add `witness_at_checkpoint_id` methods.
It is useful to be able to refer to a specific checkpoint, rather than
just a checkpoint depth, when computing a witness.
2023-11-07 07:44:07 -07:00