Mozilla, RLBox ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฉ๋ฆฌ ๊ธฐ์ˆ  ๊ตฌํ˜„ ์‹œ์ž‘

์Šคํƒ ํฌ๋“œ ๋Œ€ํ•™๊ต, ์ƒŒ๋””์—์ด๊ณ  ์บ˜๋ฆฌํฌ๋‹ˆ์•„ ๋Œ€ํ•™๊ต, ์˜ค์Šคํ‹ด ํ…์‚ฌ์Šค ๋Œ€ํ•™๊ต ์—ฐ๊ตฌ์› ๊ฐœ๋ฐœํ–ˆ๋‹ค ๋„๊ตฌ RL๋ฐ•์Šค, ์ด๋Š” ํ•จ์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ๊ฒฉ๋ฆฌ ๊ณ„์ธต์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RLBox๋Š” ๊ฐœ๋ฐœ์ž์˜ ํ†ต์ œํ•˜์— ์žˆ์ง€ ์•Š์ง€๋งŒ ํ•ด๋‹น ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ฃผ์š” ํ”„๋กœ์ ํŠธ๋ฅผ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ์งˆ๋ผ ํšŒ์‚ฌ ~์— ๊ณ„ํšํ•˜๋‹ค Firefox 74์˜ Linux ๋นŒ๋“œ์™€ Firefox 75์˜ macOS ๋นŒ๋“œ์—์„œ RLBox๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‹คํ–‰์„ ๊ฒฉ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์„๋ฌต, ๊ธ€๊ผด ๋ Œ๋”๋ง์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ RLBox๋Š” Firefox์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ž„์˜ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฒฉ๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ดˆ ๊ณต์‚ฌ RL๋ฐ•์Šค ํ™•์‚ฐ MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ. RLBox๋Š” ํ˜„์žฌ Linux ๋ฐ macOS ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๋ฉฐ Windows๋Š” ๋‚˜์ค‘์— ์ง€์›๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๊ธฐ๊ตฌ RLBox์˜ ์ž‘์—…์€ ๊ฒฉ๋ฆฌ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ C/C++ ์ฝ”๋“œ๋ฅผ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ค‘๊ฐ„ WebAssembly ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์ฝ”๋“œ๋Š” WebAssembly ๋ชจ๋“ˆ๋กœ ์„ค๊ณ„๋˜๋ฉฐ ํ•ด๋‹น ๋ชจ๋“ˆ์˜ ๊ถŒํ•œ์€ ์ด ๋ชจ๋“ˆ๊ณผ ๊ด€๋ จํ•ด์„œ๋งŒ ์„ค์ •๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์ด๋‚˜ ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค). C/C++ ์ฝ”๋“œ๋ฅผ WebAssembly๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ž‘์—…์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. wasi-sdk.

์ง์ ‘ ์‹คํ–‰์„ ์œ„ํ•ด WebAssembly ๋ชจ๋“ˆ์€ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. ๋ฃจ์…‹ ๋‚˜๋จธ์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฒฉ๋ฆฌ๋œ ๋ณ„๋„์˜ "๋‚˜๋…ธํ”„๋กœ์„ธ์Šค"์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. Lucet ์ปดํŒŒ์ผ๋Ÿฌ๋Š” JIT ์—”์ง„๊ณผ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํฌ๋ ˆ์ธ ๋ฆฌํ”„ํŠธ, Firefox์—์„œ WebAssembly๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์กฐ๋ฆฝ๋œ ๋ชจ๋“ˆ์€ ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์—์„œ ์ž‘๋™ํ•˜๋ฉฐ ๋‚˜๋จธ์ง€ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ทจ์•ฝ์ ์ด ์•…์šฉ๋˜๋ฉด ๊ณต๊ฒฉ์ž๋Š” ์ œํ•œ์ ์ด๋ฉฐ ๊ธฐ๋ณธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ ์™ธ๋ถ€๋กœ ์ œ์–ด๊ถŒ์„ ์ด์ „ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Mozilla, RLBox ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฉ๋ฆฌ ๊ธฐ์ˆ  ๊ตฌํ˜„ ์‹œ์ž‘

๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋†’์€ ์ˆ˜์ค€์˜ ์ •๋ณด๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. API, ๊ฒฉ๋ฆฌ ๋ชจ๋“œ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. WebAssembly ํ•ธ๋“ค๋Ÿฌ๋Š” ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ฑฐ์˜ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ด๋“ค๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ์€ ์ผ๋ฐ˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋Š๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ํ˜•์‹์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋™์•ˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ํ™•์ธํ•  ๋•Œ๋งŒ ์˜ค๋ฒ„ํ—ค๋“œ ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค). ๊ฒฉ๋ฆฌ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋Š” ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ ˆ์ด์–ด Invoke_sandbox_function().

๊ฒฐ๊ณผ์ ์œผ๋กœ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์™ธ๋ถ€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋Š” Register_callback ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ RLBox๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค) ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ). ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ ๋ณด์žฅํ•˜๋ ค๋ฉด ์ฝ”๋“œ ์‹คํ–‰ ๊ฒฉ๋ฆฌ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฐ˜ํ™˜๋œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ๋„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์ƒ์„ฑ๋œ ๊ฐ’์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์‚ฌ์šฉ์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์˜ค์—ผ๋œ ํ”์  ๊ทธ๋ฆฌ๊ณ  "์ฒญ์†Œ"๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ™•์ธ ๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์ •๋ฆฌ ์—†์ด ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ปจํ…์ŠคํŠธ์—์„œ ์˜ค์—ผ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด(๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€) ์ปดํŒŒ์ผ ํƒ€์ž„์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ž‘์€ ํ•จ์ˆ˜ ์ธ์ˆ˜, ๋ฐ˜ํ™˜ ๊ฐ’ ๋ฐ ๊ตฌ์กฐ๋Š” ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์™€ ์ƒŒ๋“œ๋ฐ•์Šค ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์˜ ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๊ฒฝ์šฐ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๊ณ  ์ง์ ‘ ์ƒŒ๋“œ๋ฐ•์Šค ์ฐธ์กฐ ํฌ์ธํ„ฐ๊ฐ€ ๊ธฐ๋ณธ ํ”„๋กœ์„ธ์Šค๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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