Π― Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡΠ° Π² ΡΠΎΠ΄Π½ΡΡ Ρ ΠΎΡΡΠ°Ρ 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
. ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠ°ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΡΠΈ ΡΠ°Π·Π±ΠΎΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ:
.
ΠΈΠ»ΠΈ ..
.@
, ΡΠΎΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ Ρ ΠΏΡΡΠ΅ΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π² ΠΊΠ°ΡΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠ° Ρ
ΠΎΡΡΠ°.$
, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΈ Π²ΡΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΎ ΠΊΠΎΡΠ½Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² 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 ΠΏΠΎ ΠΈΠΌΠΏΠΎΡΡΡ ΠΊΠ°ΡΡ (ΠΎΡΠ½ΡΠ½Π΅ WIM), ΠΈ ΡΡΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΎΠ±ΡΡ
ΡΠ»ΡΡΠ°Π΅Π² Π΄Π»Ρ $
ΠΈ @
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΏΡΠ½ΠΊΡΡ:
WIM ΡΠ΅ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΅ΠΌ ΠΊΠ°ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° WASI. WIM ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠΎΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΡΡΠΎ Π²ΡΠ·ΠΎΠ² Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΡΠ΅ΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ OCAP.
ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°, ΠΈΠΌΠΏΠΎΡΡΠ° Ρ ΠΎΡΡΠ° ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎ ΡΠ²ΠΎΠΈΡ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡ ; ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΎΡΡΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² wasm. Π’ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ°ΡΠ·Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΠΈΠΌΠΏΠΎΡΡΡ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π²ΠΎΠΊΡΡΠ³ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°, ΡΠ±ΠΎΡΡΠΈΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Webpack ΠΈ Rollup, ΠΌΠΎΠ³ΡΡ Π½Π°ΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΡΠ΄ΠΎΠ±Π½ΡΡ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ΅ΠΉΡΠ°Ρ Π΄Π΅Π»Π°ΡΡ Ρ npm.
ΠΠΎ Π²ΡΡΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎ ΠΌΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π»ΡΠ±ΡΠ΅ ΠΎΡΠ·ΡΠ²Ρ :)
ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ 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 Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ 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-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ²ΠΎΠΈΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ°, Π° 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 ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΡΠ°ΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π°ΡΡ
ΠΈΠ²Π°Β».
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― ΡΠΎΠΆΠ΅ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π» ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΡΠ΅ΠΌ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ ΡΡΠ²ΡΡΠ²ΡΡ, ΡΡΠΎ ΠΌΡ Π΅ΡΠ΅ Π½Π΅ Π³ΠΎΡΠΎΠ²Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π±Π΅Π· Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ Π½ΠΎΠ²ΠΎΠΉ, ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Β«Π±ΠΎΠ»ΡΡΠΎΠΉΒ» ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ (ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ), ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Β«ΠΏΠ°ΠΊΠ΅ΡΒ» (Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΊΠΎΠ΄Π° Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠ°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ npm) ΠΈΠ»ΠΈ Β«ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΒ». " (Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°), ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ Π²Π½Π΅ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΎ ΠΏΡΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Β«ΠΏΠ°ΠΊΠ΅ΡΠ°Β» ΠΈΠ»ΠΈ Β«ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Β» (ΠΈ ΡΠΎ, ΠΈ Π΄ΡΡΠ³ΠΎΠ΅, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ, ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ°Π· ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ), Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π― ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡ ΡΠ΅Π»Ρ @littledan : Π²ΡΠ΅, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ Π²Π½ΡΡΡΠΈ ΠΈ Π²Π½Π΅ ΡΡΠ΅Π΄Ρ JS/ESM. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ wasm, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π² Node, ΡΠ°ΠΊ ΠΈ Π²Π½Π΅ Π΅Π³ΠΎ.