๋น ๋ฅธ WebAssembly ์ธํ„ฐํ”„๋ฆฌํ„ฐ์ธ wasm3์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค

์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ดˆํŒ wasm3WebAssembly์šฉ JIT ๊ตฌํ˜„์ด ์—†๊ฑฐ๋‚˜, JIT๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๊ฑฐ๋‚˜, JIT ๊ตฌํ˜„์— ํ•„์š”ํ•œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š” ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ ํ”Œ๋žซํผ์—์„œ WebAssembly ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋งค์šฐ ๋น ๋ฅธ WebAssembly ์ค‘๊ฐ„ ์ฝ”๋“œ ํ•ด์„๊ธฐ์ž…๋‹ˆ๋‹ค. . ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฐฐํฌ์ž MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ.

Wasm3 ํŒจ์Šค ๊ฒ€์‚ฌ๋“ค WebAssembly 1.0 ์‚ฌ์–‘๊ณผ ํ˜ธํ™˜๋˜๋ฉฐ ๋งŽ์€ WASI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ JIT ์—”์ง„๋ณด๋‹ค 4~5๋ฐฐ ๋‚ฎ์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์ด๋ฅ™, ํฌ๋ ˆ์ธ ๋ฆฌํ”„ํŠธ) ๋ฐ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์‹คํ–‰๋ณด๋‹ค 11.5๋ฐฐ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ WebAssembly ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ ๋น„๊ตํ•  ๋•Œ(์™€์šฐ, ์ƒํ™œ, wasm-๋งˆ์ดํฌ๋กœ ๋Ÿฐํƒ€์ž„), wasm3์€ 15.8๋ฐฐ ๋” ๋น ๋ฅธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

wasm3์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด 64Kb์˜ ์ฝ”๋“œ ๋ฉ”๋ชจ๋ฆฌ์™€ 10Kb์˜ RAM์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WebAssembly์—์„œ ์ปดํŒŒ์ผ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ์˜ˆ: Arduino MKR*, Arduino Due, Particle Photon, ESP8266, ESP32, Air602(W600), nRF52, nRF51 Blue Pill(STM32F103C8T6), MXChip AZ3166(EMW3166),
Maix(K210), HiFive1(E310), Fomu(ICE40UP5K) ๋ฐ ATmega1284๋Š” ๋ฌผ๋ก  x86, x64, ARM, MIPS, RISC-V ๋ฐ Xtensa ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ๋ณด๋“œ ๋ฐ ์ปดํ“จํ„ฐ์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์šด์˜ ์ฒด์ œ์—๋Š” Linux(OpenWRT ๊ธฐ๋ฐ˜ ๋ผ์šฐํ„ฐ ํฌํ•จ), Windows, macOS, Android ๋ฐ iOS๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ค‘์ฒฉ ์‹คํ–‰(์ž์ฒด ํ˜ธ์ŠคํŒ…)์„ ์œ„ํ•ด wasm3์„ WebAssembly ์ค‘๊ฐ„ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ†ต์—ญ์‚ฌ์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ ๋ฉ”ํƒ€ ๋จธ์‹  (M3)์€ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์˜์‚ฌ ๋จธ์‹  ์ฝ”๋“œ ์ƒ์„ฑ ์ž‘์—…์œผ๋กœ ์ „๋‹ฌํ•˜์—ฌ ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋””์ฝ”๋”ฉ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ณ  ์Šคํƒ ๊ธฐ๋ฐ˜ ๊ฐ€์ƒ ๋จธ์‹  ์‹คํ–‰ ๋ชจ๋ธ์„ ๋ณด๋‹ค ํšจ์œจ์ ์ธ ๋ ˆ์ง€์Šคํ„ฐ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. M3์˜ ์ž‘์—…์€ ์ธ์ˆ˜๊ฐ€ CPU ๋ ˆ์ง€์Šคํ„ฐ์— ๋งคํ•‘๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒ ๋จธ์‹  ๋ ˆ์ง€์Šคํ„ฐ์ธ C ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์ตœ์ ํ™” ์ž‘์—… ์‹œํ€€์Šค๋Š” ์š”์•ฝ ์ž‘์—…์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์ฃผ๋ชฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์—ฐ๊ตฌ ๊ฒฐ๊ณผ ๋ถ„ํฌ
์›น์—์„œ์˜ ์›น์–ด์…ˆ๋ธ”๋ฆฌ. ์—ฐ๊ตฌ์›๋“ค์€ Alexa ๋“ฑ๊ธ‰์— ๋”ฐ๋ผ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์‚ฌ์ดํŠธ ์ค‘ 948๊ฐœ๋ฅผ ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ WebAssembly๊ฐ€ 1639๊ฐœ ์‚ฌ์ดํŠธ(0.17%)์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. 1๊ฐœ ์‚ฌ์ดํŠธ ์ค‘ 600๊ฐœ ์‚ฌ์ดํŠธ์—์„œ. ์ „์ฒด์ ์œผ๋กœ 1950๊ฐœ์˜ WebAssembly ๋ชจ๋“ˆ์ด ์‚ฌ์ดํŠธ์— ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ์œผ๋ฉฐ ๊ทธ ์ค‘ 150๊ฐœ๋Š” ๊ณ ์œ ํ•œ ๋ชจ๋“ˆ์ด์—ˆ์Šต๋‹ˆ๋‹ค. WebAssembly์˜ ์‚ฌ์šฉ ๋ฒ”์œ„๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ์‹ค๋ง์Šค๋Ÿฌ์šด ๊ฒฐ๋ก ์ด ๋‚ด๋ ค์กŒ์Šต๋‹ˆ๋‹ค. 50% ์ด์ƒ์˜ ๊ฒฝ์šฐ WebAssembly๋Š” ์•”ํ˜ธํ™”ํ ์ฑ„๊ตด(55.7%), ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์ˆจ๊ธฐ๊ธฐ(0.2%) ๋“ฑ ์•…์˜์ ์ธ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. . WebAssembly์˜ ํ•ฉ๋ฒ•์ ์ธ ์‚ฌ์šฉ์—๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‹คํ–‰(38.8%), ๊ฒŒ์ž„ ์ƒ์„ฑ(3.5%), JavaScript๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž ์ •์˜ ์ฝ”๋“œ ์‹คํ–‰(0.9%)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์‹๋ณ„(์ง€๋ฌธ)์„ ์œ„ํ•œ ํ™˜๊ฒฝ ๋ถ„์„์— WebAssembly๋ฅผ ์‚ฌ์šฉํ•œ ์‚ฌ๋ก€๋Š” 14.9%์˜€์Šต๋‹ˆ๋‹ค.

๋น ๋ฅธ WebAssembly ์ธํ„ฐํ”„๋ฆฌํ„ฐ์ธ wasm3์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€