WebAssembly e WASI

WebAssembly supporto in ambito operativo LLVM il compilatore è attualmente un target di emissione di oggetti, non una piattaforma applicativa ospitata.

Livello attuale dichiarato

La matrice canonica Gate 14 dichiara wasm32-wasi a questi livelli:

Capacità Stato
Parse e controlli semantici supportato
LLVM Emissione IR supportato
Emissione di oggetti supportato
Librerie seed statiche o dinamiche non supportato
Executable/module collegamento non supportato
Esecuzione ospitata non supportato
Servizi di runtime WASI non implementato
FFI, scheduler e artefatti del pacchetto non supportato

Anche il fumo target più ampio del compilatore esercita wasm32-freestanding IR ed emissione di oggetti. Quel fumo non stabilisce un browser stabile ABI, collegamenti JavaScript, runtime dei comandi WASI o contratto del modulo eseguibile.

Emettere un oggetto

Utilizza il compilatore diretto per la funzionalità attualmente dichiarata:

seed/compiler/llvm/build/seed \
  --target wasm32-wasi \
  --emit-object app.o \
  app.sd

LLVM IR può essere ispezionato senza collegamento:

seed/compiler/llvm/build/seed \
  --target wasm32-wasi \
  --emit-llvm app.ll \
  app.sd

Questi comandi producono solo artefatti del compilatore. Il repository attualmente non promette che app.o possa essere collegato ed eseguito come comando WASI.

Al momento non definito

Il compilatore operativo non definisce ancora un contratto stabile WebAssembly per:

Non riutilizzare le esportazioni dell'helper, le convenzioni pointer/length o i comandi runner dalla documentazione del compilatore sostituita come comportamento corrente.

Obblighi di chiusura

WebAssembly diventa un target dell'applicazione solo quando la riga della matrice dichiarata viene espansa e supportata da test per il collegamento, l'esecuzione, i servizi di runtime, ABI, proprietà attraverso imports/exports, diagnostica e artefatti del pacchetto. Fino ad allora, descrivilo esattamente come LLVM IR/object supporto.

La riga della capacità autorevole è seed/compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv; il lavoro pianificato appartiene a seed/compiler/llvm/ROADMAP.md.