Skip to content

Latest commit

 

History

History
45 lines (31 loc) · 2.14 KB

README.md

File metadata and controls

45 lines (31 loc) · 2.14 KB

Low-Cost Reference Type Shims For WASM Modules

Build Status License: MIT OR Apache-2.0

A reference type (aka externref or anyref) is an opaque reference made available to a WASM module by the host environment. Such references cannot be forged in the WASM code and can be associated with arbitrary host data, thus making them a good alternative to ad-hoc handles (e.g., numeric ones). References cannot be stored in WASM linear memory; they are confined to the stack and tables with externref elements.

Rust does not support reference types natively; there is no way to produce an import / export that has externref as an argument or a return type. wasm-bindgen patches WASM if externrefs are enabled. This library strives to accomplish the same goal for generic low-level WASM ABIs (wasm-bindgen is specialized for browser hosts).

Project overview

The project consists of the following crates:

Project status 🚧

Experimental; it may be the case that the processor produces invalid WASM in some corner cases (please report this as an issue if it does).

Contributing

All contributions are welcome! See the contributing guide to help you get involved.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

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