The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Mozilla развивает WASI для использования WebAssembly в..."
Отправлено opennews, 28-Мрт-19 12:18 
Разработчики Mozilla представили (https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webas... проект WASI (https://wasi.dev/) (WebAssembly System Interface), в рамках которого ведётся работа по определению программных интерфейсов, которые можно использовать для организации взаимодействия с операционной системой приложений, поставляемых в формате WebAssembly (http://webassembly.org/). Целью проекта является предоставление API, расширяющего область использования WebAssembly и позволяющего создавать на базе данной технологии обычные программы, выполняемые вне браузера.


WASI даёт возможность (https://github.com/CraneStation/wasmtime/blob/master/docs/WA... из окружения для выполнения WebAssembly получить доступ к предоставляемым операционной системой функциям, таким как файлы и файловая системой, сетевые сокеты, таймеры и генераторы случайных чисел. API WASI изначально развивается как не привязанный к бразуерам и независящий от Web API и JavaScript, но при этом предоставляющий должный уровень изоляции от основной системы (приложения запускаются в sandbox) и позволяющий явно определять предоставляемые приложению полномочия в стиле CloudABI (https://cloudabi.org/) и Capsicum (https://www.opennet.ru/opennews/art.shtml?num=40110)).


Применённая в WASI модель безопасности через управление возможностями (https://en.wikipedia.org/wiki/Capability-based_security), в рамках которой программа может выполнять только заведомо разрешённые действия.  По аналогии с тем, как WebAssembly ограничивает доступ на уровне импорта функций, в WASI осуществляется контроль доступа к системным возможностям. Файлы, каталоги, сокеты и другие ресурсы ассоциируются с специальным типом файловых дескрипторов (capability), для выполнения действия с каждым из которых приложению должны быть даны полномочия. Полномочия обрабатываются иерархически, т.е. предоставив доступ к каталогу, автоматически открывается и доступ ко всем файлам в нём.

В настоящее время уже доступны для тестирования прототипы следующих компонентов:


-  wasmtime (https://github.com/CraneStation/wasmtime/) - runtime для выполнения WebAssembly-приложений с поддержкой WASI как обычных обособленных приложений. Поддерживается как запуска байткода WebAssembly при помощи специальной утилиты командной строки, так и компоновка готовых исполняемых файлов (wasmtime встраивается в приложение как библиотека). Для достижения должного уровня производительности применяетяс JIT-компилятор  на базе генератора кода cranelift (https://github.com/CraneStation/cranelift).
-  WASI SDK (https://github.com/CraneStation/wasi-sdk)  - инструментарий для компиляции приложений C/C++ в формат WebAssembly, использующий Clang 8.0 (https://www.opennet.ru/opennews/art.shtml?num=50360);
-  Сборочная цель (https://github.com/alexcrichton/rust/tree/wasi) с поддержкой WASI для языка Rust, позволяющая компилировать код Rust в  WebAssembly. В начале апреля поддержку WASI планируется интегрировать в основную кодовую базу и начать тестирование в ночных сборках;

-  wasi-sysroot (https://github.com/CraneStation/wasi-sysroot/) - реализация стандартной библиотеки libc для WASI, основанная на коде musl (http://www.musl-libc.org/);


Проектом также развивается JavaScript-библиотека polyfill (https://github.com/CraneStation/wasmtime-wasi/tree/wasi/lib/... (демонстрация (https://wasi.dev/polyfill/)) с реализацией  WASI для выполнения  приложений внутри браузера, позволяющая применить к выполняемому в браузере коду модель разграничения доступа на основе "capabilities". Из планов  упоминается создание на базе WASI системы модулей для интеграции в приложения изолированных плагинов с дополнительной функциональностью, поставляемой в формате WebAssembly.


Напомним, WebAssembly во многом напоминает Asm.js, но отличается (https://www.opennet.ru/opennews/art.shtml?num=46117) тем, что является бинарным форматом, не завязанным на JavaScript и позволяющим выполнять в браузере низкоуровневый промежуточный код, скомпилированный из различных языков программирования. Среди основных задач WebAssembly выделяется обеспечение переносимости, предсказуемость поведения и идентичности выполнения кода на разных платформах. По сравнению с JavaScript использование WebAssembly также позволяет существенно сократить размер приложений, благодаря компактному промежуточному коду, и увеличить скорость декодирования. В WebAssembly не требуется применение сборщика мусора, так как применяется явное управление памятью.


URL: https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webas.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=50406

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру