Mozilla SpiderMonkey์—์„œ Servo ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์„ ๋ถ„๋ฆฌํ•˜๋ ค๋Š” ๊ณ„ํš

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

Servo ํ”„๋กœ์ ํŠธ๋Š” Rust ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ์›น ํŽ˜์ด์ง€์˜ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ๋ Œ๋”๋ง ์ง€์›, DOM(Document Object Model)๊ณผ์˜ ์ž‘์—… ๋ณ‘๋ ฌํ™” ๋ฐ Rust ์–ธ์–ด์—์„œ ์ œ๊ณตํ•˜๋Š” ์•ˆ์ „ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์‚ฌ์šฉ์œผ๋กœ ๊ตฌ๋ณ„๋ฉ๋‹ˆ๋‹ค. Servo ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜ Mozilla๊ฐ€ ๊ฐœ๋ฐœํ–ˆ์ง€๋งŒ Linux Foundation์˜ ํ›„์›์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. Servo๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ DOM์„ ๋ถ„ํ• ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋” ์ž‘์€ ํ•˜์œ„ ์ž‘์—…์œผ๋กœ ๋ Œ๋”๋งํ•˜๊ณ  ๋ฉ€ํ‹ฐ ์ฝ”์–ด CPU ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Firefox๋Š” ์ด๋ฏธ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ CSS ์—”์ง„ ๋ฐ WebRender ๋ Œ๋”๋ง ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ Servo์˜ ์ผ๋ถ€ ๋ถ€๋ถ„์„ ํ†ตํ•ฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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