Design: ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ синтаксис Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… хостов wasm.

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 19 июн. 2019  Β·  25ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: WebAssembly/design

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ синтаксис ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для инструкций ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² Ρ€ΠΎΠ΄Π½Ρ‹Ρ… хостах wasm (поэтому ΠΏΠΎΠΊΠ° Π² основном WASI ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, node.js).

ОбоснованиС

МодСль, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я ΡΡ‚Ρ€Π΅ΠΌΠ»ΡŽΡΡŒ, β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ @lukewagner Π½Π°Π·Π²Π°Π» связываниСм Π±Π΅Π· ΠΎΠ±Ρ‰Π΅Π³ΠΎ доступа; ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π±ΡƒΠ΄Ρƒ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ Π² этом ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Π’ этой ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ wasm ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ экосистСму ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ npm; ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ΅Π½ со своими собствСнными зависимостями ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ зависит ΠΎΡ‚ глобально установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ модСль, выбранная snapcraft ΠΈ flatpack; Π΅Π³ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ прСимущСство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ каТдая установка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² этой ΠΌΠΎΠ΄Π΅Π»ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ для избСТания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π°Π΄ΠΎΠΌ зависимостСй.

(ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ, Π°Π΄ зависимостСй уТасСн; удобство систСмы ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΌΡΠ³Ρ‡ΠΈΡ‚ΡŒ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, нСльзя Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ)

Wasm-вСрсия этой ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ бСзопасной Π΄Π°ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Π»ΠΈΡ†ΠΎΠΌ врСдоносного ΠΊΠΎΠ΄Π°, ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «нСнадСТная композиция». БобствСнная систСма Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ основной ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ возмоТностСй ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ явно ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ этому ΠΊΠΎΠ΄Ρƒ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, суб-суб-суб-субзависимости Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ возмоТности ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ /usr/bin/someprogram.wasm , Π΄Π°ΠΆΠ΅ Ссли Ρƒ хоста Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π½Π° этот Ρ„Π°ΠΉΠ».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ модуля wasm нСпосрСдствСнно ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ модуля wasm Π² настоящСС врСмя практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ . БовмСстноС использованиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ wasm Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ написания ΡΠ²ΡΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π²ΠΎ встроСнном JS-ΠΌΠΎΠ΄ΡƒΠ»Π΅. Π•ΡΡ‚ΡŒ готовящССся ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ esm , Π½ΠΎ:

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для встраивания JS ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ прСдполоТСния, основанныС Π½Π° срСдС ES.

  • Π’ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡƒΡ‚ΠΈ; прСдполагая, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ node.js Π½Π΅ совсСм соотвСтствуСт Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ «нСнадСТности» wasm.

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, wasm нуТдаСтся Π² стандартном, бСзопасном, Π½Π΅-JS ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π₯отя этот стандарт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ WASI, WASI ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅

На этапС создания экзСмпляра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, WebAssembly.instantiate , wasm_instance_new ΠΈ wasm::Instance::make ) компилятор WebAssembly ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ΠšΠΎΡ€Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Ρ„Π°ΠΉΠ» .wasm . ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° зависит ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ строки ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° компилятор примСняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

  • Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ являСтся допустимым ΠΏΡƒΡ‚Π΅ΠΌ URI (ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ схСмой).
  • Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ являСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π½Π΅ содСрТит сСгмСнтов . ΠΈΠ»ΠΈ .. .
  • Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСгмСнт ΠΈΠΌΠ΅Π΅Ρ‚ прСфикс @ , ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ с ΠΏΡƒΡ‚Π΅ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠ°Ρ€Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° хоста.
  • Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСгмСнт ΠΈΠΌΠ΅Π΅Ρ‚ прСфикс $ , ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΈ всС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΎ корня ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² wasi_import_map.json ; Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°Ρ€Ρ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ запись, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ сСгмСнту.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ хоста ( @ )

Π­Ρ‚ΠΎΡ‚ синтаксис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ хоста, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, @wasi/fs ΠΈΠ»ΠΈ @stdjs/global/Array .

Π•Π³ΠΎ прСимущСство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ соглашСниям ΠΎΠ± ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ JS (ΠΏΠΎΠΊΠ° Β«wasiΒ» ΠΈ Β«stdjsΒ» Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ NPM).

БопоставлСнный ΠΈΠΌΠΏΠΎΡ€Ρ‚ ( $ )

Π­Ρ‚ΠΎΡ‚ синтаксис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° бСзопасным для OCAP способом.

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ» .wasm ΠΈΠΌΠ΅Π΅Ρ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π² своСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ; ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» wasi_import_map.json , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ…ΡƒΠΊΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»Ρ‹ .wasm Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ….

НапримСр:

myWasmModule/
    index.wasm
    foo/
        wasi_import_map.json
        foo.wasm
        foobar/
            foobar.wasm
    bar/
        bar.wasm

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

  • index.wasm ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ foo.wasm , foobar.wasm ΠΈ bar.wasm .
  • foo.wasm ΠΈ bar.wasm Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° ΠΈΠ»ΠΈ index.wasm .
  • foobar.wasm ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ foo.wasm , Ссли foo/wasi_import_map.json ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ ΠΊ этому ΠΏΡƒΡ‚ΠΈ.
  • foo/wasi_import_map.json Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ foo.wasm ΠΈΠ»ΠΈ foobar.wasm доступ ΠΊ index.wasm ΠΈΠ»ΠΈ bar.wasm .

БопоставлСниС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования:

  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ диспСтчСру ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ зависимостСй для сокращСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции ΠΈ увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° кСша ΠΊΠΎΠ΄Π°.

  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Ρ‹.

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… ΠΈ выпускных сборок.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° WICG?

МоТно привСсти Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ WICG ΠΏΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρƒ ΠΊΠ°Ρ€Ρ‚ (ΠΎΡ‚Π½Ρ‹Π½Π΅ WIM), ΠΈ Ρ‡Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ особых случаСв для $ ΠΈ @ являСтся излишнСй ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ.

