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:
- funções seed exportadas ou confusão de nomes;
- funções de host importadas;
- JavaScript/browser cola;
- auxiliares de alocação de memória linear;
- propriedade
string,bytes, oushared_bytescruzar o limite do módulo; - Argumentos WASI, ambiente, arquivos, relógios, aleatoriedade, soquetes ou threads;
seed runou--rundireto através do Wasmtime;- WebAssembly artefatos de pacote ou reutilizáveis
.sdibibliotecas.
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.