Wasmer 2.0, WebAssembly негізіндегі қолданбаларды құруға арналған құралдар жинағы қолжетімді

Wasmer жобасы әртүрлі операциялық жүйелерде жұмыс істей алатын әмбебап қолданбаларды жасау үшін, сондай-ақ оқшауланған түрде сенімсіз кодты іске қосу үшін пайдаланылуы мүмкін WebAssembly модульдерін орындау үшін орындалу уақытын әзірлейтін өзінің екінші негізгі шығарылымын шығарды. Жоба коды Rust тілінде жазылған және MIT лицензиясы бойынша таратылады.

Портативтілікке қолданба кодын кез келген ОЖ-де жұмыс істей алатын немесе басқа бағдарламалау тілдеріндегі бағдарламаларға ендірілген төмен деңгейлі WebAssembly аралық кодына құрастыру арқылы қол жеткізіледі. Бағдарламалар WebAssembly псевдокодын іске қосатын жеңіл контейнерлер. Бұл контейнерлер операциялық жүйеге байланысты емес және бастапқыда кез келген бағдарламалау тілінде жазылған кодты қамтуы мүмкін. Emscripten құралдар жинағын WebAssembly жүйесіне құрастыру үшін пайдалануға болады. WebAssembly-ті ағымдағы платформаның машиналық кодына аудару үшін ол әртүрлі компиляция серверлерінің (Singlepass, Cranelift, LLVM) және қозғалтқыштардың (JIT немесе машина кодын генерациялау арқылы) қосылуын қолдайды.

Қол жеткізуді басқару және жүйемен өзара әрекеттесу WASI (WebAssembly System Interface) API көмегімен қамтамасыз етіледі, ол файлдармен, розеткалармен және операциялық жүйемен қамтамасыз етілген басқа функциялармен жұмыс істеу үшін бағдарламалау интерфейстерін қамтамасыз етеді. Қолданбалар құмсалғыш ортасында негізгі жүйеден оқшауланған және тек мәлімделген функционалдылыққа (мүмкіндіктерді басқаруға негізделген қауіпсіздік механизмі – ресурстардың әрқайсысымен (файлдар, каталогтар, ұялар, жүйелік қоңыраулар және т.б.) әрекеттер үшін), өтінішке тиісті өкілеттіктер берілуі тиіс).

WebAssembly контейнерін іске қосу үшін жүйеге сыртқы тәуелділіктерсіз келетін Wasmer жұмыс уақытын орнату жеткілікті («curl https://get.wasmer.io -sSfL | sh») және қажетті файлды («wasmer testi») іске қосыңыз. .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 жұмыс уақытының жылдамдығы шамамен 50%-ға артты. Функция шақырулары ядроға кіруді талап ететін жағдайларды азайту арқылы айтарлықтай жеделдетілді. Cralift код генераторының өнімділігі 40%-ға артты. Деректерді сериядан шығару уақыты қысқарды.
    Wasmer 2.0, WebAssembly негізіндегі қолданбаларды құруға арналған құралдар жинағы қолжетімді
    Wasmer 2.0, WebAssembly негізіндегі қолданбаларды құруға арналған құралдар жинағы қолжетімді
  • Мәнін дәлірек көрсету үшін қозғалтқыштардың атаулары өзгертілді: JIT → Universal, Native → Dylib (Динамикалық кітапхана), Объект файлы → StaticLib (Статикалық кітапхана).

Ақпарат көзі: opennet.ru

пікір қалдыру