The OpenNET Project / Index page

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

05.03.2017 09:36  Для GCC представлен бэкенд c реализацией WebAssembly

Для развиваемого проектом GNU инструментария (binutils, gcc, glibc) подготовлен рабочий прототип бэкенда с поддержкой новой архитектуры - WebAssembly. Бэкенд позволяет использовать GCC для компиляции исходных текстов на языках C/C++ в промежуточный код WebAssembly для последующего выполнения в web-браузере или JavaScript Shell. В binutils добавлена поддержка генерации модулей в формате объектных файлов WebAssembly и упаковки/обработки блоков WebAssembly в исполняемых файлах в формате ELF.

Реализована поддержка трёх целевых платформ: asmjs (JavaScript с расширениями Asm.js), wasm32 (WebAssembly с 32-разрядной целочисленной арифметикой) и wasm64 (WebAssembly с 64-разрядной арифметикой с плавающей запятой). На начальной стадии разработки бэкенда были использованы некоторые наработки проекта Emscripten (компилятор биткода LLVM в JavaScript), но в текущем виде бэкенд не привязан к Emscripten, и все заимствованные из него компоненты заменены на штатные возможности GCC и glibc. В частности, компиляция осуществляется с использованием штатного фронтэнда GCC, предоставляющего все имеющиеся оптимизации, а также специально подготовленного бэкенда, транслирующего внутренний байткод GCC в промежуточный код WebAssembly.

Утилита "GNU as" может применяться для создания объектного файла в формате ELF, в который при необходимости можно поместить отладочную информацию в формате DWARF. Компоновщик "GNU ld" может быть использован для связывания объектных файлов в исполняемый ELF-файл, который при помощи утилиты wasmify-wasm32 может быть преобразован в формат модуля WebAssembly, пригодного для загрузки в браузере.

Напомним, что по своим задачам WebAssembly во многом напоминает PNaCl (Portable Native Client) и Asm.js. Основное отличие от Asm.js состоит в том, что WebAssembly является бинарным форматом, не завязанным на JavaScript и позволяющим выполнять в браузере низкоуровневый промежуточный код. В отличие от PNaCl, промежуточный код WASM не является машинным кодом и не изолирован в отдельной виртуальной машине, а выполняется с похожим на JavaScript уровнем изоляции. Среди основных задач WebAssembly выделяется обеспечение переносимости между браузерами, предсказуемость поведения и идентичности выполнения кода на разных платформах. Использование WebAssembly также позволит существенно сократить размер приложений, благодаря компактному промежуточному коду, и увеличить скорость декодирования.

  1. Главная ссылка к новости (https://sourceware.org/ml/binu...)
  2. OpenNews: Технология WebAssembly признана готовой для включения в браузерах по умолчанию
  3. OpenNews: Chrome, Firefox и Edge перешли на новый этап тестирования технологии WebAssembly
  4. OpenNews: В Firefox, Chromium и Edge добавлена экспериментальная поддержка WebAssembly
  5. OpenNews: Анонсирован WebAssembly, обеспечивающий запуск скомпилированного кода в браузерах
  6. OpenNews: Основанные на GCC проекты JIT-компилятора и расширения, использующего GPU для вычислений
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: gcc, webassembly
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, mma (?), 09:47, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +36 +/
    WASM звучит ностальгически)
     
  • 1.2, Sabakwaka (ok), 09:49, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    В Хроме-то WebAssembly от Asm.js по скорости отстаёт.
     
     
  • 2.24, Crazy Alex (ok), 14:49, 05/03/2017 [^] [ответить]    [к модератору]
  • +/
    Насколько? И как насчёт скорости загрузки?
     
     
  • 3.58, Sabakwaka (ok), 21:15, 05/03/2017 [^] [ответить]    [к модератору]
  • +/
    Субъективно — весь геймплей медленнее процентов на 30-40.

    Зайдите в демки WebAssembly и попробуйте самостоятельно.

    Может мне OpneCL не хватает или еще какие особенности системы.

     
  • 1.3, Аноним (-), 10:22, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Поясните, теперь есть возможность собрать QML приложение?
     
     
  • 2.5, Аноним (-), 11:05, 05/03/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Она и раньше была, Qt и QML уже работают в связке с Emscripten, другое дело, что если вы ожидаете, что QML будет работать "нативно", то это не так, для этого надо отдельно проделать массу работы.
     
     
  • 3.13, Аноним (-), 11:48, 05/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Интересно средствами GCC, а не Emscripten.
     
  • 3.72, Аноним (-), 09:44, 06/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Именно, ожидаю нативной работы, уж очень ненавистен мне html, поскорее бы...
     
     
  • 4.81, Аноним (-), 14:34, 06/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Взгляните на Qt for Native Client https://www.opennet.ru/opennews/art.shtml?num=43039
    Ну и Wt (https://www.webtoolkit.eu/wt/ru/) уже давно работает.
     
  • 1.4, Аноним (-), 10:59, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А в сокеты и треды оно умеет?
     
     
  • 2.9, Джо (?), 11:37, 05/03/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Сокеты - нет только то API что доступно JavaScript , поддержка тредов для javas... весь текст скрыт [показать]
     
  • 2.11, Аноним (-), 11:43, 05/03/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Если оно умеет в сокеты, тогда придётся браузер держать в отдельной зафайерволенной виртуалке, чтоб ничего кроме 80 и 443 не позволялось.
     
     
  • 3.18, Аноним (-), 12:31, 05/03/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    При чём тут сокеты? Сокет это просто программная абстракция.

    К.О.

     
     
  • 4.27, Аноним (-), 15:27, 05/03/2017 [^] [ответить]    [к модератору]  
  • –4 +/
    webgl тоже программная абстракция, к вопросу "оно умеет webgl" ты тоже придерешься?
     
     
  • 5.33, Crazy Alex (??), 16:38, 05/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    WebGL - это интферфейс вполне себе к железу, если ты не знал
     
  • 5.89, Аноним (-), 09:12, 12/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Оно вполне может не уметь webgl. Это же для c++ интерфейс.
     
  • 4.46, Аноним (-), 18:08, 05/03/2017 [^] [ответить]     [к модератору]  
  • +/
    мб он про WebSockets на которые с http0 9 1 0 1 1 2 0 все никак не мигрируют пол... весь текст скрыт [показать]
     
     
  • 5.75, Аноним (-), 11:12, 06/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Я имел ввиду BSD Socket. Т.е. загрузится вместе со страничкой какая-нибудь хрень, откроет на прослушивание обычный сокет и будет ждать команд от управляющего сервера.
     
     
  • 6.83, Crazy Alex (??), 14:42, 06/03/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    то, что сейчас она может это делать поллингом или (последние лет семь) через вебсокеты - вас устраивает? Или в чём разница, не пойму
     
  • 3.41, Аноним (-), 17:45, 05/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > Если оно умеет в сокеты,

    Ты не поверишь, что умеют современные ОСи^W браузеры.


     
  • 2.49, Аноним (-), 18:24, 05/03/2017 [^] [ответить]    [к модератору]  
  • +/
    > А в сокеты и треды оно умеет?

    Web сокеты и Web треды :-)

     
     
  • 3.90, Аноним (-), 14:41, 12/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Компилируя Web компилятором по Web браузер,
    а пользоваться можно только Web пользоватлям
     
  • 2.71, Аноним (-), 09:36, 06/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    это и javascript умеет.
     
  • 1.6, Аноним (-), 11:22, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    После добавления DOM API и других в WASM можно будет, допустим, переписать React и другие классные либы на C++ и потом также делать import этих либ в JS-коде?
     
     
  • 2.8, Аноним (-), 11:32, 05/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Здравая мысль.
     
  • 2.12, Аноним (-), 11:46, 05/03/2017 [^] [ответить]    [к модератору]  
  • +12 +/
    А зачем тогда вообще JS, если можно всё на C++ ?
     
     
  • 3.15, Джо (?), 11:56, 05/03/2017 [^] [ответить]    [к модератору]  
  • +26 +/
    Будут тогда беспорядки во многих городах из-за восстаний безработных JavaScript разработчиков.
     
  • 3.16, Аноним (-), 11:59, 05/03/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    А зачем вообще другие языки, если всё можно на си++?
     
     
  • 4.26, Аноним (-), 15:25, 05/03/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    Да бездельники напридумывали языков, вместо того чтобы работать
     
     
  • 5.91, Аноним (-), 14:43, 12/03/2017 [^] [ответить]    [к модератору]  
  • +/
    > Да бездельники напридумывали языков, вместо того чтобы работать

    Ну да лучше что бы они на JavaScript понаписали уйму сайтов продажи часов

     
  • 4.73, Аноним (-), 09:50, 06/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Прокрастинация. Когда человек делает всё, что угодно, лишь бы не писать на с++, даже разрабатывает новый язык.
     
  • 3.21, IB (?), 13:14, 05/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    На Хаскеле же
     
  • 3.34, Crazy Alex (??), 16:40, 05/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Потому что писать на плюсах вместо JS - это дорого и долго для "простых вебстраничек". Для сложного софта - наоборот.
     
     
  • 4.47, Аноним (-), 18:13, 05/03/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    это дорого только в плане первичных вложений, особенно стоимость Найма Поиска ... весь текст скрыт [показать]
     
     
  • 5.59, Аноним (-), 21:16, 05/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    То есть вы правда считаете, что умеете считать деньги лучше всех этих корпораций, делающие свои продукты на питонах/рельсах/пхп/nodejs, а не на с++?
     
     
  • 6.64, НяшМяш (ok), 22:04, 05/03/2017 [^] [ответить]     [к модератору]  
  • +/
    Корпорации поэтому и делают деньги, потому что на разработку тратят три копейки,... весь текст скрыт [показать]
     
     
  • 7.92, Аноним (-), 14:50, 12/03/2017 [^] [ответить]     [к модератору]  
  • +/
    А что Вам не нрвиться в этих языках Воспринимайте их как расширение для C Пр... весь текст скрыт [показать]
     
  • 5.67, Crazy Alex (ok), 00:41, 06/03/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Я даже представить не могу, в каких случаях такая стрёмная архитектура может себ... весь текст скрыт [показать]
     
  • 5.69, Илья (??), 03:54, 06/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Ваша идея кошмарна.
     
  • 4.68, Наркоман (?), 02:22, 06/03/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    >писать на плюсах вместо JS - это дорого и долго

    пральна, надо на питоне!

     
     
  • 5.93, Аноним (-), 14:51, 12/03/2017 [^] [ответить]    [к модератору]  
  • +/
    >>писать на плюсах вместо JS - это дорого и долго
    > пральна, надо на питоне!

    как там в питоне то синхронизация и гил уже разрешился

     
  • 3.65, Отражение луны (ok), 23:53, 05/03/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Потому что JS лучше CPP
     
  • 2.17, Аноним (-), 12:06, 05/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Да, нашёл ответ. http://webassembly.org/getting-started/js-api/
     
  • 2.77, Аноним (-), 12:14, 06/03/2017 [^] [ответить]    [к модератору]  
  • +/
    можно, только в этом нет никакого смысла. Бутылочное горлышко в реактах с ангулярами - не javascript, а трансформации DOM дерева
     
  • 2.82, Аноним (-), 14:38, 06/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Можно. Вообще, это уникальная возможность получить единый апи для любых библиотек написанных на любых языках. Только представьте: идеальная интероперабельность, никаких костыльных биндингов.
     
     
  • 3.94, Аноним (-), 14:56, 12/03/2017 [^] [ответить]     [к модератору]  
  • +/
    Как показывает опыт последних лет 20 как-то все выходит боком Все не совместимо... весь текст скрыт [показать]
     
  • 1.14, Аноним (-), 11:51, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А фронтэнд для Rust в GCC будет?
     
     
  • 2.42, нонон (?), 17:49, 05/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    В расте уже есть таргет wasm32-unknown-emscripten
     
  • 1.20, IB (?), 13:13, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Годнота.
    Когда уж JS отомре
     
     
  • 2.22, Аноним (-), 13:55, 05/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Даешь больше дыр в браузер!
     
     
  • 3.48, Аноиним (?), 18:15, 05/03/2017 [^] [ответить]     [к модератору]  
  • –3 +/
    не, как раз WebAssembly - снижает эксплоитируемость из интернета и ощутимо на... весь текст скрыт [показать]
     
     
  • 4.79, Lain_13 (ok), 13:31, 06/03/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Можно подробнее почему WASM безопаснее JS? Ну кроме того, что у него сейчас нет доступа ко многим API, к которым есть доступ у JS, и что, вроде как, собираются исправить.
     
  • 3.84, Аноним (-), 15:10, 06/03/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Из Web assembly доступны все те же апи что и js, не больше, не меньше.
     
  • 1.25, Аноним (-), 15:24, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Так теперь emscripten не нужен, я правильно понял?
     
     
  • 2.95, Аноним (-), 14:58, 12/03/2017 [^] [ответить]    [к модератору]  
  • +/
    > Так теперь emscripten не нужен, я правильно понял?

    Будет нужен как минимум еще лет 10 для всяких там майкросовтов я думаю

     
  • 1.28, Аноним (-), 16:12, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Чё-то я не понял, а это как объяснить? Где тут промежуточный код WebAssembly?

    >The GitHub sources include support for using asm.js instead of wasm

     
     
  • 2.35, Crazy Alex (??), 16:43, 05/03/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Это вообще сбоку. Перевод - "мы умеем генерировать не только wasm, но и asm.js"
     
     
  • 3.36, Аноним (-), 17:02, 05/03/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Правильный перевод - Исходники на gihub включают поддержку использования asm js... весь текст скрыт [показать]
     
     
  • 4.37, Crazy Alex (??), 17:09, 05/03/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    А голову включить? Речь о том, что можно (используя asmjs-virtual-asmjs-gcc) генерировать asm.js вместо wasm. А можно - взяв wasm32-virtual-wasm32-gcc - генерировать собственно wasm.
     
     
  • 5.38, Аноним (-), 17:12, 05/03/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Здесь телепатов нет, написано чётко и ясно, что это бекэнд только для asm js То... весь текст скрыт [показать]
     
     
  • 6.55, Аноним (-), 19:29, 05/03/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Четко и ясно тут только, что включена поддержка использования asm js вместо wasm... весь текст скрыт [показать]
     
  • 6.62, Ordu (ok), 21:24, 05/03/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Если ты не можешь в телепатию, то читай тексты целиком, а не случайно выдранные оттуда фразы.
     
  • 4.43, Аноним (-), 17:52, 05/03/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Рукалицо Разрешаю приступать ... весь текст скрыт [показать]
     
     
  • 5.45, Аноним (-), 18:03, 05/03/2017 [^] [ответить]     [к модератору]  
  • –4 +/
    Слова rudimentary и simulating сам переведёшь или ссылку на гугол транслейт дать... весь текст скрыт [показать]
     
     
  • 6.51, Crazy Alex (??), 18:55, 05/03/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Ну ты хоть разок как-то вникни в вопрос прежде чем постить Или на ключевые сло... весь текст скрыт [показать]
     
  • 1.56, Аноним (-), 19:39, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    coreutils уже можно им собрать?
     
  • 1.57, Аноним (-), 20:43, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Это что, теперь можно сайт написать на С/С++ и бинарником послать в браузер!? Если это так, то это просто отвратительно ...
     
     
  • 2.60, Аноним (-), 21:21, 05/03/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Не сильно бинарнее , чем обфусцированный яваскрипт, в плане того, что вы сможет... весь текст скрыт [показать]
     
     
  • 3.70, Аноним (70), 04:35, 06/03/2017 [^] [ответить]     [к модератору]  
  • +/
    Декомпилируется он на самом деле паршиво, впрочем как и asm js код Информации о... весь текст скрыт [показать]
     
  • 2.66, Crazy Alex (ok), 00:35, 06/03/2017 [^] [ответить]    [к модератору]  
  • +/
    Уже года три как можно в виде asm.js :-) В WebAssembly просто его косяки реализации убрали
     
  • 1.61, Michael Shigorin (ok), 21:22, 05/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Это вместо gcj?
     
  • 1.74, Kodir (ok), 11:04, 06/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –3 +/
    Очередной маразм а-ля java applets, только теперь "не в прямоугольничке". Поиграются, потратят силы и выкинут!
     
     
  • 2.80, Аноним (-), 14:17, 06/03/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Выкинуть будет очень не просто. Обычно от стандартов отказываются, когда есть лучшая альтернатива или спрос ушел в 0. Здесь ни того, ни другого не предвидится.
     
  • 2.85, Аноним (-), 15:19, 06/03/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Нет, это то, что надо было сделать с самого начала, встроить в браузеры виртуаль... весь текст скрыт [показать]
     
     
  • 3.96, Аноним (-), 15:03, 12/03/2017 [^] [ответить]     [к модератору]  
  • +/
    Итак, изначально мы берем одного разработчика и он фигачит и на HTML и JavaScrip... весь текст скрыт [показать]
     
     
  • 4.97, Аноним (-), 15:07, 12/03/2017 [^] [ответить]     [к модератору]  
  • +/
    gt оверквотинг удален Дизайн architecture... весь текст скрыт [показать]
     
  • 1.88, Аноним (-), 18:53, 10/03/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Я не понял, мода на javascript прошла? Возвращаемся в нативному c++? Колесо сделало очередной оборот?
     

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


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