This crate contains a binary named wasm-component-ld
which is a wrapper around
two pieces of functionality used to produce a WebAssembly Component
- The
wasm-ld
linker driver provided by LLVM - The
wit_component::ComponentEncoder
type
This binary will first invoke wasm-ld
and then run the componentization
process to produce a final component.
This repository provides precompiled
binaries of
wasm-component-ld
. This repository can also be installed with cargo binstall
.
Installations of wasi-sdk have this binary packaged by default in the sysroot
and the Rust wasm32-wasip2
target, upon reaching tier 2, will also come
packaged with this binary included.
This means that while a version can be installed manually it should not be required to do so.
The wasm-component-ld
binary is suitable to use as a linker driver during
compilations. For Clang and Rust the wasm32-wasip2
target will automatically
invoke this binary as the linker.
This means that wasm-component-ld
forwards most of its arguments to wasm-ld
.
Additionally all flags of wasm-ld
are supported and forwarded to wasm-ld
.
For example you can invoke the linker like wasm-component-ld --max-memory=N ...
.
The wasm-component-ld
binary has a few custom arguments for itself as well
which are not forwarded to wasm-ld
and can be explored with -h
or --help
.
This project is triple licenced under the Apache 2/ Apache 2 with LLVM exceptions/ MIT licences. The reasoning for this is:
- Apache 2/ MIT is common in the rust ecosystem.
- Apache 2/ MIT is used in the rust standard library, and some of this code may be migrated there.
- Some of this code may be used in compiler output, and the Apache 2 with LLVM exceptions licence is useful for this.
For more details see
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache 2/ Apache 2 with LLVM exceptions/ MIT licenses, shall be licensed as above, without any additional terms or conditions.