Mozilla, Fastly, Intel və Red Hat WebAssembly-ni universal istifadə üçün platforma kimi təbliğ edir

Mozilla, Fastly, Intel və Red Hat birləşdi WebAssembly-i istənilən infrastruktur, əməliyyat sistemi və ya cihazda təhlükəsiz kod icrası üçün universal platformaya çevirməyə kömək edən texnologiyaların inkişaf etdirilməsi üzrə səyləri. WebAssembly-dən təkcə veb-brauzerlərdə istifadə etməyə imkan verən iş vaxtının və tərtibçilərin birgə inkişafı üçün icma yaradılmışdır. Bytecode Alyansı.

Brauzerdən kənarda icra edilə bilən WebAssembly formatında çatdırılan portativ proqramlar yaratmaq üçün API-dən istifadə etməyi təklif edirik. MƏN İDİM Əməliyyat sistemi ilə birbaşa qarşılıqlı əlaqə üçün proqram interfeyslərini təmin edən (WebAssembly System Interface) (fayllar, yuvalar və s. ilə işləmək üçün POSIX API). WASI-dən istifadə edən proqramların icra modelinin fərqli xüsusiyyəti ondan ibarətdir ki, onlar əsas sistemdən təcrid olunmaq üçün sandbox mühitində işləyirlər və hər bir resursla (fayllar, qovluqlar, yuvalar, sistem zəngləri) hərəkətlər üçün imkanların idarə edilməsinə əsaslanan təhlükəsizlik mexanizmindən istifadə edirlər. və s.) tətbiqə müvafiq icazələr verilməlidir (yalnız elan edilmiş funksionallığa giriş təmin edilir).

Biri qollar Yaradılan ittifaq müasir modul proqramların çoxlu sayda asılılığı olan paylanması probleminin həllidir. Bu cür tətbiqlərdə hər bir asılılıq potensial zəiflik və ya hücum mənbəyi ola bilər. Asılılığa nəzarət etmək, onunla əlaqəli bütün tətbiqlərə nəzarət etməyə imkan verir. Tətbiqə güvən avtomatik olaraq bütün asılılıqlara etibarı nəzərdə tutur, lakin asılılıqlar tez-tez fəaliyyətləri idarə oluna bilməyən üçüncü tərəf komandaları tərəfindən hazırlanır və saxlanılır. Bytecode Alliance üzvləri mahiyyət etibarilə etibarlı olmayan WebAssembly proqramlarının təhlükəsiz icrası üçün vahid həll təmin etmək niyyətindədirlər.

Qoruma üçün, hər bir asılılıq modulunun ayrıca təcrid olunmuş WebAssembly moduluna ayrıldığı, səlahiyyətləri yalnız bu modulla əlaqəli olan nanoproseslər konsepsiyasından istifadə etmək təklif olunur (məsələn, sətirlərin emalı üçün kitabxana şəbəkə yuvasını və ya faylı aça bilmək). Prosesin ayrılmasından fərqli olaraq, WebAssembly işləyiciləri yüngüldür və demək olar ki, heç bir əlavə resurs tələb etmir - işləyicilər arasında qarşılıqlı əlaqə adi funksiyaları çağırmaqdan çox yavaş deyil. Ayrılma təkcə fərdi modullar səviyyəsində deyil, həm də, məsələn, ümumi yaddaş sahələri ilə işləmək lazım olan modul qrupları səviyyəsində də həyata keçirilə bilər.

Tələb olunan səlahiyyətlər həm asılılıqların özləri səviyyəsində müəyyən edilə bilər, həm də ana modullar tərəfindən zəncir boyunca asılılıqlara həvalə edilə bilər (WASI-dəki resurslar xüsusi fayl deskriptoru növü ilə əlaqələndirilir - qabiliyyət). Məsələn, modula xüsusi qovluğa və sistem zənglərinə daxil olmaq imkanı verilə bilər və modulun inkişaf infrastrukturu təhlükə altına düşərsə və ya zəiflik aşkar edilərsə, hücum zamanı giriş yalnız bu resurslarla məhdudlaşdırılacaqdır. Modul yaradıcıları tərəfindən resurs bəyannamələri şübhəli fəaliyyətin göstəricisi ola bilər, məsələn, mətn emalı modulu şəbəkə bağlantısını açmaq üçün icazə tələb etdikdə. Əvvəlcə təyin edilmiş icazələr yoxlanılır və onlar dəyişərsə, yerli modul imzası yenilənənə qədər asılılığın yüklənməsi rədd edilir.

