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

Keluaran pengkompil Emscripten 3.0 telah diterbitkan, membolehkan anda menyusun kod dalam C/C++ dan bahasa lain yang mana bahagian hadapan berasaskan LLVM tersedia ke dalam kod perantaraan peringkat rendah universal WebAssembly, untuk penyepaduan seterusnya dengan projek JavaScript, berjalan dalam penyemak imbas web dan gunakan dalam Node. js atau mencipta aplikasi berbilang platform berdiri sendiri yang berjalan menggunakan masa jalan wasm. Kod projek diedarkan di bawah lesen MIT. Pengkompil menggunakan pembangunan daripada projek LLVM, dan perpustakaan Binaryen digunakan untuk penjanaan dan pengoptimuman WebAssembly.

Matlamat utama projek Emscripten adalah untuk mencipta alat yang membolehkan anda melaksanakan kod di Web tanpa mengira bahasa pengaturcaraan di mana kod itu ditulis. Aplikasi yang disusun boleh menggunakan panggilan ke perpustakaan C dan C++ standard (libc, libcxx), sambungan C++, berbilang benang berasaskan pthread, API POSIX dan banyak perpustakaan multimedia. API untuk penyepaduan dengan API Web dan kod JavaScript disediakan secara berasingan.

Emscripten menyokong penyiaran output perpustakaan SDL2 melalui Kanvas, dan juga menyediakan sokongan untuk OpenGL dan EGL melalui WebGL, yang membolehkan anda menukar aplikasi grafik dan permainan kepada WebAssembly (contohnya, terdapat port kit alat Qt dan menyokong Unreal Engine 4 dan Enjin permainan Unit, enjin Bullet fizikal). Selain menyusun kod dalam C/C++, projek sedang dibangunkan secara berasingan untuk memastikan pelancaran jurubahasa dan mesin maya dalam pelayar untuk bahasa Lua, C#, Python, Ruby dan Perl. Anda juga boleh menggunakan bahagian hadapan bukan Clang pada LLVM, tersedia untuk bahasa seperti Swift, Rust, D dan Fortran.

Perubahan utama dalam Emscripten 3.0:

  • Pustaka musl C yang digunakan dalam emscripten telah dikemas kini kepada versi 1.2.2 (versi 2 telah digunakan dalam cawangan Emscripten 1.1.15.x).
  • Sebahagian daripada fungsi yang digunakan terutamanya dalam projek telah dialih keluar daripada perpustakaan parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralType unctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Dalam templat shell.html dan shell_minimal.html, output mesej ralat yang berlaku semasa operasi emscripten dan dikeluarkan oleh aplikasi melalui stderr ditukar secara lalai untuk menggunakan console.warn dan bukannya console.error.
  • Menambah keupayaan untuk menentukan pengekodan teks tertentu yang digunakan dalam nama fail. Pengekodan boleh ditentukan dalam bentuk akhiran apabila menghantar nama fail, contohnya, "a.rsp.utf-8" atau "a.rsp.cp1251").

Sumber: opennet.ru

Tambah komen