Что полезного нам даст WebAssembly и почему он сейчас настолько популярен

Во многих статьях речь обычно идёт только о том что WebAssembly даёт браузеру, но не упоминают о том что WebAssembly можно применять и за пределами браузера. Вот на этом я и хочу заострить ваше внимание.

Само название WebAssembly уже намекает что речь идёт про Web, но на самом деле его можно применять во многих других областях.

1) Например в блокчейне. WebAssembly сейчас применяется в проекте Ethereum.

2) В геймдеве. В играх часто используется язык Lua. К примеру в "World of Warcraft" и многих других играх сейчас используется Lua. Но его можно заменить на WebAssembly и писать плагины для игры на любом языке. WebAssembly это на самом деле не язык, это то во что ты компилируешь свой язык. А язык ты можешь выбрать почти любой. Языки которые поддерживают WebAssembly awesome-wasm-langs

3) В базах данных. Уже есть поддержка в PostgreSQL, SQLite, MongoDB.

Вообщем везде его можно использовать.

В итоге Lua вымрет полностью, а JS на 90%. JS нужен будет только для связки модулей. Это сейчас нельзя к DOM модели подключиться из WASM, а потом можно будет, поэтому JS-у останется только роль glue. Но на сервере ты эти модули можешь связывать любым другим языком и JS там уже не обязателен.

В итоге один проект можно писать сразу на 10-и языках, т.к. всёравно на выходе модули WASM, которые нужно просто соединить.

Есть пакетный менеджер для WASM модулей под названием WAPM. И понятное дело что данные пакеты гораздо безопаснее чем вообще любые другие. NPM пакеты опасно использовать. Да любые пакетные менеджеры из других языков опасны. Только WAPM безопасен. Вот почему в своём проекте я стараюсь уменьшить количество зависимостей и не тяну все либы без разборку.

Скорость языков сравняется, ибо всёравно ведь компилируешь в WASM и скорость будет такая же. Вообщем разница по скорости нивелируется, чем больше кода ты будешь компилить в WASM. Ктомуже активно развивается LLVM

Продолжение следует. Будут ещё статьи на эту тему и я выложу конкретный пример реализации на Си, как использовать WASI, тобишь WebAssembly System Interface. А также про AssemblyScript и про всё что связано с WebAssembly. Ибо в моём собственном проекте это будет использоваться. CMS на Си, подключил wasmtime . В моей CMS плагины можно будет писать на AssemblyScript, они будут компилироваться в WASM и сохраняться непосредственно в базе данных.

Данную статью буду дописывать, переписывать. Вообщем рефакторить :) Я обожаю всё оптимизировать.