LINUX.ORG.RU
ФорумTalks

Запилен компилятор WebAssembly

 , , ,


0

1

Уже можно компилировать C/C++ и базовое подмножество .NET CIL в WebAssembly. Реализован медленный polyfill, позволяющий выполнять WebAssembly в браузерах, не имеющих его нативной поддержки. А её пока нет ни в одном из браузеров. Тем не менее, плакальщицы на YC уже возбудились и недоумевают в стиле: «как так, нас не спросили», «куда катится мир, какое будет безумие, если для web'а на клиенте можно будет использовать любой ЯП, а не только JS».

  1. https://hacks.mozilla.org/2015/12/compiling-to-webassembly-its-happening/
  2. https://kripken.github.io/talks/wasm.html (презентация)


Последнее исправление: dazdraperma (всего исправлений: 1)
Ответ на: комментарий от vazgen05

То есть есть какие-то привязки (раз уж это C, то подозреваю, что это заголовочный файл) для работы с DOM и разными событиями в браузере?
Как тогда будет выглядеть Hello World?

#include "webassembly.h"

void main() {
    alert("Hello World!");
}

CYB3R ★★★★★
()

Круто

Однако будущее видиться жопой. Особенно native libc calls. Новый виток в развитие вирусни гарантирован.

gh0stwizard ★★★★★
()
Ответ на: комментарий от CYB3R

Вот так пока выглядит:

extern void some_external_JS(int);

int main() {
  some_external_JS(42);
}

DOM ещё не завезли. Сначала допилят MVP, чтобы всё компилировалось как надо, запилят вменяемый polyfill, впилят нативную поддержку в браузер. И только потом будут работать над GC, DOM и прочим.

dazdraperma
() автор топика
Ответ на: Круто от gh0stwizard

Тупые идиоты из Google, MS, Apple, Mozilla и прочих шараг работают над проектом. Шлак с PhD степенями и многолетним опытом создания компиляторов и браузеров, знанием особенностей разных процессоров, платформ. Тупая школота, нужно было gh0stwizard позвать, он бы вам «жопой» всё объяснил как нужно делать.

dazdraperma
() автор топика
Ответ на: комментарий от dazdraperma

Спокойно. Проблема в том, что никто не идеален. Как и у любого крутого изобретения всегда есть две стороны: атом тоже хотели использовать только в мирных целях.

gh0stwizard ★★★★★
()

А как насчёт безопасности? Что-то мне подсказывает что эта штука по определению не может быть не дырявой.

StReLoK ☆☆
()
Ответ на: комментарий от dazdraperma

DOM ещё не завезли.

И не завезут. С чего ты взял вообще? Как ты себе представляешь Объекты DOM в Си например?

uin ★★★
()
Ответ на: комментарий от StReLoK

WebAssembly is safe: WebAssembly describes a memory-safe, sandboxed execution environment that may even be implemented inside existing JavaScript virtual machines. When embedded in the web, WebAssembly will enforce the same-origin and permissions security policies of the browser.

dazdraperma
() автор топика
Ответ на: комментарий от uin

https://github.com/WebAssembly/design/blob/master/FAQ.md

Is WebAssembly only for C/C++ programmers?

Beyond the MVP, another high-level goal is to improve support for languages other than C/C++. This includes allowing WebAssembly code to allocate and access garbage-collected (JavaScript, DOM, Web API) objects.

https://github.com/WebAssembly/design/blob/master/FutureFeatures.md#gcdom-int...

GC/DOM Integration

reference DOM and other Web API objects directly from WebAssembly code;

https://github.com/WebAssembly/design/blob/master/GC.md#webidl-integration

WebIDL integration

Using opaque reference types, it would be possible to allow direct access to DOM and Web APIs by mapping their WebIDL interfaces to WebAssembly builtin module signatures.

dazdraperma
() автор топика

А в ATS уже давно завезли

buddhist ★★★★★
()
Ответ на: комментарий от uin

«Другая высокоуровневая задача - улучшить поддержку языков отличных от C/C++. Это, в том числе, возможность выделения и доступа к GC объектам (JavaScript, DOM, Web API)».

То что там написано «other than», это не значит, что доступа к DOM из C/C++ не будет. Это значит, что займутся этим на этапе, когда будут работать над поддержкой языков со сборкой мусора.

Ты JS-сник, тебе больно. Но ты таки прочитай про WebIDL.

dazdraperma
() автор топика
Ответ на: комментарий от dazdraperma

ты таки прочитай про WebIDL.

Это то на чем написаны всякие setTimeout Object.getElementBy Object.getBoundingClientRect которые вызываются из жабаскрипта, тоесть сам WebAPI. А тут разговор о том как из С/С++ с элементами dom дерева работать.

Ты JS-сник, тебе больно.

Немножко, это же нельзя будет в чужой код подглядывать.

uin ★★★
()

Зачем оно вообще нужно? И так всякого говна в сети хватает, так еще больше появится.

Meyer ★★★★★
()
Ответ на: комментарий от CYB3R

То есть есть какие-то привязки (раз уж это C, то подозреваю, что это заголовочный файл) для работы с DOM и разными событиями в браузере?

Навряд ли они будут, если будут, то не будут популярны, тебе нужен живой репл на языке сразу в браузере

umren ★★★★★
()
Ответ на: комментарий от CYB3R

Поясните за WebAssembly. Зачем он не нужен?

«нативные» компоненты, например декодеры/медиа/игрушки, то что не работает с домом но хотелось бы иметь в браузере

фотошоп типа потом тебе скомпиляют ;)

umren ★★★★★
()
Ответ на: комментарий от vazgen05

Видимо чтобы JS-хейтеры тоже смогли в веб.

это не особо «веб» будет, иди смотри asm.js, он в веб не умеет

umren ★★★★★
()
Ответ на: комментарий от uin

Совершенно точно будет реализовано:

mapping WebIDL to WebAssembly

https://github.com/WebAssembly/design/blob/master/GC.md#webidl-integration

Т.е. «которые вызываются из жабаскрипта» становится «которые вызываются из webassembly».

Как это ляжет на C/C++? Выше уже есть образец кода, осуществляющий вызов JS функции, продублирую:

extern void some_external_JS(int);

int main() {
  some_external_JS(42);
}

Полагаю, аналогичные внешние функции будут реализованы и для работы с DOM.

dazdraperma
() автор топика
Ответ на: Круто от gh0stwizard

Нужно больше песочниц с ограничением использования нативных либ. Давно пора отделить веб-приложения от всего остального.

Deleted
()
Ответ на: комментарий от Deleted

Песочницы всех браузеров уже поломали. И не факт, что закрыли все дыры. Сама идея хороша и остается надеяться, что это будет отключабельно. В противном случае это зондирование века.

Самое странное, что в свое время все обсирали ActiveX с теми же целями. Причем, доживи он до наших дней, он бы летал под Mono как два пальца. А тут мозильщики, они б-ги, да. Не удивлюсь, если Сноуден когда-нибудь раскроет, что они получали бабло от АНБ и выполняли их планы :)

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Самое странное, что в свое время все обсирали ActiveX с теми же целями.

Ну не совсем с теми же, потому что если опустить некоторые нюансы, ActiveX - фактически инсталлируемая в систему с сайта или локально принесенная dll (нативная в x86), функции которой дергаются с загруженной странички.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от gh0stwizard

Какая-то инфантильность присутствует в твоём ответе. Проект то свободен и открыт. В разработке (от начального обсуждения идей и до написания компиляторов, интерпритаторов, виртуальной машины) могут принимать участие все желающие. Если знаешь, что что-то делается не так, покажи, как нужно, чтобы было «так».

Забавно, что приводишь дырявийший ActiveX в пример, запускавший не пойми что непонятно от кого с админскими привилегиями. Про Сноуденов - вообще смешно. Webassembly не опасней JS (или даже безопасней за счёт более простого парсинга), и как выше уже упоминалось, может быть вовсе реализован на базе существующей JS машины.

dazdraperma
() автор топика

безумие, если для web'а на клиенте можно будет использовать любой ЯП

Нет, безумие - это когда якобы открытая платформа искусственно ограничивает тебя в выборе языка. И ладно бы если у этого единственного языка были весомые преимущества для конкретно этой «открытой» платформы. Но ведь единственное преимущество ЖС - кто первый встал, того и тапки.

entefeed ☆☆☆
()

wasm

Пойду мужикам покажу, лол.

jori
()
Ответ на: комментарий от uin

А почему Django не на плюсах? Кто на чем хочет, на том и пишет. Можно хоть десктопные приложения на JS писать. А если хочешь сунуться в «открытую платформу», то твой выбор внезапно ограничен только убогими HTML+CSS+JS. Везде кроме фронтенда свобода выбора есть. А когда ее же хотят дать фронтендо-дебилам - они называют это безумием.

entefeed ☆☆☆
()
Ответ на: комментарий от entefeed

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

Есть альтернативный путь вэба - это сервер сайд API + клиентское приложение на_каком_тебе_удобно_языке, но тебе же хочется чтоб в браузере чтоб WebAPI все были, все готовенькое, да?

uin ★★★
()

если для web'а на клиенте можно будет использовать любой ЯП, а не только JS

Тож будет просто превосходно!

xwicked ★★☆
()
Ответ на: комментарий от entefeed

Ну вот ты говоришь на JS писать десктопные приложения, это в Node.js то? Как вот мне c SDL_Event / SDL_Surface через JavaScript работать? Никак? Никак, используй свои веб апи. А ты хочешь поддержку DOM API Events / Web Audio API / etc в Си?

uin ★★★
()
Ответ на: Круто от gh0stwizard

native libc calls

С какого перепугу они должны там появиться? Это даже не кроссплатформенно. Хотите второй ActiveX, только в профиль?

contra_sperm_spero
()
Ответ на: комментарий от JN

Оно в жабоскрипт компилирует, при чём тут WebAssembly? Разница — как между ардуиной и печатной платой.

contra_sperm_spero
()
Ответ на: комментарий от uin

Я пару недель назад искал биндинги для ноды к OpenGL и вроде даже нашёл и потыкал.

contra_sperm_spero
()
Ответ на: комментарий от uin

И не завезут. С чего ты взял вообще? Как ты себе представляешь Объекты DOM в Си например?

А в чем проблема? Есть вон minixml, он на сях, полная модель DOM там присутствует.

Xintrea ★★★★★
()
Ответ на: комментарий от dazdraperma

покажи, как нужно

В альтернативной реальности Эйнштейн понял, что атом будут использовать во зло. Поэтому он полностью отказался от всех своих идей в этом направлении. Уничтожил лабораторию в США и сбежал в Мексику.

Webassembly не опасней JS

Пока нет готовой реализации об этом судить рано. Основная же цель этого какая? Скорость, доступ к системным функциям (для работы с файлами, сокетами и т.д. и т.п. без ограничений, если сравнивать с WS). Рано или поздно захочется грузить байткод, сорцы раздавать налево и направо это значит бесплатно работать.

Да, с академической точки зрения проект на 5 баллов. Как и атом. Поэтому когда настанет день Х, будет поздно. И да, мозиловцы уже старики, им пофиг на то к чему все приведет, главное, это забабахать в своё удовольствие.

gh0stwizard ★★★★★
()
Ответ на: комментарий от contra_sperm_spero

Ась? Я вообще не понял что такое сабж. На вебсервере будет 100500 бинарников под разные платформы? Или это очередная жаба с тормозобайткодом?

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

На вебсервере будет 100500 бинарников под разные платформы

Нет, будет «ассембли» для виртуальных машин браузера т.е.

umren ★★★★★
()
Ответ на: комментарий от gh0stwizard

мозиловцы уже старики, им пофиг на то к чему все приведет, главное, это забабахать в своё удовольствие.

ради интереса посмотри кто участвует в проекте, а то так и проживешь жизнь, ничего не зная

umren ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.