Emscripten 3.0 está disponível, um compilador C/C++ para WebAssembly

Foi publicada a versão do compilador Emscripten 3.0, que permite compilar código em C/C++ e outras linguagens para as quais front-ends baseados em LLVM estão disponíveis em código intermediário universal de baixo nível WebAssembly, para posterior integração com projetos JavaScript, executando em um navegador da web e usar em Node.js ou criar aplicativos multiplataforma independentes que são executados usando o tempo de execução wasm. O código do projeto é distribuído sob a licença do MIT. O compilador usa desenvolvimentos do projeto LLVM, e a biblioteca Binaryen é usada para geração e otimização do WebAssembly.

O principal objetivo do projeto Emscripten é criar uma ferramenta que permita executar código na Web independentemente da linguagem de programação em que o código está escrito. Aplicativos compilados podem usar chamadas para bibliotecas C e C++ padrão (libc, libcxx), extensões C++, multithreading baseado em pthreads, APIs POSIX e muitas bibliotecas multimídia. APIs para integração com API Web e código JavaScript são fornecidas separadamente.

Emscripten suporta a transmissão da saída da biblioteca SDL2 via Canvas e também fornece suporte para OpenGL e EGL via WebGL, que permite converter aplicativos gráficos e jogos para WebAssembly (por exemplo, há uma porta do kit de ferramentas Qt e suporta Unreal Engine 4 e motores de jogo Unit, motor Bullet físico). Além de compilar código em C/C++, projetos estão sendo desenvolvidos separadamente para permitir que interpretadores e máquinas virtuais rodem em navegadores para as linguagens Lua, C#, Python, Ruby e Perl. Também é possível aplicar frontends não Clang ao LLVM, disponíveis para linguagens como Swift, Rust, D e Fortran.

Principais mudanças no Emscripten 3.0:

  • A biblioteca musl C usada no emscripten foi atualizada para a versão 1.2.2 (a versão 2 foi usada no branch Emscripten 1.1.15.x).
  • Uma parte das funções que foram usadas principalmente no projeto foram removidas da biblioteca parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFunctionDef, isPossablyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Nos modelos shell.html e shell_minimal.html, a saída de mensagens de erro que ocorrem durante a operação do emscripten e são emitidas pelo aplicativo via stderr é alternada por padrão para usar console.warn em vez de console.error.
  • Adicionada a capacidade de especificar uma codificação de texto específica usada em nomes de arquivos. A codificação pode ser especificada na forma de um sufixo ao passar o nome do arquivo, por exemplo, "a.rsp.utf-8" ou "a.rsp.cp1251").

Fonte: opennet.ru

Adicionar um comentário