Выпуск Duetto 0.9.6, системы для запуска в web-браузере проектов на языке C++
18 апреля 2014 года
Представлен релиз проекта 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 из CoffeScript, Microsoft TypeScript, 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.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.