Язык WebAssembly

WebAssembly — недавно (на момент 2018 года) появившийся язык программирования (точнее говоря, промежуточное представление для преобразования из одного языка в другой), сочетающий в себе следующие особенности:

  • простая модель исполнителя (и как следствие, высокая кроссплатформенность; хотя на данный момент целевая архитектура — виртуальная машина Javascript)
  • является очень простой целью для компиляторов других языков (гораздо проще, например, чем две наиболее популярные на настоящий момент цели: промежуточный язык платформы LLVM и Javascript)
  • его можно эффективно транслировать в машинный код
  • не является совсем уж низкоуровневым: программы на нём имеют некую нетривиальную синтаксическую структуру, достаточно адекватно воспринимаемую человеком без тонны комментариев к каждой строчке

К сожалению, на данный момент есть очень мало достоверных источников информации по, собственно, WebAssembly, а не способам скомпилировать в него программу, написанную на C/C++/Rust.

Наиболее полным (и при этом, как ни странно, наиболее хорошо написанным) источником является официальное руководство.

Этот же документ служит одновременно неким введением в язык и описанием текущего состояния экосистемы вокруг языка. Все примеры даны в предположении наличия небольшой стандартной библиотеки функций ввода-вывода, описанной в соответствующем разделе.