Bytecode Alliance qanadı altında birgə inkişaf üçün tərcümə edilmişdir WebAssembly ilə əlaqəli bir neçə layihələr, əvvəllər alyansın təsisçi şirkətləri tərəfindən ayrıca hazırlanmışdır:

  • Vaxt — WASI genişlənmələri ilə WebAssembly proqramlarını müntəzəm müstəqil proqramlar kimi işə salmaq üçün iş vaxtı. O, həm xüsusi komanda xətti yardım proqramından istifadə edərək WebAssembly bayt kodunu işə salmağı, həm də hazır icra edilə bilən faylları əlaqələndirməyi dəstəkləyir (wasmtime kitabxana kimi proqrama daxil edilmişdir). Wasmtime çevik modul struktura malikdir ki, bu da müxtəlif proqramlar üçün iş vaxtını miqyaslandırmağa imkan verir, məsələn, məhdud resursları olan qurğular üçün sökülən versiya yarada bilərsiniz;
  • Lucet — WebAssembly formatında proqramların icrası üçün tərtibçi və icra müddəti. Fərqli xüsusiyyət Lucet, birbaşa icra üçün uyğun olan maşın koduna JIT əvəzinə tam hüquqlu gözlənilən tərtibatın (AOT, vaxtından əvvəl) istifadəsidir. Layihə Fastly tərəfindən hazırlanıb və minimal resurs sərf etmək və çox tez yeni nümunələri işə salmaq üçün optimallaşdırılıb (Hər sorğuda işə salınan işləyicilər üçün WebAssembly istifadə edən bulud kənar hesablama mühərrikində sürətli Lucet istifadə edir). Birgə layihə çərçivəsində Lucet kompilyatorunun əsas olaraq Wasmtime istifadəsinə çevrilməsi planlaşdırılır;
  • WAMR (WebAssembly Micro Runtime) ilk olaraq Əşyaların İnterneti cihazlarında istifadə üçün Intel tərəfindən hazırlanmış WebAssembly-in icrası üçün başqa bir iş vaxtıdır. WAMR minimum resurs istehlakı üçün optimallaşdırılmışdır və az miqdarda RAM olan cihazlarda istifadə edilə bilər. Layihəyə tərcüməçi və WebAssembly bayt kodunu yerinə yetirmək üçün virtual maşın, API (Libc-in alt dəsti) və dinamik proqramların idarə edilməsi üçün alətlər daxildir;
  • Kranlift — hardware arxitekturasından asılı olmayaraq aralıq təsviri xüsusi aparat platformaları üçün optimallaşdırılmış icra edilə bilən maşın koduna çevirən kod generatoru. Cranelift çox sürətli nəticə yaratmaq üçün funksiya tərtibinin paralelləşdirilməsini dəstəkləyir, bu da ondan JIT tərtibçiləri yaratmaq üçün istifadə etməyə imkan verir (Cranelift əsaslı JIT Wasmtime virtual maşınında istifadə olunur);
  • WASI ümumi — əməliyyat sistemi ilə qarşılıqlı əlaqənin təşkili üçün WASI (WebAssembly System Interface) API-nin ayrıca tətbiqi;
  • yük-vasi — WebAssembly-dən brauzerdən kənar istifadə üçün WASI interfeysindən istifadə edərək Rust kodunu WebAssembly bayt koduna tərtib etmək əmrini həyata keçirən Yük paketi meneceri üçün modul;
  • wat и wasmparser — mətnin təhlili (WAT, WAST) və WebAssembly bayt kodunun ikili təsvirləri üçün təhlilçilər.

Xülasə etmək üçün, WebAssembly Asm.js-ə çox bənzəyir, lakin müxtəlif JavaScript-ə bağlı olmayan ikili formatdır və müxtəlif proqramlaşdırma dillərindən tərtib edilmiş aşağı səviyyəli ara kodun brauzerdə icrasına imkan verir. WebAssembly zibil toplayıcıya ehtiyac duymur, çünki o, açıq yaddaş idarəetməsindən istifadə edir. WebAssembly üçün JIT istifadə edərək, yerli koda yaxın performans səviyyələrinə nail ola bilərsiniz. WebAssembly-nin əsas məqsədləri arasında müxtəlif platformalarda daşınma, proqnozlaşdırıla bilən davranış və eyni kodun icrasını təmin etməkdir.

Mənbə: opennet.ru

Добавить комментарий