Доступний Emscripten 3.0, компілятор з C/C++ WebAssembly

Опубліковано випуск компілятора Emscripten 3.0, що дозволяє компілювати код C/C++ та іншими мовами, для яких є фронтенди на базі LLVM, універсальний низькорівневий проміжний код WebAssembly, для подальшої інтеграції з JavaScript-проектами, запуску в web-браузері, використання в Node. js або створення відокремлених багатоплатформних додатків, що запускаються за допомогою wasm runtime. Код проекту розповсюджується під ліцензією MIT. У компіляторі використовуються напрацювання проекту LLVM, а для генерації WebAssembly та оптимізації задіяна бібліотека Binaryen.

Основною метою розвитку проекту Emscripten є створення інструменту, що дозволяє виконувати Web код незалежно від мови програмування, на якому даний код написаний. У додатках, що компілюються, можуть використовуватися виклики стандартних бібліотек C і С++ (libc, libcxx), розширення C++, багатопоточність на базі pthreads, API POSIX і багато мультимедійних бібліотек. Окремо надаються API для інтеграції з Web API та кодом JavaScript.

Emscripten підтримує трансляцію виведення бібліотеки SDL2 через Canvas, а також надає підтримку OpenGL і EGL через WebGL, що дозволяє перетворювати на WebAssembly в тому числі і графічні програми та ігри (наприклад, є порт тулкіта Qt і підтримуються ігрові двигуни Unreal Engine 4 і Unit, фізичний двигун Bullet). Крім компіляції коду на C/C++ окремо розвиваються проекти забезпечення запуску в браузерах інтерпретаторів і віртуальних машин для мов Lua, C#, Python, Ruby і Perl. Також можливе застосування відмінних від Clang фронтендів до LLVM, доступних для таких мов як Swift, Rust, D і Fortran.

Основні зміни в Emscripten 3.0:

  • Задіяна в emscripten Бібліотека musl оновлена ​​до версії 1.2.2 (у гілці Emscripten 2.x використовувалася версія 1.1.15).
  • З бібліотеки parseTools.js видалена порція функцій, які в основному використовувалися всередині проекту: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, isStructuralType getStructuralTypeParts, iblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • У шаблонах shell.html і shell_minimal.html висновок повідомлень про помилки, що виникають у процесі роботи emscripten і що видаються додатком через stderr, за замовчуванням переключено на використання console.warn замість console.error.
  • Додано можливість вказати певне текстове кодування, яке використовується в іменах файлів. Кодування може задаватися у формі суфікса під час передачі імені файлу, наприклад, «a.rsp.utf-8» або «a.rsp.cp1251»).

Джерело: opennet.ru

Додати коментар або відгук