Emscripten 3.0, uma cadeia de ferramentas de construção para WebAssembly usando LLVM

Faz pouco o lançamento da nova versão do compilador Emscripten 3.0 foi anunciado, que se caracteriza por permitir que o código seja compilado em C / C ++ e outras linguagens para as quais estão disponíveis front-ends baseados em LLVM, em um middleware universal de baixo nível WebAssembly.

A principal função desta compilação é a sua posterior integração com Projetos JavaScript, rodar em um navegador da web, usar em Node. Js ou crie aplicativos independentes de plataforma cruzada que são executados com o tempo de execução wasm.

Sobre a Emscripten

O objetivo principal desenvolvimento do projeto Emscripten é criar uma ferramenta que permite a você executar código na Web, independentemente da linguagem de programação em que está escrito.

Os aplicativos compilados podem usar chamadas de biblioteca C e C ++ padrão (libc, libcxx), extensões C ++, multithreading baseado em pthreads, API POSIX e muitas bibliotecas de multimídia. As APIs para integração com a API da web e o código JavaScript são fornecidas separadamente.

Inscrever-se suporta streaming de saída de biblioteca SDL2 via Canvase também fornece suporte a OpenGL e EGL por meio do WebGL, permitindo converter aplicativos gráficos e jogos em WebAssembly.

Praticamente qualquer base de código C ou C ++ portátil pode ser compilada em WebAssembly usando EmscriptenDesde jogos de alto desempenho que precisam renderizar gráficos, reproduzir sons e carregar e processar arquivos até estruturas de aplicativos como o Qt. Emscripten já foi usado para converter uma lista muito longa de bases de código do mundo real para WebAssembly, incluindo bases de código comerciais como Unreal Engine 4 e Unity Engine.

Além de compilar o código C / C ++, os projetos são desenvolvidos separadamente para garantir que os intérpretes e as máquinas virtuais para Lua, C #, Python, Ruby e Perl sejam iniciados nos navegadores. Também é possível aplicar interfaces não-Clang ao LLVM disponíveis para linguagens como Swift, Rust, D e Fortran.

Notavelmente existem diferenças entre o tempo de execução nativo e o Emscripten, o que significa que, em geral, eÉ necessário fazer algumas mudanças no código nativo. Dito isso, muitos aplicativos só precisarão mudar a maneira como definem seu loop principal e também modificar o manuseio de arquivos para acomodar as limitações do navegador / JavaScript.

Existem também limitações que podem facilitar a migração de alguns códigos - leia as Diretrizes de Portabilidade para determinar onde você pode precisar despender mais esforços.

Principais novos recursos do Emscripten 3.0

Nesta nova versão apresentada, a biblioteca musl C usada no emscripten foi atualizada para a versão 1.2.2 (a versão 1.1.15 foi usada no branch Emscripten 2.x).

Da biblioteca parseTools.js foi removida uma parte das funções, que são usadas principalmente no projeto: removePointing ,pointLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHex, IEEEUnHex, Compiletime.isPointerType, CompileType.isPointerType, CompileType.isPointerType, CompileType

Enquanto nos modelos shell.html e shell_minimal.html, a saída das mensagens de erro que ocorrem durante a operação emscripten e emitidos pelo aplicativo por meio de stderr ele é alterado por padrão para usar console.warn em vez de console.error.

Destaca-se também que adicionou a capacidade de especificar uma codificação de texto específica usada em nomes de arquivo. A codificação pode ser especificada como um sufixo ao passar o nome do arquivo, por exemplo "a.rsp.utf-8" ou "a.rsp.cp1251").

Por fim, se você estiver interessado em saber mais sobre o Emscripten, pode consultar os detalhes do projeto em seu website oficial.

E da mesma forma, você pode consultar a documentação na web sobre como usar o Emscripten, um site de referência que podemos recomendar é o site do desenvolvedor Mozilla: https://developer.mozilla.org.

Além disso, é importante mencionar que o código do projeto é distribuído sob a licença do MIT. O compilador usa os desenvolvimentos do projeto LLVM e a biblioteca Binaryen é usada para gerar WebAssembly e otimização. Você pode verificar o seu código fonte no GitHub.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.