You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
# Creating `hello-world.wasm`
|
|
|
|
|
|
|
|
There are a number of ways to create `.wasm` files but for the purposes of this
|
|
|
|
tutorial, we'll be using the Rust toolchain. You can find more information on
|
|
|
|
creating `.wasm` files from other languages in the
|
|
|
|
[Writing WebAssembly section](./wasm.md).
|
|
|
|
|
|
|
|
To build WebAssembly binaries with Rust, you'll need the standard Rust toolchain.
|
|
|
|
|
|
|
|
[Follow these instructions to install `rustc`, `rustup` and `cargo`](https://www.rust-lang.org/tools/install)
|
|
|
|
|
|
|
|
Next, you should add WebAssembly as a build target for cargo like so:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
$ rustup target add wasm32-wasi
|
|
|
|
```
|
|
|
|
|
|
|
|
Finally, create a new Rust project called 'hello-world'. You can do this by running:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
$ cargo new hello-world
|
|
|
|
```
|
|
|
|
|
|
|
|
After that, the hello-world folder should look like this.
|
|
|
|
|
|
|
|
```text
|
|
|
|
hello-world/
|
|
|
|
├── Cargo.lock
|
|
|
|
├── Cargo.toml
|
|
|
|
└── src
|
|
|
|
└── main.rs
|
|
|
|
```
|
|
|
|
|
|
|
|
And the `main.rs` file inside the `src` folder should contain the following rust code.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
fn main() {
|
|
|
|
println!("Hello, world!");
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
Now, we can tell `cargo` to build a WebAssembly file:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
$ cargo build --target wasm32-wasi
|
|
|
|
```
|
|
|
|
|
|
|
|
Now, in the `target` folder, there's a `hello-world.wasm` file. You can find it here:
|
|
|
|
|
|
|
|
```text
|
|
|
|
hello-world/
|
|
|
|
├── Cargo.lock
|
|
|
|
├── Cargo.toml
|
|
|
|
├── src
|
|
|
|
└── target
|
|
|
|
└── ...
|
|
|
|
└── wasm32-wasi
|
|
|
|
└── debug
|
|
|
|
└── ...
|
|
|
|
└── hello-world.wasm
|
|
|
|
|
|
|
|
```
|