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

Remove the need to have a Store for an InstancePre #5683

Commits on Feb 1, 2023

  1. Remove the need to have a Store for an InstancePre

    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 bytecodealliance#5675
    alexcrichton committed Feb 1, 2023
    Configuration menu
    Copy the full SHA
    43b3c73 View commit details
    Browse the repository at this point in the history
  2. Fix the C API

    alexcrichton committed Feb 1, 2023
    Configuration menu
    Copy the full SHA
    f09ab24 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    3f92c91 View commit details
    Browse the repository at this point in the history
  4. Add C API docs

    alexcrichton committed Feb 1, 2023
    Configuration menu
    Copy the full SHA
    611c9dd View commit details
    Browse the repository at this point in the history

Commits on Feb 2, 2023

  1. Update crates/wasmtime/src/linker.rs

    Co-authored-by: Andrew Brown <[email protected]>
    alexcrichton and abrown authored Feb 2, 2023
    Configuration menu
    Copy the full SHA
    090fc94 View commit details
    Browse the repository at this point in the history