Время от времени люди приходят в восторг от новой функции, которая разрабатывается как веб-стандарт. Одна из таких технологий, которая в последнее время вызывает ажиотаж, называется WebAssembly. Это новый способ запуска кода в Интернете. Думайте об этом как о новой среде выполнения приложений, доступной в браузере. Это подмножество обычного JavaScript, который можно оптимизировать для очень быстрой работы (меньшая загрузка, гораздо более быстрый синтаксический анализ в браузерах). Браузер также может очень быстро проверить его безопасность. Новый двоичный формат для доставки такого кода в браузер называется WebAssembly. Это низкоуровневый формат двоичного кода, который не предназначен для чтения/записи людьми. Идея в том, что вы можете компилировать в этот формат из некоторых других языков.

Лучший способ понять такую ​​технологию — увидеть, как она работает. В этой демонстрации я буду использовать emcc для компиляции кода C в WebAssembly. В этом примере я создаю ряд Фибоначчи для заданного положительного числа.

Я использовал Emscripten, компилятор на основе LLVM с открытым исходным кодом из C и C++ в JavaScript (C => LLVM => Emscripten => JS). Следующая команда создает файлы .js и .js.map, а также файлы .WASM:

emcc fibonacci.c -s WASM=1 -o fibonacci.js

Затем я загрузил файл js в браузер, который дал следующие результаты:

Как вы видели в приведенном выше примере, я смог написать свой код на C и скомпилировать его для запуска в браузере. Вот поддержка браузера для WebAssembly по состоянию на июнь 2017 года:

На момент публикации этого поста велась работа над другими языками для компиляции в WebAssembly, такими как Rust и Swift. У Стива Сандерсона также есть экспериментальный проект под названием Blazor, в котором показано, как .Net компилируется в WebAssembly.

Первоначально опубликовано на сайте blogs.msdn.microsoft.com 23 июля 2017 г.