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 type information from dynamic component funcs #8070

Merged

Commits on Mar 8, 2024

  1. Remove type information from dynamic component funcs

    This commit removes the `&Component` argument from the
    `component::Linker::func_new` API. This is inspired by bytecodealliance#8062 where `Val`
    holds less type information as well in addition to the realization that
    type-checking happens at runtime rather than instantiation time.
    
    This argument was originally added to mirror
    `wasmtime::Linker::func_new` which takes a type argument of the core
    wasm function that's being defined. Unlike core wasm, though, component
    functions already have to carry along their type information as part of
    function calls to handle resources correctly. This means that when a
    host function is invoked the type is already known of all the parameters
    and results. Additionally values are already required to be type-checked
    going back into wasm, so there's less of a need to perform an additional
    type-check up front.
    
    The main consequence of this commit is that it's a bit more difficult
    for embeddings to know what the expected types of results are. No type
    information is provided when a host function is defined, not even
    function arity. This means that when the host function is invoked it may
    not know how many results are expected to be produced and of what type.
    Typically though a bindings generator is used somewhere along the way so
    that's expected to alleviate this issue.
    
    Finally my hope is to enhance this "dynamic" API in the future with a
    bit more information so the type information is more readily accessible
    at runtime. For now though hosts will have to "simply know what to do".
    alexcrichton committed Mar 8, 2024
    Configuration menu
    Copy the full SHA
    f0857d4 View commit details
    Browse the repository at this point in the history
  2. Update crates/wasmtime/src/runtime/component/linker.rs

    Co-authored-by: Joel Dice <joel.dice@fermyon.com>
    alexcrichton and dicej authored Mar 8, 2024
    Configuration menu
    Copy the full SHA
    2f3421a View commit details
    Browse the repository at this point in the history
  3. Fix doc links

    alexcrichton committed Mar 8, 2024
    Configuration menu
    Copy the full SHA
    18a8d44 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    789c54b View commit details
    Browse the repository at this point in the history