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
rustupif you haven't already. - WASI Target: Add the specific WASI compilation target.
rustup install stable
rustup target add wasm32-wasiSetting 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-appOur 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-wasiThe 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.devfor your OS. - Run your module: Execute the
.wasmfile using thewasmtimecommand.
# 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.wasmWASI 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.wasmQuick 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-wasitarget. - We wrote Rust code that leverages WASI for system interactions.
- We compiled our code into a portable
.wasmmodule. - 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
- Introdução ao WASI e seus objetivos
- Criando e executando módulos WASI
- Recursos e futuro do WASI
- Trabalhando com o sistema de arquivos WASI