DLR-FT/wasm-interpreter

A minimal in-place WebAssembly interpreter, written in Rust, almost without use of external dependencies

Rust

83

660 commits

updated Oct 16, 2026

See the code

README

dlr-wasm-interpreter

Website  •  Features  •  Our Works  •  Resources

docs.rs code coverage

A minimal in-place interpreter for WebAssembly 2.0 bytecode (almost without) dependencies while being no_std.

Features

  • In-place interpretation: No intermediate representation, directly interprets WebAssembly bytecode. This allows for fast start-up times.
  • no_std support: The interpreter requires only Rust's core and alloc libraries allowing its use in various environments, such as bare-metal systems.
  • Minimal dependencies: The interpreter requires only one dependency: libm. log is also supported but disabled by default.
  • Compliance with specification: The interpreter passes all tests from the official WebAssembly testsuite, except for the unfinished proposal tests. See GlobalConfig in tests/specification/mod.rs for the default spec-test filter regex.
  • Returning host functions: The host system can provide functions for Wasm code to call. Contrary to other Wasm runtimes, host functions are not owned by the interpreter. Instead control flow is returned back to the user, when Wasm code calls a host function.
  • Fuel & resumable execution: A fuel mechanism is used to halt execution once fuel runs out. Then fuel can be refilled and execution resumed.
  • Shared Linear Memory (from Threads Proposal): Linear memories can be marked as shared, allowing them to be shared across multiple stores.

For information on other features, visit our requirements page.

Planned

  • C bindings: The interpreter can be used from C code.
  • Migratability: Wasm instances can be transferred between systems during their execution.
  • Threading: Support for the Threads Proposal is work-in-progress. Its shared linear memory is implemented already, however the atomic instructions are not. Furthermore, we are also interested in the Shared-Everything Threads Proposal.
  • Flexible Allocation API: Custom Allocators should be configurable. There is still some uncertainty, especially regarding the use of the Rust Allocator API.

Not planned

  • GC proposal

Getting Started

We provide various examples for how to use this interpreter. It is recommended to start with examples/function_invocation.rs. The crate's top-level documentation may provide general guidance as well.

Furthermore, the utility crates checked, interop, linker and registry exist. However, these lack documentation in comparison to the core crate.

Our Works

Click to show more information:

WebAssembly in Avionics: Decoupling Software from Hardware

Link (Open Access): https://elib.dlr.de/201323/

