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

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

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

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

Платформа жергілікті жинақтардың өнімділігіне жақын қолданбаны орындау өнімділігіне қол жеткізуге мүмкіндік береді. WebAssembly модулі үшін Native Object Engine пайдалану арқылы жергілікті кодты («wasmer compile -native» алдын ала құрастырылған .so, .dylib және .dll нысан файлдарын жасау үшін) жасай аласыз, ол іске қосу үшін ең аз орындалу уақытын қажет етеді, бірақ барлық мүмкіндіктерін сақтайды. құмсалғышты оқшаулау. Кірістірілген Wasmer көмегімен алдын ала құрастырылған бағдарламаларды жеткізуге болады. Rust API және Wasm-C-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 бағдарламаларына ендіру үшін пайдалануға болатын кітапхана ретінде қол жетімді.

Wasmer 3.0 жүйесіндегі негізгі өзгерістер:

  • Кез келген платформа үшін жергілікті орындалатын файлдарды жасау мүмкіндігі қосылды. "wasmer create-exe" пәрмені WebAssembly аралық код файлын Wasmer орнатусыз жұмыс істей алатын Linux, Windows және macOS платформаларына арналған дербес орындалатын файлдарға түрлендіру үшін толығымен қайта жасалды.
  • Wapm.io каталогында орналасқан WAPM бумаларын «wasmer run» пәрмені арқылы іске қосу мүмкіндігі қамтамасыз етілді. Мысалы, «wasmer run python/python» орындау python бумасын wapm.io репозиторийінен жүктеп алып, оны іске қосады.
  • Wasmer Rust API толығымен қайта жасақталды, онда жадпен жұмыс істеу стилі өзгертілді және Дүкен құрылымында Wasm нысандарын қауіпсіз сақтау мүмкіндігі қамтамасыз етілді. Сызықтық жад аймағына деректерді оқуға және жазуға мүмкіндік беретін жаңа MemoryView құрылымы ұсынылады.
  • Wasmer бағдарламасын веб-шолғышта іске қосу және онымен wasm-bindgen кітапханасы арқылы JavaScript арқылы әрекеттесу үшін wasmer-js құрамдастарының жинағы іске асырылды. Wasmer-js функционалдығы жағынан Wasmer-ді кәдімгі операциялық жүйелерде іске қосуға арналған wasmer-sys құрамдастарына ұқсас.
  • Жеңілдетілген қозғалтқыштар. JIT, динамикалық және статикалық байланыстыру (Universal, Dylib, StaticLib) үшін бөлек қозғалтқыштардың орнына енді бір жалпы қозғалтқыш ұсынылады және параметрді орнату деңгейінде басқарылатын жүктеу және сақтау коды.
  • Артефактілерді сериядан шығару үшін нөлдік көшірме жұмысын қамтамасыз ететін rkyv құрылымы пайдаланылады, яғни. қосымша жадты бөлуді қажет етпейді және тек бастапқы берілген буферді пайдаланып сериядан шығаруды орындау. rkyv пайдалану іске қосу жылдамдығын айтарлықтай арттырды.
  • Singlepass компиляторы көп мәнді функцияларды қолдау, сенімділікті жақсарту және ерекше жағдайларды өңдеу кадрларына қолдау қосу үшін жетілдірілді.
  • WASI (WebAssembly System Interface) API интерфейсінің жақсартылған енгізілуі. Файлдық жүйемен жұмыс істеуге арналған WASI API интерфейсіндегі ақаулар түзетілді. Ішкі түрлер WAI (WebAssembly Interfaces) көмегімен қайта жасақталды, бұл болашақта бірқатар жаңа мүмкіндіктерді енгізуге мүмкіндік береді.

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

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