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

È stato pubblicato il rilascio del compilatore Emscripten 3.0, che consente di compilare codice in C/C++ e altri linguaggi per i quali esistono frontend basati su LLVM, in un codice intermedio universale a basso livello WebAssembly, per successiva integrazione con progetti JavaScript, esecuzione nel browser web, utilizzo in Node.js o creazione di applicazioni multipiattaforma autonome, eseguite tramite wasm runtime. Il codice del progetto è distribuito con licenza MIT. Il compilatore utilizza le infrastrutture del progetto LLVM, e per la generazione di WebAssembly e l'ottimizzazione viene utilizzata la libreria Binaryen.

L'obiettivo principale dello sviluppo del progetto Emscripten è creare uno strumento che consenta l'esecuzione di codice Web indipendentemente dal linguaggio di programmazione in cui è scritto. Nelle applicazioni compilate è possibile utilizzare le chiamate alle librerie standard C e C++ (libc, libcxx), estensioni C++, multithreading basato su pthreads, API POSIX e molte librerie multimediali. Vengono forniti separatamente API per l'integrazione con API Web e codice JavaScript.

Emscripten supporta la traduzione dell'output della libreria SDL2 attraverso il Canvas e offre supporto OpenGL ed EGL tramite WebGL, consentendo la conversione in WebAssembly di applicazioni e giochi grafici (ad esempio, è disponibile un porting del toolkit Qt e sono supportati i motori di gioco Unreal Engine 4 e Unity, il motore fisico Bullet). Oltre alla compilazione del codice C/C++, sono in sviluppo progetti separati per garantire l'esecuzione nel browser di interpreti e di macchine virtuali per linguaggi come Lua, C#, Python, Ruby e Perl. È anche possibile utilizzare frontend diversi da Clang per LLVM, disponibili per linguaggi come Swift, Rust, D e Fortran.

Le principali novità di Emscripten 3.0:

  • La libreria C usata in emscripten, musl, è stata aggiornata alla versione 1.2.2 (nella branch Emscripten 2.x era utilizzata la versione 1.1.15).
  • Dal codice sorgente di parseTools.js è stata rimossa una serie di funzioni che venivano utilizzate principalmente all'interno del progetto: removePointing, pointingLevels, removeAllPointing, 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'emissione di messaggi di errore generati durante l'esecuzione di emscripten e forniti dall'applicazione tramite stderr è di default commutata per utilizzare console.warn anziché console.error.
  • È stata aggiunta la possibilità di specificare una codifica testuale particolare da utilizzare nei nomi dei file. La codifica può essere definita sotto forma di suffisso durante la trasmissione del nome del file, ad esempio, «a.rsp.utf-8» o «a.rsp.cp1251».

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster