The OpenNET Project / Index page

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

02.02.2016 20:28  Представлен Cheerp 1.2, компилятор C++ в JavaScript

Увидел свет стабильный релиз Cheerp 1.2 (бывший 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++ и построчного пошагового выполнения С++ кода).

Новый выпуск основан на кодовой базе LLVM/Clang 3.7 и примечателен существенным сокращением времени загрузки и увеличением производительности выполнения получаемого JavaScript-кода. Итоговый JavaScript-код, генерируемый при помощи Cheerp с применением динамической системы управления памятью, всего в 2-6 раз медленнее скомпилированных из C++ машинных инструкций. По сравнению с Emscripten, JavaScript-код Cheerp заметно отстаёт при применении Asm.js в Emscripten, но в режиме Split Memory (без Asm.js, но позволяет выделять больше памяти) в 2-3 раза быстрее при исполнении средних и больших тестов и примерно на том же уровне при выполнении мелких тестов. По времени загрузки созданный в Cheerp код грузится в 10-11 раз быстрее, но так как разница в диапазоне миллисекунд, она не ощущается пользователем.





Из изменений, связанных с функциональностью, отмечается поддержка 64-разрядных целых чисел, возможность накопления информации о типах в процессе выполнения (RTTI - Runtime Type Information), расширение диагностических сообщений и экспериментальная поддержка изоляции генерируемого кода от других скриптов через его вынос в модули. Отдельно выделяется реализация техники PreExecuter, позволяющей преобразовывать C++-код инициализации глобальных структур в простые наборы данных, что существенно сокращает размер JavaScript-кода на выходе.

  1. Главная ссылка к новости (http://blog.leaningtech.com/20...)
  2. OpenNews: Открыт код Duetto, системы для запуска в web-браузере проектов на языке C++
  3. OpenNews: Вышел Pythonium 0.4.7, компилятор из Python в JavaScript
  4. OpenNews: Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
  5. OpenNews: Выпуск Duetto 0.9.6, системы для запуска в web-браузере проектов на языке C++
  6. OpenNews: Реализация языка Python на JavaScript и транслятор кода Python в JavaScript
Лицензия: CC-BY
Тип: Программы
Ключевые слова: cpp, llvm, javascript, compile
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 20:49, 02/02/2016 [ответить] [смотреть все]
  • +5 +/
    есть реальные примеры применения только не надо про крузис в браузере на ультра... весь текст скрыт [показать]
     
     
  • 2.3, Crazy Alex, 21:04, 02/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Вот, например, один товарищ роазвлекался http gamemusic multimedia cx js-prot... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.8, Аноним, 21:22, 02/02/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Linux firefox 44 - 30 firefox, 8 xorg Почти всё тратится на вывод битмапа Ну... весь текст скрыт [показать]
     
     
  • 4.17, Crazy Alex, 01:20, 03/02/2016 [^] [ответить] [смотреть все]  
  • +/
    а как смотрели, на что тратится?
     
     
  • 5.38, Никто, 15:10, 03/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Профилировщик?
     
     
  • 6.49, Crazy Alex, 22:32, 05/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Ну я вот не знаю, как в браузере выяснить, что время уходит именно на работу с б... весь текст скрыт [показать]
     
  • 2.4, омномномнимус, 21:11, 02/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    по эмскриптен есть дофига примеров, правда я не встречал что-то использующееся н... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.7, Аноним, 21:15, 02/02/2016 [^] [ответить] [смотреть все]  
  • +/
    вот именно( вышел компилятор sh->python->c++->php->ruby->java->c#->etc...
     
     
  • 4.10, Вареник, 21:52, 02/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Все это зациклить :)
     
  • 3.14, Аноним, 23:33, 02/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Копаться в разы больше чем с компиляцией нативного бинаря для того чтобы получит... весь текст скрыт [показать]
     
  • 3.28, Alex, 09:35, 03/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    > не встречал что-то использующееся на продакшене.

    https://regex101.com/

     
  • 2.43, Аноним, 21:27, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    https kagami github io webm js как аналог онлайн-конвертверов, но не требующ... весь текст скрыт [показать] [показать ветку]
     
  • 1.2, Аноним, 20:59, 02/02/2016 [ответить] [смотреть все]  
  • +4 +/
    Из пустого в порожнее.
     
  • 1.6, печень трески, 21:14, 02/02/2016 [ответить] [смотреть все]  
  • +11 +/
    Нельзя не вспомнить анекдот. Висит объявление: "Перевожу с грузинского и армянского на Ваганьковсое"
     
  • 1.9, Вареник, 21:51, 02/02/2016 [ответить] [смотреть все]  
  • –1 +/
    На что "люди" время тратят...
     
     
  • 2.23, Тот_Самый_Анонимус, 06:49, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Некоторые, например, других осуждают...
     
  • 2.25, Аноним, 07:52, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Надо принять закон о правильной трате времени людьми, а то у россияненов остаётс... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.41, Вареник, 20:01, 03/02/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Три ошибочных утверждения в одном предложении - Причем здесь россияне к сабжу ... весь текст скрыт [показать]
     
  • 1.11, Rodegast, 21:53, 02/02/2016 [ответить] [смотреть все]  
  • –2 +/
    Компиляция в Java это хороший способ поднять спрос на оперативку!
     
     
  • 2.15, Аноним, 00:31, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Нет, компиляция в Script ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.31, Аноним, 11:36, 03/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    > Нет, компиляция в Script.

    Тем более.

     
  • 2.24, Аноним, 07:49, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Шо ява, шо яваскрипт, какая в жепу разница?
     
     
  • 3.40, Аноним, 18:51, 03/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Большая. Например Java машина куда более прожорливая, чем все JS движки.
     
     
  • 4.42, Вареник, 20:03, 03/02/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Движки без фреймворка, конечно они легче ... весь текст скрыт [показать]
     
  • 2.37, Аноним, 15:02, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Высокой страсти не имея Для звуков жизни не щадить, Не мог он джав от джаваскрип... весь текст скрыт [показать] [показать ветку]
     
  • 1.13, Lester, 22:41, 02/02/2016 [ответить] [смотреть все]  
  • +/
    Попробовал потыкать - выглядит интересно, особенно то, что есть API для коммуникации с браузером, а не просто тупо перегоняется абстрактный код.
     
  • 1.16, fa, 01:14, 03/02/2016 [ответить] [смотреть все]  
  • +/
    Что это? Вот есть, например в C вызов bind. Что это будет в javascript?
     
     
  • 2.18, Crazy Alex, 01:24, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    враппер для websocket api
     
     
  • 3.36, zy, 14:09, 03/02/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Во-первых bind конечно же есть не в C а в libc Во-вторых никакого враппера в ве... весь текст скрыт [показать]
     
     
  • 4.45, Crazy Alex, 18:29, 04/02/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Тебе шашечки или ехать Эти врапперы дают возможность более-менее простого порти... весь текст скрыт [показать]
     
  • 1.19, A.Stahl, 02:57, 03/02/2016 [ответить] [смотреть все]  
  • –2 +/
    Я бы ещё понял если бы наоборот.
    А так... Что-то на уровне Лиспа/Хаскелля. Круто, прикольно, но бесполезно.
     
     
  • 2.44, freehck, 16:07, 04/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ну почему же бесполезно Вот например есть похожая штука Ocsigen js_of_ocaml со... весь текст скрыт [показать] [показать ветку]
     
  • 1.20, Андрей, 05:52, 03/02/2016 [ответить] [смотреть все]  
  • +/
    А они это оформили чище чем emscripten, который вообще вылетел из Debian, а то, что осталось в sid не обновляется.
     
  • 1.21, Аноним, 06:10, 03/02/2016 [ответить] [смотреть все]  
  • +1 +/
    Надо бы декодер H264 транслировать.
     
  • 1.27, Аноним, 08:41, 03/02/2016 [ответить] [смотреть все]  
  • +/
    лучше бы из JS в С++ сделали транслтор
     
     
  • 2.29, anonymous, 10:19, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Но зачем?
     
  • 1.30, Аноним, 10:58, 03/02/2016 [ответить] [смотреть все]  
  • +/
    Является Wt конкурентом для сабжа?
     
     
  • 2.32, Аноним, 12:11, 03/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Является ли сабж конкурентом для Wt?
     
     
  • 3.33, Аноним, 12:35, 03/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Так что более предпочтительнее В чем существенный выигрыш одной из фреймворков ... весь текст скрыт [показать]
     
     
  • 4.34, Аноним, 12:37, 03/02/2016 [^] [ответить] [смотреть все]  
  • +/
    Т.е. одного фреймворка над другим?
     
  • 4.35, Аноним, 13:53, 03/02/2016 [^] [ответить] [смотреть все]  
  • +/
    А ты кого любишь больше - маму или папу Тaщeмта одно - компилятор, второе - фре... весь текст скрыт [показать]
     
  • 1.39, bOOster, 17:47, 03/02/2016 [ответить] [смотреть все]  
  • +/
    Все это от "лукавого". Все эти решения заметно деградировали уровень программного обеспечения в угоду сраным бизнесменам, которым надо быстрее, выше, сильнее за копейки.
     
     
  • 2.46, Аноним, 19:18, 04/02/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Вот тут вы ошибаетесь Что больше подходит для rapid разработки Какой язык треб... весь текст скрыт [показать] [показать ветку]
     
  • 1.47, Витя2016, 20:15, 04/02/2016 [ответить] [смотреть все]  
  • +/
    Cheerp вроде быстрей делает javascript и работа с памятью C++ более эффективна чем javascript оригинал?
     
  • 1.51, Аноним, 13:04, 08/02/2016 [ответить] [смотреть все]  
  • +/
    после распостранения wasm надобность в вещах типа cheerp отпадет
     
  • 1.52, vn971, 23:09, 10/02/2016 [ответить] [смотреть все]  
  • +/
    > или компилируемый в JavaScript из Coffe­Script, Microsoft Type­Script, Google Dart, Google GWT, с раздельной серверной частью на языках PHP, Python, Ruby или JavaScript/node.js

    можно добавить Scala. Код на скале тоже может компилироваться в js: https://www.scala-js.org/

     

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


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