Skip to content

WASI: integrate ABI modules into reserved WASM modules #74

Closed

Description

@npmccallum

https://webassembly.github.io/spec/core/syntax/modules.html

WASM already provides the ability to do modules. WASI should tightly integrate with this rather than putting all the APIs in the default environment module. This would also allow us to version the ABIs.

A WASM application could define that it needs the core1, net2 and filesystem2 modules. The runtime can dynamically adapt to that behavior by loading the correct ABIs according to what the application specified. This allows WASI to make ABI changes. It also allows WASI to be deeply modular. It would be very nice to follow semver here.

Activity

  1. added
    wasi:apiIssues pertaining to the WASI API, not necessarily specific to Wasmtime.
    on Mar 27, 2019
  2. sunfishcode commented on Mar 28, 2019

    @sunfishcode
    Member

    WASI Core isn't in the default environment module; it's in the "wasi_unstable" module, which we intend to be temporary. In C header files, this is achieved via the __attribute__((import_module("wasi_unstable"))) mechanism. We can easily change which modules things are imported from once we decide how we want to organize things.

    Versioning is an interesting topic that will affect a lot of people in a lot of different ways, so I suggest we defer that discussion until we have a proper forum.

  3. sunfishcode commented on Dec 17, 2019

    @sunfishcode
    Member

    Modularization and versioning are implemented in the WASI repo.

  4. added 2 commits that reference this issue on May 12, 2023
  5. added a commit that references this issue on Jan 8, 2024
  6. added a commit that references this issue on Aug 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    wasi:apiIssues pertaining to the WASI API, not necessarily specific to Wasmtime.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions