|
|
|
Железный канал: «WebAssembly» |
|
|
БулерМэн
421 EGP
   Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
Первая же мысль, как ускорить работу некоторого кода на веб-странице - это использовать дополнение для браузера, написанного на С/С++, которое будет выполнять этот код (скрипт) не в VM браузера, а на самом железе. Привет, флэш.
Но, нафига использовать какие-то плагины, и браузер вообще, если есть скоростное приложение работающее на железе и может обмениваться данными через Web? Привет, платформозависимые приложения.
Видимо авторам WebAssembly хочется странного: и быструю работу и открытый текстовый формат и кроссплатформенность.
Вопрос: то есть я делая игрушку на JS буду вынужден переписать ее на C++, чтобы она не тормозила?
Или сделать программную оболочку со своим API, причем так, чтобы бинарники (игры) можно было подгружать в директорию с этой оболочкой?
Последний вариант мне напоминает Unity
_________________ Сосиска в хлебе
Последний раз редактировалось: БулерМэн (21:33 25-02-2019), всего редактировалось 1 раз |
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
У меня вопрос - а ЗАЧЕМ это делать?
_________________ Люблю свободный полёт... :) |
|
|
БулерМэн
421 EGP
   Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
БулерМэн : |
чтобы она не тормозила
|
Или ты имеешь в виду - зачем делать игрушку на JS?
_________________ Сосиска в хлебе |
|
|
Voha
942 EGP
          Рейтинг канала: 9(1062) Репутация: 169 Сообщения: 4977 Откуда: Moscow, Russia Зарегистрирован: 15.02.2001
 |
|
БулерМэн : |
Видимо авторам WebAssembly хочется странного: и быструю работу и открытый текстовый формат и кроссплатформенность.
|
Открытый текстовый формат-то откуда ты приплел? wasm-код загружается в виде прекомпилированного бинарника, и (теоретически) исходник может быть написан на любом языке. Через js-api ты можешь загрузить и запустить wasm-код, но ограничения песочницы для него еще строже, чем для js (в частности, прямого доступа к DOM нет).
Нк а вообще - добро пожаловать в фантастический мир, где Микрософт, Гугл, мозила и Эппл внезапно о чем-то договорились
https://webassembly.org/
https://developer.mozilla.org/en-US/docs/WebAssembly
_________________ Time will show... |
|
|
seaman
59 EGP Репутация: 2 Сообщения: 18 Откуда: Самара Зарегистрирован: 15.01.2017
 |
|
Даже Юнити уже умеет в webassembly компилировать:
https://blogs.unity3d.com/ru/2018/08/15/webassembly-is-here/
Там весьма непростой процес. Сначала из C# с помощью IL2CPP в C++, потом из C++ с помощью emscripten в js и наконец с помощью binarien в wasm.
Что в конце получится - непонятно. Как то не верится, что все это реально в использовании. Но принципиально -все работает.
Последний раз редактировалось: seaman (16:54 26-02-2019), всего редактировалось 1 раз |
|
|
_RAZAAR_
62 EGP
  Рейтинг канала: 2(11) Репутация: -13 Сообщения: 2854 Заблокирован Откуда: РАЗААРЪ - 40Лы от Лаве Зарегистрирован: 15.04.2008
 |
|
Voha : |
Открытый текстовый формат-то откуда ты приплел? wasm-код загружается в виде прекомпилированного бинарника, и (теоретически) исходник может быть написан на любом языке. Через js-api ты можешь загрузить и запустить wasm-код, но ограничения песочницы для него еще строже, чем для js (в частности, прямого доступа к DOM нет).
|
А вот тут о чем говорят?
Cкрытый текст (кликните здесь для просмотра)
Will WebAssembly support View Source on the Web?
Yes! WebAssembly defines a text format to be rendered when developers view the source of a WebAssembly module in any developer tool. Also, a specific goal of the text format is to allow developers to write WebAssembly modules by hand for testing, experimenting, optimizing, learning and teaching purposes. In fact, by dropping all the coercions required by asm.js validation, the WebAssembly text format should be much more natural to read and write than asm.js. Outside the browser, command-line and online tools that convert between text and binary will also be made readily available. Lastly, a scalable form of source maps is also being considered as part of the WebAssembly tooling story.
|
И тут
Cкрытый текст (кликните здесь для просмотра)
WebAssembly will define a standardized text format that encodes a WebAssembly module with all its contained definitions in a way that is equivalent to the binary format.
|
и тут разве не предполагается этот текстовый формат?
_________________ Quaere Vērum
------------------------ |
|
|
seaman
59 EGP Репутация: 2 Сообщения: 18 Откуда: Самара Зарегистрирован: 15.01.2017
 |
|
https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts
Цитата: |
Be readable and debuggable — WebAssembly is a low-level assembly language, but it does have a human-readable text format (the specification for which is still being finalized) that allows code to be written, viewed, and debugged by hand.
|
Быть читаемым и отлаживаемым - WebAssembly - это низкоуровневый ассемблерный язык, но он имеет читаемый человеком текстовый формат (спецификация для которого еще дорабатывается), который позволяет писать, просматривать и отлаживать код вручную.
Как я это понимаю.
В браузере уже скомпилированный код. Но есть "дизассемблер", который позволяет видеть код на wasm. Либо в браузере и то и другое. Это кстати косвенно подтверждается:
Цитата: |
Module: Represents a WebAssembly binary that has been compiled by the browser into executable machine code.
|
Также они считают что на самом wasm писать - это неправильно. Есть кросс-компиляторы, которые позволяют писать на высокоуровневых языках и получить код на wasm. Дополнительное преимущество - например наличие garbage-collected
Последний раз редактировалось: seaman (19:33 26-02-2019), всего редактировалось 2 раз(а) |
|
|
БулерМэн
421 EGP
   Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
Voha : |
https://webassembly.org/
|
Your browser doesn't support WebAssembly yet.
Отлично, волшебный мир розовых пони мне не доступен...
_RAZAAR_ : |
и тут разве не предполагается этот текстовый формат?
|
It is written for clarity and simplicity, not speed.
Полагаю, что поддержка текстового формата совершенно не ускоряет работу.
seaman : |
Но принципиально -все работает.
|
Что-то странное нагорожено...
_________________ Сосиска в хлебе |
|
|
seaman
59 EGP Репутация: 2 Сообщения: 18 Откуда: Самара Зарегистрирован: 15.01.2017
 |
|
Цитата: |
Что-то странное нагорожено.
|
Ну да, но работает. Более того демо на официальном сайте сделано на Юнити
https://webassembly.org/demo/Tanks/
|
|
|
_RAZAAR_
62 EGP
  Рейтинг канала: 2(11) Репутация: -13 Сообщения: 2854 Заблокирован Откуда: РАЗААРЪ - 40Лы от Лаве Зарегистрирован: 15.04.2008
 |
|
БулерМэн : |
Voha : |
https://webassembly.org/
|
Your browser doesn't support WebAssembly yet.
Отлично, волшебный мир розовых пони мне не доступен...
|
Ну както ты жестоко к пегасам относишся
Случайно твой браузер не Mosaic или Netscape Navigator v1.0 называется?
Портативная Огненная лиса говорит что все 4 современных обозревателя поддержаны,
Cкрытый текст (кликните здесь для просмотра)
|
БулерМэн : |
It is written for clarity and simplicity, not speed.
Полагаю, что поддержка текстового формата совершенно не ускоряет работу.
|
поддержка текстового формата я полагаю прозволяет писать в этом формате и конвертировать сразу в бинарник для получения желаемого speed, минуя стадию написания на Cи и компиляции ,если это зачемто угодно кодеру изучившему вдруг вебассемблер.
_________________ Quaere Vērum
------------------------
Последний раз редактировалось: _RAZAAR_ (08:45 27-02-2019), всего редактировалось 2 раз(а) |
|
|
БулерМэн
421 EGP
   Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
seaman : |
https://webassembly.org/demo/Tanks/
|
Мой браузер не поддерживает WebGL, FF 52.4.0(32bit)
В Google Chrome Версия 49.0.2623.112 m - видно, что юнити-плеер загружает что-то, но потом серый экран и все. Поддерживает WebGL, но не поддерживает Юнити?
_________________ Сосиска в хлебе |
|
|
Voha
942 EGP
          Рейтинг канала: 9(1062) Репутация: 169 Сообщения: 4977 Откуда: Moscow, Russia Зарегистрирован: 15.02.2001
 |
|
БулерМэн : |
seaman : |
https://webassembly.org/demo/Tanks/
|
Мой браузер не поддерживает WebGL, FF 52.4.0(32bit)
В Google Chrome Версия 49.0.2623.112 m - видно, что юнити-плеер загружает что-то, но потом серый экран и все. Поддерживает WebGL, но не поддерживает Юнити?
|
Продолжать сидеть на версиях, где еще поддерживается анархия доступов к чему попало для плагинов - твой сознательный выбор, наверное. Но при этом довольно странно ожидать от говна мамонта поддержки современных технологий.
_________________ Time will show... |
|
|
seaman
59 EGP Репутация: 2 Сообщения: 18 Откуда: Самара Зарегистрирован: 15.01.2017
 |
|
ссылка
FF по идее должен твой поддерживать
|
|
|
_RAZAAR_
62 EGP
  Рейтинг канала: 2(11) Репутация: -13 Сообщения: 2854 Заблокирован Откуда: РАЗААРЪ - 40Лы от Лаве Зарегистрирован: 15.04.2008
 |
|
seaman : |
https://ru.wikipedia.org/wiki/WebAssembly#%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0_%D0%B2_%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%B0%D1%85
FF по идее должен твой поддерживать
|
FF 65.0.1 (64bit) поддерживает
_________________ Quaere Vērum
------------------------ |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 1(2) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
_RAZAAR_ : |
если это зачемто угодно кодеру изучившему вдруг вебассемблер.
|
ну вот непонятно зачем его изучать, код более всего напоминает лисп, собственно в википедии есть пример
_________________ This is what you get ...
(c) Radiohead |
|
|
БулерМэн
421 EGP
   Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
seaman : |
FF по идее должен твой поддерживать
|
По идее должен, но как говорится - не обязан. У меня ESR версия, обновления касаются только критических мест.
ЗЫ Все версии новее 52-ой не работают на WinXP о чем говорит предупреждение инсталлятора. Начиная с версии 60 - инсталлятор запускается, но т.к. это приложение для win7 32bit (скачанное по наивности для xp) оно висит. Обложили демоны со всех сторон.
Voha : |
анархия доступов к чему попало для плагинов - твой сознательный выбор
|
Поэтому все плагины отключены.
Мне действительно трудно продраться через статьи на английском языке на тему Wasm.
https://webassembly.org/getting-started/developers-guide/#compile-and-run-a-simple-program
Типа скачайте то-то, установите среду, компилятор и только потом попробуйте запустить HelloWorld, при этом запустится ваш собственный веб-сервер и покажет надпись HelloWorld. Что?!
А что это дает в принципе? Там что, в html-файл встраивается неприкрытый бинарник? То есть не файл закодированный в base64, а именно бинарник в тексте?
Что-то я тыкаюсь в пустую...
Sh.Tac. : |
собственно в википедии есть пример
|
Где?
добавлено спустя 1 минуту:
Sh.Tac. : |
ну вот непонятно зачем его изучать
|
врага нужно знать в лицо
_________________ Сосиска в хлебе
Последний раз редактировалось: БулерМэн (05:31 28-02-2019), всего редактировалось 5 раз(а) |
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
Это Ява, вид в профиль.
_________________ Люблю свободный полёт... :) |
|
|
БулерМэн
421 EGP
   Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
Поискал информацию про ява-апплеты для встраивания в html-страницу. Тег <applet> устарел, но можно использовать <object>.
Например:
Cкрытый текст (кликните здесь для просмотра)
Код: |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Тег OBJECT</title>
</head>
<body>
<p><object type="application/x-shockwave-flash"
data="images/mouse.swf" width="400" height="300">
<param name="quality" value="high">
<param name="wmode" value="opaque">
</object></p>
</body>
</html> |
|
В этом случае, для отображения объекта требуется плагин, который и будет обрабатывать содержимое данного тега по указанным параметрам, например по ссылке SRC.
Правильно ли я понимаю, что wasm-программа по факту является плагином?!
Интересно, посмотрел что показывает пример Tanks https://webassembly.org/demo/Tanks/
а там внезапно используется canvas!
Простенькие примеры, использующие обертку для OpenGL - работают, например вот эти - ссылка
WebGL v1.0 у меня работает только в Chrome 49.0.2623.112 m. более новую версию установить не получится из-за отсутствия поддержки WinXP самим гуглом.
В примерах с танками - Chrome так же ругается на отсутствие поддержки данной технологии.
добавлено спустя 12 минут:
Не совсем понятно, wasm это код, запускаемый на стороне сервера, а не на стороне пользователя?
_________________ Сосиска в хлебе
Последний раз редактировалось: БулерМэн (19:29 28-02-2019), всего редактировалось 3 раз(а) |
|
|
seaman
59 EGP Репутация: 2 Сообщения: 18 Откуда: Самара Зарегистрирован: 15.01.2017
 |
|
Цитата: |
wasm это код, запускаемый на стороне сервера
|
нет, конечно, раз браузер его компилирует.
Цитата: |
внезапно используется canvas!
|
Ну а где он еще его отобразит?
Цитата: |
wasm-программа по факту является плагином?
|
Не знаю, что подразумевается под "плагином". Загружается отдельно.
Имеет такой вид:
Cкрытый текст (кликните здесь для просмотра)
|
Загружается на странице тут:
Cкрытый текст (кликните здесь для просмотра)
|
Последний раз редактировалось: seaman (21:06 28-02-2019), всего редактировалось 1 раз |
|
|
БулерМэн
421 EGP
   Рейтинг канала: 4(58) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006
 |
|
Все таки двоичные, т.к. скрипт ссылается на тип объекта blob, то есть произвольные неизменяемые данные. Судя по содержимому - в начале объявления функций с указанными типами данных и количеством аргументов. Т.е. это библиотека с функциями, которые может вызвать скрипт, видимо как DLL для Windows.
Только обработчик данных функций, как я понимаю - зашит в браузер, который поддерживает wasm.
Единственное, что не понятно - при активном юнити-плеере - у меня код страницы выглядит таким вот образом:
Cкрытый текст (кликните здесь для просмотра)
Код: |
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Unity WebGL Player | Tanks!</title>
<link rel="shortcut icon" href="TemplateData/favicon.ico">
<link rel="stylesheet" href="TemplateData/style.css">
<script src="TemplateData/UnityProgress.js"></script>
<script src="Build/UnityLoader.js"></script>
<script>
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/tanks.json", {onProgress: UnityProgress});
</script>
</head>
<body>
<div class="webgl-content">
<div id="gameContainer" style="width: 1280px; height: 720px"></div>
<div class="footer">
<div class="webgl-logo"></div>
<div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div>
<div class="title">Tanks!</div>
</div>
</div>
</body>
</html>
|
|
Никаких ссылок на <script src='blob:...'> у меня нет
То есть, юнити-плеер запускает компиляцию этого blob'a с кодом библиотеки, беря в качестве исходника 'Build/tanks.json', содержащий скорее всего текст на каком-то языке?
Или я неправильно понял?
_________________ Сосиска в хлебе |
|
|
|
|
|
Железный канал: «WebAssembly» |
|