ΠΠΎΠΌΠΈΡΠ΅Ρ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π½Π°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² GCC (GCC Steering Committee), ΡΡΠ²Π΅ΡΠ΄ΠΈΠ» Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ GCC Π±ΡΠΊΠ΅Π½Π΄Π° Π΄Π»Ρ WebAssembly. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ WebAssembly-Π±ΡΠΊΠ΅Π½Π΄Π° Π² ΡΠΎΡΡΠ°Π²Π΅ GCC. ΠΠΎΠΏΡΠΎΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ°Ρ Π·Π° ΡΠ΅ΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΠΊΠ΅Π½Π΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GCC Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ°Ρ C/C++ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄ WebAssembly. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² WebAssembly ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ JavaScript-ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ, Π·Π°ΠΏΡΡΠΊΠ° Π² web-Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Node.js ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΠΎΡΠΎΠ±Π»Π΅Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ WASM runtime. ΠΡΠΊΠ΅Π½Π΄ Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΡΠ°ΡΠ½ΡΠΌΠΈ ΡΡΠΎΠ½ΡΡΠ½Π΄Π°ΠΌΠΈ GCC, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌΠΈ ΡΠ°Π·Π±ΠΎΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² GCC ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π½Π΅ΡΠ½ΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ wabt, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ libc Π΄Π»Ρ WebAssembly (wasi-libc) ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ wasm-ld. ΠΠ΅ Π²ΡΡ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΡΡΠ»ΠΎΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ², ΡΠ°Π±Π»ΠΈΡ, ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ setjump/longjump.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
