WebAssembly (WASM) — это новый тип кода, который запускается в браузерах. Раньше у разработчиков браузерных веб-приложений был только один выбор языка программирования и/или среды: JavaScript. Это было хорошо, и люди заработали много золота; тем не менее, некоторые не были довольны тем, что у них был только один выбор. WASM здесь, чтобы изменить это. WASM, согласно Mozilla, в первую очередь не предназначен для ручного написания, скорее, он разработан как эффективная цель компиляции для низкоуровневых исходных языков, таких как C, C++, Rust и т. д.. Это ключевой момент. Теперь вы можете писать веб-скрипты на любом языке по вашему выбору. Это огромно.

WASM пытается убить JavaScript? Нет, — говорит изобретатель JavaScript Брендан Эйх. Цель WASM — сделать экосистему разработки более лингвистически разнообразной, предоставляя чрезвычайно быстрый (собственный или близкий к исходному) код за счет эффективной компиляции и распараллеливания (возможность веб-приложения использовать преимущества нескольких процессоров). Более огромный.

Этот последний пункт, пожалуй, самый важный. Инженер InRhythm Уилл Брэтчес отметил в недавней молниеносной речи, что увеличение скорости больше не достигается на уровне чипа — закон Мура больше не действует. Сейчас мы распределяем работу между ядрами, используя распараллеливание и управление параллелизмом. Клиентский JavaScript не предназначен для этого мира. Новые языки, такие как Go и Rust. WASM объединяет их.

А вот и привет, мир! момент. Перейдите в WebAssembly Explorer — это своего рода CodePen для WASM. На левой панели вставьте этот код:

int plusOne(int num) {
return num + 1;
}

Далее нажмите «скомпилировать». Вы увидите что-то вроде этого:

Да, это ассемблерный код справа (Я знаю!). Более человечная, удобочитаемая версия находится в центральной колонке, вид WAT, о котором вы можете прочитать подробнее здесь. Просто просмотрите его — вы увидите имя нашей функции plusOne, представленное как $_27plusOnei. Вы также увидите, что мы устанавливаем 32-битные целочисленные параметры, устанавливаем их область действия на локальную и так далее. Вы можете, например, увидеть, как ассемблерный код (добавляет) единицу в (расширенный) расширенный (а) регистр накопителя для 32-битных чисел:

add eax, 1

…представлен в WAT:

(i32.const 1)

Теперь вы можете нажать кнопку Загрузить, чтобы загрузить файл .wasm. Это действительно так — у вас есть двоичный файл WASM для использования. Вам нужно проделать небольшую работу, чтобы скомпилировать WASM, чтобы он работал в вашем браузере. Проще всего клонировать этот простой пример и загрузить index.html в свой браузер. Проверьте консоль. Теперь прочитайте код.

На эту тему есть еще много всего, так что начинайте исследовать. Вы будете создавать шутеры от первого лица в своем браузере в кратчайшие сроки!

Первоначально опубликовано на www.inrhythm.com.