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

Stabilize WebAssembly multivalue, reference-types, and tail-call target features #131080

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Oct 11, 2024

  1. Stabilize WebAssembly multivalue, reference-types, and `tail-call…

    …` target features
    
    For the `multivalue` and `reference-types` features this commit is
    similar to rust-lang#117457 in that it's stabilizing target features specific to
    WebAssembly targets. The previous PR left out these two features because
    they weren't expected to change much about compiled code so it was
    unclear what the rationale was. It has [since been discovered][blog]
    that `reference-types` can be useful as it changes the binary format of
    the `call_indirect` instruction. Additionally [on Zulip][zulip] there's
    a use case of detecting these features at compile time and generating a
    compile error to better warn users about features not supported on
    engines.
    
    This PR then additionally adds the `tail-call` feature which corresponds
    to the [tail-call] proposal to WebAssembly. This feature advanced to
    "phase 4" in the WebAssembly CG awhile back and has been supported in
    LLVM for quite some time now. Engines are finishing up implementations
    or have already shipped implementations, so while this is a bit of a
    late addition to Rust itself it reflects the current status of
    WebAssembly's state of the feature.
    
    A test has been added here not only for these features but other
    WebAssembly features as well to showcase that they're usable without
    feature gates in stable Rust.
    
    [blog]: https://blog.rust-lang.org/2024/09/24/webassembly-targets-change-in-default-target-features.html
    [zulip]: https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/wasm32.20reference-types.20.2F.20multivalue.20in.201.2E82-beta.20not.20enabled/near/473893987
    [tail-call]: https://github.com/webassembly/tail-call
    alexcrichton committed Oct 11, 2024
    Configuration menu
    Copy the full SHA
    ee1a547 View commit details
    Browse the repository at this point in the history