Выпуск Duetto 0.9.6, системы для запуска в web-браузере проектов на языке C++

Представлен релиз проекта Duetto 0.9.6, в рамках которого подготовлен открытый инструментарий для разработки клиентских и серверных web-приложений на языке C++, а также набор средств для портирования существующих C++ программ для работы в Web-браузере. Код распространяется под свободной лицензией UI/NCSA, также используемой в проекте LLVM. Библиотеки поставляются под лицензией GPLv2+.

По своей сути Duetto напоминает систему Emscripten и также использует наработки LLVM для обеспечения компиляции кода C++ в представление на языке JavaScript. Ключевым отличием Duetto от Emscripten является достижение существенно более высокой производительности результирующего JavaScript-кода и предоставление средств для использования из С++ программ всех возможностей DOM и HTML5, в том числе WebGL. Duetto не пытается как Emscripten эмулировать традиционное адресное пространство при помощи типизированных массивов, а обеспечивает прямой маппинг C++ объектов в объекты JavaScript, что позволяет снизить потребление памяти, так как сборщик мусора JavaScript имеет возможность удалять неиспользуемые объекты. Duetto также поддерживает использование стандартных библиотек libc и libc++, и позволяет применять инструменты сборки cmake/autotool.

По поставленным перед проектом задачам Duetto выходит за рамки простого компилятора из C++ в JavaScript и позиционируется как платформа для создания интегрированных клиент/серверных web-приложений на языке C++. В существующей практике, обычно используется выполняемый в браузере фронтэнд, написанный на языке JavaScript или компилируемый в JavaScript из Coffe­Script, Microsoft Type­Script, Google Dart, Google GWT, с раздельной серверной частью на языках PHP, Python, Ruby или JavaScript/node.js. Duetto предоставляет средства для создания целостных web-приложений на языке C++, в которых бэкенд и фронтэнд поддерживаются в единой кодовой базе. В процессе компиляции серверная часть компилируется в нативный код, а интерфейс преобразуется в JavaScript-представление.

Новый выпуск примечателен предоставлением средств для отладки в браузере web-приложений на языке C++. При этом несмотря на то, что для выполнения код транслируется в JavaScript, отладка производится по исходным текстам на языке C++. Например, при возникновении ошибки отображается участок кода на C++, возможна установка точек останова в коде C++ и построчного пошагового выполнения С++ кода (все действия осуществляются с кодом С++, но фактически при отладке выполняется сгенерированный на основе этого кода JavaScript). Для отладки скомпилированного в JavaScript кода используется развиваемая компанией Google технология Source Map (Duetto бесшовно генерирует Source Map на основе кода на языке C++).

Кроме того, в новом выпуске представлена серия значительных оптимизаций, позволившая сократить потребление памяти и снизить нагрузку на сборщик мусора. Обеспечена поддержка вызовов стандартной библиотеки std::map, std::multimap, std::unordered_map, std::std, std::multiset и std::unordered_set.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.