Поддержите компилятор с открытым исходным кодом от 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, веб-API и всем функциям DOM, а также позволяет создавать смешанные сборки, часть код, который компилируется в JavaScript и разделяется на WebAssembly. Поддерживает проекты сборки, использующие стандартные библиотеки libc и libc++.

По сравнению с компилятором Emscripten, Cheerp генерирует более оптимизированный и компактный промежуточный код WebAssembly (В среднем итоговые размеры файлов на 7% меньше.)

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

Теме статьи:
Emscripten 3.0, набор инструментов для сборки WebAssembly с использованием LLVM

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

Cheerp также может генерировать код JavaScript для динамической работы с памятью. покрывается сборщиком мусора. В частности, вместо эмуляции традиционного адресного пространства с типизированными массивами Cheerp обеспечивает прямое сопоставление объектов C++ с объектами JavaScript, что снижает потребление памяти, поскольку сборщик мусора JavaScript может удалять неиспользуемые объекты. Для повышения производительности сгенерированный промежуточный код WebAssembly использует расширения SIMD для организации параллелизации операций с данными.

Cheerp можно использовать в качестве платформы для создания встроенных веб-приложений. клиент/сервер на С++. В современной практике принято разрабатывать отдельный интерфейс для браузера, написанный на 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.