This repository was archived by the owner on Sep 8, 2025. It is now read-only.
remove StoreContextMut::with_{a,de}tached_instance[_async]#183
Merged
Conversation
This is the second phase of the cleanup I started in an earlier commit with the goal of reducing `unsafe` code in the `concurrent` module and submodules, especially with regard to functions which take mutable references to a store and a `ComponentInstance` within that store. My earlier attempt to make such functions safe was to temporarily "detach" the instance from the store to avoid aliasing hazards, but that got messy and confusing, and Alex and I decided an index-based approach made more sense. So now we pass `Instance` handles around instead of `ComponentInstance` references and pointers, using them to retrieve the `ComponentInstance` from the store only as necessary. Practically speaking, this required moving a lot of inherent functions from `ComponentInstance` to `Instance` and updating their bodies accordingly. Functionally, nothing has changed. Signed-off-by: Joel Dice <joel.dice@fermyon.com>
alexcrichton
approved these changes
Jun 4, 2025
Member
|
Very nice, thanks again for pushing through this! Two minor comments:
|
Collaborator
Author
|
Yeah, I went back and forth about Also agreed about the ergonomics of looking up |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the second phase of the cleanup I started in an earlier commit with the goal of reducing
unsafecode in theconcurrentmodule and submodules, especially with regard to functions which take mutable references to a store and aComponentInstancewithin that store.My earlier attempt to make such functions safe was to temporarily "detach" the instance from the store to avoid aliasing hazards, but that got messy and confusing, and Alex and I decided an index-based approach made more sense. So now we pass
Instancehandles around instead ofComponentInstancereferences and pointers, using them to retrieve theComponentInstancefrom the store only as necessary.Practically speaking, this required moving a lot of inherent functions from
ComponentInstancetoInstanceand updating their bodies accordingly. Functionally, nothing has changed.