Crear y ejecutar módulos WASI
Compile código Rust con WASI como target y ejecute sus módulos WebAssembly en distintos runtimes de WASI.
Crear y ejecutar módulos WASI es una lección gratuita de WebAssembly (WASM) for High Performance Apps en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de WebAssembly (WASM) for High Performance Apps, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de WebAssembly (WASM) for High Performance Apps incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en 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.
Preguntas frecuentes
¿La lección «Crear y ejecutar módulos WASI» es gratis?
Sí — el texto completo de «Crear y ejecutar módulos WASI» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de WebAssembly (WASM) for High Performance Apps, actualiza a CoddyKit PRO. El curso de WebAssembly (WASM) for High Performance Apps incluye 4 lecciones en total.
¿Qué aprenderé en «Crear y ejecutar módulos WASI»?
Compile código Rust con WASI como target y ejecute sus módulos WebAssembly en distintos runtimes de WASI. Practicas WebAssembly (WASM) for High Performance Apps con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar WebAssembly (WASM) for High Performance Apps?
No se requiere experiencia previa. WebAssembly (WASM) for High Performance Apps en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Crear y ejecutar módulos WASI»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de WebAssembly (WASM) for High Performance Apps?
Sí. Cada lección de WebAssembly (WASM) for High Performance Apps incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Introducción a WASI y sus objetivos
- Crear y ejecutar módulos WASI
- Capacidades y futuro de WASI
- Trabajar con el sistema de archivos de WASI