@INPROCEEDINGS{zaeske_wasm_2023,
  author={Zaeske, Wanja and Friedrich, Sven and Schubert, Tim and Durak, Umut},
  booktitle={2023 IEEE/AIAA 42nd Digital Avionics Systems Conference (DASC)},
  title={WebAssembly in Avionics: Decoupling Software from Hardware},
  year={2023},
  volume={},
  number={},
  pages={1-10},
  url={https://elib.dlr.de/201323/},
  keywords={Couplings;Virtual machine monitors;Full stack;Aerospace electronics;Webassembly;Software;Hardware;Virtual machines;Certification;Application programming interfaces;Avionics;Wasm;ARINC 653;Software},
  doi={10.1109/DASC58513.2023.10311207}
}
On the Design of a WebAssembly Interpreter for Safety Critical Avionics Applications

Link (Open Access): https://elib.dlr.de/219593

@INPROCEEDINGS{zaeske_wasm_2025,
  author={Zaeske, Wanja and Önem, A. Cem and Hartung, Florian and Durak, Umut},
  booktitle={2025 AIAA DATC/IEEE 44th Digital Avionics Systems Conference (DASC)},
  title={On the Design of a WebAssembly Interpreter for Safety Critical Avionics Applications},
  year={2025},
  volume={},
  number={},
  pages={1-10},
  url={https://elib.dlr.de/219593/},
  keywords={Codes;Instruction sets;Aerospace electronics;Webassembly;Software;Hardware;Safety;Space exploration;Certification;Standards;Avionics;Wasm;ED-12C/DO-178C;ED-217/DO-332},
  doi={10.1109/DASC66011.2025.11257180}
}

Resources

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Copyright © 2024-2026 Deutsches Zentrum für Luft- und Raumfahrt e.V. (DLR)
Copyright © 2024-2025 OxidOS Automotive SRL

interpreter
wasm

DLR-FT/wasm-interpreter

A minimal in-place WebAssembly interpreter, written in Rust, almost without use of external dependencies

Rust

83

660 commits

updated Oct 16, 2026

See the code

README

dlr-wasm-interpreter

Website  •  Features  •  Our Works  •  Resources

docs.rs code coverage

A minimal in-place interpreter for WebAssembly 2.0 bytecode (almost without) dependencies while being no_std.

Features

  • In-place interpretation: No intermediate representation, directly interprets WebAssembly bytecode. This allows for fast start-up times.
  • no_std support: The interpreter requires only Rust's core and alloc libraries allowing its use in various environments, such as bare-metal systems.
  • Minimal dependencies: The interpreter requires only one dependency: libm. log is also supported but disabled by default.
  • Compliance with specification: The interpreter passes all tests from the official WebAssembly testsuite, except for the unfinished proposal tests. See GlobalConfig in tests/specification/mod.rs for the default spec-test filter regex.
  • Returning host functions: The host system can provide functions for Wasm code to call. Contrary to other Wasm runtimes, host functions are not owned by the interpreter. Instead control flow is returned back to the user, when Wasm code calls a host function.
  • Fuel & resumable execution: A fuel mechanism is used to halt execution once fuel runs out. Then fuel can be refilled and execution resumed.
  • Shared Linear Memory (from Threads Proposal): Linear memories can be marked as shared, allowing them to be shared across multiple stores.

For information on other features, visit our requirements page.

Planned

  • C bindings: The interpreter can be used from C code.
  • Migratability: Wasm instances can be transferred between systems during their execution.
  • Threading: Support for the Threads Proposal is work-in-progress. Its shared linear memory is implemented already, however the atomic instructions are not. Furthermore, we are also interested in the Shared-Everything Threads Proposal.
  • Flexible Allocation API: Custom Allocators should be configurable. There is still some uncertainty, especially regarding the use of the Rust Allocator API.

Not planned

  • GC proposal

Getting Started

We provide various examples for how to use this interpreter. It is recommended to start with examples/function_invocation.rs. The crate's top-level documentation may provide general guidance as well.

Furthermore, the utility crates checked, interop, linker and registry exist. However, these lack documentation in comparison to the core crate.

Our Works

Click to show more information:

WebAssembly in Avionics: Decoupling Software from Hardware

Link (Open Access): https://elib.dlr.de/201323/

@INPROCEEDINGS{zaeske_wasm_2023,
  author={Zaeske, Wanja and Friedrich, Sven and Schubert, Tim and Durak, Umut},
  booktitle={2023 IEEE/AIAA 42nd Digital Avionics Systems Conference (DASC)},
  title={WebAssembly in Avionics: Decoupling Software from Hardware},
  year={2023},
  volume={},
  number={},
  pages={1-10},
  url={https://elib.dlr.de/201323/},
  keywords={Couplings;Virtual machine monitors;Full stack;Aerospace electronics;Webassembly;Software;Hardware;Virtual machines;Certification;Application programming interfaces;Avionics;Wasm;ARINC 653;Software},
  doi={10.1109/DASC58513.2023.10311207}
}
On the Design of a WebAssembly Interpreter for Safety Critical Avionics Applications

Link (Open Access): https://elib.dlr.de/219593

@INPROCEEDINGS{zaeske_wasm_2025,
  author={Zaeske, Wanja and Önem, A. Cem and Hartung, Florian and Durak, Umut},
  booktitle={2025 AIAA DATC/IEEE 44th Digital Avionics Systems Conference (DASC)},
  title={On the Design of a WebAssembly Interpreter for Safety Critical Avionics Applications},
  year={2025},
  volume={},
  number={},
  pages={1-10},
  url={https://elib.dlr.de/219593/},
  keywords={Codes;Instruction sets;Aerospace electronics;Webassembly;Software;Hardware;Safety;Space exploration;Certification;Standards;Avionics;Wasm;ED-12C/DO-178C;ED-217/DO-332},
  doi={10.1109/DASC66011.2025.11257180}
}

Resources

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Copyright © 2024-2026 Deutsches Zentrum für Luft- und Raumfahrt e.V. (DLR)
Copyright © 2024-2025 OxidOS Automotive SRL

interpreter
wasm

Significant stargazers

John Vandenberg

603 followers · starred Jul 2026

Yonggang Luo

61 followers · starred Nov 2024

Ron Evans

1,028 followers · starred Apr 2025

zerosnacks

334 followers · starred Jul 2026