Cheerp компилатор с отворен код от C/C++ до WebAssembly и JavaScript

весели се

Cheerp: C++ компилатор за уеб

Наскоро беше обявено Издаване на Cheerp 3.0, компилатор, който ви позволява да компилирате всеки C/C++ код в WebAssembly или JavaScript. Новият клон е забележителен с това, че премества компилатора и придружаващите го библиотеки да използват разрешителни лицензи Apache 2.0 и LLVM, вместо прилаганата преди това ограничена лицензионна политика, която предлага опция за GPLv2 лиценз за некомерсиални проекти и собственик на лиценз за комерсиални проекти.

Cheerp може да се използва както за пренасяне на съществуващи C/C++ приложения и библиотеки за изпълнение в браузъра, така и за създаване на високопроизводителни уеб приложения и WebAssembly компоненти от нулата.

Измина повече от година от предишното издание на Cheerp ( Cheerp 2.7 ) и тази нова версия е пълна с нови функции и оптимизации, които отново преместват състоянието на изкуството на използването на C++ като език за програмиране за уеб приложения. и игри.

Най-важното е, че с тази версия правим значителна промяна в лицензионния модел на Cheerp. Считано от Cheerp 3.0, всички основни компоненти и библиотеки на компилатора вече са разрешително лицензирани под лиценза Apache 2.0/LLVM. Това бележи радикално отклонение от нашия предишен модел GPLv2/двоен търговски лиценз, позволявайки Cheerp 3.0 да се използва за всякакви цели, без ограничения.

Относно Cheerp

Проектът ви позволява да комбинирате C/C++ код и JavaScript в уеб приложение с възможност за достъп от JavaScript код до функции, първоначално разработени в C/C++, и от C/C++ код до JavaScript обекти, JavaScript библиотеки, Web API и всички DOM функции, както и ви позволява да създавате смесени компилации, част от кодът, който се компилира към JavaScript и части към WebAssembly. Поддържа проекти за изграждане, които използват стандартните библиотеки libc и libc++.

В сравнение с компилатора Emscripten, Cheerp генерира по-оптимизиран и компактен междинен код на WebAssembly (Средно получените размери на файловете са 7% по-малки.)

Концептуално разликите се свеждат до това, че Регистрирай се се използва като обектен формат на WebAssembly и извършва обвързване и оптимизиране в етапа на последваща обработка на WebAssembly (wasm-opt). Cheerp използва байткод на LLVM като междинно представяне за библиотеки и обектни файлове, което позволява по-широки оптимизации за целия проект, като се използват метаданни на ниво LLVM без необходимост от последваща обработка.

Свързана статия:
Emscripten 3.0, набор от инструменти за WebAssembly, използващ LLVM

Освен това, Cheerp използва оптимизатора PreExecuter за превантивно изпълнение на код по време на компилиране, например, за преобразуване на конструктори, използвани за инициализиране на глобални обекти, в константи. Освен това по време на компилация се използва PartialExecuter, който на базата на анализиране на параметрите на функцията премахва код, който гарантирано няма да бъде използван при изпълнение.

Cheerp може също да генерира JavaScript код за динамична работа с паметта. покрити от събирача на боклук. По-специално, вместо да емулира традиционно адресно пространство с въведени масиви, Cheerp осигурява директно преобразуване от C++ обекти към JavaScript обекти, което намалява потреблението на памет, тъй като JavaScript събирачът на отпадъци има способността да премахва неизползваните обекти. За да се подобри производителността, генерираният междинен код на WebAssembly използва SIMD разширения за оркестриране на паралелизиране на операции с данни.

Cheerp може да се използва като платформа за изграждане на вградени уеб приложения клиент/сървър в C++. В настоящата практика е обичайно да се разработи отделен интерфейс, базиран на браузър, написан на JavaScript, и отделен бек-енд, написан на PHP, Python, Ruby или JavaScript/Node.js.

Cheerp предоставя средствата за изграждане на цялостни C++ уеб приложения, които поддържат както бекенда, така и предния край в единична кодова база.

По време на процеса на изграждане, сървърната страна се компилира в собствен код и интерфейсът се преобразува в представяне на JavaScript. Дебъгването на всички компоненти на проекта, включително тези, преобразувани в JavaScript, се извършва с помощта на изходни текстове на C++ с помощта на технологията Source Map.

И накрая, ако се интересувате да научите повече за това, можете да проверите подробностите в следваща връзка.

Кодът на компилатора се основава на разработките на LLVM и Clang и включва допълнителни оптимизации за подобряване на производителността и намаляване на размера на компилирания изход.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.