Size: a a a

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

2020 May 24

M

MaxGraey in WebAssembly — русскоговорящее сообщество
На WAVM даже быстрее натива на 15%
https://twitter.com/whitequark/status/1264310424696229888
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Надо просто всю кодовую базу хрома скомпилировать в WebAssembly а потом обратно в Cи 😉 Как показала недавняя практика это не только улучшает бесопаснлость но еще и скорость)  ⬇⬇⬇⬇⬇⬇⬇
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Оказывается у Chrome не только проблемы с памятью, а ещё и проблемы с безопасностью от этого.

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

https://www.opennet.ru/opennews/art.shtml?num=53019
источник

e

egoarka in WebAssembly — русскоговорящее сообщество
MaxGraey
Надо просто всю кодовую базу хрома скомпилировать в WebAssembly а потом обратно в Cи 😉 Как показала недавняя практика это не только улучшает бесопаснлость но еще и скорость)  ⬇⬇⬇⬇⬇⬇⬇
а зачем обратно в си?
там не останется зависимостей от васма?
я вроде декомпилили и что то было такое, могу ошибаться
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
И кстати Mozilla недавно так и поступила для одного своего модуля)
источник

M

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

IK

Ilnur Khalilov in WebAssembly — русскоговорящее сообщество
Главное не удалить исходники)
источник

MP

Michael Pavlovsky in WebAssembly — русскоговорящее сообщество
MaxGraey
Надо просто всю кодовую базу хрома скомпилировать в WebAssembly а потом обратно в Cи 😉 Как показала недавняя практика это не только улучшает бесопаснлость но еще и скорость)  ⬇⬇⬇⬇⬇⬇⬇
Молодец Мах, простое и понятное решение :).
источник

MP

Michael Pavlovsky in WebAssembly — русскоговорящее сообщество
То есть использовать ВАСМ как статический анализатор кода, я Вас правильно понял?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Нет, как промежуточное представление которое нормализует поведение (убирает UB) и добавляет sandbox проверки (проверка на выход за границу, переполнения стека и т д)
источник

MP

Michael Pavlovsky in WebAssembly — русскоговорящее сообщество
То есть, то что в народе называют verifiable code
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
MaxGraey
Надо просто всю кодовую базу хрома скомпилировать в WebAssembly а потом обратно в Cи 😉 Как показала недавняя практика это не только улучшает бесопаснлость но еще и скорость)  ⬇⬇⬇⬇⬇⬇⬇
кстати, были реальные примеры, когда при переписывании с плюсов на раст, обнаруживались ошибки и ub
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
кстати, были реальные примеры, когда при переписывании с плюсов на раст, обнаруживались ошибки и ub
Не нужно ничего на раст переписывать) Только скомпилировать C++ в WebAssembly
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
MaxGraey
Нет, как промежуточное представление которое нормализует поведение (убирает UB) и добавляет sandbox проверки (проверка на выход за границу, переполнения стека и т д)
но это не уберёт эффекты существующих ub при компиляции в васм
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
но это не уберёт эффекты существующих ub при компиляции в васм
Что такое ub?
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
undefined behaviour
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
Firefox вот похожее уже делает
https://hacks.mozilla.org/2020/02/securing-firefox-with-webassembly/
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
но это не уберёт эффекты существующих ub при компиляции в васм
Я там не пропустил изначально. Т.е. компиляция плюсов в васм и обратно позволит только зафиксировать эффекты ub на этапе C/C++ => wasm. Ну и ещё нет гарантии, что декомпиляторы wasm => C/C++ будут генерировать код без ub.
источник

e

egoarka in WebAssembly — русскоговорящее сообщество
MaxGraey
Не нужно ничего на раст переписывать) Только скомпилировать C++ в WebAssembly
ну, пока компилишь с плюсов в васм -> компилятор будет как раз отлавливать все ошибки и ub (и пока все ошибки не исправишь - нормально не даст скомпилить)

но мне кажется это будет тяжело сделать
потому что проще будет с нуля написать на плюсах, учитывая это все ошибки, чем скомпилить что имеется
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
egoarka
ну, пока компилишь с плюсов в васм -> компилятор будет как раз отлавливать все ошибки и ub (и пока все ошибки не исправишь - нормально не даст скомпилить)

но мне кажется это будет тяжело сделать
потому что проще будет с нуля написать на плюсах, учитывая это все ошибки, чем скомпилить что имеется
хм, а как он будет отлавливать ошибки и ub?
источник