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 :

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.