URL: https://ssl.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 106572
[ Назад ]

Исходное сообщение
"Представлен Cheerp 1.2, компилятор C++ в JavaScript"

Отправлено opennews , 02-Фев-16 20:49 
Увидел свет (http://blog.leaningtech.com/2016/02/cheerp-12-c-to-javascrip...) стабильный релиз  Cheerp 1.2 (http://leaningtech.com/cheerp/) (бывший Duetto), открытого инструментария для разработки клиентских и серверных web-приложений на языке C++, а также для портирования существующих C++ программ для работы в Web-браузере. Код распространяется (https://github.com/leaningtech) под свободной лицензией UI/NCSA (http://llvm.org/releases/2.8/LICENSE.TXT), также используемой в проекте LLVM. Библиотеки поставляются под лицензией  GPLv2+.


По своей сути Cheerp напоминает систему Emscripten (https://www.opennet.ru/opennews/art.shtml?num=35313) и также использует наработки LLVM для обеспечения компиляции кода C++ в представление на языке JavaScript. Ключевым отличием Cheerp от Emscripten является (https://github.com/leaningtech/cheerp-meta/wiki) ориентация на достижении более высокой производительности результирующего JavaScript-кода и предоставление средств для использования из С++ программ всех возможностей DOM, браузерного API и HTML5, в том числе WebGL. Cheerp не пытается как Emscripten эмулировать традиционное адресное пространство при помощи типизированных массивов, а обеспечивает прямой маппинг C++ объектов в объекты JavaScript, что позволяет снизить потребление памяти, так как сборщик мусора JavaScript имеет возможность удалять неиспользуемые объекты. Cheerp также поддерживает использование стандартных библиотек libc и libc++, и позволяет применять инструменты сборки cmake/autotool.

По поставленным перед проектом задачам Cheerp позиционируется как платформа для создания интегрированных клиент/серверных web-приложений на языке C++. В существующей практике, обычно используется выполняемый в браузере фронтэнд, написанный на языке JavaScript или компилируемый в JavaScript из  CoffeScript, Microsoft TypeScript, 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-кода на выходе.


URL: http://blog.leaningtech.com/2016/02/cheerp-12-c-to-javascrip...
Новость: https://www.opennet.ru/opennews/art.shtml?num=43804


Содержание

Сообщения в этом обсуждении
"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 02-Фев-16 20:49 
есть реальные примеры применения? только не надо про крузис в браузере на ультра

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Crazy Alex , 02-Фев-16 21:04 
Вот, например, один товарищ роазвлекался: http://gamemusic.multimedia.cx/js-prototype/
Это Emscripten, правда.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 02-Фев-16 21:22 
Linux firefox 44 - 30% firefox, 8% xorg. Почти всё тратится на вывод битмапа. Ну как всегда, я уже привык к тормозной графике в Linux :)

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Crazy Alex , 03-Фев-16 01:20 
а как смотрели, на что тратится?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Никто , 03-Фев-16 15:10 
Профилировщик?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Crazy Alex , 05-Фев-16 22:32 
Ну я вот не знаю, как в браузере выяснить, что время уходит именно на работу с битмапом,  а не на что-то ещё. во всяком случае, если не пытаться отлаживать сам браузер - а это очень стрёмное дело, и вышенаписавшйи аноним почти наверняка подобным не занимался.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено омномномнимус , 02-Фев-16 21:11 
по эмскриптен есть дофига примеров, правда я не встречал что-то использующееся на продакшене.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 02-Фев-16 21:15 
вот именно( вышел компилятор sh->python->c++->php->ruby->java->c#->etc...

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Вареник , 02-Фев-16 21:52 
Все это зациклить :)

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 02-Фев-16 23:33 
> я не встречал что-то использующееся на продакшене.

Копаться в разы больше чем с компиляцией нативного бинаря для того чтобы получить огромный и лагучий JS - развлечение на любителя.


"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Alex , 03-Фев-16 09:35 
> не встречал что-то использующееся на продакшене.

https://regex101.com/


"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 21:27 
https://kagami.github.io/webm.js/ (как аналог онлайн-конвертверов, но не требующий сервера).
Вот ещё дофига примеров: https://github.com/kripken/emscripten/wiki/Porting-Examples-...

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 02-Фев-16 20:59 
Из пустого в порожнее.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено печень трески , 02-Фев-16 21:14 
Нельзя не вспомнить анекдот. Висит объявление: "Перевожу с грузинского и армянского на Ваганьковсое"

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Вареник , 02-Фев-16 21:51 
На что "люди" время тратят...

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Тот_Самый_Анонимус , 03-Фев-16 06:49 
Некоторые, например, других осуждают...

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 07:52 
> На что "люди" время тратят...

Надо принять закон о правильной трате времени людьми, а то у россияненов остаётся слишком много времени на написание кода и на трындёж на форуме, что приводит к различным угрозам тысячелетней суверенной государственности.


"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Вареник , 03-Фев-16 20:01 
>> На что "люди" время тратят...
> Надо принять закон о правильной трате времени людьми, а то у россияненов
> остаётся слишком много времени на написание кода и на трындёж на
> форуме, что приводит к различным угрозам тысячелетней суверенной государственности.

Три ошибочных утверждения в одном предложении:
- Причем здесь россияне к сабжу?
- Причем здесь российские законы к сабжу?
- Причем здесь российские законы ко мне?

Ваши навязчивые думы о россиянах пробивают потолки неадеквата.


"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Rodegast , 02-Фев-16 21:53 
Компиляция в Java это хороший способ поднять спрос на оперативку!

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 00:31 
> Компиляция в Java это хороший способ поднять спрос на оперативку!

Нет, компиляция в Script.


"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 11:36 
> Нет, компиляция в Script.

Тем более.


"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 07:49 
Шо ява, шо яваскрипт, какая в жепу разница?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 18:51 
Большая. Например Java машина куда более прожорливая, чем все JS движки.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Вареник , 03-Фев-16 20:03 
> Большая. Например Java машина куда более прожорливая, чем все JS движки.

Движки без фреймворка, конечно они легче.


"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 15:02 
Высокой страсти не имея
Для звуков жизни не щадить,
Не мог он джав от джаваскриптов,
Как мы ни бились, отличить.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Lester , 02-Фев-16 22:41 
Попробовал потыкать - выглядит интересно, особенно то, что есть API для коммуникации с браузером, а не просто тупо перегоняется абстрактный код.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено fa , 03-Фев-16 01:14 
Что это? Вот есть, например в C вызов bind. Что это будет в javascript?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Crazy Alex , 03-Фев-16 01:24 
враппер для websocket api

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено zy , 03-Фев-16 14:09 
Во-первых bind конечно же есть не в C а в libc.
Во-вторых никакого враппера в вебсокеты не будет потому что websockets api и сокеты из сетевого стека ОС совершенно разного уровня фичи, и имеют слишком разные возможности, и соответственно семантику bind для сетевых сокетов замапить на вебсокеты не представляется возможным вообще никак.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Crazy Alex , 04-Фев-16 18:29 
Тебе шашечки или ехать? Эти врапперы дают возможность более-менее простого портирования сетевого слоя приложений. Понятно, что вместо чистого TCP будет эмуляция поверх webSockets. Вот такая, например: https://github.com/kanaka/websockify

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено A.Stahl , 03-Фев-16 02:57 
Я бы ещё понял если бы наоборот.
А так... Что-то на уровне Лиспа/Хаскелля. Круто, прикольно, но бесполезно.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено freehck , 04-Фев-16 16:07 
Ну почему же бесполезно.

Вот например есть похожая штука Ocsigen js_of_ocaml: собственно то и делает, что перегоняет код на ocaml в код на js. Таким образом получаем код на js  с качественной проверкой типов, произведённой ещё на этапе компиляции.

Ну и по поводу лиспа/хаскеля -- это Вы заблуждаетесь, но я не намерен спорить об этом сейчас.


"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Андрей , 03-Фев-16 05:52 
А они это оформили чище чем emscripten, который вообще вылетел из Debian, а то, что осталось в sid не обновляется.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 06:10 
Надо бы декодер H264 транслировать.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 08:41 
лучше бы из JS в С++ сделали транслтор

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено anonymous , 03-Фев-16 10:19 
Но зачем?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 10:58 
Является Wt конкурентом для сабжа?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 12:11 
Является ли сабж конкурентом для Wt?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 12:35 
Так что более предпочтительнее? В чем существенный выигрыш одной из фреймворков?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 12:37 
Т.е. одного фреймворка над другим?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 03-Фев-16 13:53 
А ты кого любишь больше - маму или папу? Тaщeмта одно - компилятор, второе - фреймворк.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено bOOster , 03-Фев-16 17:47 
Все это от "лукавого". Все эти решения заметно деградировали уровень программного обеспечения в угоду сраным бизнесменам, которым надо быстрее, выше, сильнее за копейки.

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 04-Фев-16 19:18 
Вот тут вы ошибаетесь. Что больше подходит для rapid разработки? Какой язык требует более высокой квалификации? То-то же! Давайте все писать на ссях!

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Витя2016 , 04-Фев-16 20:15 
Cheerp вроде быстрей делает javascript и работа с памятью C++ более эффективна чем javascript оригинал?

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено Аноним , 08-Фев-16 13:04 
после распостранения wasm надобность в вещах типа cheerp отпадет

"Представлен Cheerp 1.2, компилятор C++ в JavaScript"
Отправлено vn971 , 10-Фев-16 23:09 
> или компилируемый в JavaScript из Coffe­Script, Microsoft Type­Script, Google Dart, Google GWT, с раздельной серверной частью на языках PHP, Python, Ruby или JavaScript/node.js

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