Skip to content

Deprecate execution of "uncomponentizable" WAGI modules #2552

Description

@lann

⚠️ This deprecation process is complete with Spin 3.0. If you've come here from a Spin error message, the following may still be relevant to you:

My module has been deprecated! What can I do?

This deprecation most likely impacts you only if:

  • you are using the WAGI executor, and
  • you are not using wit-bindgen, and
  • you are using a module compiled with a version of clang < 15.0.7, indicating likely usage of wasi-sdk <19

If you have access to the relevant source code, updating wasi-sdk to at least version 19 can avoid this deprecation.

The Problem

Wasm modules compiled with old versions of wasi-sdk <18 have a bug that makes them incompatible with the wasi-preview1-adapter, which in turn means we cannot convert these modules into components. Maintaining support for executing these uncomponentizable modules represents a significant ongoing maintenance burden, but - as far as we can tell - has been used by very few users, especially recently.

Deprecation Details

We can heuristically detect these modules:

  • If a module exports cabi_realloc, it should be safe to componentize, regardless of the version of clang / wasi-sdk
  • If a module has a producers section indicating that it was compiled with clang < 15.0.7, it was probably compiled with a buggy version of wasi-sdk

Implementation of this deprecation would include:

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions