-
-
Save abc0990cba/e1c29c75c89a514f38c3e7663ff6a2cc to your computer and use it in GitHub Desktop.
Revisions
-
MaxGraey revised this gist
Jul 28, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ ## FAQ мигрировал на https://github.com/WebAssembly-Enthusiasts/info/blob/master/FAQ/ru.md ### Введение Данный FAQ был специально создан для телеграм сообщества https://t.me/WebAssembly_ru. -
MaxGraey revised this gist
Jul 28, 2020 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,6 @@ # UPD FAQ мигрировал на https://github.com/WebAssembly-Enthusiasts/info/blob/master/FAQ/ru.md ### Введение Данный FAQ был специально создан для телеграм сообщества https://t.me/WebAssembly_ru. -
MaxGraey revised this gist
Jul 26, 2020 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -76,7 +76,7 @@ Java-апплеты (через JNI). Это уже стало давно проблематично даже для JavaScript, с тех пор как все начали использовать минификаторы и обфускаторы. Тем не менее, большинство браузеров сейчас умеют отображать wasm-модули в текстовом представлении, что порой куда более понятней, чем минифицированный и обфусцированный JavaScript-код. Кроме того, браузеры и инструменты сборки давно уже поддерживают source maps для WebAssembly и ведутся работы над поддержкой [DWARF](https://en.wikipedia.org/wiki/DWARF) секций что позволит делать полноценную символьную отладку. ### 9. WebAssembly это раздолье для криптомайнеров? Могу ли я запретить WebAssembly в своем браузере? @@ -159,6 +159,6 @@ WASI (WebAssembly System Interface) - это проект ABI от Mozilla, ко #### Автор - Max Graey @ 2020 - Telegram: @maxgraey - Twitter: https://twitter.com/MaxGraey -
MaxGraey revised this gist
Jun 3, 2020 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -149,6 +149,7 @@ WASI (WebAssembly System Interface) - это проект ABI от Mozilla, ко - https://webassembly.github.io/spec/core - https://github.com/WebAssembly/proposals - https://github.com/mbasso/awesome-wasm - https://github.com/appcypher/awesome-wasm-langs#awesome-webassembly-languages- - https://github.com/appcypher/awesome-wasm-runtimes#awesome-webassembly-runtimes- - https://hacks.mozilla.org/author/lclarkmozilla-com -
MaxGraey revised this gist
May 30, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -127,7 +127,7 @@ JavaScript налагает дополнительные расходы. В по поддерживает (пока только Chrome) атомарные инструкции и потоки, работающие с разделяемой памятью [SharedArrayBuffer](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer); - от того, как часто вы вызываете методы хоста (Web API) из под WebAssembly или экспортируемые методы wasm на стороне хоста; - и наконец, от [скорости оптимизирующих AOT/JIT-компиляторов](https://00f.net/2019/10/22/updated-webassembly-benchmark/) самих виртуальных машин. ### 14. Что такое WASI? -
MaxGraey revised this gist
May 30, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -124,7 +124,7 @@ JavaScript налагает дополнительные расходы. В по - от текущих задач, которые вы стремитесь решить. Как мы уже выяснили манипуляции с DOM у WebAssembly явно не будут быстрее. Зато игры, криптография, эмуляторы, CAD-системы, DSP, кодирование/декодирование мультимедиа определенно да! Особенно если учесть, что в будущем WebAssembly будет поддерживать SIMD-комманды недоступные для JavaScript и уже поддерживает (пока только Chrome) атомарные инструкции и потоки, работающие с разделяемой памятью [SharedArrayBuffer](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer); - от того, как часто вы вызываете методы хоста (Web API) из под WebAssembly или экспортируемые методы wasm на стороне хоста; - и наконец, от [скорости оптимизирующих JIT-компиляторов](https://00f.net/2019/10/22/updated-webassembly-benchmark/) самих виртуальных машин. -
MaxGraey revised this gist
May 9, 2020 . 1 changed file with 8 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -147,14 +147,14 @@ WASI (WebAssembly System Interface) - это проект ABI от Mozilla, ко #### Полезные ресурсы - https://webassembly.github.io/spec/core - https://github.com/WebAssembly/proposals - https://github.com/appcypher/awesome-wasm-langs#awesome-webassembly-languages- - https://github.com/appcypher/awesome-wasm-runtimes#awesome-webassembly-runtimes- - https://hacks.mozilla.org/author/lclarkmozilla-com - https://madewithwebassembly.com - https://wasmbyexample.dev - https://webassembly.studio #### Автор -
MaxGraey revised this gist
May 9, 2020 . 1 changed file with 7 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -149,10 +149,13 @@ WASI (WebAssembly System Interface) - это проект ABI от Mozilla, ко 1. https://webassembly.github.io/spec/core 2. https://github.com/WebAssembly/proposals 3. https://github.com/appcypher/awesome-wasm-langs#awesome-webassembly-languages- 4. https://github.com/appcypher/awesome-wasm-runtimes#awesome-webassembly-runtimes- 5. https://hacks.mozilla.org/author/lclarkmozilla-com 6. https://madewithwebassembly.com 7. https://wasmbyexample.dev 8. https://webassembly.studio #### Автор - Max Graey @ 2019 -
MaxGraey revised this gist
May 9, 2020 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -152,6 +152,7 @@ WASI (WebAssembly System Interface) - это проект ABI от Mozilla, ко 3. https://hacks.mozilla.org/author/lclarkmozilla-com 4. https://madewithwebassembly.com 5. https://wasmbyexample.dev 6. https://webassembly.studio #### Автор - Max Graey @ 2019 -
MaxGraey revised this gist
May 9, 2020 . 1 changed file with 8 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -145,6 +145,14 @@ WASI (WebAssembly System Interface) - это проект ABI от Mozilla, ко Будем надеяться и WebAssembly постигнет такой же успех! #### Полезные ресурсы 1. https://webassembly.github.io/spec/core 2. https://github.com/WebAssembly/proposals 3. https://hacks.mozilla.org/author/lclarkmozilla-com 4. https://madewithwebassembly.com 5. https://wasmbyexample.dev #### Автор - Max Graey @ 2019 - Telegram: @maxgraey -
MaxGraey revised this gist
Mar 13, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -48,7 +48,7 @@ Java-апплеты (через JNI). ### 5. Могу ли я вызывать tcp-сокеты/операции ввода-вывода/DOM/WebGL и другие API браузера или ОС из под WebAssembly напрямую? **Нет!** WebAssembly работает внутри изолированной программной среды браузера или другой VM и может получать доступ только к веб-API только косвенно через JavaScript. Однако emscripten SDK (C++) и web-sys (Rust) предоставляют обертки для многих распространенных API, что упрощает перенос существующего кода C / C++ / Rust (например, конвертировать TcpSockets-в-WebSockets, OpenGL-в-WebGL, OpenAL-в-WebAudio и т.д.). В дальнейшем, когда будет реализован [interface-types (webidl-bindings) proposal](https://github.com/WebAssembly/interface-types/blob/master/proposals/interface-types/Explainer.md) всеми браузерами, всего вышеперечисленного не потребуется, и можно будет обращаться непосредственно к Web API или любому другому интерфейсу (в случае со standalone VM) непосредственно через WebIDL а так же [WASI](https://gist.github.com/MaxGraey/326b1c04d66de3beb247c2c1e6358fd0#14-%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-wasi) интерфейс. -
MaxGraey revised this gist
Feb 7, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -127,7 +127,7 @@ JavaScript налагает дополнительные расходы. В по поддерживает (но только для Chrome под флагом) атомарные инструкции и потоки, работающие с разделяемой памятью [SharedArrayBuffer](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer); - от того, как часто вы вызываете методы хоста (Web API) из под WebAssembly или экспортируемые методы wasm на стороне хоста; - и наконец, от [скорости оптимизирующих JIT-компиляторов](https://00f.net/2019/10/22/updated-webassembly-benchmark/) самих виртуальных машин. ### 14. Что такое WASI? -
MaxGraey revised this gist
Feb 7, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -76,7 +76,7 @@ Java-апплеты (через JNI). Это уже стало давно проблематично даже для JavaScript, с тех пор как все начали использовать минификаторы и обфускаторы. Тем не менее, большинство браузеров сейчас умеют отображать wasm-модули в текстовом представлении, что порой куда более понятней, чем минифицированный и обфусцированный JavaScript-код. Кроме того, браузеры и инструменты сборки давно уже поддерживают source maps для WebAssembly и ведуться работы над поддержкой [DWARF](https://en.wikipedia.org/wiki/DWARF) секций что позволит делать полноценную символьную отладку. ### 9. WebAssembly это раздолье для криптомайнеров? Могу ли я запретить WebAssembly в своем браузере? -
MaxGraey revised this gist
Feb 4, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -107,7 +107,7 @@ JavaScript налагает дополнительные расходы. В по затраты на сериализацию и десереализацию в случае со структурами или объектами. Может возникнуть очень заманчивая идея создать свою реактивную библиотеку работы с DOM (или реализовать лишь diff-алгоритм для Virtual DOM) например для Rust, С++ или Go. [Не делайте этого](https://stackoverflow.com/questions/59015066/using-rustwebassembly-for-web-development-how-to-solve-the-extra-cost-of-wasm)! По крайней мере пока. Как показывает опыт таких экспериментальных библиотек как yew и asm-dom это зачастую медленее даже самых медлительных JavaScript-библиотек или фреймворков, не говоря уже о непосредственной работе с vanilla DOM без дополнительных абстракций. -
MaxGraey revised this gist
Oct 9, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -8,7 +8,7 @@ ### 0. Какие цели у WebAssembly? - Определение переносимого двоичного формата с эффективным размером и временем загрузки, который будет служить целью компиляции и выполняться с предсказуемой скоростью и детерменированным поведением в рамках среды выполнения; - Позволить портирование и исполнение в web уже имеющегося кода отличного от JavaScript; - При всем этом не нарушая целостности уже существующей веб-экосистемы. ### 1. WebAssembly это нативный код CPU? -
MaxGraey revised this gist
Oct 9, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,7 +7,7 @@ ### 0. Какие цели у WebAssembly? - Определение переносимого двоичного формата с эффективным размером и временем загрузки, который будет служить целью компиляции и выполняться с предсказуемой скоростью и детерменированным поведением в рамках среды выполнения; - Позволять портирование и исполнение в web уже имеющегося кода отличного от JavaScript; - При всем этом не нарушая целостности уже существующей веб-экосистемы. -
MaxGraey revised this gist
Aug 21, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -49,7 +49,7 @@ Java-апплеты (через JNI). **Нет!** WebAssembly работает внутри изолированной программной среды браузера или другой VM и может получать доступ только к веб-API (так же, как и в JavaScript). Однако emscripten SDK (C++) и web-sys (Rust) предоставляют обертки для многих распространенных API, что упрощает перенос существующего кода C / C++ / Rust (например, конвертировать TcpSockets-в-WebSockets, OpenGL-в-WebGL, OpenAL-в-WebAudio и т.д.). В дальнейшем, когда будет реализован [interface-types (webidl-bindings) proposal](https://github.com/WebAssembly/interface-types/blob/master/proposals/interface-types/Explainer.md) всеми браузерами, всего вышеперечисленного не потребуется, и можно будет обращаться непосредственно к Web API или любому другому интерфейсу (в случае со standalone VM) непосредственно через WebIDL а так же [WASI](https://gist.github.com/MaxGraey/326b1c04d66de3beb247c2c1e6358fd0#14-%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-wasi) интерфейс. -
MaxGraey revised this gist
Aug 3, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -55,7 +55,7 @@ Java-апплеты (через JNI). ### 6. Могу ли я загрузить или создать нативную DLL-библиотеку в WebAssembly? **Нет!** Динамические библиотеки, которые используются в операционной системе являются машинным кодом и, следовательно, не будут работать (без эмуляции соответсвуюшего процессора). Стоит так же заметить, что Blazor, может действительно загружать файлы с расширением `.dll` в браузере, но это CIL-библиотеки Mono-рантайма которые выполняются в режиме интерпретации. В то же время WebAssembly будет поддерживать динамическую линковку между Wasm-модулями, что позволит повторно использовать модули совместно используемого кода (идея состоит в том, чтобы уменьшить размер загрузки, перемещая общий код в -
MaxGraey revised this gist
Jun 3, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -49,7 +49,7 @@ Java-апплеты (через JNI). **Нет!** WebAssembly работает внутри изолированной программной среды браузера или другой VM и может получать доступ только к веб-API (так же, как и в JavaScript). Однако emscripten SDK (C++) и web-sys (Rust) предоставляют обертки для многих распространенных API, что упрощает перенос существующего кода C / C++ / Rust (например, конвертировать TcpSockets-в-WebSockets, OpenGL-в-WebGL, OpenAL-в-WebAudio и т.д.). В дальнейшем, когда будет реализован [webidl-bindings proposal](https://github.com/WebAssembly/webidl-bindings/blob/master/proposals/webidl-bindings/Explainer.md) всеми браузерами, всего вышеперечисленного не потребуется, и можно будет обращаться непосредственно к Web API или любому другому интерфейсу (в случае со standalone VM) непосредственно через WebIDL а так же [WASI](https://gist.github.com/MaxGraey/326b1c04d66de3beb247c2c1e6358fd0#14-%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-wasi) интерфейс. -
MaxGraey revised this gist
May 29, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -133,7 +133,7 @@ JavaScript налагает дополнительные расходы. В по Префикс "Web" в названии WebAssembly может навести на мысль, что эта технология создавалась исключительно для веба, но это не так. На данный момент уже существует огромное множество [standalone рантаймов для WebAssembly](https://github.com/appcypher/awesome-wasm-runtimes#webassembly-runtimes) способные исполнять wasm не в самом браузере а непосредственно в ОС или в нативном приложении. WASI (WebAssembly System Interface) - это проект ABI от Mozilla, который определяет стандартизированный интерфейс взаимодействия ОС с wasm-модулем (такой себе POSIX только для wasm). WASI дает возможность получить доступ к таким функциям как файловая система, сетевые сокеты, таймеры и генераторы случайных чисел. Развитие ABI предполагает независимость от браузера, JavaScript и WebAPI. При этом проект обеспечивает надлежащий уровень изоляции от основной системы и позволяет определять полномочия приложения в стиле CloudABI и Capsicum. Файлы, каталоги, сокеты и другие ресурсы ассоциируются со специальным типом файловых дескрипторов, а для взаимодействия с каждым из ресурсов приложения должен иметь полномочия. Последние обрабатываются иерархически, то есть доступ к каталогу автоматически открывает и доступ ко всем файлам в нем. Кроме того существует polyfill WASI для браузеров и готовиться для node.js. Все это дает возможность писать модули с единым интерефейсом как для десктопных так и для браузерных приложений. Стоит также отметить, что на данном этапе это довольно базовая спецификация, не описывающая пока криптографию, API для работы с GPU, асинхронный I/O, TLS и т.д. кроме работы с процессами, так что IPC и fork не планируются. ### 15. WebAssembly это конец гегемонии и смерть JavaScript? -
MaxGraey revised this gist
May 24, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -133,7 +133,7 @@ JavaScript налагает дополнительные расходы. В по Префикс "Web" в названии WebAssembly может навести на мысль, что эта технология создавалась исключительно для веба, но это не так. На данный момент уже существует огромное множество [standalone рантаймов для WebAssembly](https://github.com/appcypher/awesome-wasm-runtimes#webassembly-runtimes) способные исполнять wasm не в самом браузере а непосредственно в ОС или в нативном приложении. WASI (WebAssembly System Interface) - это проект ABI от Mozilla, который определяет стандартизированный интерфейс взаимодействия ОС с wasm-модулем (такой себе POSIX только для wasm). WASI дает возможность получить доступ к таким функциям как файловая система, сетевые сокеты, таймеры и генераторы случайных чисел. Развитие ABI предполагает независимость от браузера, JavaScript и WebAPI. При этом проект обеспечивает надлежащий уровень изоляции от основной системы и позволяет определять полномочия приложения в стиле CloudABI и Capsicum. Файлы, каталоги, сокеты и другие ресурсы ассоциируются со специальным типом файловых дескрипторов, а для взаимодействия с каждым из ресурсов приложения должен иметь полномочия. Последние обрабатываются иерархически, то есть доступ к каталогу автоматически открывает и доступ ко всем файлам в нем. Кроме того существует polyfill WASI для браузеров и готовиться для node.js. Все это дает возможность писать модули с единым интерефейсом как для десктопных так и для браузерных приложений. Стоит также отметить, что на данном этапе это довольно базовая спецификация, не описывающая пока криптографию, API для работы с GPU, асинхронный I/O и т.д. ### 15. WebAssembly это конец гегемонии и смерть JavaScript? -
MaxGraey revised this gist
May 17, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -139,7 +139,7 @@ WASI (WebAssembly System Interface) - это проект ABI от Mozilla, ко **Нет!** Определенно нет! При всех очевидных преимуществах WebAssembly будет слишком смело ожидать, что то огромное колличество библиотек, фреймворков и инструментов уже созданных для JavaScript экосистемы вдруг начнет переписываться на Rust, C++ или любой другой поддерживающий wasm язык, а огромная армия frontend-разработчиков незамедлительно ринется осваивать системное програмирование и соответствующие ему языки, особенно, если учесть, что в этой области порог вхождения несопостовимо выше чем у JavaScript. Кроме того, как мы уже выяснили далеко не для всех задач WebAssembly целесообразен. Языку Cи уже почти 50 лет и за это время возникло довольно много его надмножеств и прямых конкурентов, которые должны были покончить с ним, но как мы [видим](https://github.blog/2018-11-15-state-of-the-octoverse-top-programming-languages/) этого не произошло и он до сих пор остается в десятке наиболее часто используемых языков. Еще одна важная особенность JavaScript состоит в том, что это интерпретируемый динамичный язык, поддерживающий очень многие функции полностью или частично недоступные языкам с AOT-компиляцией. Например, в игровой индустрии по-прежнему очень популярны Lua, JS, Python которые используются для описания скриптовых сцен да и игровой механики в целом. Кроме того, JavaScript давно вышел за пределы браузера и используется для бэкенда (node.js, deno), мобильной разработки (ReactNative, NativeScript, Cordova) и даже для программирования логики встраиваемых (IoT) устройств. -
MaxGraey revised this gist
Apr 18, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -92,7 +92,7 @@ Java-апплеты (через JNI). WebAssembly-модуля не будет сильно отличаться от использования обычной JavaScript-библиотеки, вы зачастую даже не будете об этом подозревать. Так что написание тех частей приложения, которые впоследствии будут компилироваться в wasm-модуль можно поручить системным разработчикам, уже знакомыми с одним из таких языков. Кроме того, активно развивается TypeScript-подобный язык [AssemblyScript](https://github.com/AssemblyScript/assemblyscript) способный производить WebAssembly-модуль и с которым большинство JavaScript/TypeScript разработчиков будут себя чувствовать в комфортной и знакомой среде. Полный список языков, поддерживающих WebAssembly можно посмотреть [здесь](https://github.com/appcypher/awesome-wasm-langs#contents). -
MaxGraey revised this gist
Apr 12, 2019 . 1 changed file with 0 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -8,7 +8,6 @@ ### 0. Какие цели у WebAssembly? - Определение переносимого двоичного формата с эффективным размером и временем загрузки, который будет служить целью компиляции и выполняться с предсказуемой скоростью; - Позволять портирование и исполнение в web уже имеющегося кода отличного от JavaScript; - При всем этом не нарушая целостности уже существующей веб-экосистемы. -
MaxGraey revised this gist
Apr 12, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -10,7 +10,7 @@ - Определение переносимого двоичного формата с эффективным размером и временем загрузки, который будет служить целью компиляции и выполняться с предсказуемой скоростью; - Испольнение в той же семантической вселенной, что и JavaScript но и не только, при этом не нарушать уже имеющиеся политики безопасности; - Позволять портирование и исполнение в web уже имеющегося кода отличного от JavaScript; - При всем этом не нарушая целостности уже существующей веб-экосистемы. ### 1. WebAssembly это нативный код CPU? -
MaxGraey revised this gist
Apr 12, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,7 +7,7 @@ ### 0. Какие цели у WebAssembly? - Определение переносимого двоичного формата с эффективным размером и временем загрузки, который будет служить целью компиляции и выполняться с предсказуемой скоростью; - Испольнение в той же семантической вселенной, что и JavaScript но и не только, при этом не нарушать уже имеющиеся политики безопасности; - Позволять портирование и исполнение в web уже имеющегося кода отличного от JavaScript; - При всем этом не нарушая целостности уже имеющейся веб-экосистемы. -
MaxGraey revised this gist
Apr 12, 2019 . 1 changed file with 7 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -5,6 +5,13 @@ Он базируется на [статье от Andre Weissflog](https://floooh.github.io/2017/06/09/webassembly-demystified.html), но так же содержит множество моих дополнений и мыслей, которые могут быть уже не слишком актуальны на момент прочтения. Прошу это учитывать. ### 0. Какие цели у WebAssembly? - Определелени переносимого двоичного формата с эффективным размером и временем загрузки, который будет служить целью компиляции и выполняться с предсказуемой скоростью; - Испольнение в той же семантической вселенной, что и JavaScript но и не только, при этом не нарушать уже имеющиеся политики безопасности; - Позволять портирование и исполнение в web уже имеющегося кода отличного от JavaScript; - При всем этом не нарушая целостности уже имеющейся веб-экосистемы. ### 1. WebAssembly это нативный код CPU? **Нет!** WebAssembly - это цель компиляции и промежуточный формат, который скорее похож на байткод в .NET, LLVM IR или -
MaxGraey revised this gist
Mar 30, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -127,7 +127,7 @@ JavaScript налагает дополнительные расходы. В по Префикс "Web" в названии WebAssembly может навести на мысль, что эта технология создавалась исключительно для веба, но это не так. На данный момент уже существует огромное множество [standalone рантаймов для WebAssembly](https://github.com/appcypher/awesome-wasm-runtimes#webassembly-runtimes) способные исполнять wasm не в самом браузере а непосредственно в ОС или в нативном приложении. WASI (WebAssembly System Interface) - это проект ABI от Mozilla, который определяет стандартизированный интерфейс взаимодействия ОС с wasm-модулем (такой себе POSIX только для wasm). WASI дает возможность получить доступ к таким функциям как файловая система, сетевые сокеты, таймеры и генераторы случайных чисел. Развитие ABI предполагает независимость от браузера, JavaScript и WebAPI. При этом проект обеспечивает надлежащий уровень изоляции от основной системы и позволяет определять полномочия приложения в стиле CloudABI и Capsicum. Файлы, каталоги, сокеты и другие ресурсы ассоциируются со специальным типом файловых дескрипторов, а для взаимодействия с каждым из ресурсов приложения должен иметь полномочия. Последние обрабатываются иерархически, то есть доступ к каталогу автоматически открывает и доступ ко всем файлам в нем. Кроме того существует polyfill WASI для браузеров и готовиться для node.js. Все это дает возможность писать модули с единым интерефейсом как для десктопных так и для браузерных приложений. Стоит также отметить, что на данном этапе это довольно базовая спецификация, не описывающая пока криптогавию, API для работы с GPU, асинхронный I/O и т.д. ### 15. WebAssembly это конец гегемонии и смерть JavaScript? -
MaxGraey revised this gist
Mar 30, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -127,7 +127,7 @@ JavaScript налагает дополнительные расходы. В по Префикс "Web" в названии WebAssembly может навести на мысль, что эта технология создавалась исключительно для веба, но это не так. На данный момент уже существует огромное множество [standalone рантаймов для WebAssembly](https://github.com/appcypher/awesome-wasm-runtimes#webassembly-runtimes) способные исполнять wasm не в самом браузере а непосредственно в ОС или в нативном приложении. WASI (WebAssembly System Interface) - это проект ABI от Mozilla, который определяет стандартизированный интерфейс взаимодействия ОС с wasm-модулем (такой себе POSIX только для wasm). WASI дает возможность получить доступ к таким функциям как файловая система, сетевые сокеты, таймеры и генераторы случайных чисел. Развитие ABI предполагает независимость от браузера, JavaScript и WebAPI. При этом проект обеспечивает надлежащий уровень изоляции от основной системы и позволяет определять полномочия приложения в стиле CloudABI и Capsicum. Файлы, каталоги, сокеты и другие ресурсы ассоциируются со специальным типом файловых дескрипторов, а для взаимодействия с каждым из ресурсов приложения должен иметь полномочия. Последние обрабатываются иерархически, то есть доступ к каталогу автоматически открывает и доступ ко всем файлам в нем. Кроме того существует polyfill WASI для браузеров и готовиться для node.js. Все это дает возможность писать модули с единым интерефейсом как для десктопных так и для браузерных приложений. Стоит также отметить что на данном этапе довольно базовая спецификация, не описывающая пока криптогавия, API для работы с GPU, асинхронный I/O и т.д. ### 15. WebAssembly это конец гегемонии и смерть JavaScript? -
MaxGraey revised this gist
Mar 30, 2019 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -45,7 +45,7 @@ Java-апплеты (через JNI). веб-API (так же, как и в JavaScript). Однако emscripten SDK (C++) и web-sys (Rust) предоставляют обертки для многих распространенных API, что упрощает перенос существующего кода C / C++ / Rust (например, конвертировать TcpSockets-в-WebSockets, OpenGL-в-WebGL, OpenAL-в-WebAudio и т.д.). В дальнейшем, когда будет реализован [host-binding proposal](https://github.com/WebAssembly/host-bindings/blob/master/proposals/host-bindings/Overview.md) всеми браузерами, всего вышеперечисленного не потребуется, и можно будет обращаться непосредственно к Web API или любому другому интерфейсу (в случае со standalone VM) непосредственно через WebIDL а так же [WASI](https://gist.github.com/MaxGraey/326b1c04d66de3beb247c2c1e6358fd0#14-%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-wasi) интерфейс. ### 6. Могу ли я загрузить или создать нативную DLL-библиотеку в WebAssembly?
NewerOlder