Skip to content

Deprecate execution of "uncomponentizable" WAGI modules #2552

Closed
@lann

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:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions