Цели, ключевые концепции и варианты использования

Цели, ключевые концепции и варианты использования

Вас интересовали ключевые концепции и варианты использования VASM? Если нет, мы вас прикроем.

WebAssembly (VASM) — это новый низкоуровневый язык, который позволяет вам добиться в Интернете производительности, близкой к нативной.

В WebAssembly для начинающих — часть 1 мы представили VASM с точки зрения новичка, охватив его определение и ограничения. Кроме того, мы рассмотрели функции WebAssembly, дорожную карту VASM и то, как JavaScript работает с WebAssembly, а не против него.

В этом посте мы рассмотрим WebAssembly, рассмотрев цели, ключевые концепции и варианты использования VASM. Мы также рассмотрим некоторые из его интересных проектов.

Давайте начнем.

Цели WebAssembly

Чтобы понять ключевые концепции WebAssembly, нам сначала нужно взглянуть на его цели. Эти цели включают в себя:

  • Возможность использовать преимущества доступного оборудования, используя в качестве цели компиляции эффективный по времени загрузки и размеру двоичный формат. Проще говоря, VASM использует абстрактное синтаксическое дерево (AST) в двоичном формате, поддерживая собственную скорость компиляции и выполнения. Используя этот подход, VASM может работать на различных устройствах, включая IoT, Интернет и мобильные устройства.
  • Целью VASM не является модификация или изменение существующей веб-платформы. При таком подходе WebAssembly может хорошо интегрироваться с текущим и прошлым Web. Это также позволяет WebAssembly беспрепятственно работать с JavaScript, включая параллельное выполнение или выполнение синхронных вызовов из JavaScript.
  • Для бесперебойной работы с политиками безопасности разрешений и тем же источником.
  • Убедитесь, что разработчики могут проектировать свои решения для поддержки встраивания вне браузера.
  • В конечном счете, предоставление разработчикам инструментов для эффективной работы с исходным кодом WebAssembly за счет предоставления редактируемого текстового формата.

Ключевые понятия WebAssembly

Под капотом WebAssembly следует следующим шагам:

  • Во-первых, вы должны писать код на статически типизированном языке с определенными типами.
  • Когда вы закончите, вы создадите предварительно скомпилированный модуль VASM и передадите код машинному компилятору.
  • Вышеупомянутый шаг гарантирует, что VASM пропустит синтаксический анализ и подготовит код для отображения в веб-браузере.

Ключевые концепции запуска WebAssembly в веб-браузере включают:

  • Память: Память в WebAssembly управляется и записывается с помощью низкоуровневых инструкций доступа к памяти. Технически это изменяемый ArrayBuffer, который содержит массив байтов памяти.
  • Модуль: Модуль в WebAssembly представляет собой скомпилированный исполняемый компьютерный код. Из-за своей формы без сохранения состояния веб-браузер компилирует модуль и делится им между Windows и рабочими процессами. Кроме того, модуль хранит и объявляет импорт и экспорт в дополнение к функциям, таблицам, типам, глобальным значениям и памяти.
  • Таблица: таблица состоит из всех ссылок и функций, использующих массив изменяемых типов. Это устраняет необходимость хранить необработанные байты в памяти.
  • Экземпляр: в VASM экземпляр представляет собой модуль среды выполнения со всеми сопоставленными состояниями. Эти состояния включают таблицу, память и другие импортированные наборы значений.

Ключевые концепции VASM

Как веб-разработчик, вы можете использовать JavaScript API для вызова и определения модулей, таблиц, экземпляров и таблиц. Кроме того, используйте JavaScript для синхронного вызова экспорта VASM в функциях JavaScript. Таким образом, JavaScript хорошо сочетается с WebAssembly, поскольку вы можете использовать VASM для написания высокопроизводительных приложений в веб-браузере.

Объекты VASM

При работе с WebAssembly необходимо отслеживать восемь объектов VASM. Эти объекты включают в себя:

  • WebAssembly.Global — глобальный объект — это экземпляр глобальной переменной. Он доступен через WebAssembly.Module и JavaScript.
  • WebAssembly.Module — здесь объект модуля содержит код VASM без сохранения состояния. Код предварительно скомпилирован.
  • WebAssembly.Instance — WebAssembly.Instance — это исполняемый экземпляр WebAssembly.Module с отслеживанием состояния.
  • WebAssembly.Table — объект Table содержит ссылки на функции и действует как оболочка JavaScript.
  • WebAssembly.CompileError — объект CompileError содержит все ошибки во время проверки и декодирования.
  • WebAssembly.RuntimeError — здесь объект RuntimeError перечисляет все ошибки времени выполнения.
  • WebAssembly.LinkError — объект LinkError содержит ошибки, возникающие при создании экземпляра модуля.

Варианты использования и проекты VASM

Мы уже знаем, что WebAssembly предлагает нативную производительность в веб-браузере. Однако, чтобы действительно понять, где вы можете его использовать, вам нужно взглянуть на его варианты использования. Давайте перечислим некоторые варианты использования VASM ниже.

Сценарии использования WebAssembly включают как работу в браузере, так и вне браузера. Например, если вы хотите использовать VASM в браузере, вы можете сделать многое, в том числе:

  • Редактирование видео или аудио, например проект ffmpegvasm.
  • Видеоигры в веб-браузере, такие как эти высокопроизводительные игры.
  • Научная визуализация и моделирование
  • Эмуляция/моделирование платформ, таких как DOSBox, MAME и т. д.
  • Шифрование
  • Удаленного рабочего стола
  • Инструменты разработчика

Случаи использования

С общей точки зрения, привлекательные варианты использования WebAssembly включают

  • Возможность писать более быстрый код может использовать преимущества базового оборудования.
  • Кроме того, вы также можете выполнять сжатие на стороне клиента, что приводит к сокращению времени загрузки и экономии полосы пропускания. Таким образом, вы используете ЦП клиента или базовое оборудование для сжатия и распаковки, а затем используете ресурсы сервера.
  • Кроме того, вы можете использовать разные языки программирования для написания кода для Интернета, а не только JavaScript. Например, вы можете использовать Rust, C и C++ для написания высокопроизводительного кода для определенных аспектов ваших веб-приложений.

Проекты

Переходя к реальным примерам, стоит упомянуть следующие проекты.

  • Figma улучшила производительность своего веб-приложения с помощью WebAssembly. Они сократили время загрузки во время инициализации приложения, рендеринга всего дизайна и даже загрузки файла дизайна. Как мы обсуждали ранее, WebAssembly также отлично подходит для сжатия. Figma внедрила VASM, чтобы улучшить размеры загрузки, значительно уменьшив их.
  • Piodide: Еще один интересный проект VASM — проект Piodide, опубликованный Mozilla. Это позволяет ученым компилировать научный пакет Python в WebAssembly, включая NumPi, SciPi, Scikit-learn и т. д., в браузер. Он предлагает прозрачное преобразование объектов между Python и JavaScript. Наконец, он также позволяет разработчикам использовать веб-API с помощью Python.
  • Brazor WebAssembly: платформа Brazor WebAssembly позволяет разработчикам создавать одностраничные, клиентские и интерактивные веб-приложения с помощью .NET. Вы можете разместить эти приложения в браузере, используя среду выполнения .NET на основе WebAssembly. Здесь, как разработчик, вы получаете доступ к функциям браузера в своем коде .NET с помощью JavaScript API WebAssembly.

Источник: Фигма

Многие другие известные и ценные проекты используют WebAssembly. Это Binarien, Cheerp, Forest, Grain и другие.

Последние мысли

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

Сейчас на рынке есть интересные проекты, и сейчас самое подходящее время для изучения WebAssembly, особенно если вы занимаетесь веб-разработкой. Способность VASM работать вне браузера также делает его отличным выбором для разработки, ориентированной на производительность.

Вам понравилось читать статью? Как насчет того, чтобы поделиться этим с миром?

Поделиться в соцсетях