Выпущен компилятор C / C ++ для Интернета. Это дает преимущество двунаправленной совместимости между кодом C или C ++ и кодом JavaScript.
Cheerp (ранее известный как Duetto) был выпущен Leaning Technologies. Он компилирует интегрированные приложения C / C ++ в код JavaScript для внешнего интерфейса, и был выпущен внутренний код внутреннего кода. Предполагается, что вы можете использовать его для переноса настольных приложений в Интернет или для разработки интерактивных веб-приложений с нуля.
Разработчики говорят, что Cheerp лучше существующих инструментов для компиляции в JS из-за функций, которые он предлагает. Первым примером этого, согласно сообщению в блоге о выпуске, является то, что Cheerp предоставляет вам доступ к инструментам браузера, таким как DOM и API-интерфейсы браузера, без дополнительных затрат на производительность или кодирование. Вы можете использовать функции браузера, такие как WebGL, из кода C или C ++ без необходимости в оболочках или повторной реализации. В руководстве по программированию Cheerp говорится, что при использовании любого API браузера с Cheerp вы получаете прямой доступ к реализации, предоставляемой браузером, поэтому внутри Cheerp нет уровня реализации или абстракции.
Еще одна особенность Cheerp — поддержка двунаправленного взаимодействия между кодом C или C ++ и кодом JavaScript. Предполагается, что у вас может быть графический интерфейс, разработанный на JavaScript, для взаимодействия с бизнес-логикой / движком, написанным на C ++, или для использования преимуществ любой ранее существовавшей библиотеки JS в дополнение к библиотекам C или C ++.
Управление динамической памятью Cheerp предлагает преимущество, заключающееся в том, что объекты C ++ транслируются непосредственно в объекты JS, без прокси-сервера эмулируемого плоского пространства памяти. Это означает, что ваши приложения могут использовать сборщик мусора виртуальной машины JavaScript и сосуществовать с справедливым распределением памяти по требованию.
Вы также можете выполнять отладку в браузере, напрямую ссылаясь на код C ++. В сообщении блога говорится, что «Cheerp поддерживает стандарт JavaScript Source Maps, чтобы обеспечить плавную отладку».
Cheerp компилируется в серверную часть собственного двоичного кода, интерфейс JavaScript и автоматически генерирует коммуникационный код RPC. Вы можете указать, какие элементы должны быть скомпилированы и где, используя функцию тегов функций, которая позволяет вам сказать, будет ли метод компилироваться на бэкэнде, во внешнем интерфейсе или на обоих.
Последнее преимущество — стандартный интерфейс clang / gcc. Это означает, что ваш код может быть интегрирован в существующие цепочки инструментов. В сообщении блога говорится, что вы можете просто добавить Интернет в качестве новой цели вашего многоплатформенного приложения, а Cheerp будет работать в качестве замены для ваших текущих инструментов.
Cheerp основан на инструментах LLVM / Clang и, по словам разработчиков, предлагает «почти полную поддержку C ++». Они говорят, что протестировали Cheerp на реальной кодовой базе, состоящей примерно из миллиона строк кода, в результате чего потребовалось очень мало правок, чтобы привести код в форму, в которой его можно было бы скомпилировать в JavaScript. Эти правки, по словам разработчиков, были в основном для большей безопасности типов, и было задействовано только около 0,1% строк кода, что соответствует нескольким десяткам ключевых исправлений). Полученная кодовая база компилируется как с Cheerp, так и со стандартными компиляторами Clang / GCC.
Cheerp доступен как коммерческий пакет или в версии с открытым исходным кодом для Linux, Windows и MacOSX.