Wasmer 2.0, 'n gereedskapstel vir die bou van WebAssembly-gebaseerde toepassings, is beskikbaar

Бостоялся Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Wasmer, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ runtime для выполнСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ WebAssembly, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, способных Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠ΄Π°, Π½Π΅ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ довСрия. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Rust ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT.

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ обСспСчиваСтся благодаря компиляции ΠΊΠΎΠ΄Π° прилоТСния Π² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ WebAssembly, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±Ρ‹Ρ… ОБ ΠΈΠ»ΠΈ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой лСгковСсныС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСтся псСвдокод WebAssembly. Π”Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π΅ привязаны ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ написанный Π½Π° любом языкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Для компиляции Π² WebAssembly ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструмСнтарий Emscripten. Для трансляции WebAssembly Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ поддСрТиваСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π½Ρ‹Ρ… бэкСндов компиляции (Singlepass, Cranelift, LLVM) ΠΈ Π΄Π²ΠΈΠΆΠΊΠΎΠ² (задСйствованиС JIT ΠΈΠ»ΠΈ гСнСрация машинного ΠΊΠΎΠ΄Π°).

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом ΠΈ взаимодСйствиС с систСмой обСспСчиваСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ API WASI (WebAssembly System Interface), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ интСрфСйсы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, сокСтами ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями, прСдоставляСмыми ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΎΡ‚ основной систСмы Π² sandbox-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ заявлСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ бСзопасности Π½Π° основС управлСния возмоТностями β€” для дСйствий с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· рСсурсов (Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, сокСты, систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ Ρ‚.ΠΏ.) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ полномочия).

Om 'n WebAssembly-houer te begin, is dit genoeg om Wasmer-looptyd op die stelsel te installeer, wat sonder eksterne afhanklikhede kom ("krul https://get.wasmer.io -sSfL | sh") en die nodige lΓͺer ("wasmer-toets") .wasm"). Programme word versprei in die vorm van gewone WebAssembly-modules, wat met die WAPM-pakketbestuurder bestuur kan word. Wasmer is ook beskikbaar as 'n biblioteek wat gebruik kan word om WebAssembly-kode in Rust-, C/C++-, C#-, D-, Python-, JavaScript-, Go-, PHP-, Ruby-, Elixir- en Java-programme in te sluit.

Die platform laat jou toe om toepassingsuitvoering te bereik naby diΓ© van inheemse samestellings. Deur die Native Object Engine vir 'n WebAssembly-module te gebruik, kan jy inheemse kode genereer ("wasmer compile -native" vir die generering van vooraf saamgestelde .so-, .dylib- en .dll-objeklΓͺers), wat minimale looptyd vereis om te loop, maar behou al die kenmerke van sandbox isolasie. Dit is moontlik om vooraf saamgestelde programme met ingeboude Wasmer te verskaf. Rust API en Wasm-C-API word aangebied vir die skep van byvoegings en byvoegings.

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ смСна Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии Wasmer связана с внСсСниСм Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΠΎ Π·Π°Π²Π΅Ρ€Π΅Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ отразятся Π½Π° 99% ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Из Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ отмСчаСтся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° сСриализированных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Wasm (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, сСриализированныС Π² Wasmer 1.0, Π½Π΅ смогут ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Wasmer 2.0). Π”Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° инструкций SIMD (Single Instruction, Multiple Data), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ распараллСливаниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Из областСй, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SIMD ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, отмСчаСтся машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, симуляция физичСских процСссов ΠΈ манипуляции с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ссылочных Ρ‚ΠΈΠΏΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… модулям Wasm ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… модулях ΠΈΠ»ΠΈ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ LLVM runtime с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 50%. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускорСн Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π° счёт сокращСния ситуаций, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… обращСния ΠΊ ядру. На 40% ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° Cranelift. Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ врСмя дСсСриализации Π΄Π°Π½Π½Ρ‹Ρ….
    Wasmer 2.0, 'n gereedskapstel vir die bou van WebAssembly-gebaseerde toepassings, is beskikbaar
    Wasmer 2.0, 'n gereedskapstel vir die bou van WebAssembly-gebaseerde toepassings, is beskikbaar
  • Для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ отраТСния сути ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ названия Π΄Π²ΠΈΠΆΠΊΠΎΠ²: JIT β†’ Universal, Native β†’ Dylib (Dynamic Library), Object File β†’ StaticLib (Static Library).

Bron: opennet.ru

Voeg 'n opmerking