WebAssembly et WASI
WebAssembly un accompagnement dans l'opérationnel LLVM Le compilateur est actuellement une cible d'émission d'objets, et non une plate-forme d'application hébergée.
Niveau déclaré actuel
La matrice canonique Gate 14 déclare wasm32-wasi à ces niveaux :
| Capacité | Statut |
|---|---|
| Analyse et vérifications sémantiques | pris en charge |
| LLVM Émission IR | pris en charge |
| Émission d'objet | pris en charge |
| Bibliothèques seed statiques ou dynamiques | non pris en charge |
| Executable/module enchaînement | non pris en charge |
| Exécution hébergée | non pris en charge |
| Services d'exécution WASI | non mis en œuvre |
| FFI, planificateur et artefacts de package | non pris en charge |
La fumée cible plus large du compilateur exerce également wasm32-freestanding Émission IR et objet. Cette fumée n'établit pas un navigateur stable ABI, liaisons JavaScript, exécution de commande WASI ou contrat de module exécutable.
Émettre un objet
Utilisez le compilateur direct pour la capacité actuellement déclarée :
seed/compiler/llvm/build/seed \
--target wasm32-wasi \
--emit-object app.o \
app.sd
LLVM IR peut être inspecté sans liaison :
seed/compiler/llvm/build/seed \
--target wasm32-wasi \
--emit-llvm app.ll \
app.sd
Ces commandes produisent uniquement des artefacts du compilateur. Le référentiel ne promet actuellement pas que app.o puisse être lié et exécuté en tant que commande WASI.
Non défini actuellement
Le compilateur opérationnel ne définit pas encore de contrat WebAssembly stable pour :
- fonctions seed exportées ou modification du nom ;
- fonctions hôtes importées ;
- JavaScript/browser colle;
- aides à l'allocation de mémoire linéaire ;
- possédé
string,bytes, oushared_bytesfranchir la limite du module ; - Arguments WASI, environnement, fichiers, horloges, caractère aléatoire, sockets ou threads ;
seed runou--rundirect via Wasmtime ;- WebAssembly artefacts de package ou réutilisables
.sdibibliothèques.
Ne réutilisez pas les exportations d'assistance, les conventions pointer/length ou les commandes d'exécution de la documentation du compilateur remplacée comme comportement actuel.
Exigences de fermeture
WebAssembly devient une cible d'application uniquement lorsque sa ligne matricielle déclarée est développée et soutenue par des tests de liaison, d'exécution, de services d'exécution, ABI, propriété à travers imports/exports, les diagnostics et les artefacts de package. En attendant, décrivez-le précisément comme LLVM IR/object soutien.
La ligne de capacité faisant autorité est seed/compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv; les travaux prévus appartiennent à seed/compiler/llvm/ROADMAP.md.