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:
- funzioni seed esportate o modifica dei nomi;
- funzioni host importate;
- JavaScript/browser colla;
- aiutanti per l'allocazione della memoria lineare;
- posseduto
string,bytes, oshared_bytesattraversamento del confine del modulo; - Argomenti WASI, ambiente, file, orologi, casualità, socket o thread;
seed runo diretto--runtramite Wasmtime;- WebAssembly artefatti del pacchetto o riutilizzabili
.sdibiblioteche.
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.