Rust๋ก ์์ฑ๋ ๋ธ๋ผ์ฐ์ ์์ง Servo 0.0.2์ ๋ฐ๋ชจ ๋ธ๋ผ์ฐ์ ServoShell์ด โโ์ถ์๋์์ต๋๋ค. ์ด๋ฒ ๋ฆด๋ฆฌ์ค๋ ์ถ๊ฐ์ ์ธ ์๋ ํ ์คํธ๋ฅผ ๊ฑฐ์น 11์ 14์ผ ๋์ดํ๋ฆฌ ๋น๋์ ๊ธฐ๋ฅ์ ์ผ๋ก ๋์ผํฉ๋๋ค. ์ต์ข ๋น๋๋ ์ง๊ธ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. Linux, Android, macOS ะธ Windows.
ํด๋น ์์ง์ ์ฒ์์๋ ๋ชจ์ง๋ผ์์ ๊ฐ๋ฐํ์ง๋ง, ์ดํ ํด๋น ์กฐ์ง์ ๊ด๋ฆฌํ์ ๋ค์ด๊ฐ๊ฒ ๋์์ต๋๋ค. Linux ํ์ด๋ฐ์ด์ ์๋ณด(Foundation Servo)๋ ๋ฉํฐ์ค๋ ๋ ์น ํ์ด์ง ๋ ๋๋ง, DOM(๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ) ์์ ์ ๋ณ๋ ฌํ, ๊ทธ๋ฆฌ๊ณ Rust ์ธ์ด์์ ์ ๊ณตํ๋ ์์ ํ ํ๋ก๊ทธ๋๋ฐ ๋ฉ์ปค๋์ฆ์ ์ง์ํฉ๋๋ค. ์๋ณด๋ DOM ๋ฐ ๋ ๋๋ง ์ฝ๋๋ฅผ ๋ณ๋ ฌ๋ก ์คํ ๊ฐ๋ฅํ ๋ ์์ ํ์ ์์ ์ผ๋ก ๋ถํ ํ์ฌ ๋ฉํฐ์ฝ์ด CPU ๋ฆฌ์์ค๋ฅผ ๋์ฑ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์๋๋ก ์ฒ์๋ถํฐ ์ค๊ณ๋์์ต๋๋ค. ํ์ด์ดํญ์ค๋ ์ด๋ฏธ ๋ฉํฐ์ค๋ ๋ CSS ์์ง๊ณผ WebRender ๋ ๋๋ง ์์คํ ๊ณผ ๊ฐ์ ์๋ณด์ ์ผ๋ถ ๊ธฐ๋ฅ์ ํตํฉํ๊ณ ์์ต๋๋ค.

์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- XPath(XML Path Language), AbortController, AbortSignal ์ง์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์์ถํ๊ณ ์์ถ ํด์ ํ๊ธฐ ์ํ CompressionStream ๋ฐ DecompressionStream API๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ๋ธ๋ก ๋ด๋ถ ๊ทธ๋ฆฌ๊ณ .
- fetchLater() ๋ฐ Document.parseHTMLUnsafe() ๋ฉ์๋๊ฐ ๊ตฌํ๋์์ต๋๋ค.
- UIEvent ์ด๋ฒคํธ๋ "which" ๋ฐ "relatedTarget" ์์ฑ์ ๊ตฌํํฉ๋๋ค.
- HTMLMapElement API๋ "name" ๋ฐ "bareas" ์์ฑ์ ๊ตฌํํฉ๋๋ค.
- ๋ ๋๋ง ์์ง์ ํฉ์ฑ ๊ตต๊ฒ๋ฅผ ๊ตฌํํ์ฌ ๋ณ๋์ ๊ธ๊ผด์ ์ฌ์ฉํ์ง ์๊ณ ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๋ฌธ์๋ฅผ ๋๊ป๊ฒ ๋ง๋ญ๋๋ค.
- ๋ ๋๋ง ์์๊ณผ ํ๋ ์ ๋ธ๋ญํน ํ์ค๋ฅผ ๋๊ธฐํํ๊ธฐ ์ํด vsync ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ServoShell ๋ธ๋ผ์ฐ์ ์ arm64 ๋ค์ดํฐ๋ธ ๋น๋ ๊ฐ๋ฐ์ด ์์๋์์ต๋๋ค. macOS.
- ServoShell ๋ธ๋ผ์ฐ์ ํ๋กํ ํ์
์์ Android ์์ง ์์ ํ ์์ ํ๋์ง ์๊ณ ๊ฐ๋ฐ ์ค์ธ ์คํ์ ์ธ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๋๋ก ์คํ ๋ชจ๋๊ฐ ๊ตฌํ๋์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค. ํฐ์น ์ด๋ฒคํธ๊ฐ ์ด์ ํฐ์น์คํฌ๋ฆฐ์ผ๋ก ์ ๋ฌ๋๋ฉฐ, ํฐ์น์คํฌ๋ฆฐ ์ด๋ฒคํธ๋ก ์
๋ ฅ ์์์ด ํ์ฑํ๋๋ฉด ํ๋ฉด ํค๋ณด๋๊ฐ ํ์๋ฉ๋๋ค. ํ์น ํฌ ์ค ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, ํ๋/์ถ์ ์ค์๋ ํ๋ฉด ํค๋ณด๋๋ฅผ ์คํฌ๋กคํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru
