Cheerp 3.0, компилятор C/C++ в JavaScript, переведён на лицензии Apache 2.0 и LLVM
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Представлен компилятор Cheerp 3.0, позволяющий скомпилировать любой код C/C++ в WebAssembly или JavaScript. Новая ветка примечательна переводом компилятора и сопутствующих библиотек на использование пермиссивных лицензий Apache 2.0 и LLVM, вместо ранее применяемой ограниченной лицензионной политики, предлагающей вариант с лицензией GPLv2 для некоммерческих проектов и проприетарную лицензию для коммерческих. Код компилятора основан на наработках LLVM и Clang, и включает дополнительные оптимизации для повышения производительности и уменьшения размера скомпилированного результата.
Cheerp может применяться как для портирования существующих C/C++ библиотек и приложений для выполнения в браузере, так и для создания высокопроизводительных web-приложений и WebAssembly-компонентов с нуля. Проект позволяет комбинировать в одном web-приложении код на C/C++ и JavaScript с возможностью доступа из кода JavaScript к функциям, изначально разработанным на C/C++, а из кода C/C++ к объектам JavaScript, JavaScript-библиотекам, Web API и всем возможностям DOM. Допускается создание комбинированных сборок, часть кода в которых компилируется в JavaScript, а часть в WebAssembly. Поддерживается сборка проектов, использующих стандартные библиотеки libc и libc++.
По сравнению с компилятором Emscripten, Cheerp генерирует более оптимизированный и компактный промежуточный код WebAssembly (в среднем размер итоговых файлов на 7% меньше). Концептуально различия сводятся к тому, что Emscripten используется в качестве объектного формата WebAssembly и выполняет связывание и оптимизацию на стадии постобработки WebAssembly (wasm-opt). В Cheerp в качестве промежуточного представления для библиотек и объектных файлов используется байткод в формате LLVM, что позволяет применять более широкие оптимизации, охватывающие проект в целом и использующие метаданные на уровне LLVM, без необходимости выполнения постобработки.
Дополнительное в Cheerp применяются оптимизатор PreExecuter, обеспечивающий упреждающее выполнение кода на этапе компиляции, например, для преобразования в константы конструкторов, используемых для инициализации глобальных объектов. Также при компиляции используется PartialExecuter, который на основе анализа параметров функций удаляет код, который гарантированно не используется при выполнении.
Cheer также может генерировать код JavaScript для динамической работы с памятью, охватываемой сборщиком мусора.
В частности, вместо эмулирования традиционного адресного пространства при помощи типизированных массивов, Cheerp обеспечивает прямой маппинг объектов C++ в объекты JavaScript, что позволяет снизить потребление памяти, так как сборщик мусора JavaScript имеет возможность удалять неиспользуемые объекты. Для повышения производительности в генерируемом промежуточном коде WebAssembly применяются SIMD-расширения, позволяющие организовать распараллеливание выполнения операций над данными.
Cheerp может использоваться как платформа для создания интегрированных клиент/серверных web-приложений на языке C++. В существующей практике, обычно отдельно разрабатываются выполняемый в браузере фронтэнд, написанный на языке JavaScript, и раздельная серверная часть, написанная на языках PHP, Python, Ruby или JavaScript/Node.js. Cheerp предоставляет средства для создания целостных web-приложений на языке C++, в которых бэкенд и фронтэнд поддерживаются в единой кодовой базе. В процессе компиляции серверная часть компилируется в нативный код, а интерфейс преобразуется в JavaScript-представление. Отладка всех компонентов проекта, в том числе преобразуемых в JavaScript, осуществляется по исходным текстам на языке C++ с использованием технологии Source Map (при возникновении ошибки можно увидеть участок кода на C++, поддерживается установка точек останова в коде C++ и построчного пошагового выполнения С++ кода).
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://leaningtech.com/cheerp...)
- OpenNews: Релиз Cheerp 1.3, компилятора C++ в JavaScript
- OpenNews: Началось ограниченное бета-тестирование Duetto, компилятора из C++ в JavaScript
- OpenNews: Открыт код Duetto, системы для запуска в web-браузере проектов на языке C++
- OpenNews: Доступен предварительный вариант стандарта WebAssembly 2.0
- OpenNews: Доступен Emscripten 3.0, компилятор из C/C++ в WebAssembly
Похожие новости:
- Критическая уязвимость в Wasmtime, runtime для WebAssembly-приложений
- Первый выпуск открытого многопользовательского игрового движка Ambient
- Выпуск Nuitka 1.3, компилятора для языка Python
- Доступен Wasmer 3.0, инструментарий для создания приложений на базе WebAssembly
- В SQLite добавлена поддержка WASM для использования СУБД в web-браузере
- Доступна серверная JavaScript-платформа Node.js 19.0
- Выпуск Nuitka 1.1, компилятора для языка Python
- Facebook открыл код фреймворка для выявления утечек памяти в JavaScript
- Релиз набора компиляторов LLVM 15.0
- Атака на Node.js через манипуляции с прототипами объектов JavaScript
Теги для поиска: #_cheerp, #_compile, #_webassembly, #_javascript
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:13
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Представлен компилятор Cheerp 3.0, позволяющий скомпилировать любой код C/C++ в WebAssembly или JavaScript. Новая ветка примечательна переводом компилятора и сопутствующих библиотек на использование пермиссивных лицензий Apache 2.0 и LLVM, вместо ранее применяемой ограниченной лицензионной политики, предлагающей вариант с лицензией GPLv2 для некоммерческих проектов и проприетарную лицензию для коммерческих. Код компилятора основан на наработках LLVM и Clang, и включает дополнительные оптимизации для повышения производительности и уменьшения размера скомпилированного результата. Cheerp может применяться как для портирования существующих C/C++ библиотек и приложений для выполнения в браузере, так и для создания высокопроизводительных web-приложений и WebAssembly-компонентов с нуля. Проект позволяет комбинировать в одном web-приложении код на C/C++ и JavaScript с возможностью доступа из кода JavaScript к функциям, изначально разработанным на C/C++, а из кода C/C++ к объектам JavaScript, JavaScript-библиотекам, Web API и всем возможностям DOM. Допускается создание комбинированных сборок, часть кода в которых компилируется в JavaScript, а часть в WebAssembly. Поддерживается сборка проектов, использующих стандартные библиотеки libc и libc++. По сравнению с компилятором Emscripten, Cheerp генерирует более оптимизированный и компактный промежуточный код WebAssembly (в среднем размер итоговых файлов на 7% меньше). Концептуально различия сводятся к тому, что Emscripten используется в качестве объектного формата WebAssembly и выполняет связывание и оптимизацию на стадии постобработки WebAssembly (wasm-opt). В Cheerp в качестве промежуточного представления для библиотек и объектных файлов используется байткод в формате LLVM, что позволяет применять более широкие оптимизации, охватывающие проект в целом и использующие метаданные на уровне LLVM, без необходимости выполнения постобработки. Дополнительное в Cheerp применяются оптимизатор PreExecuter, обеспечивающий упреждающее выполнение кода на этапе компиляции, например, для преобразования в константы конструкторов, используемых для инициализации глобальных объектов. Также при компиляции используется PartialExecuter, который на основе анализа параметров функций удаляет код, который гарантированно не используется при выполнении. Cheer также может генерировать код JavaScript для динамической работы с памятью, охватываемой сборщиком мусора. В частности, вместо эмулирования традиционного адресного пространства при помощи типизированных массивов, Cheerp обеспечивает прямой маппинг объектов C++ в объекты JavaScript, что позволяет снизить потребление памяти, так как сборщик мусора JavaScript имеет возможность удалять неиспользуемые объекты. Для повышения производительности в генерируемом промежуточном коде WebAssembly применяются SIMD-расширения, позволяющие организовать распараллеливание выполнения операций над данными. Cheerp может использоваться как платформа для создания интегрированных клиент/серверных web-приложений на языке C++. В существующей практике, обычно отдельно разрабатываются выполняемый в браузере фронтэнд, написанный на языке JavaScript, и раздельная серверная часть, написанная на языках PHP, Python, Ruby или JavaScript/Node.js. Cheerp предоставляет средства для создания целостных web-приложений на языке C++, в которых бэкенд и фронтэнд поддерживаются в единой кодовой базе. В процессе компиляции серверная часть компилируется в нативный код, а интерфейс преобразуется в JavaScript-представление. Отладка всех компонентов проекта, в том числе преобразуемых в JavaScript, осуществляется по исходным текстам на языке C++ с использованием технологии Source Map (при возникновении ошибки можно увидеть участок кода на C++, поддерживается установка точек останова в коде C++ и построчного пошагового выполнения С++ кода). =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:13
Часовой пояс: UTC + 5