Я предполагаю, что в этом процессе будут какие-то проблемы.
Как вы думаете, это безопасно и стабильно?
Необходимо запустить собственный движок сценариев JS на WebAssembly.
Не пытаюсь показаться грубым, но если вы задаете вопрос, это, вероятно, выше вашей головы.
да. Я знаю, я только что попробовал. И это будет непросто. Спасибо.





TL; DR; Это могло бы быть возможно, но не настолько полнофункциональным и высокопроизводительным, как Spidermonkey / V8 (... пока)
Ребята из Mozilla уже скомпилировал Python в WebAssembly, так почему бы не JavaScript? Однако у WebAssembly есть некоторые ограничения, которые сильно влияют на производительность.
Хотя среда JS является однопоточной, сами среды выполнения JS - нет. Современные движки JS используют преимущества параллелизма для синтаксического анализа, компиляции, сборки мусора и т. д. WebAssembly 1.0 (также известный как MVP) не поддерживает многопоточность. Есть предложение WebAssembly Threads, и в настоящее время Chrome и Firefox Nightly поддерживают его в качестве экспериментальной функции и по умолчанию отключены. Кроме того, для стабилизации этого предложения может потребоваться больше времени, чем ожидалось, в ответ на Уязвимость Spectre / Meltdown.
WebAssembly имеет линейную модель памяти для памяти пользовательского пространства (куча). JIT динамически генерирует оптимизированные машинные коды, чтобы сделать его быстрее. Однако из соображений безопасности WebAssembly не позволяет записывать и выполнять инструкции из памяти.
То же самое происходит с iOS. Apple предотвращает выполнение собственного кода из памяти поэтому пользовательские движки JS не могут иметь JIT на iOS.
Если вы думаете скомпилировать и запустить JS-движок на WebAssembly, я бы посоветовал попробовать облегченные JS-движки, такие как JerryScript и Эспруино. Они нацелены на запуск JS во встроенных системах, которые являются одноядерными и имеют ограниченный объем памяти. У них может быть меньше проблем со сборкой, чем у Spidermonkey / V8.
В любом случае, по состоянию на 2018 год ничего стабильного не ждите.
Прекрасный ответ. Большое спасибо.
Но почему? WebAssembly уже работает на движке JS.