Wasmer 3.0, ຊຸດເຄື່ອງມືສໍາລັບການກໍ່ສ້າງຄໍາຮ້ອງສະຫມັກທີ່ອີງໃສ່ WebAssembly, ມີໃຫ້

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

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

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

ແພລະຕະຟອມຊ່ວຍໃຫ້ທ່ານບັນລຸການປະຕິບັດການປະຕິບັດຄໍາຮ້ອງສະຫມັກຢູ່ໃກ້ກັບສະພາແຫ່ງພື້ນເມືອງ. ການນໍາໃຊ້ Native Object Engine ສໍາລັບໂມດູນ WebAssembly, ທ່ານສາມາດສ້າງລະຫັດເຄື່ອງຈັກ ("wasmer compile -native" ເພື່ອສ້າງ precompiled .so, .dylib ແລະ .dll object files), ເຊິ່ງຕ້ອງການ runtime ຫນ້ອຍທີ່ສຸດເພື່ອແລ່ນ, ແຕ່ຮັກສາການແຍກ sandbox ທັງຫມົດ. ຄຸນ​ລັກ​ສະ​ນະ. ມັນເປັນໄປໄດ້ທີ່ຈະສະຫນອງໂຄງການ precompiled ກັບການກໍ່ສ້າງໃນ Wasmer. Rust API ແລະ Wasm-C-API ແມ່ນສະຫນອງໃຫ້ສໍາລັບການສ້າງ add-ons ແລະສ່ວນຂະຫຍາຍ.

ເພື່ອເປີດຕົວ WebAssembly container, ພຽງແຕ່ຕິດຕັ້ງ Wasmer ໃນລະບົບ runtime, ເຊິ່ງມາໂດຍບໍ່ມີການຂຶ້ນກັບພາຍນອກ (“curl https://get.wasmer.io -sSfL | sh”), ແລະແລ່ນໄຟລ໌ທີ່ຈໍາເປັນ (“wasmer test.wasm” ). ໂປລແກລມຖືກແຈກຢາຍໃນຮູບແບບຂອງໂມດູນ WebAssembly ປົກກະຕິ, ເຊິ່ງສາມາດຈັດການໄດ້ໂດຍໃຊ້ WAPM package manager. Wasmer ຍັງມີຢູ່ໃນຫ້ອງສະຫມຸດທີ່ສາມາດຖືກນໍາໃຊ້ເພື່ອຝັງລະຫັດ WebAssembly ເຂົ້າໄປໃນ Rust, C/C ++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, ແລະ Java program.

Основные изменения в Wasmer 3.0:

  • Добавлена возможность создания родных исполняемых файлов для любых платформ. Полностью переработана команда «wasmer create-exe», которая позволяет преобразовать файл с промежуточным кодом WebAssembly в самодостаточные исполняемые файлы для платформ Linux, Windows и macOS, которые могут работать без установки самого Wasmer.
  • Предоставлена возможность запуска WAPM-пакетов, размещённых в каталоге wapm.io, при помощи команды «wasmer run». Например, выполнение «wasmer run python/python» приведёт к загрузке из репозитория wapm.io пакета python и его запуску.
  • Полностью переработан Wasmer Rust API, в котором изменён стиль работы с памятью и обеспечена возможность безопасного сохранения объектов Wasm в структуре Store. Предложена новая структура MemoryView, позволяющая читать и записывать данные в линейную область памяти.
  • Реализован набор компонентов wasmer-js для запуска Wasmer в web-браузере и взаимодействия с ним из JavaScript, используя библиотеку wasm-bindgen. По своим возможностям wasmer-js соответствует компонентам wasmer-sys, предназначенным для запуска Wasmer в обычных операционных системах.
  • Упрощены движки. Вместо раздельных движков для JIT, динамического и статического связывания (Universal, Dylib, StaticLib) теперь предлагается один общий движок и загрузка и сохранение кода в котором управляется на уровня выставления параметров.
  • Для десериализации артефактов задействован фреймворк rkyv, обеспечивающий работу в режиме zero-copy, т.е. не требующий выделения дополнительной памяти и выполняющий десериализацию только с использованием изначально предоставленного буфера. Применение rkyv позволило значительно повысить скорость запуска.
  • Улучшен однопроходный компилятор Singlepass, в котором появилась поддержка функций с несколькими аргументами (multi-value), повышена надёжность работы и добавлена поддержка кадров обработки исключений.
  • Улучшена реализация API WASI (WebAssembly System Interface). Решены проблемы в программном интерфейсе WASI для работы с файловой системой. Внутренние типы переработаны с использованием WAI (WebAssembly Interfaces), что в будущем позволит воплотить в жизнь серию новых возможностей.

ແຫຼ່ງຂໍ້ມູນ: opennet.ru

ເພີ່ມຄວາມຄິດເຫັນ