Wasmer 2.0, WebAssembly əsaslı proqramlar yaratmaq üçün alət dəsti mövcuddur

Wasmer layihəsi müxtəlif əməliyyat sistemlərində işləyə bilən universal proqramlar yaratmaq, eləcə də təcrid olunmuş şəkildə etibarsız kodu işlətmək üçün istifadə oluna bilən WebAssembly modullarının icrası üçün iş vaxtı işləyib hazırlayan ikinci əsas buraxılışını buraxdı. Layihə kodu Rust-da yazılmışdır və MIT lisenziyası altında paylanır.

Daşınma tətbiq kodunu istənilən OS-də işləyə bilən və ya digər proqramlaşdırma dillərində proqramlara daxil edilə bilən aşağı səviyyəli WebAssembly ara koduna tərtib etməklə əldə edilir. Proqramlar WebAssembly psevdokodu ilə işləyən yüngül konteynerlərdir. Bu konteynerlər əməliyyat sisteminə bağlı deyil və ilkin olaraq istənilən proqramlaşdırma dilində yazılmış kodu ehtiva edə bilər. Emscripten alət dəsti WebAssembly-ə tərtib etmək üçün istifadə edilə bilər. WebAssembly-ni cari platformanın maşın koduna çevirmək üçün o, müxtəlif kompilyasiya arxa hissələrinin (Singlepass, Cranelift, LLVM) və mühərriklərin (JIT və ya maşın kodu generasiyasından istifadə etməklə) qoşulmasını dəstəkləyir.

Girişə nəzarət və sistemlə qarşılıqlı əlaqə əməliyyat sistemi tərəfindən təmin edilən fayllar, yuvalar və digər funksiyalarla işləmək üçün proqramlaşdırma interfeyslərini təmin edən WASI (WebAssembly System Interface) API-dən istifadə etməklə təmin edilir. Tətbiqlər sandbox mühitində əsas sistemdən təcrid olunub və yalnız elan edilmiş funksionallığa (bacarıqların idarə edilməsinə əsaslanan təhlükəsizlik mexanizmi - hər bir resursla (fayllar, kataloqlar, rozetkalar, sistem zəngləri və s.) hərəkətlər üçün), ərizəyə müvafiq səlahiyyətlər verilməlidir).

WebAssembly konteynerini işə salmaq üçün sadəcə Wasmer-i xarici asılılıqlar olmadan ("curl https://get.wasmer.io -sSfL | sh") gələn iş vaxtı sisteminə quraşdırın və lazımi faylı işə salın ("wasmer test.wasm" ). Proqramlar WAPM paket meneceri vasitəsilə idarə oluna bilən müntəzəm WebAssembly modulları şəklində paylanır. Wasmer həmçinin WebAssembly kodunu Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir və Java proqramlarına yerləşdirmək üçün istifadə edilə bilən kitabxana kimi də mövcuddur.

Platforma yerli məclislərə yaxın proqram icra performansına nail olmağa imkan verir. WebAssembly modulu üçün Doğma Obyekt Mühərrikindən istifadə edərək, işləmək üçün minimum iş vaxtı tələb edən, lakin bütün sandbox izolyasiyasını özündə saxlayan maşın kodunu (əvvəlcədən tərtib edilmiş .so, .dylib və .dll obyekt fayllarını yaratmaq üçün "wasmer compile -native") yarada bilərsiniz. xüsusiyyətləri. Əvvəlcədən tərtib edilmiş proqramları daxili Wasmer ilə təchiz etmək mümkündür. Rust API və Wasm-C-API əlavələr və genişləndirmələr yaratmaq üçün təklif olunur.

Wasmer-in versiya nömrəsində əhəmiyyətli dəyişiklik daxili API-yə uyğun gəlməyən dəyişikliklərin tətbiqi ilə bağlıdır, tərtibatçıların fikrincə, platforma istifadəçilərinin 99%-nə təsir etməyəcək. Uyğunluğu pozan dəyişikliklər arasında seriallaşdırılmış Wasm modullarının formatında da dəyişiklik var (Wasmer 1.0-da seriallaşdırılmış modullar Wasmer 2.0-da istifadə oluna bilməyəcək). Digər dəyişikliklər:

  • Məlumat əməliyyatlarının paralelləşdirilməsinə imkan verən SIMD (Single Instruction, Multiple Data) təlimatlarına dəstək. SIMD-dən istifadənin performansı əhəmiyyətli dərəcədə yaxşılaşdıra biləcəyi sahələrə maşın öyrənməsi, video kodlaşdırma və dekodlaşdırma, təsvirin işlənməsi, fiziki proseslərin simulyasiyası və qrafik manipulyasiya daxildir.
  • Wasm modullarına digər modullarda və ya əsas mühitdə məlumat əldə etməyə imkan verən istinad növləri üçün dəstək.
  • Əhəmiyyətli performans optimallaşdırmaları edildi. Üzən nöqtə nömrələri ilə LLVM işləmə vaxtının sürəti təxminən 50% artırıldı. Funksiya çağırışları nüvəyə giriş tələb edən vəziyyətləri azaltmaqla əhəmiyyətli dərəcədə sürətləndirilmişdir. Cralift kod generatorunun performansı 40% artırıldı. Azaldılmış məlumatların seriyadan çıxarılması vaxtı.
    Wasmer 2.0, WebAssembly əsaslı proqramlar yaratmaq üçün alət dəsti mövcuddur
    Wasmer 2.0, WebAssembly əsaslı proqramlar yaratmaq üçün alət dəsti mövcuddur
  • Mahiyyəti daha dəqiq əks etdirmək üçün mühərriklərin adları dəyişdirilib: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Mənbə: opennet.ru

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