Stream: wasmtime

Topic: Cranelift support on `riscv32imac-unknown-none-elf`


view this post on Zulip Antoine Lavandier (Nov 05 2025 at 10:24):

The Tiers of Support page of Wasmtime's documentation lists riscv32imac-unknown-none-elfas a tier 3 platform. However, trying to use that target with config.target("riscv32imac-unknown-none-elf") errors with "Support for this target has not been implemented yet". Am I misunderstanding the support tiers ? Or was that support dropped at some point ?

view this post on Zulip bjorn3 (Nov 05 2025 at 12:52):

You have to use config.target("pulley32") I think. Might also need to explicitly enable the pulley cargo feature.

view this post on Zulip bjorn3 (Nov 05 2025 at 12:53):

Cranelift doesn't have a riscv32 backend, so you have to use the pulley backend instead which emits bytecode that wasmtime can run through an interpreter.

view this post on Zulip Antoine Lavandier (Nov 05 2025 at 13:06):

Ah then I misunderstood the documentation. Is there somewhere that breakdowns the architecture support between Cranelift/Winch/Pulley ?

view this post on Zulip Antoine Lavandier (Nov 05 2025 at 13:09):

Also follow-up question, is it reasonable to expect that any 32/64 bit target reasonably supported by rustc would be supported by wasmtime through Pulley or do that require some specific work on Pulley itself ?

view this post on Zulip bjorn3 (Nov 05 2025 at 14:35):

Pulley should be able to support every target, but if you need the async feature, I believe wasmtime-fiber does still need architecture specific code. Winch only supports x86_64 and arm64. Cranelift supports x86_64, arm64, riscv64 and s390x (ibm system-z)

view this post on Zulip Alex Crichton (Nov 05 2025 at 14:58):

Compiler architecture support is here, and Pulley is listed separately because bjorn3 is right, Pulley should support any architecture that Rust can be compiled to

view this post on Zulip Antoine Lavandier (Nov 05 2025 at 15:23):

Thanks for the responses, I must say that I'm not sure how useful it is to list architecture that are supported by default through Pulley. The current structure of the table made me think that riscv32imac was "more supported" than say thumbv7em-none-eabihf when this is not the case

view this post on Zulip Alex Crichton (Nov 05 2025 at 16:00):

Our listing of tier 3 targets is more-or-less what we do in CI currently. We can't really just take every rust target that exists and list it in tier 3 in a sense... Do you think though it would help to have more words about missing targets? For example say that if a target is missing it doesn't mean that it's unsupported it just means that we're not building it in CI?

view this post on Zulip Antoine Lavandier (Nov 05 2025 at 16:22):

I don't really know, I think that an idea could be to change the tier structure be by compilers so you have Tier1, 2 3 for Cranelift, Tier 1, 2, 3 for Winch and for Pulley instead of tiers you just say that as pure rust code, it's expected to work on every target supported by rustc but that the only targets tested in CI are X, Y, Z etc. (probably as a table)

view this post on Zulip Alex Crichton (Nov 05 2025 at 18:07):

True yeah! I know I've found it pretty difficult to succinctly and accurately describe the various support for various features in Wasmtime over time...


Last updated: Dec 06 2025 at 06:05 UTC