Size: a a a

WebAssembly — русскоговорящее сообщество

2020 June 28

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Досмотрел (да, я - тормоз). Хочу добавить что вся "магия", кроме аллокации регистров, происходит в процессе компиляции wasm файла, а не при компиляции модуля в браузере. По-моему это важный нюанс, т.к. движки не оптимизируют сам код (не удаляют ненужные команды и т.п.), а производят машинные команды по известным шаблонам.
источник

T

Tux in WebAssembly — русскоговорящее сообщество
MaxGraey
./emsdk install tot-upstream
по всей видимости должно было помочть, только нужно ещё
emsdk activate tot-upstream
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Petr Penzin
Досмотрел (да, я - тормоз). Хочу добавить что вся "магия", кроме аллокации регистров, происходит в процессе компиляции wasm файла, а не при компиляции модуля в браузере. По-моему это важный нюанс, т.к. движки не оптимизируют сам код (не удаляют ненужные команды и т.п.), а производят машинные команды по известным шаблонам.
Это все очень сильно зависит от рантайма. Например тот же cranelift бэкенд части из которого уже в FF используются, а в wasmtime и вовсе полностью, использует не только свертку констант и peephole оптимизации (которые сопоставляются по шаблону и отвечает за это теперь peepmatic) но так же делает и CFG/DFG оптимизации как разворачивание циклов, CSE, DCE, LICM, branch relaxation и т д, и вообще у него свой ir для этого всего есть:
https://github.com/bytecodealliance/wasmtime/tree/main/cranelift/codegen/src/ir

Но конечно до того, что делает тот же LLVM JIT ему очень далеко
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Поэтому более тяжелые и основательные оптимизации лучше конечно делать заранее
источник

PG

Polina Gurtovaya in WebAssembly — русскоговорящее сообщество
Petr Penzin
Досмотрел (да, я - тормоз). Хочу добавить что вся "магия", кроме аллокации регистров, происходит в процессе компиляции wasm файла, а не при компиляции модуля в браузере. По-моему это важный нюанс, т.к. движки не оптимизируют сам код (не удаляют ненужные команды и т.п.), а производят машинные команды по известным шаблонам.
Интересно. Но мне казалось что при компиляции модуля в браузере ещё много архитектурно-специфических штук происходит. Команды для префетчинга там какие-нибудь.  Или нет?
источник

T

Tux in WebAssembly — русскоговорящее сообщество
а с какими флагами нужно компилить, чтобы вообще ничего постороннего небыло в результирующем файле?
источник

PG

Polina Gurtovaya in WebAssembly — русскоговорящее сообщество
Смотря что и чем компилить. И возможно ты все-таки хочешь что-то постороннее, например штуки для работы с памятью
источник

T

Tux in WebAssembly — русскоговорящее сообщество
MaxGraey
./emsdk install tot-upstream
переустановил всё в конрейнере, активировал этот апстрим, но не прокатило. наоборот, ещё больше мусора появилось
источник

T

Tux in WebAssembly — русскоговорящее сообщество
Polina Gurtovaya
Смотря что и чем компилить. И возможно ты все-таки хочешь что-то постороннее, например штуки для работы с памятью
cpp в emcc
источник

T

Tux in WebAssembly — русскоговорящее сообщество
Polina Gurtovaya
Смотря что и чем компилить. И возможно ты все-таки хочешь что-то постороннее, например штуки для работы с памятью
штуки для работы с памятью буду добавлять по мере необходимости)
источник

PG

Polina Gurtovaya in WebAssembly — русскоговорящее сообщество
Возможно, тебе тогда emcc и не нужен. Компилируй clangoм
источник

PG

Polina Gurtovaya in WebAssembly — русскоговорящее сообщество
Где-то была про это статья... Сейчас поищу
источник

PG

Polina Gurtovaya in WebAssembly — русскоговорящее сообщество
источник

T

Tux in WebAssembly — русскоговорящее сообщество
угу, спс
источник

DB

Dmitry Bezhetskov in WebAssembly — русскоговорящее сообщество
Polina Gurtovaya
Интересно. Но мне казалось что при компиляции модуля в браузере ещё много архитектурно-специфических штук происходит. Команды для префетчинга там какие-нибудь.  Или нет?
В Firefox для оптимизации wasm используется много чего. Смотрите https://searchfox.org/mozilla-central/source/js/src/wasm/WasmIonCompile.cpp#5344. Сама OptimizeMir определена тут: https://searchfox.org/mozilla-central/source/js/src/jit/Ion.cpp#878, там прям по комментам написано что применяется и в какой последовательности. Для Lir тоже самое.
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Видео WebAssembly and elusive universal binary:
https://youtu.be/4ZMY3QE5t9o?t=278
источник
2020 June 29

lp

lil pep in WebAssembly — русскоговорящее сообщество
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
не отстаем а отказываемся
источник

SR

Sergey Rubanov in WebAssembly — русскоговорящее сообщество
еще один
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
а извините, я только что в интернет зашел )
источник