0Pricing
WebAssembly (WASM) for High Performance Apps · Aula

Criando e executando módulos WASI

Compile código Rust com destino WASI e execute seus módulos WebAssembly em vários ambientes de execução WASI.

Criando e executando módulos WASI é uma aula grátis de WebAssembly (WASM) for High Performance Apps no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de WebAssembly (WASM) for High Performance Apps, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de WebAssembly (WASM) for High Performance Apps inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

Building WASI Modules

Welcome back! In the previous lesson, we learned what WASI is and its goals. Now, let's get practical.

This lesson focuses on the hands-on process of compiling Rust code to target WASI and then executing your WebAssembly modules in various WASI runtimes.

Rust for WASI Development

Rust is a prime language for WASI development due to its performance, safety features, and strong support for WebAssembly. To get started, you'll need:

  • Rust Toolchain: Install it via rustup if you haven't already.
  • WASI Target: Add the specific WASI compilation target.
rustup install stable
rustup target add wasm32-wasi

Setting Up a WASI Project

We'll use Cargo, Rust's official package manager and build system, to create a new project. This sets up the basic directory structure.

cargo new my-wasi-app
cd my-wasi-app

Our First WASI Program

Let's write a simple Rust program. For WASI, basic I/O operations like printing to the console are handled through the WASI API. Open src/main.rs and add this code:

fn main() {
    println!("Hello from WASI!");
}

WASI's Role in I/O

When you use println! in a standard Rust program, it interacts directly with the operating system. For WASI, things are a bit different.

  • The WASM module is sandboxed.
  • println! calls are routed through the WASI API.
  • WASI provides a standardized interface for basic system functions like console output, file access, and environment variables.

Compiling to WASI

Now, let's compile our Rust code into a WebAssembly module specifically for the WASI target. This command tells Cargo to use the wasm32-wasi target we added earlier.

cargo build --target wasm32-wasi

The WASM Module Output

After successful compilation, you'll find your WASI WebAssembly module. It's a standalone binary file, ready for execution!

Look in the target/wasm32-wasi/debug/ directory for a file named my-wasi-app.wasm. This is your compiled WASI module.

Running with Wasmtime

To execute a WASI module, you need a WASI runtime. Wasmtime is a popular, high-performance runtime designed for this purpose.

  • Install Wasmtime: Follow instructions on wasmtime.dev for your OS.
  • Run your module: Execute the .wasm file using the wasmtime command.
# Install Wasmtime (example for Linux/macOS):
curl https://wasmtime.dev/install.sh -sSf | bash

# Run your compiled module:
wasmtime target/wasm32-wasi/debug/my-wasi-app.wasm

WASI File System Access

WASI allows controlled access to the host's file system. Let's modify our Rust program to read from a file. Remember, you'll need to explicitly grant Wasmtime permission to access files.

use std::fs;
use std::io::{self, Read};

fn main() -> io::Result<()> {
    let path = "input.txt";
    let mut file = fs::File::open(path)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    println!("File content: {}", contents);
    Ok(())
}

Running with File Access

After updating src/main.rs, compile again. Then, you'll need to create an input.txt file in your project root with some content. Finally, run it with Wasmtime, granting directory access:

# Create input.txt with content (e.g., "Hello WASI File!")
# Compile again:
cargo build --target wasm32-wasi

# Run, mapping current dir to WASI root:
wasmtime --mapdir /::. target/wasm32-wasi/debug/my-wasi-app.wasm

Quick Check

Let's test your understanding of building and running WASI modules.

Recap: Building & Running WASI

In this lesson, we explored the practical steps of building and running WebAssembly modules with WASI.

  • We set up our Rust environment for the wasm32-wasi target.
  • We wrote Rust code that leverages WASI for system interactions.
  • We compiled our code into a portable .wasm module.
  • We learned how to execute these modules using a WASI runtime like Wasmtime, including granting necessary permissions for host resource access.

Next, we'll delve deeper into WASI's capabilities and its implications for secure and portable applications.

Perguntas Frequentes

A aula “Criando e executando módulos WASI” é grátis?

Sim — o texto completo de “Criando e executando módulos WASI” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de WebAssembly (WASM) for High Performance Apps, atualize para CoddyKit PRO. O curso de WebAssembly (WASM) for High Performance Apps inclui 4 aulas no total.

O que vou aprender em “Criando e executando módulos WASI”?

Compile código Rust com destino WASI e execute seus módulos WebAssembly em vários ambientes de execução WASI. Você pratica WebAssembly (WASM) for High Performance Apps com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar WebAssembly (WASM) for High Performance Apps?

Nenhuma experiência prévia é necessária. WebAssembly (WASM) for High Performance Apps no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Criando e executando módulos WASI”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de WebAssembly (WASM) for High Performance Apps?

Sim. Cada aula de WebAssembly (WASM) for High Performance Apps inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Introdução ao WASI e seus objetivos
  2. Criando e executando módulos WASI
  3. Recursos e futuro do WASI
  4. Trabalhando com o sistema de arquivos WASI
← Voltar para WebAssembly (WASM) for High Performance Apps