The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

09.02.2017 22:33  Релиз Cheerp 1.3, компилятора C++ в JavaScript

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

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

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

В новом выпуске отмечено значительное увеличение производительности кода, скомпилированного с использованием Cheerp. Значительного ускорения удалось добиться не только оптимизацией кода компилятора, но и благодаря совместной работе с разработчиками движка SpiderMonkey, используемого в Firefox. В итоге, по сравнению с прошлым выпуском код проектов на языке C++, скомпилированный в JavaScript при помощи Cheerp 1.3, стал выполняться в Firefox в среднем на 11% быстрее. В ресурсоёмких тестах выигрыш составляет около 25%, в тесте на основе физического движка Bullet - 33%, а в тесте Box2D - 20%.

При сравнении со скоростью выполнения нативного кода, собранное в Cheerp представление на JavaScript работает в среднем в 2.5 раза медленнее приложения, скомпилированного в машинный код. Если сузить выборку до крупных тестов (Bullet, Box2D), то в 3.7 раза.

Результирующий размер сгенерированного в новой версии кода стал в среднем на 25% меньше, чем при использовании Cheerp 1.2, и на 5-40% меньше по сравнению с результатами компиляции в Emscripten.

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

В области переносимости между C++ и JavaScript/Web API улучшена поддержка тега "[[cheerp::jsexport]]", который теперь может применяться для отдельных функций, а не только для классов, что позволяет отразить в объекты JavaScript любую часть приложения C++. В новой версии также сняты ограничения по определению глобальных переменных в пространстве имён клиента, улучшена поддержка вариативных аргументов и расширена поддержка объединений (union). В компилятор добавлены две новые опции (-cheerp-bounds-check и -cheerp-defined-members-check) для выполнения дополнительных проверок, упрощающих выявление некорректно сгенерированного JavaScript-кода.

  1. Главная ссылка к новости (http://blog.leaningtech.com/20...)
  2. OpenNews: Проект Browsix развивает окружение для запуска Unix-программ в браузере
  3. OpenNews: Chrome, Firefox и Edge перешли на новый этап тестирования технологии WebAssembly
  4. OpenNews: Представлен Cheerp 1.2, компилятор C++ в JavaScript
  5. Вышел Pythonium 0.4.7, компилятор из Python в JavaScript
  6. OpenNews: Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
Лицензия: CC-BY
Тип: Программы
Ключевые слова: compile, javascript, emscripten, cheerp
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.3, pechen.treski, 00:12, 10/02/2017 [ответить] [смотреть все]
  • +8 +/
    Не судите строго, но вот у меня вопрос. Язык программирования подбирается под конкретную задачу. Нарисовать график из бигдаты (и блевануть от отвращения) - R. Нужен магазин - похапе (куришь электронные сигареты - тогда Ruby). Но вот такие транспайлеры (ок, инструмент для портирования существующих C++ программ для работы в Web-браузере) - он для чего? Можно пример?
     
     
  • 2.5, Crazy Alex, 00:19, 10/02/2017 [^] [ответить] [смотреть все] [показать ветку]
  • –1 +/
    Ну вот мой случай - подробности не могу разгласить, но общая суть такова Был не... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.11, Аноним, 00:24, 10/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Есть опыт юзанья эмскриптена Вот ни за что не поверю, что большой проект на С у... весь текст скрыт [показать]
     
     
  • 4.14, Crazy Alex, 00:29, 10/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Скажем так - на переписывание ушло бы минимум в сто раз больше времени Что было... весь текст скрыт [показать]
     
     
  • 5.31, Ананас, 17:41, 10/02/2017 [^] [ответить] [смотреть все]  
  • +/
    И таки вы хотите убедить нас, что оно работало "в вебе"?
     
     
  • 6.34, Crazy Alex, 20:30, 10/02/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Говорю же - сам диву даюсь Единственное, что его не пережило - IE11, в edge - и... весь текст скрыт [показать]
     
  • 4.15, Аноним, 00:29, 10/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Напиши интерпретатор питона с нуля Благодаря компилятору появился такой проект ... весь текст скрыт [показать]
     
  • 4.32, Аноним, 17:55, 10/02/2017 [^] [ответить] [смотреть все]  
  • +/
    > Хоть тресни, но не поверю.

    Тресну. https://epicport.com/en/ttd

     
  • 3.26, Аноним, 06:36, 10/02/2017 [^] [ответить] [смотреть все]  
  • +/
    netfilter, LVM можно туда запихать?
     
     
  • 4.30, Crazy Alex, 15:04, 10/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Куски ядра туда записать Не, ну если совсем не дружить с головой или развлекать... весь текст скрыт [показать]
     
  • 2.27, Аноним, 09:07, 10/02/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Чтобы переписать всё на JS и запускать ОС в браузере И ничего с этим трендом не... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.41, KroTozeR, 00:16, 12/02/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    А самое страшное, что вылечить такой тотальный маразм сможет лишь глобальный зви... весь текст скрыт [показать]
     
     
  • 4.45, Валик228, 08:52, 15/02/2017 [^] [ответить] [смотреть все]  
  • +/
    это уже не тот скайп там от скайпа остался вебчатик с войсом и видео и этому ... весь текст скрыт [показать]
     
     
  • 5.46, KroTozeR, 10:28, 15/02/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    К сожалению, лучше пока ничего не придумали Альтернативодеятели копируют от ска... весь текст скрыт [показать]
     
     
  • 6.47, Ананамус, 16:08, 16/02/2017 [^] [ответить] [смотреть все]  
  • +/
    За редактирование и удаление надо руки выкручивать Я помню под скайп писал прог... весь текст скрыт [показать]
     
     
  • 7.49, KroTozeR, 17:08, 16/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Таким образом лишать пользователей возможности исправлять ошибки в тексте Я бы ... весь текст скрыт [показать]
     
  • 1.6, Вы забыли заполнить поле Name, 00:21, 10/02/2017 [ответить] [смотреть все]  
  • +2 +/
    #include "jquery.h"
     
     
  • 2.23, Аноним, 04:07, 10/02/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +5 +/
    А через пяток лет #include <jquery>
     
     
  • 3.42, key, 16:25, 12/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Что за ужасы вы пишите! Это могут читать дети!!!
     
  • 1.10, Вы забыли заполнить поле Name, 00:24, 10/02/2017 [ответить] [смотреть все]  
  • +/
    Эта технлогия имеет смысл, если уже есть проект на С++ (изначально написанный не под web) и его хочется запустить в браузере.
    А так ждем WebAssembly. Тогда уже можно говорить об использовании этой технологии только для web.
     
     
  • 2.12, Аноним, 00:26, 10/02/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > А так ждем WebAssembly.

    Че там ждать то? Бери и юзай, уже все готово.

     
     
  • 3.17, Crazy Alex, 00:31, 10/02/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    Где оно готово В Chrome Canary Или в ночных сборках файрфокса Готово оно буде... весь текст скрыт [показать]
     
  • 1.22, Аноним, 03:40, 10/02/2017 [ответить] [смотреть все]  
  • +4 +/
    Мне почему - то всегда казалось что скомпелировать можно только в машинный код, ... весь текст скрыт [показать]
     
     
  • 2.24, Вася, 06:17, 10/02/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    Тоже недоумеваю от заголовка Я ещё в ВУЗ курсе на 3-4 писал именно транслятор с... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.29, LinuxID, 09:22, 10/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Я в свое время лет 25 назад писал конвертер из Basic на asm для ZX-Spectrum на... весь текст скрыт [показать]
     
  • 2.33, freehck, 18:16, 10/02/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Да, да И не хакеры, а кракеры И не пинги, а латентность сети Что уж тут подел... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.35, Ю.Т., 10:38, 11/02/2017 [^] [ответить] [смотреть все]  
  • +/
    и не скомпелировать, а скомпилировать
     
     
  • 4.36, freehck, 16:04, 11/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Это ещё что На албанских форумах я видел вариант сканпелять Вот уж что звуча... весь текст скрыт [показать]
     
     
  • 5.44, Аноним, 10:05, 13/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Это они на ксерокс ругались.
     
  • 2.40, Аноним, 17:16, 11/02/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    А что считать машинными инструкциями Внутри процессоров Intel команды интерпрет... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.43, key, 16:27, 12/02/2017 [^] [ответить] [смотреть все]  
  • +/
    Архитектурные команды Другой апи только у интела... весь текст скрыт [показать]
     
  • 1.28, Аноним, 09:16, 10/02/2017 [ответить] [смотреть все]  
  • +1 +/
    Так это они что ли продвигают MS Office Online? (сарказм)
     
  • 1.37, Аноним, 16:36, 11/02/2017 [ответить] [смотреть все]  
  • +1 +/
    Я одного не понимаю, а как же гуй Вот есть десктопная софтина, работает с gtk, ... весь текст скрыт [показать]
     
  • 1.39, Аноним, 17:14, 11/02/2017 [ответить] [смотреть все]  
  • +/
    А где-то есть сравнение бенчмарков с Emscripen?
     
  • 1.48, Аноним, 16:12, 16/02/2017 [ответить] [смотреть все]  
  • +/
    я не понимаю, зачем. есть же emscripten
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor