ДоступСн Wasmer 2.0, инструмСнтарий для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ WebAssembly

Π‘ΡŠΡΡ‚ΠΎΡ сС Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Wasmer, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π° runtime Π·Π° изпълнСниС Π½Π° WebAssembly ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° създаванС Π½Π° унивСрсални прилоТСния, способни Π΄Π° работят Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΎ изпълнСниС Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ написан Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ сС разпространява ΠΏΠΎΠ΄ MIT Π»ΠΈΡ†Π΅Π½Π·.

ΠŸΡ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚Ρ‚Π° сС осигурява Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² нискоуровнСвСн ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ WebAssembly, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС изпълнява Π² всяка ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма ΠΈΠ»ΠΈ Π΄Π° сС Π²Π³Ρ€Π°Π΄ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡ†ΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ прСдставляват Π»Π΅ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Π² ΠΊΠΎΠΈΡ‚ΠΎ сС изпълнява псСвдокод Π½Π° WebAssembly. Π’Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π½Π΅ са ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΊΠΎΠ΄, ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ написан Π½Π° всСки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΠ½Π³ Π΅Π·ΠΈΠΊ. Π—Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π² WebAssembly ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡƒΠΌΡŠΡ‚ Emscripten. Π—Π° транслация Π½Π° WebAssembly Π² машинСн ΠΊΠΎΠ΄ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ (Singlepass, Cranelift, LLVM) ΠΈ Π΅Π½Π΄ΠΆΠΈΠ½ΠΈ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° JIT ΠΈΠ»ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° машинСн ΠΊΠΎΠ΄).

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

Π—Π° Π΄Π° стартиратС WebAssembly ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° инсталиратС runtime-a Wasmer Π² систСмата, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π±Π΅Π· външни зависимости ("curl https://get.wasmer.io -sSfL | sh"), ΠΈ Π΄Π° стартиратС нСобходимия Ρ„Π°ΠΉΠ» ("wasmer test.wasm"). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ сС разпространяват ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ WebAssembly ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ WAPM. Wasmer ΡΡŠΡ‰ΠΎ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, която ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π²Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° WebAssembly ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir ΠΈ Java.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° позволява постиганС Π½Π° производитСлност Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° прилоТСния, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ Ρ‚Π°Π·ΠΈ Π½Π° Ρ€ΠΎΠ΄Π½ΠΈΡ‚Π΅ сборки. Π‘ Native Object Engine Π·Π° WebAssembly ΠΌΠΎΠ΄ΡƒΠ»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° машинСн ΠΊΠΎΠ΄ ("wasmer compile β€”native" Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ .so, .dylib ΠΈ .dll), Π·Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ runtime, Π½ΠΎ сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ всички Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° sandbox изолация. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ доставянСто Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ с Π²Π³Ρ€Π°Π΄Π΅Π½ Wasmer. Π—Π° създаванС Π½Π° надстройки ΠΈ допълнСния сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ Rust API ΠΈ Wasm-C-API.

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° смяна Π½Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° вСрсията Wasmer Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½Π° с въвСТданС Π½Π° Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ API, ΠΊΠΎΠΈΡ‚ΠΎ, спорСд увСрСнията Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, няма Π΄Π° повлияят Π½Π° 99% ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. ΠžΡ‚ Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° сС отбСлязва промяната Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° сСриализирани ΠΌΠΎΠ΄ΡƒΠ»Π½ΠΈ Wasm (ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, сСриализирани Π² Wasmer 1.0, няма Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² Wasmer 2.0). Π”Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° SIMD инструкции (Single Instruction, Multiple Data), позволяващи ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ с Π΄Π°Π½Π½ΠΈ. ΠžΠ±Π»Π°ΡΡ‚ΠΈ, Π² ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° SIMD ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ производитСлността, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° изобраТСния, симулация Π½Π° физичСски процСси ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΠΈ с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅, позволяващи Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Wasm Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ информация ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ»ΠΈ ΠΎΡ‚ основната срСда.
  • Π˜Π·Π²ΡŠΡ€ΡˆΠ΅Π½Π° Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π° оптимизация Π½Π° производитСлността. Бкоростта Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° LLVM runtime с ΠΏΠ»Π°Π²Π°Ρ‰ΠΈ числа Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° с ΠΎΠΊΠΎΠ»ΠΎ 50%. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅ ускорСно ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Ρ€Π΅Π· намаляванС Π½Π° случаитС, Π½Π°Π»Π°Π³Π°Ρ‰ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ към ядрото. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° ΠΊΠΎΠ΄ Cranelift Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° с 40%. НамалСно Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° дСсСриализация Π½Π° Π΄Π°Π½Π½ΠΈ.
    ДоступСн Wasmer 2.0, инструмСнтарий для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ WebAssembly
    ДоступСн Wasmer 2.0, инструмСнтарий для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ WebAssembly
  • Π‘ Ρ†Π΅Π» ΠΏΠΎ-Ρ‚ΠΎΡ‡Π½ΠΎ отразяванС Π½Π° ΡΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π°, ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° Π΄Π²ΠΈΠΆΠ΅Ρ‰ΠΈΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ са ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ: JIT β†’ Universal, Native β†’ Dylib (Π”ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°), Object File β†’ StaticLib (Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster