Stream: git-wasmtime

Topic: wasmtime / PR #5683 Remove the need to have a `Store` for...


view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 16:31):

alexcrichton opened PR #5683 from remove-store-from-instance-pre to main:

This commit relaxes a requirement of the InstancePre API, notably its construction via Linker::instantiate_pre. Previously this function required a Store<T> to be present to be able to perform type-checking on the contents of the linker, and now this requirement has been removed.

Items stored within a linker are either a HostFunc, which has type information inside of it, or an Extern, which doesn't have type information inside of it. Due to the usage of Extern this is why a Store was required during the InstancePre construction process, it's used to extract the type of an Extern. This commit implements a solution where the type information of an Extern is stored alongside the Extern itself, meaning that the InstancePre construction process no longer requires a Store<T>.

One caveat of this implementation is that some items, such as tables and memories, technically have a "dynamic type" where during type checking their current size is consulted to match against the minimum size required of an import. This no longer works when using Linker::instantiate_pre as the current size used is the one when it was inserted into the linker rather than the one available at instantiation time. It's hoped, however, that this is a relatively esoteric use case that doesn't impact many real-world users.

Additionally note that this is an API-breaking change. Not only is the Store argument removed from Linker::instantiate_pre, but some other methods such as Linker::define grew a Store argument as the type needs to be extracted when an item is inserted into a linker.

Closes #5675

<!--

Please ensure that the following steps are all taken care of before submitting
the PR.

Please ensure all communication adheres to the code of conduct.
-->

view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 16:31):

alexcrichton requested pchickey for a review on PR #5683.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 16:59):

alexcrichton updated PR #5683 from remove-store-from-instance-pre to main.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 17:47):

alexcrichton closed without merge PR #5683.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 17:47):

alexcrichton reopened PR #5683 from remove-store-from-instance-pre to main.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 19:04):

alexcrichton updated PR #5683 from remove-store-from-instance-pre to main.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 22:58):

abrown submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 22:58):

abrown submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 01 2023 at 22:58):

abrown created PR review comment:

    /// Note that providing a `store` here is not required for correctness

view this post on Zulip Wasmtime GitHub notifications bot (Feb 02 2023 at 15:44):

alexcrichton updated PR #5683 from remove-store-from-instance-pre to main.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 02 2023 at 17:29):

pchickey submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Feb 02 2023 at 17:54):

alexcrichton merged PR #5683.


Last updated: Dec 23 2024 at 12:05 UTC