È disponibile Emscripten 3.0, un compilatore da C/C++ a WebAssembly

È stato pubblicato il rilascio del compilatore Emscripten 3.0 che permette di compilare codice in C/C++ e altri linguaggi per i quali sono disponibili frontend basati su LLVM in codice intermedio universale di basso livello WebAssembly, per la successiva integrazione con progetti JavaScript, eseguendo in un browser Web e utilizzarlo in Node.js o creare applicazioni multipiattaforma autonome eseguite utilizzando wasm runtime. Il codice del progetto è distribuito sotto la licenza MIT. Il compilatore utilizza gli sviluppi del progetto LLVM e la libreria Binaryen viene utilizzata per la generazione e l'ottimizzazione di WebAssembly.

L'obiettivo principale del progetto Emscripten è creare uno strumento che permetta di eseguire codice sul Web indipendentemente dal linguaggio di programmazione in cui il codice è scritto. Le applicazioni compilate possono utilizzare chiamate a librerie C e C++ standard (libc, libcxx), estensioni C++, multithreading basato su pthreads, API POSIX e molte librerie multimediali. Le API per l'integrazione con l'API Web e il codice JavaScript vengono fornite separatamente.

Emscripten supporta la trasmissione dell'output della libreria SDL2 tramite Canvas e fornisce anche supporto per OpenGL ed EGL tramite WebGL, che consente di convertire applicazioni grafiche e giochi in WebAssembly (ad esempio, esiste un port del toolkit Qt e supporta Unreal Engine 4 e motori di gioco Unit, motore Bullet fisico). Oltre alla compilazione del codice in C/C++, vengono sviluppati progetti separati per garantire il lancio di interpreti e macchine virtuali nei browser per i linguaggi Lua, C#, Python, Ruby e Perl. È anche possibile applicare frontend non Clang a LLVM, disponibili per linguaggi come Swift, Rust, D e Fortran.

Principali modifiche in Emscripten 3.0:

  • La libreria C musl utilizzata in emscripten è stata aggiornata alla versione 1.2.2 (la versione 2 è stata utilizzata nel ramo Emscripten 1.1.15.x).
  • Una parte delle funzioni che venivano utilizzate principalmente all'interno del progetto sono state rimosse dalla libreria parseTools.js: deletePointing, pointingLevels, deleteAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Nei modelli shell.html e shell_minimal.html, l'output dei messaggi di errore che si verificano durante l'operazione di emscripten e vengono emessi dall'applicazione tramite stderr viene impostato per impostazione predefinita in modo da utilizzare console.warn invece di console.error.
  • Aggiunta la possibilità di specificare una codifica di testo specifica utilizzata nei nomi dei file. La codifica può essere specificata sotto forma di suffisso quando si passa il nome del file, ad esempio "a.rsp.utf-8" o "a.rsp.cp1251").

Fonte: opennet.ru

Aggiungi un commento