Mozilla, Fastly, Intel ва Red Hat
Барои сохтани барномаҳои сайёр, ки дар формати WebAssembly расонида мешаванд, ки онҳоро берун аз браузер иҷро кардан мумкин аст, мо тавсия медиҳем, ки API-ро истифода барем.
Яке аз
Барои муҳофизат истифода бурдани мафҳуми нанопроцессҳо пешниҳод карда мешавад, ки дар он ҳар як модули вобастагӣ ба модули алоҳидаи WebAssembly ҷудо карда шудааст, ки салоҳиятҳои онҳо танҳо нисбат ба ин модул муқаррар карда мешаванд (масалан, китобхона барои коркарди сатрҳо қодир ба кушодани розеткаи шабакавӣ ё файл). Баръакси ҷудокунии равандҳо, коркардкунандагони WebAssembly сабуканд ва қариб ҳеҷ гуна захираҳои иловагӣ талаб намекунанд - ҳамкорӣ байни коркардкунандагон нисбат ба даъват кардани функсияҳои оддӣ сусттар нест. Ҷудо кардан мумкин аст на танҳо дар сатҳи модулҳои инфиродӣ, балки дар сатҳи гурӯҳҳои модулҳо, ки масалан, бояд бо минтақаҳои хотираи умумӣ кор кунанд.
Салоҳиятҳои дархостшударо ҳам дар сатҳи худи вобастагӣ муайян кардан мумкин аст ва ҳам ба вобастагиҳо дар қад-қади занҷир аз ҷониби модулҳои волидайн (манбаъҳо дар WASI бо навъи махсуси тасвири файл - қобилият алоқаманданд). Масалан, ба модул имкони дастрасӣ ба феҳристи мушаххас ва зангҳои система дода мешавад ва агар инфрасохтори таҳияи модул осеб дида бошад ё осебпазирӣ муайян карда шавад, ҳангоми ҳамла, дастрасӣ танҳо ба ин захираҳо маҳдуд мешавад. Эъломияи захираҳо аз ҷониби созандагони модул метавонад нишондиҳандаи фаъолияти шубҳанок бошад, масалан вақте ки модули коркарди матн барои кушодани пайвасти шабака иҷозат талаб мекунад. Иҷозатҳои дар аввал муқарраршуда тафтиш карда мешаванд ва агар онҳо тағир диҳанд, боркунии вобастагӣ то таҷдиди имзои модули маҳаллӣ рад карда мешавад.
Барои рушди муштарак дар зери боли Alliance Bytecode
-
Вақти 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 монанд аст, аммо
Манбаъ: opennet.ru