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 អ្នកអាចបង្កើតកូដម៉ាស៊ីន ("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).

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់