Emscripten 3.0 tersedia, kompiler C/C++ ke WebAssembly

Rilis kompiler Emscripten 3.0 telah diterbitkan, memungkinkan Anda untuk mengkompilasi kode dalam C/C++ dan bahasa lain yang frontend berbasis LLVM tersedia ke dalam kode perantara tingkat rendah universal WebAssembly, untuk integrasi selanjutnya dengan proyek JavaScript, berjalan di browser web, dan digunakan di Node.js atau membuat aplikasi multi-platform yang berdiri sendiri yang dijalankan menggunakan wasm runtime. Kode proyek didistribusikan di bawah lisensi MIT. Kompiler menggunakan pengembangan dari proyek LLVM, dan perpustakaan Binaryen digunakan untuk pembuatan dan pengoptimalan WebAssembly.

Tujuan utama dari proyek Emscripten adalah untuk membuat alat yang memungkinkan Anda mengeksekusi kode di Web terlepas dari bahasa pemrograman di mana kode tersebut ditulis. Aplikasi yang dikompilasi dapat menggunakan panggilan ke pustaka C dan C++ standar (libc, libcxx), ekstensi C++, multithreading berbasis pthreads, API POSIX, dan banyak pustaka multimedia. API untuk integrasi dengan API Web dan kode JavaScript disediakan secara terpisah.

Emscripten mendukung penyiaran keluaran perpustakaan SDL2 melalui Canvas, dan juga menyediakan dukungan untuk OpenGL dan EGL melalui WebGL, yang memungkinkan Anda mengonversi aplikasi dan game grafis ke WebAssembly (misalnya, ada port dari toolkit Qt dan mendukung Unreal Engine 4 dan mesin permainan Unit, mesin Bullet fisik). Selain mengkompilasi kode dalam C/C++, proyek sedang dikembangkan secara terpisah untuk memastikan peluncuran interpreter dan mesin virtual di browser untuk bahasa Lua, C#, Python, Ruby dan Perl. Dimungkinkan juga untuk menerapkan frontend non-Clang ke LLVM, tersedia untuk bahasa seperti Swift, Rust, D, dan Fortran.

Perubahan besar di Emscripten 3.0:

  • Pustaka musl C yang digunakan di emscripten telah diperbarui ke versi 1.2.2 (versi 2 digunakan di cabang Emscripten 1.1.15.x).
  • Sebagian fungsi yang terutama digunakan dalam proyek telah dihapus dari perpustakaan parseTools.js: deletePointing,pointingLevels,removeAllPointing,isVoidType,isStructPointerType,isArrayType,isStructType,isVectorType,isStructuralType getStructuralTypeParts,getStructuralTypePartBits,isFunctionDef,isPossivelyFunctionType,isFunctionType,getReturnType , splitTokenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Dalam templat shell.html dan shell_minimal.html, keluaran pesan kesalahan yang terjadi selama pengoperasian emscripten dan dikeluarkan oleh aplikasi melalui stderr dialihkan secara default untuk menggunakan console.warn alih-alih console.error.
  • Menambahkan kemampuan untuk menentukan pengkodean teks tertentu yang digunakan dalam nama file. Pengkodean dapat ditentukan dalam bentuk sufiks saat meneruskan nama file, misalnya "a.rsp.utf-8" atau "a.rsp.cp1251").

Sumber: opennet.ru

Tambah komentar