Mozilla, Fastly, Intel ва Red Hat WebAssembly-ро ҳамчун платформаи истифодаи универсалӣ пешбарӣ мекунанд

Mozilla, Fastly, Intel ва Red Hat муттадид кӯшишҳои он дар таҳияи технологияҳое, ки WebAssembly-ро ба платформаи универсалӣ барои иҷрои бехатари код дар ҳама гуна инфрасохтор, системаи амалиётӣ ё дастгоҳ табдил медиҳанд. Ҷомеа барои таҳияи якҷояи вақти корӣ ва компиляторҳо таъсис дода шудааст, ки истифодаи WebAssembly на танҳо дар веб-браузерҳо имкон медиҳад Alliance Bytecode.

Барои сохтани барномаҳои сайёр, ки дар формати WebAssembly расонида мешаванд, ки онҳоро берун аз браузер иҷро кардан мумкин аст, мо тавсия медиҳем, ки API-ро истифода барем. ВАСИ (WebAssembly System Interface), ки интерфейсҳои нармафзорро барои ҳамкории мустақим бо системаи оператсионӣ таъмин мекунад (POSIX API барои кор бо файлҳо, розеткаҳо ва ғ.). Хусусияти фарқкунандаи модели иҷрои барномаҳо бо истифода аз WASI дар он аст, ки онҳо дар муҳити қумӣ барои ҷудошавӣ аз системаи асосӣ кор мекунанд ва механизми амниятро дар асоси идоракунии қобилият барои амалҳо бо ҳар як захираҳо (файлҳо, директорияҳо, розеткаҳо, зангҳои системавӣ) истифода мебаранд. , ва ғайра) ба барнома бояд иҷозатҳои мувофиқ дода шавад (танҳо дастрасӣ ба функсияи эълоншуда таъмин карда мешавад).

Яке аз ҳадафҳо Иттифоқи сохташуда роҳи ҳалли масъалаи паҳн кардани замимаҳои муосири модулӣ бо шумораи зиёди вобастагӣ мебошад. Дар чунин барномаҳо, ҳар як вобастагӣ метавонад манбаи эҳтимолии осебпазирӣ ё ҳамлаҳо бошад. Гирифтани назорати вобастагӣ ба шумо имкон медиҳад, ки назорати ҳамаи замимаҳои бо он алоқамандро ба даст оред. Эътимод ба барнома ба таври худкор эътимод ба ҳама вобастагиҳоро дар назар дорад, аммо вобастагӣ аксар вақт аз ҷониби дастаҳои тарафи сеюм таҳия ва нигоҳ дошта мешавад, ки фаъолияти онҳоро назорат кардан ғайриимкон аст. Аъзои Bytecode Alliance ният доранд, ки ҳалли ҳамаҷониба барои иҷрои бехатари замимаҳои WebAssembly, ки табиатан боваринок нестанд, пешниҳод кунанд.

Барои муҳофизат истифода бурдани мафҳуми нанопроцессҳо пешниҳод карда мешавад, ки дар он ҳар як модули вобастагӣ ба модули алоҳидаи WebAssembly ҷудо карда шудааст, ки салоҳиятҳои онҳо танҳо нисбат ба ин модул муқаррар карда мешаванд (масалан, китобхона барои коркарди сатрҳо қодир ба кушодани розеткаи шабакавӣ ё файл). Баръакси ҷудокунии равандҳо, коркардкунандагони WebAssembly сабуканд ва қариб ҳеҷ гуна захираҳои иловагӣ талаб намекунанд - ҳамкорӣ байни коркардкунандагон нисбат ба даъват кардани функсияҳои оддӣ сусттар нест. Ҷудо кардан мумкин аст на танҳо дар сатҳи модулҳои инфиродӣ, балки дар сатҳи гурӯҳҳои модулҳо, ки масалан, бояд бо минтақаҳои хотираи умумӣ кор кунанд.

Салоҳиятҳои дархостшударо ҳам дар сатҳи худи вобастагӣ муайян кардан мумкин аст ва ҳам ба вобастагиҳо дар қад-қади занҷир аз ҷониби модулҳои волидайн (манбаъҳо дар WASI бо навъи махсуси тасвири файл - қобилият алоқаманданд). Масалан, ба модул имкони дастрасӣ ба феҳристи мушаххас ва зангҳои система дода мешавад ва агар инфрасохтори таҳияи модул осеб дида бошад ё осебпазирӣ муайян карда шавад, ҳангоми ҳамла, дастрасӣ танҳо ба ин захираҳо маҳдуд мешавад. Эъломияи захираҳо аз ҷониби созандагони модул метавонад нишондиҳандаи фаъолияти шубҳанок бошад, масалан вақте ки модули коркарди матн барои кушодани пайвасти шабака иҷозат талаб мекунад. Иҷозатҳои дар аввал муқарраршуда тафтиш карда мешаванд ва агар онҳо тағир диҳанд, боркунии вобастагӣ то таҷдиди имзои модули маҳаллӣ рад карда мешавад.

Барои рушди муштарак дар зери боли Alliance Bytecode тарҷума шудааст якчанд марбут ба WebAssembly лоиҳаҳо, ки қаблан аз ҷониби ширкатҳои муассиси иттиҳод алоҳида таҳия шуда буд:

  • Вақти Wasmtime — вақти кор барои иҷро кардани барномаҳои WebAssembly бо васеъшавии WASI ҳамчун барномаҳои мустақили муқаррарӣ. Он ҳам оғоз кардани байткоди WebAssembly бо истифода аз утилитаи махсуси сатри фармон ва пайваст кардани файлҳои иҷрошавандаи омодаро дастгирӣ мекунад (wasmtime дар барнома ҳамчун китобхона сохта шудааст). Wasmtime дорои сохтори модули фасеҳиест, ки ба шумо имкон медиҳад, ки вақти кор барои замимаҳои гуногунро васеъ кунед, масалан, шумо метавонед версияи ҷудошуда барои дастгоҳҳои дорои захираҳои маҳдуд эҷод кунед;
  • Лусет — компилятор ва вақти корӣ барои иҷрои барномаҳо дар формати WebAssembly. Фарқкунанда хусусият Lucet ба ҷои JIT ба коди мошинӣ, ки барои иҷрои мустақим мувофиқ аст, истифодаи компилясияи мукаммали интизорӣ (AOT, пеш аз вақт) мебошад. Лоиҳа аз ҷониби Fastly таҳия шудааст ва барои истеъмоли ҳадди ақали захираҳо ва ба зудӣ оғоз кардани мисолҳои нав оптимизатсия карда шудааст (Fastly Lucet-ро дар муҳаррики ҳисоббарории канори абрӣ истифода мебарад, ки WebAssembly-ро барои коркардкунандагони дар ҳар як дархост оғозшуда истифода мебарад). Дар доираи лоиҳаи муштарак, компилятори Lucet ба нақша гирифта шудааст, ки ба Wasmtime ҳамчун асос табдил дода шавад;
  • ВАМР (WebAssembly Micro Runtime) вақти дигари корӣ барои иҷрои WebAssembly мебошад, ки аслан аз ҷониби Intel барои истифода дар дастгоҳҳои Интернети ашё таҳия шудааст. WAMR барои ҳадди ақали истеъмоли захираҳо оптимизатсия карда шудааст ва онро дар дастгоҳҳои дорои миқдори ками хотираи оперативӣ истифода бурдан мумкин аст. Лоиҳа тарҷумон ва мошини маҷозӣ барои иҷрои байткоди WebAssembly, API (як зермаҷмӯи Libc) ва абзорҳо барои идоракунии динамикии барномаҳоро дар бар мегирад;
  • Краниэлифт — генератори код, ки намоиши фосилавии новобаста аз меъмории сахтафзорро ба рамзи мошини иҷрошавандаи барои платформаҳои сахтафзори мушаххас оптимизатсияшуда тарҷума мекунад. Cranelift параллелизатсияи маҷмӯи функсияҳоро барои тавлиди натиҷаҳои хеле зуд дастгирӣ мекунад, ки имкон медиҳад он барои эҷоди компиляторҳои JIT истифода шавад (JIT дар асоси Cranelift дар мошини виртуалии Wasmtime истифода мешавад);
  • WASI маъмул аст — татбиқи алоҳидаи API-и WASI (WebAssembly System Interface) барои ташкили ҳамкорӣ бо системаи оператсионӣ;
  • бор-васи — модул барои мудири бастаи боркаш, ки фармонро барои тартиб додани коди Rust ба байткоди WebAssembly бо истифода аз интерфейси WASI барои истифодаи WebAssembly берун аз браузер амалӣ мекунад;
  • wat и wasmparser — таҳлилгарон барои таҳлили матн (WAT, WAST) ва намояндагии бинарии байткоди WebAssembly.

Барои хулоса кардан, WebAssembly ба Asm.js монанд аст, аммо фарқ мекунад дар он аст, ки он формати дуӣ аст, ки ба JavaScript пайваст нест ва имкон медиҳад, ки коди мобайнии сатҳи пасти аз забонҳои гуногуни барномасозӣ тартибдодашуда дар браузер иҷро карда шавад. WebAssembly коллектори ахлотро талаб намекунад, зеро он идоракунии равшани хотираро истифода мебарад. Бо истифода аз JIT барои WebAssembly, шумо метавонед ба сатҳи корбарӣ наздик ба рамзи маҳаллӣ ноил шавед. Дар байни ҳадафҳои асосии WebAssembly таъмини интиқол, рафтори пешгӯинашаванда ва иҷроиши рамзҳои шабеҳ дар платформаҳои гуногун мебошад.

Манбаъ: opennet.ru

Илова Эзоҳ