Description
⚠️ 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:
- Immediately using the above algorithm to implement a deprecation warning in Spin 2.6 (Add deprecation warning for uncomponentizable modules #2571)
- Actually drop support for these modules when Spin Factors #2519 is merged, possibly motivating a major version bump to Spin 3.0