WebAssembly e WASI

WebAssembly apoio na operação LLVM o compilador é atualmente um alvo de emissão de objetos, não uma plataforma de aplicativo hospedada.

Nível declarado atual

A matriz canônica Gate 14 declara wasm32-wasi nestes níveis:

Capacidade Estado
Análise e verificações semânticas suportado
LLVM Emissão infravermelha suportado
Emissão de objetos suportado
Bibliotecas seed estáticas ou dinâmicas não suportado
Executable/module vinculando não suportado
Execução hospedada não suportado
Serviços de tempo de execução WASI não implementado
FFI, agendador e artefatos de pacote não suportado

A fumaça alvo mais ampla do compilador também exerce wasm32-freestanding IR e emissão de objetos. Essa fumaça não estabelece um navegador estável ABI, ligações JavaScript, tempo de execução de comando WASI ou contrato de módulo executável.

Emitindo um objeto

Use o compilador direto para o recurso atualmente declarado:

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

LLVM IR pode ser inspecionado sem vinculação:

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

Esses comandos produzem apenas artefatos do compilador. O repositório atualmente não promete que app.o possa ser vinculado e executado como um comando WASI.

Atualmente não definido

O compilador operacional ainda não define um contrato WebAssembly estável para:

Não reutilize exportações auxiliares, convenções pointer/length ou comandos do executor da documentação do compilador substituída como comportamento atual.

Requisitos de fechamento

WebAssembly torna-se um alvo de aplicação somente quando sua linha de matriz declarada é expandida e apoiada por testes de vinculação, execução, serviços de tempo de execução, ABI, propriedade em imports/exports, diagnósticos e artefatos de pacote. Até então, descreva-o precisamente como LLVM IR/object suporte.

A linha de capacidade oficial é seed/compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv; o trabalho planejado pertence a seed/compiler/llvm/ROADMAP.md.