Wasmer 2.0, WebAssembly негизиндеги тиркемелерди куруу үчүн инструменттер топтому жеткиликтүү

Состоялся второй значительный выпуск проекта Wasmer, развивающего runtime для выполнения модулей WebAssembly, который можно использовать для создания универсальных приложений, способных выполняться в разных операционных системах, а также для изолированного выполнения кода, не заслуживающего доверия. Код проекта написан на языке Rust и распространяется под лицензией MIT.

Переносимость обеспечивается благодаря компиляции кода приложения в низкоуровневый промежуточный код WebAssembly, который может запускаться в любых ОС или встраиваться в программы на других языках программирования. Программы представляют собой легковесные контейнеры, в которых выполняется псевдокод WebAssembly. Данные контейнеры не привязаны к операционной системе и могут включать код, изначально написанный на любом языке программировании. Для компиляции в WebAssembly может использоваться инструментарий Emscripten. Для трансляции WebAssembly в машинный код текущей платформы поддерживается подключение разных бэкендов компиляции (Singlepass, Cranelift, LLVM) и движков (задействование JIT или генерация машинного кода).

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

WebAssembly контейнерин ишке киргизүү үчүн, тышкы көз карандылыксыз келген Wasmerди иштетүү тутумуна орнотуп алыңыз (“curl https://get.wasmer.io -sSfL | sh”) жана керектүү файлды (“wasmer test.wasm”) иштетиңиз. ). Программалар кадимки WebAssembly модулдары түрүндө бөлүштүрүлөт, аларды WAPM пакет менеджери аркылуу башкарууга болот. Wasmer ошондой эле WebAssembly кодун Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir жана Java программаларына киргизүү үчүн колдонула турган китепкана катары жеткиликтүү.

Платформа сизге жергиликтүү жыйындарга жакын тиркемелердин аткарылышын камсыз кылууга мүмкүндүк берет. WebAssembly модулу үчүн Native Object Engine'ди колдонуу менен, сиз машина кодун түзө аласыз (“wasmer compile -native” алдын ала түзүлгөн .so, .dylib жана .dll объектинин файлдарын түзүү), ал иштөө үчүн минималдуу иштөө убактысын талап кылат, бирок бардык кумдук обочолонууну сактайт. Өзгөчөлүктөрү. Алдын ала түзүлгөн программаларды Wasmer менен камсыз кылууга болот. Rust API жана Wasm-C-API кошумчаларды жана кеңейтүүлөрдү түзүү үчүн сунушталат.

Значительная смена номера версии Wasmer связана с внесением нарушающих совместимость изменений во внутренний API, которые, по заверению разработчиков, никак не отразятся на 99% пользователей платформы. Из нарушающих совместимость изменений также отмечается изменение формата сериализированных модулей Wasm (модули, сериализированные в Wasmer 1.0, не смогут использоваться в Wasmer 2.0). Другие изменения:

  • Поддержка инструкций SIMD (Single Instruction, Multiple Data), позволяющих организовать распараллеливание операций над данными. Из областей, в которых применение SIMD может заметно поднять производительность, отмечается машинное обучение, кодирование и декодирование видео, обработки изображений, симуляция физических процессов и манипуляции с графикой.
  • Поддержка ссылочных типов, позволяющих модулям Wasm обращаться к информации в других модулях или в базовом окружении.
  • Проведена значительная оптимизация производительности. Скорость работы LLVM runtime с числами с плавающей запятой увеличена примерно на 50%. Значительно ускорен вызов функций за счёт сокращения ситуаций, требующих обращения к ядру. На 40% увеличена производительность генератора кода Cranelift. Сокращено время десериализации данных.
    Wasmer 2.0, WebAssembly негизиндеги тиркемелерди куруу үчүн инструменттер топтому жеткиликтүү
    Wasmer 2.0, WebAssembly негизиндеги тиркемелерди куруу үчүн инструменттер топтому жеткиликтүү
  • Для более точного отражения сути изменены названия движков: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Source: opennet.ru

Комментарий кошуу