The OpenNET Project / Index page

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

Открыт код Duetto, системы для запуска в web-браузере проектов на языке C++

31.10.2013 20:42

Компания Lean­ing Tech­nolo­gies Ltd открыла исходные тексты проекта Duetto, в рамках которого подготовлен инструментарий для разработки клиентских и серверных 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 из Coffe­Script, Microsoft Type­Script, Google Dart, Google GWT, с раздельной серверной частью на языках PHP, Python, Ruby или JavaScript/node.js. Duetto предоставляет средства для создания целостных web-приложений на языке C++, в которых бэкенд и фронтэнд поддерживаются в единой кодовой базе. В процессе компиляции серверная часть компилируется в нативный код, а интерфейс преобразуется в JavaScript-представление.

  1. Главная ссылка к новости (http://allievi.sssup.it/techbl...)
  2. OpenNews: В рамках проекта Emscripten-Qt развивается порт Qt, работающий в web-браузере
  3. OpenNews: Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
  4. OpenNews: Компилятор Emscripten достиг возможности собственной пересборки
  5. OpenNews: Релиз Firefox 22 с поддержкой Asm.js
Лицензия: CC-BY
Тип: Программы
Ключевые слова: duetto, javascript, web, compile, llvm
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (57) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, commiethebeastie (ok), 21:20, 31/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А где с солью сравнение?
     
     
  • 2.2, Anon4ik (?), 21:38, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Любишь сравнивать тёплое с мягким?
     
     
  • 3.3, Нанобот (ok), 21:40, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    любишь отвечать вопґосом на вопґос?
     
  • 2.41, Аноним (-), 14:35, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее уж с Wt надо сравнивать сабжа. IMHO
     

  • 1.4, iZEN (ok), 21:47, 31/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    Что только не придумают, лишь бы не использовать апплеты Java. Компиляция C++ в JavaScript это конечно круто, но ЗАЧЕМ?
     
     
  • 2.6, oxyum (ok), 21:55, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Что только не придумают, лишь бы не использовать ActiveX.

    fixed.

     
     
  • 3.8, тоже Аноним (ok), 22:44, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Что только не придумают, лишь бы не использовать ActiveX, апплеты Java и другие известные дыры в браузерах.

    Obvious fix.

     
  • 3.12, iZEN (ok), 23:14, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • –6 +/
    > Что только не придумают, лишь бы не использовать ActiveX.

    ActiveX запретили в браузерах в начале 2000-х. Mozilla никогда не поддерживала эту дырявую и небезопасную технологию.

    > fixed.

    Пофикси свой мозг.

     
     
  • 4.14, Crazy Alex (ok), 23:18, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Когда говоришь о безопасности не стоит вспоминать джава-апплеты. Сколько там времени у оракла занимало дыры в них чинить и сколько этих дыр было?
     
     
  • 5.18, iZEN (ok), 00:07, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • –8 +/
    По сравнению с ActiveX и JavaScript дыр в Java апплетах почти нет О каких-то ре... текст свёрнут, показать
     
     
  • 6.20, Аноним (-), 00:47, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Со своим вонючим евангелизмом иди в другое место. Ни нас ни мозиллу ты не проведёшь.

    http://www.opennet.ru/opennews/art.shtml?num=38228

     
  • 4.19, Аноним (-), 00:45, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > ActiveX запретили в браузерах в начале 2000-х. Mozilla никогда не поддерживала эту дырявую и небезопасную технологию.

    Правильно. И java от неё мало чем отличается, правда Mozilla запретила эту дырявую и небезопасную технологию только совсем недавно.

     
     
  • 5.35, iZEN (ok), 13:54, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> ActiveX запретили в браузерах в начале 2000-х. Mozilla никогда не поддерживала эту дырявую и небезопасную технологию.
    > Правильно. И java от неё мало чем отличается, правда Mozilla запретила эту
    > дырявую и небезопасную технологию только совсем недавно.

    Mozilla сделала по умолчанию плагин неактивным во избежание использования приёмов социальной инженерии ("нажмите Ок, не вникая в вопрос"). Его активация возможна самим пользователем. Кому нужно, тот использует. Кто боится - ничего не трогает и на всякий случай отключает также поддержку JavaScript, ведь слова Java и JavaScript однокоренные, значит это одно и то же. :))

    Я понимаю, не всем дано изучить историю предпосылок возникновения Java и появления апплетов, как части этой платформы. Давно это было. Сейчас это совсем не модно и не современно. Лучше подвязать нитками LLVM для генерации интерпретируемого кода из системно-ориентированного языка программирования (C/C++) вместо применения прямых DSL-специфичных ЯВУ, код которых выполняется всего лишь после одной JIT-компиляции, а не нескольких.

     
     
  • 6.48, Crazy Alex (ok), 18:32, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Блин, я понимаю, что тебе джава нравится, но тебя что, действительно не смущает такое, как здесь - http://www.opennet.ru/opennews/art.shtml?num=36294 - когда с закрытием дыры тянули до упора, даже зная, что уже эксплоиты гуляют?
     
     
  • 7.50, iZEN (ok), 19:10, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Блин, я понимаю, что тебе джава нравится, но тебя что, действительно не
    > смущает такое, как здесь - http://www.opennet.ru/opennews/art.shtml?num=36294 - когда
    > с закрытием дыры тянули до упора, даже зная, что уже эксплоиты
    > гуляют?

    Ты кроме чтения смысл понимаешь?

    http://www.opennet.ru/opennews/art.shtml?num=36270
    ///---
    Уязвимость используется для распространения вредоносного ПО McRAT, поражающего Windows-системы при открытии специально модифицированных страниц на подконтрольных злоумышленникам сайтах.
    ---///

    То есть нужно иметь включенный необновлённый Java-плагин в браузере под Windows, зайти на подконтрольный злоумышленником сайт и открыть на нём страницу. И все три фазы Луны ВНЕЗАПНО совпадут:

    ///---
    В процессе эксплуатации осуществляется поиск области памяти, в которой хранятся внутренние структуры данных JVM, после чего осуществляется обнуление участков данных областей с целью дезактивации менеджера безопасности. После успешной эксплуатации, под видом изображения осуществляется загрузка исполняемого файла McRAT и попытка его запуска.
    ---///

    Дальше опять нужны совпадения ещё НЕСКОЛЬКИХ условий для успешной эксплуатации уязвимости, совпадение которых в реальной жизни маловероятно.

     
     
  • 8.53, Crazy Alex (ok), 00:59, 02/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Уж что-что, а загнать пользователя на нужный сайт - не проблема ни разу Если ты... текст свёрнут, показать
     
  • 4.56, AnonuS (?), 06:45, 02/11/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Изя, давай выдыхай, выдыхай уже, а то мы тебя потеряем...

    Помогите люди добрые, Изю, сейчас расплющит в блин, спасиииииитееееее !!!

     
  • 2.16, dr Equivalent (ok), 23:42, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, кто использует фапплеты Java нужно ампутировать руки, и в судебном порядке запрещать подходить к компьютеру ближе, чем на расстояние, равное их собственному росту.
     
  • 2.21, Аноним (-), 01:36, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Апплеты Java запрещены же, как их использовать?
     
  • 2.45, Кирилл (??), 17:08, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Аплеты давно сдохли и сам подход, в любой реализации, смердит за километр тухлятиной.
     

  • 1.5, Xasd (ok), 21:51, 31/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    судя по картинке в новости -- всех победил "Emscripten FF" (розовый) :)..

    чем выше столбец тем лучше -- это ясно так как известно что "Emscripten FF" работает быстрее чем "Emscripten V8" (потому что в V8 нет поддержки декларации "use asm")

     
     
  • 2.10, Crazy Alex (ok), 23:11, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вот сравнение с asm.js: http://leaningtech.com/duetto/blog/2013/05/28/Comparing-to-asm.js/
     

  • 1.7, lucentcode (ok), 22:00, 31/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Зачем так извращатся, когда можно просто соорудить виртуальную машину на базе ранаботок LLVM, и писать на любых ЯП, компилируя код в промежуточный код LLVM?
     
     
  • 2.9, GenryU (?), 23:04, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это было-бы, особенно хорошо, в новых 64-битных ARM-процессорах, в которых есть блок аппаратной поддержки виртуальных машин.
     
     
  • 3.11, iZEN (ok), 23:12, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    На ARM давно есть ядро "Jazelle" - сопроцессор непосредственного выполнения байткода Java. Зачем извращаться с LLVM и прочими "прелестями" виртализации? "Контейнеры" (изолированные окружения) дешевле обходятся и менее ресурсоёмки.
     
     
  • 4.13, Crazy Alex (ok), 23:17, 31/10/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Угу, теоретически есть. А на практике - сто лет никому не нужным оказалось. Видать, не просто так ;-)
     
  • 4.23, arisu (ok), 06:24, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > На ARM давно есть ядро «Jazelle»

    которое давно выкинуто нафиг, гыг — начиная с ARMv7 бесполезный хлам заменили на ThumbEE. но это знание жабофанбоям уже не нужно, потому что не вписывается в их воображаемый мир, где Божественная Ява Всех Зарулила.

     
     
  • 5.57, антуан (?), 12:28, 04/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это переименованное развитие Jazelle RCT, генерализированное для динамических языков. Специально об этом забыл?
     
     
  • 6.58, arisu (ok), 13:44, 04/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    глаза открываем. про жабу читаем. все нужные нити читаем. фигню пороть перестаём. алгоритм действий понятен? исполняй!
     
  • 4.32, annulen (ok), 13:42, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >На ARM давно есть ядро "Jazelle" - сопроцессор непосредственного выполнения байткода Java

    1) Аппаратно выполняются далеко не все инструкции байткода, поэтому работает такой вариант медленнее, чем нормальный JIT.
    2) Это расширение архитектуры, которое надо лицензировать отдельно, поэто в соечтании с п.1 производителей душит жаба (не Java, а другая)

     
  • 3.51, lucentcode (ok), 00:14, 02/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это было-бы, особенно хорошо, в новых 64-битных ARM-процессорах, в которых есть блок
    > аппаратной поддержки виртуальных машин.

    Да, было бы. К сожалению, вместо подобного красивого решения использутся костыльное. А кроме него(из-за недостатоков технологий HTML и Java Script) ещё и велосипедов вроде Flash, Java Aplets, Silverlight и т.п. наплодили... Одна VM с доступом к DOM и API браузера, а так-же небольной стандартной библиотекой можно было бы заменить весь этот шлак.

     
     
  • 4.52, iZEN (ok), 00:54, 02/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Это было-бы, особенно хорошо, в новых 64-битных ARM-процессорах, в которых есть блок
    >> аппаратной поддержки виртуальных машин.
    > Да, было бы. К сожалению, вместо подобного красивого решения использутся костыльное. А
    > кроме него(из-за недостатоков технологий HTML и Java Script) ещё и велосипедов
    > вроде Flash, Java Aplets, Silverlight и т.п. наплодили... Одна VM с
    > доступом к DOM и API браузера, а так-же небольной стандартной библиотекой
    > можно было бы заменить весь этот шлак.

    Вон, libxul в Mozilla до сих пор не могут расшарить между Firefox, Thunderbird и, собственно, одноимённой автономной разделяемой библиотекой, три раза приходится собирать одно и то же. А ты хочешь одну вещь для работы с DOM API для всех. :))

     
     
  • 5.54, Crazy Alex (ok), 03:18, 02/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Мозилловцы вообще очень любят подход "всё моё ношу с собой" - винда, наверное, влияет, там это дело привычное. Наверняка оно спокойно решается каким-нибудь хитрым ключом сборки - только хрен его найдёшь. Во всяком случае, обычно у них  именно так.
     
  • 5.55, Led (ok), 03:47, 02/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Вон, libxul в Mozilla до сих пор не могут расшарить между Firefox,
    > Thunderbird и, собственно, одноимённой автономной разделяемой библиотекой, три раза приходится собирать одно и то же.

    Это всё из-за BSD-подобной лицензии?

     
  • 2.33, annulen (ok), 13:42, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Зачем так извращатся, когда можно просто соорудить виртуальную машину на базе ранаботок
    > LLVM, и писать на любых ЯП, компилируя код в промежуточный код
    > LLVM?

    В арбузере работать не будет, очевидно же. Иначе можно было бы просто на С++ писать и не извращаться с виртуальными машинами.

     
  • 2.49, Crazy Alex (ok), 18:33, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Такое есть - NaCl и PNaCl
     

  • 1.25, Аноним (-), 07:07, 01/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > прямой маппинг C++ объектов в объекты JavaScript

    И как они напрямую маппят работу с указателями, интересно :).

     
     
  • 2.26, arisu (ok), 07:12, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> прямой маппинг C++ объектов в объекты JavaScript
    > И как они напрямую маппят работу с указателями, интересно :).

    а зачем ты работаешь с объектами через указатели, а не через ссылки? ты мазохист или идиот?

     
     
  • 3.34, annulen (ok), 13:45, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Похоже, что идиот здесь кто-то другой.

     
     
  • 4.36, arisu (ok), 13:55, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Похоже, что идиот здесь кто-то другой.

    да. ты вот пришёл вместо анонимуса.

     
     
  • 5.37, annulen (ok), 13:58, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Похоже, что идиот здесь кто-то другой.
    > да. ты вот пришёл вместо анонимуса.

    Ну я-то понимаю, что ссылки в С++ реализуются с помощью указателей и отличаются только синтаксисом.

     
     
  • 6.38, arisu (ok), 14:05, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    — Разве не говорил я, что Саша — круглый идиот? (ц)
     
  • 3.39, Pure C (ok), 14:28, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Не мазохист и не идиот он, вполне адекватный вопрос. С++ без возможности использовать указатели настолько же ненужен как и Java вместе с С#. Не хочешь указателей в браузере - никто не мешает использовать JS, срубить С++ до уровня JS и говорить что это круто потому-что там есть операторы, и ключевое слово сlass с возможностью пропихать шаблон через шаблон - и есть диагноз. На JS без всего это нормально людям живется, а проект как раз и нужен когда хочешь получить перенесенного подобие низкоуровневого кода из существующего проекта, которое на JS сделать сложновато без указателей и тому подобного.
     
     
  • 4.40, arisu (ok), 14:35, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    бобёр, выдыхай!
     
     
  • 5.42, annulen (ok), 15:20, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > бобёр, выдыхай!

    Только мазохист или идиот будет писать на С++ без указателей на объекты, на одних ссылках. Но мы-то знаем, что С++ ты видел только на картинках.

     
     
  • 6.43, arisu (ok), 15:28, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Rasch abkochen, dann Vormarsch nach Sokal.
     
  • 2.64, Mezozoysky (?), 12:28, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • +/
    21 век на дворе, давно уже все научились указатели на кучу считать.
     

  • 1.28, meequz (ok), 11:09, 01/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что такое VB и FF конечно не нужно писать, все знают. К тому же по графику получается, что эмскриптен рвёт дуетто.
     
     
  • 2.30, anonymous (??), 12:16, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    VB - это вижуал басик
    а вот V8 - это такой движок жабоскрипта
     
  • 2.31, anonymous (??), 12:17, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    P.S. а у вас, похоже, ШГ
     

  • 1.44, Кирилл (??), 17:04, 01/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    З А Ч Е М?
     
     
  • 2.47, Dmitry77 (ok), 17:36, 01/11/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как язык для крупных проектов JS плохо подходит. Тем не менее часто нужно выполнение программы в браузере. Ещё преимущество - кросплатформенность.
     
     
  • 3.60, dq0s4y71 (ok), 13:22, 05/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем _крупные_пректы_ выполнять в _браузере_?
     
  • 2.59, XoRe (ok), 15:11, 04/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > З А Ч Е М?

    Есть один политический плюс - разработка в руках людей, которым не пофиг на дыры (в отличии от oracle с java).
    Но писать серверные и клиентские части веб приложения на C++...

     

  • 1.61, dq0s4y71 (ok), 13:23, 05/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ещё бы ассемблер к браузеру прикрутили бы, а то дыр-то в JavaScript мало...
     
  • 1.62, DmA (??), 11:21, 06/11/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что за реклама здесь перекрывающая название статьи?"ХОТИТЕ СОЗДАТЬ «РАБОТАЮЩИЙ» САЙТ? ГОТОВЫЕ CMS С БЕСПЛАТНЫМ РАЗМЕЩЕНИЕМ КУПИТЬ БЕЗЛИМИТНЫЙ ХОСТИНГ" . Правда проблемой скорей всего установленный у меня антирекламный фильтр adblock. Графическую картинку он похоже режет,а текст остаётся...
     
     
  • 2.63, arisu (ok), 11:38, 06/11/2013 [^] [^^] [^^^] [ответить]  
  • +/
    ну так режут же, гады. приходится совать так, чтобы резать было сложнее. тоже обратил внимание. туда даже какой-нибудь красивый id и class не прописали, чтобы сложнее вырезать было. Хитрый План!
     

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



    Спонсоры:
    MIRhosting
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру