WASI - проект Mozilla для использования WebAssembly вне браузера.

WASI - проект Mozilla для использования WebAssembly вне браузера.

Разработчики Mozilla представили проект WASI (WebAssembly System Interface), который работает над определением программных интерфейсов, которые можно использовать для организации взаимодействия приложений, поставляемых в формате WebAssembly, с операционной системой.

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

Что такое WASI?

WASI позволяет среде WebAssembly получать доступ к функциям, предоставляемым операционной системой.такие как файлы, файловая система, сетевые сокеты, таймеры и генераторы случайных чисел.

WASI API изначально разрабатывался как не браузерный и автономный. из JavaScript / веб-API, но в то же время обеспечивает адекватный уровень изоляции системы main (приложения запускаются в песочнице) и позволяет явно определить полномочия, предоставленные приложению, в стиле CloudABI и Capsicum.

БЫЛ ЛИ Я использует модель безопасности, основанную на управлении разрешениями, в рамках которого программа может только сознательно выполнять разрешенные действия.

Подобно тому, как WebAssembly ограничивает доступ на уровне функций импорта, WASI контролирует доступ к возможностям системы.

Файлы, каталоги, сокеты и другие ресурсы связаны с особым типом файлового дескриптора (емкости), и приложение должно иметь разрешения для выполнения действий с каждым из ресурсов.

Разрешения управляются иерархически, то есть автоматически открывается доступ к каталогу и доступ ко всем содержащимся в нем файлам.

При условии WebAssembly - это версия на языке ассемблера, независимая от платформы, использование JIT позволяет достичь уровня производительности, близкого к собственному коду., сохраняя возможность работы на различных аппаратных платформах и операционных системах.

В настоящее время проект предоставляет модуль wasi-core с реализацией базового API POSIX (файлы, сокеты и т. Д.), В котором в настоящее время отсутствует поддержка блокировок и асинхронного ввода-вывода.

В будущем, планируется создание модулей с реализацией API для выполнения криптографических операций, работы с 3D графикой, взаимодействовать с датчиками, работать с процессами (вызов fork пока не поддерживается) и обрабатывать мультимедийные данные.

Компонентные прототипы

Wasmtime - это среда выполнения, которая отвечает за запуск приложений на основе WebAssembly. с расширениями WASI как обычные автономные приложения.

Se поддерживает запуск байт-кода WebAssembly с помощью специальной утилиты командной строки и разработка готовых исполняемых файлов (wasmtime встроен в приложение в виде библиотеки).

Для достижения соответствующего уровня производительности используется JIT-компилятор, основанный на генераторе кода повышения прав.

Lucet - еще одна исполняемая версия проекта Fastly. (код планируется опубликовать сегодня или завтра).

ВАСИ SDK- Инструменты для компиляции приложений C / C ++ в формате веб-сборки с использованием Clang 8.0.

Целевой объект сборки с поддержкой WASI для языка Rust, который позволяет компилировать код Rust в WebAssembly.

Wasi-sysroot - это реализация стандартной библиотеки libc для WASI., основанный на коде Musl, а также уровень времени выполнения для преобразования функций, предоставляемых библиотекой, в системные вызовы различных операционных систем, чтобы обеспечить возможность запуска приложения WASI в разных операционных системах.

В рамках проекта также разрабатывается библиотека polyfill JavaScript с реализацией WASI для запуска приложений в браузере., что позволяет применить модель управления доступом «Возможности» к коду, выполняемому в браузере.

Из планов упоминается создание модульной системы на основе WASI для интеграции в изолированные подключаемые приложения с дополнительной функциональностью, предоставляемой в формате WebAssembly.

Одна из основных задач WebAssembly - обеспечить переносимость, предсказуемость поведения и идентичность выполнения кода на разных платформах.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.