Connect with us

Новости

Mozilla, Fastly, Intel и Red Hat делают из WebAssembly универсальную платформу

Компании Mozilla, Fastly, Intel и Red Hat объединили свои усилия в развитии технологий, способствующих превращению WebAssembly в универсальную платформу для безопасного выполнения кода в любых инфраструктурах, операционных системах и устройствах. Для совместной разработки runtime и компиляторов, позволяющих применять WebAssembly не только в web-браузерах, образовано сообщество Bytecode Alliance.

AppTractor

Опубликовано

/

     
     

Для создания поставляемых в формате WebAssembly переносимых программ, которые можно выполнять вне браузера, предлагается использовать API WASI (WebAssembly System Interface), предоставляющий программные интерфейсы для прямого взаимодействия с операционной системой (POSIX API для работы с файлами, сокетами и т.п.). Отличительной особенностью модели выполнения приложений в формате WebAssembly является запуск в sandbox-окружении для изоляции от основной системы и применение механизма безопасности на основе управления возможностями – для действий с каждым из ресурсов (файлы, каталоги, сокеты и т.п.) приложению должны быть даны соответствующие полномочия (предоставляется только доступ к заявленной функциональности), пишет OpenNET.ru.

Для совместной разработки под крыло Bytecode Alliance переведено несколько связанных с WebAssembly проектов, ранее обособленно развиваемых компаниями-учредителями альянса/ Среди них:

  • Wasmtime – runtime для выполнения WebAssembly-приложений с расширениями WASI как обычных обособленных приложений. Поддерживается как запуск байткода WebAssembly при помощи специальной утилиты командной строки, так и компоновка готовых исполняемых файлов (wasmtime встраивается в приложение как библиотека). Wasmtime имеет гибкую модульную структуру, которая позволяет масштабировать runtime для различных применений, например, можно сформировать урезанную версию для устройств с ограниченными ресурсами;
  • Lucet – компилятор и runtime для выполнения программ в формате WebAssembly. Отличительной особенностью Lucet является применение вместо JIT полноценной упреждающей компиляции (AOT, ahead-of-time) в машинный код, пригодный для прямого исполнения. Проект развивался компанией Fastly и оптимизирован для потребления минимальных ресурсов и очень быстрого запуска новых экземпляров (Fastly применяет Lucet в движке облачных edge-вычислений, использующем WebAssembly для обработчиков, запускаемых на каждый запрос). В рамках совместного проекта компилятор Lucet планируется перевести на использование Wasmtime в качестве основы;
  • WAMR (WebAssembly Micro Runtime) – ещё один runtime для выполнения WebAssembly, изначально разработанный компанией Intel для применения в устройствах интернета вещей. WAMR оптимизирован для минимального потребления ресурсов и может применяться на устройствах с небольшим объёмом оперативной памяти. Проект включает в себя интерпретатор и виртуальную машину для выполнения байткода WebAssembly, API (подмножество Libc) и инструментарий для динамического управления приложениями;
  • Cranelift – генератор кода, транслирующий независимое от аппаратных архитектур промежуточное представление в исполняемый машинный код, оптимизированный для конкретных аппаратных платформ. Cranelift поддерживает распараллеливание компиляции функций для очень быстрой генерации результата, что позволяет использовать его для создания JIT-компиляторов (JIT на базе Cranelift используется в виртуальной машине Wasmtime);
  • WASI common – обособленная реализация API WASI (WebAssembly System Interface) для организации взаимодействия с операционной системой.

WebAssembly во многом напоминает Asm.js, но отличается тем, что является бинарным форматом, не завязанным на JavaScript и позволяющим выполнять в браузере низкоуровневый промежуточный код, скомпилированный из различных языков программирования. В WebAssembly не требуется применение сборщика мусора, так как применяется явное управление памятью. Благодаря задействованию JIT для WebAssembly можно добиться уровня производительности близкого к нативному коду. Среди основных задач WebAssembly выделяется обеспечение переносимости, предсказуемость поведения и идентичности выполнения кода на разных платформах.

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Популярное

X
X

Спасибо!

Теперь редакторы в курсе.