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 test.wasm" ). Барномаҳо дар шакли модулҳои муқаррарии WebAssembly тақсим карда мешаванд, ки онҳоро бо истифода аз мудири бастаи WAPM идора кардан мумкин аст. Wasmer инчунин ҳамчун китобхона дастрас аст, ки метавонад барои ворид кардани коди WebAssembly ба Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ва Java истифода шавад.

Платформа ба шумо имкон медиҳад, ки иҷрои иҷрои барномаҳоро дар наздикии маҷлисҳои маҳаллӣ ба даст оред. Бо истифода аз Engine Object Native барои модули 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 бо рақамҳои нуқтаи шинокунанда тақрибан 50% зиёд шудааст. Зангҳои функсионалӣ тавассути коҳиш додани ҳолатҳое, ки дастрасӣ ба ядроро талаб мекунанд, ба таври назаррас суръат мебахшанд. Фаъолияти генератори рамзи Cranelift 40% зиёд карда шуд. Коҳиш додани вақти сериализатсияи маълумот.
    Wasmer 2.0, маҷмӯи асбобҳо барои эҷоди барномаҳо дар асоси WebAssembly дастрас аст
    Wasmer 2.0, маҷмӯи асбобҳо барои эҷоди барномаҳо дар асоси WebAssembly дастрас аст
  • Барои дақиқтар инъикос кардани моҳият, номи муҳаррикҳо тағир дода шуданд: JIT → Universal, Native → Dylib (Китобхонаи динамикӣ), File Object → StaticLib (Library Static).

Манбаъ: opennet.ru

Илова Эзоҳ