НСкоторыС ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΏΡƒΠ½ΠΊΡ‚Ρ‹:

  • WIM Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ‡Π΅ΠΌ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° WASI. WIM основан Π½Π° Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎ статичСскому адрСсу, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, бСзопасСн ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. ВмСсто этого это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ опираСтся Π½Π° модСль бСзопасности OCAP.

  • НаличиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ синтаксиса для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° хоста ΠΈ сопоставлСнного ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΈ инструмСнтам ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎ своих намСрСниях; это Ρ‚Π°ΠΊΠΆΠ΅ поощряСт Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ….

Π’Π΅Π±-Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для собствСнных ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² wasm. Π’ΠΎ, ΠΊΠ°ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ инструкции ΠΏΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρƒ, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ зависит ΠΎΡ‚ этого прСдлоТСния.

Однако, Ссли экосистСма ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎΠΊΡ€ΡƒΠ³ этой структуры ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, сборщики, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Webpack ΠΈ Rollup, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ этой структуры, ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ сСйчас Π΄Π΅Π»Π°ΡŽΡ‚ с npm.


Π’ΠΎ всяком случаС, это ΠΌΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π»ΡŽΠ±Ρ‹Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ :)

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Ρ‚ΠΎΠΆΠ΅ чувствовал ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, я Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π±Π΅Π· ввСдСния ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²ΠΎΠΉ, топологичСски «большой» ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ (которая содСрТит нСсколько ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ), Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Β«ΠΏΠ°ΠΊΠ΅Ρ‚Β» (Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΊΠΎΠ΄Π° Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ npm) ΠΈΠ»ΠΈ Β«ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Β». " (Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΊΠΎΠ΄Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ срСдой выполнСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сущСствуСт какая-Ρ‚ΠΎ внСшняя файловая систСма, ΠΎ путях ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ концСпция Β«ΠΏΠ°ΠΊΠ΅Ρ‚Π°Β» ΠΈΠ»ΠΈ Β«ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Β» (ΠΈ Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, ΠΈΠΌΠ΅Π΅Ρ‚ смысл для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°Π· развСртывания), Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π― Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽ Ρ†Π΅Π»ΡŒ @littledan : всС, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ Π²Π½Π΅ срСды JS/ESM. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ wasm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² Node, Ρ‚Π°ΠΊ ΠΈ Π²Π½Π΅ Π΅Π³ΠΎ.

ВсС 25 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Ρ‡Ρ‚ΠΎ, Ссли вмСсто ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ синтаксиса ΠΌΡ‹ просто Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ wasi примСняли ΠΏΡ€Π°Π²ΠΈΠ»Π° возмоТностСй стиля libpreload для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°? Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ a.wasm ΠΈ b.wasm , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ . ΠΈΠ»ΠΈ ./b.wasm Π² своСм манифСстС васи, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· a.wasm

это сдСлало Π±Ρ‹ wasi Π±ΠΎΠ»Π΅Π΅ совмСстимым с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ случайными систСмами, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присоСдинСн, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΈ node.

МнС нравится ΠΎΠ±Ρ‰Π΅Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ этого прСдлоТСния. ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ каТСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ. МнС Ρ‚Π°ΠΊΠΆΠ΅ нравится, Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ довольно Π»Π΅Π³ΠΊΠΎΠ΅. Однако ΠΏΠ°Ρ€Π° мыслСй.

  • Π’Π°ΡˆΠ΅ описаниС ΠΊΠ°Ρ€Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ΅. ЯвляСтся Π»ΠΈ идСя, Ρ‡Ρ‚ΠΎ запись ΠΊΠ°Ρ€Ρ‚Ρ‹ a: b/c ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ b/c ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ $a ? Если это Ρ‚Π°ΠΊ, я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, ΠΊΠ°ΠΊ это позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ имя (ΠΏΠ΅Ρ€Π΅)сопоставляСтся. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ прСфикс $ ?

  • Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Π½Π΅Ρ€Π΅, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ «экспортируСт» Π½Π°Ρ€ΡƒΠΆΡƒ , Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΈΠ΅ Β«ΠΊΠ°Ρ€Ρ‚Ρ‹ экспорта» Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΊ ΠΊΠ°Ρ€Ρ‚Π°ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ срСды, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΡŒ . Если ΡƒΠΊΠ°Π·Π°Π½Π° ΠΊΠ°Ρ€Ρ‚Π° экспорта, доступ ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°/экспорта Π² ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ пСрСчислСнным Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ»Π°ΠΌ/путям.

  • Π― ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн с использованиСм стандартных ссылок URI Π² качСствС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° имСнования. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, прСфиксы @ ΠΈΠ»ΠΈ $ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ понятиСм ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ссылки ( @a/b являСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ссылкой Π² ​​тСрминах URI, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ сСмантика, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½Π° присваиваСт здСсь, ΠΎΡ‡Π΅Π½ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° ссылки).

  • Bikeshedding: ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·Ρ‹ ΠΎΡ‚ использования JSON для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΊΠ°Ρ€Ρ‚? Как Π²Ρ‹ ΠΈΡ… описываСтС, ΠΎΠ½ΠΈ просто состоят ΠΈΠ· списка ΠΏΠ°Ρ€ ΠΏΡƒΡ‚Π΅ΠΉ, поэтому слоТный ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ JSON, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ излишним для этого.

Если это Ρ‚Π°ΠΊ, я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, ΠΊΠ°ΠΊ это позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π― Π΄ΡƒΠΌΠ°Π» ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ зависимостСй, ΠΊΠΎΠ³Π΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Π΄Π²Π° модуля Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ экзСмпляр Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ $react ΠΈ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для обСспСчСния сопоставлСния.

Π₯отя, Ссли ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° Ρ„Π°ΠΉΠ»Π°/модуля ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ»/ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π”ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… экзСмпляра ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ экзСмпляр? Оба ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈΠΌΠ΅ΡŽΡ‚ свои Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования.

Π― Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² wasm_import_map для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, выпуска, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов ΠΈ Ρ‚. Π΄., Π½ΠΎ это каТСтся ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ возмоТностСй. Wasm Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Cmake.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ прСфикс $?

Π­Ρ‚ΠΎ позволяСт Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ быстрСС Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Cannot find host module "@foobar"

ΠΏΡ€ΠΎΡ‚ΠΈΠ²

Cannot find file "some/path/foobar.wasm"

ΠΏΡ€ΠΎΡ‚ΠΈΠ²

Key "$foobar" not found in imports maps:
- "some/path/wasm_import_map.json"
- "some/wasm_import_map.json"

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ прСфиксов ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΠ΅ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, Π»ΠΈΠ±ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ вСроятно, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ расплывчатыС ошибки ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, ΠΊΠ°ΠΊ ΠΈ компиляторы C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ говорят «НС удаСтся Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ foobarΒ» ΠΈ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ вас Π³Π°Π΄Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Π½Π΅Ρ€Π΅, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ «экспортируСт» Π½Π°Ρ€ΡƒΠΆΡƒ, Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅.

Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ экспортныС ΠΊΠ°Ρ€Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹ Ρ‚Π°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. ΠœΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, скаТСм, ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ «привязки» ΠΈ «сСтСвой» ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ просто ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ bindings.wasm ΠΈ network.wasm Π² ΠΊΠΎΡ€Π½Π΅.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ограничСния ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для бСзопасности Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π½ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ (ΠΈ практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Много Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·Ρ‹ ΠΎΡ‚ использования JSON для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΊΠ°Ρ€Ρ‚?

НС совсСм. Π― Ρ‚ΠΎΠΆΠ΅ Π΄ΡƒΠΌΠ°Π» ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠ±Π°Ρ„Ρ„Π΅, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ любой Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π― Π΄ΡƒΠΌΠ°Π» ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ зависимостСй, Π³Π΄Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Π΄Π²Π° модуля Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ экзСмпляр Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ $Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для обСспСчСния сопоставлСния.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· $ Ρ‡Π΅Ρ€Π΅Π· соглашСниС ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ…, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ нСобходимости Π·Π°ΠΏΠ΅ΠΊΠ°Ρ‚ΡŒ это ΠΊΠ°ΠΊ синтаксичСскоС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (ΠΎΠ½Π° ΠΆΠ΅ Β«Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй», ΠΊΠ°ΠΊ Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сбитыС с Ρ‚ΠΎΠ»ΠΊΡƒ Π΄ΡƒΡˆΠΈ :)). Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ для шимминга Π²Π°ΠΌ понадобится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ систСмныС (Ρ‚. Π΅. ΠΈΠΌΠ΅Π½Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с @ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ описываСтС).

БообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… каТутся Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Ρ‡Ρ‚ΠΎ систСма, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ описываСтС, достаточно проста, Ρ‚.Π΅. имя ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² любом ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚Π΅ Π² Π½Π΅ΠΌ.

Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ экспортныС ΠΊΠ°Ρ€Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹ Ρ‚Π°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. ΠœΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, скаТСм, ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Β«bindingsΒ» ΠΈ Β«networkΒ», ΠΌΠΎΠΆΠ΅Ρ‚ просто ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ bindings.wasm ΠΈ network.wasm Π² ΠΊΠΎΡ€Π½Π΅.

ΠŸΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π»ΠΈ это ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ сопоставлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…?

БообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… каТутся Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

Ну Π΄Π°, ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ стоят #include , ΠΈ всС ΠΆΠ΅ устранСниС Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ с Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π° ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ слоТным.

Π’ любом случаС, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ своС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ создаСт яму успСха для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдвусмыслСнно Π·Π½Π°ΡŽΡ‚, Ρ‡Π΅Π³ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ; ΠΈ это позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ инструмСнтов.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ для шимминга Π²Π°ΠΌ понадобится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ систСмныС (Ρ‚. Π΅. ΠΈΠΌΠ΅Π½Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с @ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ описываСтС).

Π§Ρ‚ΠΎ касаСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, я ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ написал ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ. Если Π²Ρ‹ сдСлаСтС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ маскировку любого ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ это ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° WICG, Π²Ρ‹ сдСлаСтС Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ, ΠΌΠ΅Π½Π΅Π΅ KISS, ΠΈ Π²Ρ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ для сСбя мноТСство ошибок / эксплойтов скрытия ΠΈΠΌΠ΅Π½.

(это Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠ°Ρ€Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° WICG; ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ сказал, ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования)

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ внСдрСния зависимостСй достаточно для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв использования шимминга, Π° для Π±ΠΎΠ»Π΅Π΅ навязчивого шимминга Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт Β«Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽΒ» для Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΎΠ΄Π½ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ.

Π§Ρ‚ΠΎ касаСтся систСмных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, я Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΠΈΡ… ΡˆΠΈΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ API WebAssembly.instantiate , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ использования Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты.

Бинтаксис всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ с $ , Π½ΠΎ ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π΅ΡΡ‚ΡŒ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ намСрСния.

(Ρ‚Π°ΠΊΠΆΠ΅, Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС, ΠΌΡ‹ отказываСмся ΠΎΡ‚ @ ΠΈ $ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈΡ… Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ соглашСниСм ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ…; противополоТная прогрСссия Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ)

ΠŸΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π»ΠΈ это ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ сопоставлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…?

НСт, Π½ΠΎ я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π§Ρ‚ΠΎ касаСтся пСрСопрСдСлСния намСрСния Π°Π²Ρ‚ΠΎΡ€Π° модуля, Ρ‚ΠΎ это ΠΏΡ€Π΅Ρ€ΠΎΠ³Π°Ρ‚ΠΈΠ²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ модуля. Если ΠΎΠ½ΠΈ хотят Π·Π°ΠΊΠΎΠΏΠ°Ρ‚ΡŒ внутрСнности модуля, ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ это Π½Π° свой страх ΠΈ риск, ΠΈ Π² любом случаС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Ρ€Π°Π·Π²Π΅Ρ‚Π²ΠΈΠ² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Π§Ρ‚ΠΎ касаСтся бСзопасности пСсочницы, я Π΄ΡƒΠΌΠ°ΡŽ, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ссли врСдоносный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ внСшний ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вмСсто ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° /usr/bin/game_engine/save_progress врСдоносный ΠΊΠΎΠ΄ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ /usr/bin/game_engine/save_progress/unsafe_filesystem_functions ).

Однако, вСроятно, Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ для этого, ΠΈ я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π°Ρ‚Π°ΠΊΠΈ.

Но я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ссли я ΡΡ‚Ρ€Π΅ΠΌΠ»ΡŽΡΡŒ ΠΊ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ «яма успСха» ΠΈ «бСзопасная пСсочница», Ρ‡Ρ‚ΠΎ являСтся своСго Ρ€ΠΎΠ΄Π° Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ зрСния ocap ΠΈ WASI, ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.

имя ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² любом ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈΠ»ΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ Π² Π½Π΅ΠΌ.

ΠšΠ°Ρ€Ρ‚Π° Ρ‚Π°ΠΌ Π΄Π°, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ Π½Π΅Ρ‚.

Доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ пСсочницу ΠΈ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½.

Π€Π°ΠΉΠ» .wasm ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ:

  • .wasm Ρ„Π°ΠΉΠ»Ρ‹ Π² своСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅
  • .wasm Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…
  • wasm_import_map.json Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ корня ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°

Π‘Π°ΠΌΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ wasm Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρ‹ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ своС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅.

Π― ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн, Π½ΠΎ Π² этом случаС каТСтся, Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ допустимыС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, связанныС с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ.

Π§Ρ‚ΠΎ касаСтся пСрСопрСдСлСния намСрСния Π°Π²Ρ‚ΠΎΡ€Π° модуля, Ρ‚ΠΎ это ΠΏΡ€Π΅Ρ€ΠΎΠ³Π°Ρ‚ΠΈΠ²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ модуля. Если ΠΎΠ½ΠΈ хотят Π·Π°ΠΊΠΎΠΏΠ°Ρ‚ΡŒ внутрСнности модуля, ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ это Π½Π° свой страх ΠΈ риск.

Ага... Π― ΡƒΠΆΠ΅ ΡΠ»Ρ‹ΡˆΠ°Π» этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ;). К соТалСнию, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ тСория ΠΈΠ³Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ½Π°Ρ‡Π΅. Если Π½Π΅Ρ‚ возмоТности явно Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈ (Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ стСпСни) ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ намСрСния, Ρ‚ΠΎ ΠΊΡ‚ΠΎ- Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ Π΅Π³ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ остановит. И для этого достаточно ΠΎΠ΄Π½ΠΎΠ³ΠΎ популярного ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΈ Π²Π΄Ρ€ΡƒΠ³ Π°Π²Ρ‚ΠΎΡ€ модуля ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вся Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π»Π΅ΠΆΠΈΡ‚ Π½Π° Π½ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ API ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ вСсь огонь ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π΅/Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π°Ρ€ΡƒΡˆΠΈΠ»ΠΎ ΠΈΡ… ΠΊΠΎΠ΄. Π‘Ρ‹Π» Ρ‚Π°ΠΌ, сдСлал это; это ситуация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ€ΠΎΡˆΠΎ спроСктированная систСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ.

ДвойствСнноС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° β€” это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ экспорта. ΠœΠΎΠ΄ΡƒΠ»ΠΈ Wasm Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Π°, Ρ‚ΠΎ ΠΆΠ΅ самоС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Π΅Ρ€Π½ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅.

Доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ пСсочницу ΠΈ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½.

Π’Π΅Ρ€Π½ΠΎ, я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, "ΠΈΠ»ΠΈ" Π±Ρ‹Π»ΠΎ Π½Π΅Π±Ρ€Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ.

Π‘Ρ‹Π» Ρ‚Π°ΠΌ, сдСлал это; это ситуация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ€ΠΎΡˆΠΎ спроСктированная систСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ.

Π‘ΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ.

Π― ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн, Π½ΠΎ Π² этом случаС каТСтся, Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ допустимыС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, связанныС с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ ясно, ваша основная ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ° Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… прСфиксов:

  • Π§Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ общая систСма?
  • Или Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой конструктивноС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌ использования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ?

Π£ мСня Π½Π΅Ρ‚ ощущСния, Ρ‡Ρ‚ΠΎ это послСднСС, Π½ΠΎ Ссли это Ρ‚Π°ΠΊ, я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ, Π½Π΅ являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования.

Если ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ вас ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я ΠΌΠΎΠ³ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅? ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ экосистСмы ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² wasm, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½, Π΅Ρ‰Π΅ Π½Π΅ сущСствуСт, Π½ΠΎ Π΄Π°ΠΆΠ΅ расплывчатый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования Β«Ρƒ нас Π΅ΡΡ‚ΡŒ X Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Y, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ZΒ» ΠΌΠΎΠ³ Π±Ρ‹ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ ясно, ΠΌΠΎΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ прСфиксов:

  • НСдвусмыслСнно сообщайтС ΠΎ намСрСниях ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ‚Π΅Π½Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Ρ€Ρ‹Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ streams.wasm , Π° ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ stream Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.
  • Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ синтаксис для систСмных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½Π΅ бСспокоясь ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² .

МнС Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ WASM/WASI Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Моя пСрвая ΠΌΡ‹ΡΠ»ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах нСзависимо ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмы. Π’ΠΎ, ΠΊΠ°ΠΊ wasmtime Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ связываСт ΠΌΠΎΠ΄ΡƒΠ»ΠΈ WASM, сильно отличаСтся ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ node Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ связываСт ΠΌΠΎΠ΄ΡƒΠ»ΠΈ WASM, Π½ΠΎ Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΎΠ½ΠΈ ΠΎΠ±Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ «просто Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΒ».

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Π±-срСдой ΠΈ Π½Π΅-Π²Π΅Π±-срСдой.

НапримСр, для повСрхностных Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ: хотя я выступал Π·Π° @namespace/modulename , ΡΠ΅Ρ‚ΡŒ, каТСтся, двиТСтся ΠΊ namespace:modulename для встроСнных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ каТСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ, ΠΈ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅-Π²Π΅Π±-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

Π’ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Wasm/ESM Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JS-связку, Π½ΠΎ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это для кодирования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ смысл Π²Π½Π΅ JS, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Ρƒ вас Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Wasm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ цикличСски ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ экспорты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° ( с ошибкой Π²ΠΎ врСмя инстанцирования). Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΌΡ‹ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ESM, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ эту ΠΌΠ΅ΠΆΡΡ€Π΅Π΄ΠΎΠ²ΡƒΡŽ сСмантику Π±ΠΎΠ»Π΅Π΅ понятной.

Бпособ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ wasmtime Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ связываСт ΠΌΠΎΠ΄ΡƒΠ»ΠΈ WASM

Π― ΠΏΠΎΡ‡Ρ‚ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ wasmtime Π² настоящСС врСмя Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ связываСт ΠΌΠΎΠ΄ΡƒΠ»ΠΈ WASM. Π­Ρ‚ΠΎ Π½Π΅ задокумСнтированная функция, эмпиричСски ΠΎΠ½Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΌΠΎΠΈΡ… тСстах, ΠΈ, глядя Π½Π° источник, интСрфСйс Resolver Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Namespace (Ρ‡Ρ‚ΠΎ соотвСтствуСт wasi_unstable ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ТСстко Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°) ΠΈ NullResolver .

Моя пСрвая ΠΌΡ‹ΡΠ»ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах нСзависимо ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмы.

Но это Π½Π΅ совсСм Ρ‚ΠΎ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. ВысказываниС Β«Π£ нас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ стандарты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ³ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго соотвСтствуСт Π΅Π³ΠΎ потрСбностям» часто прСвращаСтся Π² «БущСствуСт дюТина ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΉ/Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… стандартов, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π΅ адрСсован ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΌΡƒ пространству, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструмСнтов ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 ΠΈΠ»ΠΈ 3 ΠΈΠ· Π½ΠΈΡ…Β». ΠΈΡ…".

Π₯отя я выступал Π·Π° использованиС @namespace/modulename, Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, ΠΏΠΎΡ…ΠΎΠΆΠ΅, двиТСтся ΠΊ namespace:modulename для встроСнных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ,

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ. Помимо синтаксиса, мСня большС интСрСсуСт идСя Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Ρ†ΠΈΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° хоста.

Π’ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Wasm/ESM Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JS-связку, Π½ΠΎ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это для кодирования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ смысл Π²Π½Π΅ JS, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Ρƒ вас Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Wasm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ цикличСски ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ экспорты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° ( с ошибкой Π²ΠΎ врСмя инстанцирования).

Π”Π°, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Ρ‚Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π³Π΄Π΅ этого прСдлоТСния большС всСго Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. МнС Π½ΡƒΠΆΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ сСмантику связывания ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ esm-integration, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ указания ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ синтаксис ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ (хотя Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» ocap ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ β€” это ΠΊΡ€ΡƒΡ‚ΠΎ). систСма, ΠΆΠ΅Π»Π°ΡŽΡ‰Π°Ρ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ wasm, ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ синтаксис ΠΈ систСму Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ с нашими. ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСния ΠΎ путях ΠΈ Ρ„Π°ΠΉΠ»Π°Ρ….

Π£ мСня Π½Π΅Ρ‚ простого Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования. Однако ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ссылок Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ фиксированному извСстному ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΌΡƒΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ фактичСски ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ модуля. (Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ сам Васм ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСднСС.)

Π‘ этой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΌΠ½Π΅ Π½Π΅ совсСм понятно, Ρ‡Ρ‚ΠΎ добавляСт Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²ΠΈΠ΄. Π― Π²ΠΈΠΆΡƒ, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ настраиваСмый ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ налоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠ°. Но это ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ±Π΅ синтаксичСскиС Ρ„ΠΎΡ€ΠΌΡ‹. OTOH, Ссли ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Ρ‚ΠΎ Ρ‡Π΅ΠΌ ΠΎΠ½ сСмантичСски отличаСтся ΠΎΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚. Π΅. Π² Ρ‡Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ глубокая Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ @ ΠΈ $ , ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ТСстко Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это Ρ€Π°Π·Π½ΠΈΡ†Π°?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ достаточно соглашСний ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ….

Π₯ΠΎΡ€ΠΎΡˆΠΎ, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Π»ΡƒΡ‡ΡˆΠ΅ понимаю ваш вопрос.

Π² Ρ‡Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ глубокая Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ @ ΠΈ $ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ€Π°Π·Π½ΠΈΡ†Ρƒ?

Π― ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π» Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, Π½ΠΎ ΠΏΠΎΠΊΠ° я Π΅Π³ΠΎ ΠΏΠΈΡˆΡƒ, я сам Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ ΡΠΎΠΌΠ½Π΅Π²Π°Ρ‚ΡŒΡΡ Π² полСзности этой Ρ€Π°Π·Π½ΠΈΡ†Ρ‹.

Π― полагаю, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ссылки ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ для бСзопасности пСсочницы, Π½ΠΎ Π½Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для создания ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ссылок Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ... Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ?

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я Π΄ΡƒΠΌΠ°Π», Π±Ρ‹Π»ΠΈ Π² основном ΡˆΠΈΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ сборками (ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈΠ»ΠΈ выпуск), Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΡ… Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠ΅ΠΊΠ°Ρ‚ΡŒ Π² систСмС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π― ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ стандартныС ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ случайно Π½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π·Π°Ρ‚Π΅Π½Π΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° большС ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.


Π’ любом случаС, Ссли ΠΌΡ‹ откаТСмся ΠΎΡ‚ синтаксиса $ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠ°Ρ€Ρ‚Ρ‹, ΠΊΠ°ΠΊ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, стоит Π»ΠΈ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ прСдлоТСния?

ИзмСнСнноС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π² API создания экзСмпляров ( WebAssembly.instantiate , wasm_instance_new , wasm::Instance::make )

  • Π’ ΡΠΎΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡΡ… инструмСнтов Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ для Π°Π½Π°Π»ΠΈΠ·Π° строк ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΊΠ°ΠΊ URI с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ пСсочницы, описанными Π²Ρ‹ΡˆΠ΅.

    • Π’Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ синтаксис ( @foo/bar ΠΈΠ»ΠΈ foo:bar ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ остановился W3C) для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° хоста.

ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°/экспорта/схСмы шимминга ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅.

Π― Ρ‚ΠΎΠΆΠ΅ чувствовал ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, я Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π±Π΅Π· ввСдСния ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²ΠΎΠΉ, топологичСски «большой» ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ (которая содСрТит нСсколько ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ), Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Β«ΠΏΠ°ΠΊΠ΅Ρ‚Β» (Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΊΠΎΠ΄Π° Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ npm) ΠΈΠ»ΠΈ Β«ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Β». " (Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΊΠΎΠ΄Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ срСдой выполнСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сущСствуСт какая-Ρ‚ΠΎ внСшняя файловая систСма, ΠΎ путях ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ концСпция Β«ΠΏΠ°ΠΊΠ΅Ρ‚Π°Β» ΠΈΠ»ΠΈ Β«ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Β» (ΠΈ Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, ΠΈΠΌΠ΅Π΅Ρ‚ смысл для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°Π· развСртывания), Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π― Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽ Ρ†Π΅Π»ΡŒ @littledan : всС, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ Π²Π½Π΅ срСды JS/ESM. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ wasm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² Node, Ρ‚Π°ΠΊ ΠΈ Π²Π½Π΅ Π΅Π³ΠΎ.

Π― Ρ€Π°Π·Π΄Π΅Π»ΡΡŽ сильноС чувство, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ эти прСдлоТСния, прСдвосхищая ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² цСлостной ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. ΠœΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΡΠ΅Ρ‚ΡŒ, Π½ΠΎ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ module sandbox Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ связано с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ WebIDL ΠΎΡ‚ @lukewagner ΠΈ @jgravelle-google, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ESM ΠΎΡ‚ @littledan ΠΈ @linclark ΠΈ стандартом WASI @sunfishcode @tschneidereit.

Π― Π²ΠΈΠΆΡƒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» связывания ΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ модулями Webassembly Π² возмоТности:

  • ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, написанныС Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования, Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивным способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ сСриализации ΠΈΠ»ΠΈ IPC.
  • содСрТат уязвимости бСзопасности Π² Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… модулях (случайныС, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ»ΠΈ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Π΅) с ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ срСдой модуля с Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, прилоТСниями) Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ (ΠΈΠ»ΠΈ, Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… WASI, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ возмоТностями), примСняСмыми ΠΈΠ·Π²Π½Π΅ модуля с интСрфСйсом модуля Π² качСствС шлюза бСзопасности
  • ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экосистСму ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· нСобходимости ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² собствСнный исполняСмый Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎ обСспСчиваСт простоту использования npm install для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ wasm с ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ компромиссом ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСбольшиС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π²Π΅Π±-сборки вмСсто большого ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ³ΠΎ Β«ΠΏΠ°ΠΊΠ΅Ρ‚Π°Β» (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ npm с tink, entropic ΠΈ yarn, двиТутся Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ/ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° основС Ρ„Π°ΠΉΠ»ΠΎΠ² с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ экзСмпляром singleton вмСсто ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ†Π΅Π»Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².Π’Π°ΠΊΠΆΠ΅ сборщики, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ webpack, ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ связывания с http2.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ module sandbox Webassembly, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ модуля ΠΎΡ‚ внСшнСго, являСтся Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» для ввСдСния шлюзов бСзопасности ΠΏΡ€ΠΈ использовании стороннСго ΠΊΠΎΠ΄Π° с уязвимостями бСзопасности, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ»ΠΈ врСдоносныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ остался Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌ Π΄Π°ΠΆΠ΅ Π² сообщСствС с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ заявлСниями ΠΎΠ± ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ со стороны ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Ρ… экспСртов Π² сообщСствС.

МСня бСспокоит Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Π½Π΅ повысим ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΠ± этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСсочницы модуля ΠΈ Π½Π΅ скоординируСм эти ΠΌΠ΅ΠΆΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ прСдлоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ свСт, ΠΈ, ΠΏΠΎ сути, ΠΌΡ‹ вСрнСмся ΠΊ процСссу. пСсочницы. Π― знаю, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ· ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ срСды модуля, Π½ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ½Π° доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΡƒΡ‰Π΅Ρ€Π±, Ссли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° jpg, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² тысячах ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, скомпромСтирован, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ Π΄ΠΎΠΌΠΎΠΉ сразу ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свой ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Ссли Π΅Π³ΠΎ интСрфСйс ΠΈΠΌΠ΅Π΅Ρ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π±ΡƒΡ„Π΅Ρ€Π°ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π½Π΅ ΠΊ сСтСвым API.

Если всС сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Webassembly ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ бСзопасной для Π΄Π΅Ρ‚Π΅ΠΉ (r) ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ экосистСмы plug-and-play, которая ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΡΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ эпидСмичСских ΠΈ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, администрированиС. усилия (ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹) ΠΈ короткая ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΠ΄Π°.

Π― Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, основанный Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ°ΠΏΠΊΠ° с Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ index.js, ΠΊΠ°ΠΊ Π² модулях ES, оказалась ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ СстСствСнной ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ модуля Π½Π°Π΄ ΠΎΠ΄Π½ΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ. это ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ позволяСт эффСктивно ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, сохраняя ΠΏΡ€ΠΈ этом Ρ„Π°ΠΉΠ»Ρ‹ Π² зависимости Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Однако я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ своСго собствСнного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Ρ‚Π°ΠΌ потрСбуСтся глобальная ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ссылка, такая ΠΊΠ°ΠΊ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° npm, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ провСряСтся хостом.

Π•ΡΡ‚ΡŒ мысли ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ?

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ пСсочницы всСго модуля β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Однако я Π±Ρ‹ Π½Π΅ стал ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π°Ρ…, ΠΊΠ°ΠΊ происхоТдСниС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΈ большС Π½Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ модулями. НапримСр, Π΄Π°ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм (Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, Π½Π΅ всС ΠΈΠ· Π½ΠΈΡ… Π΄Π°ΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ понятиС ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΡΡ…) ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ разногласия ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΏΡ€Π°Π²ΠΈΠ» этих систСм возмоТностСй (восходящий ΠΎΠ±Ρ…ΠΎΠ΄, нисходящий ΠΎΠ±Ρ…ΠΎΠ΄, ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, символичСскиС ссылки, ΠΈ Ρ‚.Π΄). API JS WebAssembly Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ понятия ΠΎ мСстС хранСния wasm, это просто ΠΊΠ°ΠΏΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠ΅ Π²ΠΎΠΊΡ€ΡƒΠ³ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

@devsnek ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн, Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ абстракция, Π½Π΅ зависящая ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π° Π±ΠΎΠ»Π΅Π΅ общая ΠΈ бСзопасная концСпция иСрархичСского Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

иСрархичСскоС сдСрТиваниС

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ иСрархичСским Π² смыслС Π΄Π΅Ρ€Π΅Π²Π° Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΡƒΠ·Π»ΠΎΠ²? Или Π²Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρƒ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ (Ρ‚.Π΅. "Π΄Π΅Ρ€Π΅Π²ΠΎ с пСтлями")? Π‘Ρ‹Π²Π°ΡŽΡ‚ ситуации (Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠΆ ΠΈ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅), ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½Π° "нСцикличСская Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, замаскированная ΠΏΠΎΠ΄ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ" - Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ A модуля M1 ΠΎΡ‚ a B модуля M2 ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ C ΠΎΡ‚ M2 Π½Π° D Π² M1 , Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½Π΅Ρ‚ (простого/ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ/встроСнного/Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ) способа ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ запрос Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ это Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… зависимостСй Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (Π΄Π΅Ρ€Π΅Π²ΠΎ с Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈΡΡ ΡƒΠ·Π»Π°ΠΌΠΈ) сдСлало Π±Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ излишнС услоТнило Π±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Ρ‚. Π΄.

@dumblob Для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π²Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π°:

Однако я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ своСго собствСнного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Ρ‚Π°ΠΌ потрСбуСтся глобальная ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ссылка, такая ΠΊΠ°ΠΊ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° npm, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ провСряСтся хостом.

Π― Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ рСкурсивныС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎ-Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ хост, прСдоставляСт Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ своим Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ элСмСнтам. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ‚ своСго родитСля. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π΅, Π½ΠΎ доступСн для родитСля. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя своСму Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Wasm jpg-decoder зависит ΠΎΡ‚ модуля Wasm simd-math . jpg-decoder ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ [email protected]/simd-math@^1.3.4 , ΠΈ запросит доступ ΠΊ Π½Π΅ΠΌΡƒ Ρƒ своСго родитСля. Если Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ этому ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ считаСт Π΅Π³ΠΎ «бСзопасным для Π΄Π΅Ρ‚Π΅ΠΉΒ», доступ прСдоставляСтся, ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ simd-math пСрСдаСтся jpg-decoder .

Re: файловая систСма

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ стСк Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Π£ вас Π΅ΡΡ‚ΡŒ:

  • Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ .wasm,
  • API WebAssembly (C/C++/JS),
  • Π₯ост WebAssembly (рукописный JS, Webpack, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ WASI),
  • ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ хоста (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ файловая систСма),
  • ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² wasm,
  • Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²,
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, строго говоря, Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ wasm ΠΈ API-интСрфСйсы создания экзСмпляров Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму. Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандартный синтаксис ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Π° API Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ URI ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. НапримСр:

WebAssembly.instantiateStreaming(
    fetch('someFile.wasm'),
    {
        // ...
        resolveImport: (parsedURI) => { ... }
    }
);

Если ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ API, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‚ΠΎ тСорСтичСски хосты ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ хотят; ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Π½Π΅ относящСгося ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, интСрпрСтируя URI ΠΊΠ°ΠΊ запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… SQL.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ всСм Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ созданный сообщСством ΠΊΠΎΠ΄, всС Ρ€Π°Π²Π½ΠΎ придСтся Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эту Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… созданными сообщСством модулями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ практичСски всСгда Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² срСдС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, хотя основная Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ стСка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСзависимой ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, ΠΈ систСмой зависимостСй, которая ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ являСтся Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ (зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ свои собствСнныС подзависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ свои собствСнныС). собствСнныС ΠΏΠΎΠ΄-ΠΏΠΎΠ΄-зависимости Π±Π΅Π· ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ уровнями).

Π’ Ρ†Π΅Π»ΠΎΠΌ, всС это возвращаСтся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ сказали @lukewagner ΠΈ @ttraenkler , Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ цСлостноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ (Ссли Π½Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚), ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ смоТСм Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ схСму ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.


Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ иСрархичСским Π² смыслС Π΄Π΅Ρ€Π΅Π²Π° Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΡƒΠ·Π»ΠΎΠ²? Или Π²Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρƒ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ (Ρ‚.Π΅. "Π΄Π΅Ρ€Π΅Π²ΠΎ с пСтлями")? Π‘Ρ‹Π²Π°ΡŽΡ‚ ситуации (Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠΆ ΠΈ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅), ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½Π° "нСцикличСская Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, замаскированная ΠΏΠΎΠ΄ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ" - Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ A модуля M1 ΠΎΡ‚ a B модуля M2 ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ C ΠΎΡ‚ M2 Π½Π° D Π² M1, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½Π΅Ρ‚ (простого/ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ/встроСнного/Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ) способа ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ запрос Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ это Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… зависимостСй Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (Π΄Π΅Ρ€Π΅Π²ΠΎ с Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈΡΡ ΡƒΠ·Π»Π°ΠΌΠΈ) сдСлало Π±Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ излишнС услоТнило Π±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Ρ‚. Π΄.

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ эти полуцикличСскиС зависимости распространСны, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ сТимаСтС Π²Π½ΡƒΡ‚Ρ€ΠΈΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄Π³Ρ€Π°Ρ„Ρ‹?

Π― оТидаю, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ·Π΅Π», Ρ‚ΠΎ Π² 99,9% случаСв использования Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³Ρ€ΡƒΠΏΠΏΡƒ DAG ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΠ»ΠΈ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ схСму Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, которая ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ цикличСскими Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π½ΠΎ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ½ΠΈ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½Ρ‹ (модСль npm) с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ нСцикличСскими ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ (WASI, хост-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²Ρ‹Π΅ зависимости, ΠΈ Ρ‚.Π΄).

Π₯ΠΎΡ€ΠΎΡˆΠΎ, послС обсуТдСния этого прСдлоТСния ΠΌΠ½Π΅ нравится Π΅Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… прСфиксов ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² «бСзопасности». Π˜Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ build-system/pkg-manager, Π° Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ pkg-manager Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ зависимостСй ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ wasi, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ сказано. Π­Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ _ΠΌΠΎΠΆΠ΅Ρ‚_ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ (ΠΏΠΎΠ»ΡƒΠ²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ json):

[
  {
    "path": "./hash2k3jc/mod/foo.wasi",
    "dependencies": [
      {
        "import": ["mod", "bar"],  # (import "mod" "bar" ...)
        "path": "./hash2k3jc/bar.wasi",
      }
    ]
  },
  {
    "path": "./hash2k3jc/mod/bar.wasi",
    "dependencies": [],
  },
]

Π—Π΄Π΅ΡΡŒ Β«mod fooΒ» ΠΈΠΌΠ΅Π΅Ρ‚ 1 Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (Β«mod barΒ»), которая сама ΠΏΠΎ сСбС Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ зависимостСй.

Π­Ρ‚ΠΎ плоский список Ρ„Π°ΠΉΠ»ΠΎΠ² васи ( path ) ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ васи ( dependencies с import ΠΈ path ) .

Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ эта систСма сборки ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡΡˆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π° 100% явным ΠΈ бСзопасным. Π”Ρ€ΡƒΠ³ΠΈΠ΅ систСмы сборки (Ρ‚. Π΅. Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ строгими, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ обновлСния Π½Π° мСстС. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это прСдставлСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ любой ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

IMO, это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ https://webassembly.org/docs/dynamic-linking/ - Π½Π΅ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ wasi ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ, вмСсто этого выбирая ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ простоту.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ файловая систСма для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° wasi умСстна.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π― Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π°Π΄ ΠΏΡ€ΠΎΠ±ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ «систСмы сборки для Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°Β» ΠΈ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ (Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅) ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ васи основной Ρ†Π΅Π»Π΅Π²ΠΎΠΉ срСдой _ΠΈ_ сборки. Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ подписанныС зависимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ совмСстноС использованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΌ, Ρ‡Π΅ΠΌ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° всСго ΠΌΠΈΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ файловая систСма для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° wasi умСстна.

Π£ мСня Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ совсСм ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ : wink: . Π£ΠΆΠ΅ Π² настоящСС врСмя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ случаи использования WASM, Π³Π΄Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π½Π΅Ρ‚ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠ²Ρ‹Π΅ ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π‘Π” , ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΡΠ°ΠΌΡƒΡŽ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ постоянного Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° β€” Π² самом простом случаС). Ρ„ΠΎΡ€ΠΌΠ΅ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ энСргонСзависимоС ΠžΠ—Π£ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ структуры, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ файловая систСма). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, файловая систСма Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ условиСм для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° WASI (ИМΠ₯О, Π΄Π°ΠΆΠ΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² WASI Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π° скорСС Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ постоянным Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ, Ρ‡Π΅ΠΌ с Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ ΠΈΠ»ΠΈ Π±Π»ΠΎΡ‡Π½Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ хранСния ΠΈΠ»ΠΈ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅).

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ я Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС зависимости Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ памяти :smile: (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ position ΠΈ size вмСсто path ). path ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ интСрфСйсС, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ Π‘Π”, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Π·Π²Π°Ρ‚ΡŒ это ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ path ... ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, key ?

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° для поиска Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… BLOB-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ довольно Π²Π°ΠΆΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² :smile:

Π² спСцификации js ΠΌΡ‹ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Π΄Π°Π΅ΠΌ модулям Π½ΠΈΠΊΠ°ΠΊΠΈΡ… спСцификаторов. ΠœΡ‹ выполняСм Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ (referringModuleInstance, importString) , ΠΈ хост Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, слСдуСт Π»ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ этот ΠΈΠΌΠΏΠΎΡ€Ρ‚, Π³Π΄Π΅ ΠΎΠ½ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ Ρ‚. Π΄. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Wasm Π² настоящСС врСмя Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ расплывчатый, ΠΈ WASI ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ограничСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ «Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (referringModuleInstance, importString) Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½ΠΎ доступСн для модуля ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅ с ΠΊΠΎΠ΄ΠΎΠΌ xyzΒ». Для wasmtime Β«Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½ΠΎ доступный», вСроятно, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ. Для Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ fastly/cloudflare это, вСроятно, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π°Ρ€Ρ…ΠΈΠ²Π°Β».

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

nikhedonia picture nikhedonia  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

void4 picture void4  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

spidoche picture spidoche  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

konsoletyper picture konsoletyper  Β·  6ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

cretz picture cretz  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