Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move dtor information from ResourceAny into a Store #8061

Merged

Conversation

alexcrichton
Copy link
Member

@alexcrichton alexcrichton commented Mar 7, 2024

This commit moves the internals of the ResourceAny type related to destructors into the auxiliary data within a Store. This avoids the need to carry around pointers with ResourceAny and additionally makes it easier to work with.

As part of this commit this also updates the behavior of ResourceAny::try_from_resource to no longer need an InstancePre and type information. This was required originally to get ResourceAny::resource_drop working to drop the host resource. In retrospect I'm not sure if this was the best goal to achieve because Resource<T> already has no destructor support and one of the more common use cases for the conversion is to simply turn around and give it back to a component where a component already has enough destructor information.

In the end this should make both ResourceAny and Resource<T> pretty close to "just an index" which is easier to reason about when working with resources than carrying additional pointers.

Closes #7714

This commit moves the internals of the `ResourceAny` type related to
destructors into the auxiliary data within a `Store`. This avoids the
need to carry around pointers with `ResourceAny` and additionally makes
it easier to work with.

As part of this commit this also updates the behavior of
`ResourceAny::try_from_resource` to no longer need an `InstancePre` and
type information. This was required originally to get
`ResourceAny::resource_drop` working to drop the host resource. In
retrospect I'm not sure if this was the best goal to achieve because
`Resource<T>` already has no destructor support and one of the more
common use cases for the conversion is to simply turn around and give it
back to a component where a component already has enough destructor
information.

In the end this should make both `ResourceAny` and `Resource<T>` pretty
close to "just an index" which is easier to reason about when working
with resources than carrying additional pointers.
@alexcrichton alexcrichton requested a review from a team as a code owner March 7, 2024 18:59
@alexcrichton alexcrichton requested review from pchickey and removed request for a team March 7, 2024 18:59
@alexcrichton
Copy link
Member Author

cc @rvolosatovs as this is touching on the work of #7688

@github-actions github-actions bot added the wasmtime:api Related to the API of the `wasmtime` crate itself label Mar 7, 2024
Copy link

github-actions bot commented Mar 7, 2024

Subscribe to Label Action

cc @peterhuene

This issue or pull request has been labeled: "wasmtime:api"

Thus the following users have been cc'd because of the following labels:

  • peterhuene: wasmtime:api

To subscribe or unsubscribe from this label, edit the .github/subscribe-to-label.json configuration file.

Learn more.

Copy link
Member

@rvolosatovs rvolosatovs left a comment

Choose a reason for hiding this comment

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

Looks great, thanks.
Should ResourceIndex be removed altogether and not be returned anymore by LinkerInstance::resource?

It appears that this PR closes #7714

@alexcrichton
Copy link
Member Author

Good points! And sorry again for not realizing this is probably the best way to go sooner, I realize this is a bit of a runaround with the API :(

@alexcrichton alexcrichton enabled auto-merge March 8, 2024 15:54
@alexcrichton alexcrichton added this pull request to the merge queue Mar 8, 2024
Merged via the queue into bytecodealliance:main with commit dd3f8d8 Mar 8, 2024
19 checks passed
@alexcrichton alexcrichton deleted the resource-just-an-index branch March 8, 2024 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wasmtime:api Related to the API of the `wasmtime` crate itself
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support Resource<T> -> ResourceAny for WASI resources
3 participants