WebAssembly y WASI

WebAssembly apoyo en el operativo LLVM El compilador es actualmente un objetivo de emisión de objetos, no una plataforma de aplicaciones alojada.

Nivel declarado actual

La matriz canónica Gate 14 declara wasm32-wasi en estos niveles:

Capacidad Estado
Análisis y comprobaciones semánticas. apoyado
LLVM Emisión de infrarrojos apoyado
Emisión de objetos apoyado
Bibliotecas seed estáticas o dinámicas no soportado
Executable/module enlace no soportado
Ejecución alojada no soportado
Servicios de tiempo de ejecución WASI no implementado
FFI, programador y artefactos de paquete no soportado

El humo objetivo más amplio del compilador también ejerce wasm32-freestanding IR y emisión de objetos. Ese humo no establece un navegador estable ABI, enlaces de JavaScript, tiempo de ejecución de comandos WASI ni contrato de módulo ejecutable.

Emitiendo un objeto

Utilice el compilador directo para la capacidad declarada actualmente:

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

LLVM IR se puede inspeccionar sin vincular:

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

Estos comandos sólo producen artefactos del compilador. Actualmente, el repositorio no promete que app.o pueda vincularse y ejecutarse como un comando WASI.

No definido actualmente

El compilador operativo aún no define un contrato WebAssembly estable para:

No reutilice las exportaciones de ayuda, las convenciones pointer/length ni los comandos de ejecución de la documentación del compilador reemplazado como comportamiento actual.

Requisitos de cierre

WebAssembly se convierte en un objetivo de aplicación solo cuando su fila de matriz declarada se expande y está respaldada por pruebas de vinculación, ejecución y servicios de tiempo de ejecución. ABI, propiedad en todo imports/exports, diagnósticos y artefactos de paquete. Hasta entonces, descríbalo precisamente como LLVM IR/object apoyo.

La fila de capacidad autorizada es seed/compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv; El trabajo planificado pertenece a seed/compiler/llvm/ROADMAP.md.