Skip to content

DLR-FT/wasm-interpreter

Repository files navigation

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.

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. The Shared-Everything Threads Proposal is also of interest.
  • 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

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

About

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

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

73 stars

Watchers

2 watching

Forks

Contributors

Languages