Wasmer 3.0, một bộ công cụ để xây dựng các ứng dụng dựa trên WebAssugging, đã có sẵn

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

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

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

Nền tảng này cho phép bạn đạt được hiệu suất thực thi ứng dụng gần với các tập hợp gốc. Bằng cách sử dụng Công cụ đối tượng gốc cho mô-đun WebAssembly, bạn có thể tạo mã máy ("wasmer biên dịch -native" để tạo các tệp đối tượng .so, .dylib và .dll được biên dịch trước), yêu cầu thời gian chạy tối thiểu để chạy nhưng vẫn giữ lại tất cả sự cô lập của hộp cát đặc trưng. Có thể cung cấp các chương trình được biên dịch sẵn với Wasmer tích hợp. API Rust và Wasm-C-API được cung cấp để tạo các tiện ích bổ sung và tiện ích mở rộng.

Để khởi chạy bộ chứa WebAssembly, chỉ cần cài đặt Wasmer trong hệ thống thời gian chạy, hệ thống này không có phần phụ thuộc bên ngoài (“curl https://get.wasmer.io -sSfL | sh”) và chạy tệp cần thiết (“wasmer test.wasm” ). Các chương trình được phân phối dưới dạng mô-đun WebAssugging thông thường, có thể được quản lý bằng trình quản lý gói WAPM. Wasmer cũng có sẵn dưới dạng thư viện có thể được sử dụng để nhúng mã WebAssembly vào các chương trình Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir và Java.

Основные изменения в 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), что в будущем позволит воплотить в жизнь серию новых возможностей.

Nguồn: opennet.ru

Thêm một lời nhận xét