BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Usando Mono para compilar C# para WebAssembly

Usando Mono para compilar C# para WebAssembly

Favoritos

Dado que todos os principais navegadores da Web possuem agora suporte para WebAssembly, os desenvolvedores podem procurar por uma nova plataforma para a qual possam segmentar suas aplicações. A cadeia de ferramentas padrão fornecida pelo grupo WebAssembly compila C/C++ para WebAssembly, o que não possibilita que os desenvolvedores possam usar outras linguagens. Felizmente para os programadores C#, o Projeto Mono está trabalhando em duas abordagens diferentes para suportar o WebAssembly.

A primeira abordagem utiliza o interpretador Mono IL para executar código gerenciado (como C#) em tempo de execução. O objetivo desta abordagem é apoiar a prototipagem e desenvolvimento rápidos. Este segundo método seria melhor usado quando um aplicativo estiver pronto para ser entregue ao cliente, usando compilação estática para produzir um arquivo WASM para execução nativa por um navegador que suporte WebAssembly.

Para criar esses arquivos WASM, o projeto Mono introduziu uma nova ferramenta, o mono-wasm, que utiliza entradas C# e gera bitcode LLVM para ser usado com o backend do LLVM WebAssembly. O arquivo WASM resultante do mono-wasm inclui todas as dependências necessárias para a execução do programa em C#, incluindo mscorlib.dll, biblioteca C e o Mono Runtime. Uma vez que o vinculador LLVM recentemente adicionou suporte para WebAssembly, então o mono-wasm suporta compilação incremental. Isso reduz consideravelmente o tempo de compilação, pois o código que não muda (mscorlib.dll, Mono runtime, etc.) não precisa ser recompilado ao desenvolver sua aplicação.

Muito trabalho já foi realizado pelo projeto, mas o desenvolvedor primário Laurent Sansonetti ressalta que ainda está em uma versão pré-alfa. Na sequência, os objetivos proeminentes incluem a fixação do garbage collector e a preparação de uma versão alpha formal. A longo prazo, o projeto procurará diminuir o tamanho dos executáveis do WASM (o exemplo de "Hello World!" é de 10 megabytes), atualizando o compilador Mono para que ele possa segmentar o WASM32 diretamente e melhorar a interoperabilidade entre C# e JavaScript.

Embora este projeto esteja em desenvolvimento ativo, desenvolvedores curiosos ou aqueles que procuram contribuir podem encontrar o código atual do projeto no GitHub.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT