Skip to content

Update hash map entries in place - #56

Merged
Jay Lorch (jaylorch) merged 3 commits into
mainfrom
update-in-place
Aug 21, 2026
Merged

Update hash map entries in place#56
Jay Lorch (jaylorch) merged 3 commits into
mainfrom
update-in-place

Conversation

@jaylorch

@jaylorch Jay Lorch (jaylorch) commented Aug 4, 2026

Copy link
Copy Markdown
Member

At the time CapybaraKV was released, Verus didn't support general mutable references. So there were some places in the code where it removed a key/value mapping (k, v1), updated v1 to v2, then inserted (k, v2).

Now that Verus does support returning mutable references, we can update that value in place, for greater simplicity and presumably better performance.

It presumably goes without saying that most of this code was written by AI. In this case, it was GPT-5.6 Sol.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR modernizes the ListTable implementation to update HashMap entries in place (now that Verus supports returning mutable references), avoiding the previous remove–modify–reinsert pattern for ListTableEntry updates.

Changes:

  • Refactors ListTableEntry::commit to mutate self in place (&mut self) and updates commit propagation to use HashMap::entry.
  • Refactors ListTableEntry::append to mutate self in place (&mut self) and updates append flows to avoid temporarily removing the entry from the map.
  • Adjusts append-case helper APIs to pass only the needed ListSummary snapshot (old_summary) and then update the map entry in place.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
capybaraKV/capybarakv/src/kv2/lists/commit_v.rs Switches commit to in-place mutation and updates map updates to use HashMap::entry for occupied entries.
capybaraKV/capybarakv/src/kv2/lists/append_v.rs Switches append to in-place mutation and refactors append cases to avoid remove/insert, updating entries via entry / get_mut.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jaylorch
Jay Lorch (jaylorch) merged commit 5accc3b into main Aug 21, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants