LINUX.ORG.RU
ФорумTalks

WebAssembly: бинарный формат скоро во всех браузерах страны

 , , , ,


0

2

WebAssembly (https://github.com/WebAssembly/design) is a new format for native programs on the web. It aims to support everything that asm.js supports, but allows the VM to sidestep the JS parsing and profiling pipeline entirely. This is a good thing for the VM - less work to support native code.

Although WebAssembly will have polyfill to asm.js, we should support it natively by:

- Having a WebAssembly baseline JIT that's used for fast start-up and some basic execution count profiling.
- An LLVM backend that uses the FTL's LLVM glue and compiler plan scheduling for hot code.

This standard has broad support, and we should continue to participate in discussions about how to make it great.

https://blog.mozilla.org/luke/2015/06/17/webassembly/
https://brendaneich.com/2015/06/from-asm-js-to-webassembly/
http://blogs.msdn.com/b/mikeholman/archive/2015/06/17/working-on-the-future-o...
https://twitter.com/jfbastien/status/611201861245399041

Сейчас единственный способ писать client-side — использовать JS или любой другой язык, который будет транслироваться в JS. Что геморрно, ибо генерировать JopaScript не очень удобно, да и браузеры не в восторге его парсить. WebAssembly - бинарный формат, который проще как генерировать, так и парсить (Из FAQ: исходники по прежнему можно будет просматривать в читаемом виде в developer tools).

В краткосрочной перспективе (в качестве Proof of Concept или MVP) формат будет пригоден для использования под web С/C++ (языки без GC). При чём, (в том числе) можно будет линковать модули написанные на этих низкоуровневых языках из обычного JS. В дальнейшем планируется добавить поддержку других языков, реализовав garbage collected объекты.

Ответ на: комментарий от knovich

А какая разница? Сейчас браузер исполняет JS, с этой хренью он точно так же будет исполнять бинарник. Права те же. Ничего не меняется.
Ну кроме возможности писать на Си.
Так что это скорее хорошо.

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

ЕМНИП всякие цги-бин можно и так на си писать. Эдик вроде как-то хвастался давно, что на сях пишет в браузер...

Zhbert ★★★★★
()

Че за бесконечная череда полумер, давайте сразу отдавать по ftp бинарник и запускать. Сначала в песочнице, потом, когда расслабятся, разрешить ее отключать кнопкой «сделать быстрее». А то какие-то браузеры, JS, как будто это какое-то отношение имеет к гипертексту и протоколу для его отдачи.

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

Разумеется можно, только вот кросплатформенность.
И мы сейчас говорим про код, исполняющийся на стороне клиента. На стороне сервера хоть на форте пиши.
А тут получим вместо ктулхумерзкого ЖС — любой язык. Переводишь его в байткод (жаба, привет) и радуешься жизни.

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

cgi-bin - это про серверную сторону. WebAssembly - для клиенткой (браузер пользователя). Поэтому рекламная «фишка» JS - «один язык для сервера и клиента» будет (я надеюсь) актуальна для любого языка.

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

Там рантайм адового размера будет, как и все что связано с asmjs.

Не верю что взлетит. Гугл их в очередной раз пошлет с asm.js. В гуглях считают, что осилят сделать быстрый JIT без костылей.

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

Слушай, а бинарник под мой powerPC ты уже собрал?
Бинарник это хорошо, но, как показывает практика, для многих даже в масштабе х86 тяжко перейти на АМД64, а ты говоришь про кучу платформ.
«Виртуальная машина» вполне исправит ситуацию.

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

Поэтому рекламная «фишка» JS - «один язык для сервера и клиента» будет (я надеюсь) актуальна для любого языка.

Уже лет семь не пойму, в чем проблема? Выкиньте из этой цепочки никому не нужный браузер и пишите сервер и клиент хоть на тикле.

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

I’m happy to report that we at Mozilla have started working with Chromium, Edge and WebKit engineers on creating a new standard, WebAssembly, that defines a portable, size- and load-time-efficient format and execution model specifically designed to serve as a compilation target for the Web.

https://blog.mozilla.org/luke/2015/06/17/webassembly/

Vit, понимаю, много времени инвестировано в Nodeca и трудно осозновать, что то же самое можно будет сделать с меньшими усилиями на нормальном языке.

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

Как только ТС уберет тег «веб» с темы, к которой он не относится =)

P.S. черт, это еще и ты.

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

Лол, убийцы яваскриптов любят сравнивать то что есть с тем чего нет.

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

Я ни в коем случае не специалист, но не будет ли это жутковатым решетом?

Всё выглядит так: из цепочки обработки asm.js выкидывают js-кодирование скомпиленной софтины, и «декодирование» оной на клиенте. Меньше кода обработки, меньше дыр, меньше трафика, меньше нагрузка на CPU/RAM.

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

Более весомые пруфы будут? Таких тикетов можно вагон найти.

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

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

Вполне возможно когда хипстеры продавят язык программирования как в голливудских боевиках — с сиськами, 3Д и виртуальной реальностью, то и Яву начнут называть низкоуровневой:)

Stahl ★★☆
()
Ответ на: комментарий от Stahl
#импорт преферанс
#импорт стюардессы

апликуха.сделатьХорошоВТриДэ(конфиг [раскрытьТемуСисек]);
deep-purple ★★★★★
()
Ответ на: комментарий от Zhbert

Так то серверсайд, а это клиентсайд. Разницу чувствуешь?

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

Однажды и её назовут низкоуровневой?

Язык java под jvm уже выглядит низкоуровневым на фоне scala.

Когда они стали низкоуровневыми?

Когда rust расправил крылья.

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

никому не нужный браузер

В наше время пользователю проще и удобнее работать в браузере, чем качать клиент везде, где он может пригодиться.

Ghostwolf ★★★★★
()

Вот это дырища будет.

Но вообще непонятно, чем это отличается от всяких плагинов. Тем что не надо будет устанавливать, а эксплоит будет запускаться сам?

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

В наше время

Потомки, как вы там? Высадились на Марс?

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

Какие ещё пруфы нужны? Выше по ссылке в блоге Mozilla (а так же в блогах каждого из участников) заявлено, что это совместная работа Google, Mozilla и Microsoft.

Список контрибьюторов какой-нибудь репы можно посмотреть: https://github.com/WebAssembly/design/graphs/contributors

Можно почитать твиты тех, у кого нет блогов: https://twitter.com/jfbastien/

А можно узнать кто такой @jfbastien и его последнее место работы:

Occupation
Systems & Compilers Maven

Google
Sr. Software Engineer, 2012 - present
Compiler engineer on Portable Native Client, currently focusing on performance and security as well as LLVM for portability. I bring portable, fast and secure native code to the Web. Side-project: tune the V8 JavaScript engine on ARM.

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

У асмжээса размер конский получится, и набор фич от синтаксиса зависит, а не от потребностей.

Vit ★★★★★
()

Им дали Java, но нет! Не хотят писать апплеты на Java! Хотят жрать говно!

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

Уж поумнее тех мудаков, которые WebAssembly придумали.

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

Это следующая ветвь эволюции asm.js

Я пока не понял, в чем эволюция. Этот WebAssembly всё равно будут переводить в asm.js.

Не NIH, Mozilla ведь тоже причастна.

У Мозиллы нет NIH, у Гугла - есть.

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

Как говоришь мне из сервлета DOM'ом манипулировать? А линковать либу на Java из JavaScript не напомнишь как?

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

Why create a new standard when there is already asm.js?

There are two main benefits WebAssembly provides:

  • The kind of binary format being considered for WebAssembly can be natively decoded much faster than JS can be parsed (experiments show more than 20× faster). On mobile, large compiled codes can easily take 20–40s just to parse, so native decoding (especially when combined with other techniques like streaming for better-than-gzip compression) is critical to providing a good cold-load user experience.
  • By avoiding the simultaneous asm.js constraints of (1) AOT-compilability and (2) good performance even on engines without specific asm.js optimizations, a new standard makes it much easier to add the features required to reach native levels of performance.


WebAssembly, “wasm” for short, .wasm filename suffix, a new binary syntax for low-level safe code, initially co-expressive with asm.js, but in the long run able to diverge from JS’s semantics, in order to best serve as common object-level format for multiple source-level programming languages.

asm.js is great, but once engines optimize for it, the parser becomes the hot spot — very hot on mobile devices. Transport compression is required and saves bandwidth, but decompression before parsing hurts. A secondary consideration: JS has a few awkward corners even in its asm.js subset. Finally, once browsers support the WebAssembly syntax natively, JS and wasm can diverge, without introducing unsafe or inappropriate features into JS just for use by compilers sourcing a few radically different programming languages.

https://brendaneich.com/2015/06/from-asm-js-to-webassembly/

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

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

меняется то, что пользователь не может понять содержимое программы. Никто не может, даже Анатолий Вассерман. Это ограничивает Основную Свободу - пользователь должен четко понимать, что происходит на его компьютере.

Некоторое время веб был оплотом Свободы потому, что всем приходилось писать на умопостижимом JS, совершенно у всех были исходники всего. Сейчас мы возвращаемся к тёмым векам, примерно как в эпоху расцвета коммерческого ПО на десктопах. С этим нужно бороться!

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

С этим нужно бороться!

Механизмы уже есть — GPL, BSD и сотни других лицензий говорящих об открытом коде.
Ты же бежишь переписывать всё на питон чтобы код был читающийся.

Stahl ★★☆
()

Ну если будет polyfill в asm.js, то понятно, но они планируют что когда-то не будет? Вон Google до сих пор Dart VM не пропихнула, владея лидирующим в мире браузером, а у них точно получится

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

Всё выглядит так: из цепочки обработки asm.js выкидывают js-кодирование скомпиленной софтины

Я так понимаю asm.js код начинается с определенного комментария-директивы, что позволяет не задействовать полноценный парсер JS, а использовать специализированный, который понимает только подмножество JS - asm.js

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

Все зависит от того, будет нативная поддержка где-то кроме мозиллы или нет.

asm.js из-за этого не взлетел (и не взлетит). Поэтому рассматривать WA как бинарную упаковку asm.js не корректно. Это все-таки больше LLVM, но в первой реализации обкоцанный.

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

настала пора писать заглушки «этот сайт открывается только в Mozilla Firefox, скачать его можно по ссылке» :)))

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