19 unstable releases (3 breaking)

new 0.5.11 Dec 2, 2024
0.5.10 Oct 8, 2024
0.5.9 Sep 30, 2024
0.5.6 Jul 31, 2024
0.1.5 Mar 29, 2024

#1106 in WebAssembly

Download history 7745/week @ 2024-08-12 7753/week @ 2024-08-19 7592/week @ 2024-08-26 7842/week @ 2024-09-02 8136/week @ 2024-09-09 7674/week @ 2024-09-16 8358/week @ 2024-09-23 7840/week @ 2024-09-30 8847/week @ 2024-10-07 8666/week @ 2024-10-14 8853/week @ 2024-10-21 9399/week @ 2024-10-28 9072/week @ 2024-11-04 10932/week @ 2024-11-11 11916/week @ 2024-11-18 12101/week @ 2024-11-25

45,333 downloads per month

Apache-2.0…

56KB
1K SLoC

wasm-component-ld

This crate contains a binary named wasm-component-ld which is a wrapper around two pieces of functionality used to produce a WebAssembly Component

  1. The wasm-ld linker driver provided by LLVM
  2. The wit_component::ComponentEncoder type

This binary will first invoke wasm-ld and then run the componentization process to produce a final component.

Installation

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.

Options

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.

License

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

Contribution

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.

Dependencies

~11–21MB
~315K SLoC