Wasmer 3.0, WebAssembly негизиндеги тиркемелерди куруу үчүн инструменттер топтому жеткиликтүү

Wasmer долбоорунун үчүнчү негизги релизи киргизилди, ал WebAssembly модулдарын аткаруу үчүн иштөө убактысын иштеп чыгат, алар ар кандай операциялык системаларда иштей турган универсалдуу тиркемелерди түзүү үчүн, ошондой эле обочолонгондо ишенимсиз кодду аткаруу үчүн колдонулушу мүмкүн. Долбоордун коду Rust тилинде жазылган жана MIT лицензиясы боюнча таратылат.

Бир тиркемени бир нече платформада иштетүү мүмкүнчүлүгү кодду каалаган OSде иштей турган же башка программалоо тилдериндеги программаларга камтыла турган төмөнкү деңгээлдеги 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 test.wasm”) иштетиңиз. ). Программалар кадимки WebAssembly модулдары түрүндө бөлүштүрүлөт, аларды WAPM пакет менеджери аркылуу башкарууга болот. Wasmer ошондой эле WebAssembly кодун Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir жана Java программаларына киргизүү үчүн колдонула турган китепкана катары жеткиликтүү.

Wasmer 3.0 негизги өзгөрүүлөр:

  • Ар кандай платформа үчүн жергиликтүү аткарылуучу файлдарды түзүү мүмкүнчүлүгү кошулду. "Wasmer create-exe" буйругу WebAssembly аралык код файлын Linux, Windows жана macOS платформалары үчүн өз алдынча аткарылуучу файлдарга айландыруу үчүн толугу менен кайра иштелип чыккан, алар Wasmerдин өзүн орнотпостон иштей алат.
  • Wapm.io каталогунда жайгашкан WAPM пакеттерин “wasmer run” буйругун колдонуу менен ишке киргизсе болот. Мисалы, "wasmer run python/python" иштетүү wapm.io репозиторийинен python пакетин жүктөп алып, аны иштетет.
  • 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 программалык интерфейсиндеги көйгөйлөр чечилди. Ички типтер WAI (WebAssembly Interfaces) менен кайра иштелип чыккан, бул келечекте бир катар жаңы функцияларды ишке киргизет.

Source: opennet.ru

Комментарий кошуу