WebAssembly (WASM) til applikationer med høj ydeevne · Lektion

Opbygning og kørsel af WASI-moduler

Kompilér Rust-kode til WASI, og kør dine WebAssembly-moduler i forskellige WASI-runtimes.

Lektion 2 af 412 trin

Opbygning og kørsel af WASI-moduler er en gratis WebAssembly (WASM) til applikationer med høj ydeevne-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i WebAssembly (WASM) til applikationer med høj ydeevne, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. WebAssembly (WASM) til applikationer med høj ydeevne-kurset indeholder 4 lektioner i alt.

Opbygning af WASI-moduler

Velkommen tilbage! I den forrige lektion lærte vi, hvad WASI er, og hvilke mål teknologien har. Nu skal vi arbejde praktisk.

I denne lektion fokuserer vi på den praktiske proces med at kompilere Rust-kode til WASI og derefter køre dine WebAssembly-moduler i forskellige WASI-runtimes.

Rust til WASI-udvikling

Rust er et oplagt sprog til WASI-udvikling på grund af dets ydeevne, sikkerhedsfunktioner og stærke understøttelse af WebAssembly. For at komme i gang skal du bruge:

  • Rust-værktøjskæden: Installer den via rustup, hvis du ikke allerede har gjort det.
  • WASI-mål: Tilføj det specifikke kompileringsmål til WASI.
rustup install stable
rustup target add wasm32-wasi

Opsætning af et WASI-projekt

Vi bruger Cargo, Rust's officielle pakkehåndtering og byggesystem, til at oprette et nyt projekt. Det opretter den grundlæggende mappestruktur.

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

Vores første WASI-program

Lad os skrive et enkelt Rust-program. I WASI håndteres grundlæggende I/O-operationer som udskrivning til konsollen via WASI-API'et. Åbn src/main.rs, og tilføj denne kode:

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

WASI's rolle i I/O

Når du bruger println! i et almindeligt Rust-program, interagerer det direkte med operativsystemet. I WASI er det lidt anderledes.

  • WASM-modulet kører i en sandbox.
  • Kald til println! dirigeres gennem WASI-API'et.
  • WASI leverer en standardiseret grænseflade til grundlæggende systemfunktioner som konsoloutput, filadgang og miljøvariabler.

Kompilering til WASI

Nu kompilerer vi vores Rust-kode til et WebAssembly-modul specifikt til WASI-målet. Denne kommando beder Cargo om at bruge målet wasm32-wasi, som vi tilføjede tidligere.

cargo build --target wasm32-wasi

WASM-modulets output

Efter en vellykket kompilering finder du dit WASI-WebAssembly-modul. Det er en selvstændig binær fil, der er klar til at blive kørt!

Se i mappen target/wasm32-wasi/debug/ efter en fil med navnet my-wasi-app.wasm. Dette er dit kompilerede WASI-modul.

Kørsel med Wasmtime

For at køre et WASI-modul skal du bruge en WASI-runtime. Wasmtime er en populær runtime med høj ydeevne, der er udviklet til dette formål.

  • Installer Wasmtime: Følg vejledningen på wasmtime.dev til dit operativsystem.
  • Kør dit modul: Kør filen .wasm ved hjælp af kommandoen wasmtime.
# 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

Adgang til WASI-filsystemet

WASI tillader kontrolleret adgang til værtens filsystem. Lad os ændre vores Rust-program, så det læser fra en fil. Husk, at du udtrykkeligt skal give Wasmtime tilladelse til at tilgå filer.

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(())
}

Kørsel med filadgang

Efter at have opdateret src/main.rs skal du kompilere igen. Derefter skal du oprette en input.txt-fil i projektets rodmappe med noget indhold. Til sidst kører du den med Wasmtime og giver adgang til mappen:

# 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

Hurtigt tjek

Lad os teste din forståelse af, hvordan man opbygger og kører WASI-moduler.

Opsamling: Opbygning og kørsel af WASI

I denne lektion gennemgik vi de praktiske trin til at opbygge og køre WebAssembly-moduler med WASI.

  • Vi opsatte vores Rust-miljø til målet wasm32-wasi.
  • Vi skrev Rust-kode, der bruger WASI til systeminteraktioner.
  • Vi kompilerede vores kode til et portabelt .wasm-modul.
  • Vi lærte, hvordan man kører disse moduler ved hjælp af en WASI-runtime som Wasmtime, herunder hvordan man giver de nødvendige tilladelser til adgang til værtens ressourcer.

Dernæst går vi mere i dybden med WASI's funktioner og betydningen for sikre og portable programmer.

Gratis at komme i gang

Lær WebAssembly (WASM) til applikationer med høj ydeevne med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Opbygning og kørsel af WASI-moduler” gratis?

Ja — hele teksten til “Opbygning og kørsel af WASI-moduler” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af WebAssembly (WASM) til applikationer med høj ydeevne-kurset, skal du opgradere til CoddyKit PRO. WebAssembly (WASM) til applikationer med høj ydeevne-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Opbygning og kørsel af WASI-moduler”?

Kompilér Rust-kode til WASI, og kør dine WebAssembly-moduler i forskellige WASI-runtimes. Du øver dig i WebAssembly (WASM) til applikationer med høj ydeevne med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på WebAssembly (WASM) til applikationer med høj ydeevne?

Der kræves ingen tidligere erfaring. WebAssembly (WASM) til applikationer med høj ydeevne på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Opbygning og kørsel af WASI-moduler”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne WebAssembly (WASM) til applikationer med høj ydeevne-lektion?

Ja. Alle WebAssembly (WASM) til applikationer med høj ydeevne-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Introduktion til WASI og målene med det
  2. Opbygning og kørsel af WASI-moduler
  3. WASI-funktioner og fremtid
  4. Arbejde med WASI-filsystemet
← Tilbage til WebAssembly (WASM) til applikationer med høj ydeevne