Emscripten 3.0, C/C++ dan WebAssembly kompilyatori mavjud

Emscripten 3.0 kompilyatorining relizi chop etildi, bu sizga kodni C/C++ va LLVM-ga asoslangan frontendlari mavjud bo'lgan boshqa tillarda JavaScript loyihalari bilan keyingi integratsiyalashuv uchun WebAssembly universal past darajadagi oraliq kodiga kompilyatsiya qilish imkonini beradi. veb-brauzerda va Node.js da foydalaning yoki wasm ish vaqti yordamida ishlaydigan mustaqil ko'p platformali ilovalarni yarating. Loyiha kodi MIT litsenziyasi ostida tarqatiladi. Kompilyator LLVM loyihasidagi ishlanmalardan foydalanadi va Binaryen kutubxonasi WebAssembly va optimallashtirishni yaratish uchun ishlatiladi.

Emscripten loyihasining asosiy maqsadi kod qaysi dasturlash tilida yozilganidan qat’iy nazar Internetda kodni bajarish imkonini beruvchi vositani yaratishdir. Kompilyatsiya qilingan ilovalar standart C va C++ kutubxonalariga (libc, libcxx), C++ kengaytmalariga, pthreads-ga asoslangan multithreading, POSIX API’lariga va ko‘plab multimedia kutubxonalariga qo‘ng‘iroqlardan foydalanishi mumkin. Web API va JavaScript kodi bilan integratsiyalash uchun API'lar alohida taqdim etiladi.

Emscripten Canvas orqali SDL2 kutubxonasi chiqishini translyatsiya qilishni qo'llab-quvvatlaydi, shuningdek, WebGL orqali OpenGL va EGL-ni qo'llab-quvvatlaydi, bu sizga grafik ilovalar va o'yinlarni WebAssembly-ga aylantirish imkonini beradi (masalan, Qt asboblar to'plamining porti mavjud va Unreal Engine-ni qo'llab-quvvatlaydi. 4 va Unit o'yin dvigatellari, jismoniy Bullet dvigateli). C/C++ da kodni kompilyatsiya qilishdan tashqari, Lua, C#, Python, Ruby va Perl tillari uchun brauzerlarda tarjimonlar va virtual mashinalarni ishga tushirishni ta'minlash uchun loyihalar alohida ishlab chiqilmoqda. LLVM-ga Swift, Rust, D va Fortran kabi tillar uchun mavjud bo'lgan Clang bo'lmagan frontendlarni qo'llash ham mumkin.

Emscripten 3.0 dagi asosiy o'zgarishlar:

  • Emscripten-da ishlatiladigan musl C kutubxonasi 1.2.2 versiyasiga yangilandi (versiya 2 Emscripten 1.1.15.x filialida ishlatilgan).
  • Asosan loyihada foydalanilgan funksiyalarning bir qismi parseTools.js kutubxonasidan olib tashlandi: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType, isStructuralSperugety, artBits, isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Shell.html va shell_minimal.html shablonlarida emscripten ning ishlashi davomida yuzaga keladigan va dastur tomonidan stderr orqali chiqariladigan xato xabarlarining chiqishi sukut bo'yicha console.error o'rniga console.warn dan foydalanishga o'tkaziladi.
  • Fayl nomlarida ishlatiladigan ma'lum bir matn kodlashni belgilash imkoniyati qo'shildi. Kodlash fayl nomini o'tkazishda qo'shimcha shaklida ko'rsatilishi mumkin, masalan, "a.rsp.utf-8" yoki "a.rsp.cp1251").

Manba: opennet.ru

a Izoh qo'shish