Rust-for-Linux ํ๋ก์ ํธ์ ์ ์์ธ Miguel Ojeda๋ Linux ์ปค๋ ๊ฐ๋ฐ์๊ฐ ๊ณ ๋ คํ ์ ์๋๋ก Rust ์ธ์ด๋ก ์ฅ์น ๋๋ผ์ด๋ฒ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ v5 ๊ตฌ์ฑ ์์ ์ถ์๋ฅผ ์ ์ํ์ต๋๋ค. ์ด๊ฒ์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ ๊ณ ๋ คํ์ฌ ๋ฒ์ ๋ฒํธ ์์ด ๊ฒ์๋ ํจ์น์ XNUMX๋ฒ์งธ ๋ฒ์ ์ ๋๋ค. Rust ์ง์์ ์คํ์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ง๋ง ์ด๋ฏธ linux-next ๋ธ๋์น์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ปค๋ ํ์ ์์คํ ์ ๋ํ ์ถ์ํ ๊ณ์ธต ์์ฑ ์์ ๊ณผ ๋๋ผ์ด๋ฒ ๋ฐ ๋ชจ๋ ์์ฑ ์์ ์ ์์ํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ๊ฐ๋ฐ๋์์ต๋๋ค. ์ด ๊ฐ๋ฐ์ Google๊ณผ Let's Encrypt ํ๋ก์ ํธ์ ์ฐฝ๋ฆฝ์์ธ ISRG(Internet Security Research Group)์์ ์๊ธ์ ์ง์๋ฐ๊ณ HTTPS์ ์ธํฐ๋ท ๋ณด์์ ํฅ์์ํค๋ ๊ธฐ์ ๊ฐ๋ฐ์ ์ด์งํฉ๋๋ค.
์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ํตํด Rust๋ฅผ ๋๋ผ์ด๋ฒ ๋ฐ ์ปค๋ ๋ชจ๋ ๊ฐ๋ฐ์ ์ํ ๋ ๋ฒ์งธ ์ธ์ด๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์. Rust ์ง์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ง ์๋ ์ต์ ์ผ๋ก ์ ๊ณต๋๋ฉฐ Rust๊ฐ ์ปค๋์ ๋ํ ํ์ ๋น๋ ์ข ์์ฑ์ผ๋ก ํฌํจ๋์ง ์์ต๋๋ค. ๋๋ผ์ด๋ฒ ๊ฐ๋ฐ์ Rust๋ฅผ ์ฌ์ฉํ๋ฉด ํด์ ํ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ ๋ฐ ๋ฒํผ ์ค๋ฒ๋ฐ๊ณผ ๊ฐ์ ๋ฌธ์ ์์ด ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ๋ ์์ ํ๊ณ ๋ ๋์ ๋๋ผ์ด๋ฒ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ ์ฒ๋ฆฌ๋ ์ฝ๋ ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค์ ์ ํ์ฑ ํ๊ฐ๋ฟ๋ง ์๋๋ผ ์ฐธ์กฐ ํ์ธ, ๊ฐ์ฒด ์์ ๊ถ ๋ฐ ๊ฐ์ฒด ์๋ช (๋ฒ์) ์ถ์ ์ ํตํด ์ปดํ์ผ ์๊ฐ์ Rust์์ ์ ๊ณต๋ฉ๋๋ค. Rust๋ ๋ํ ์ ์ ์ค๋ฒํ๋ก์ ๋ํ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , ์ฌ์ฉํ๊ธฐ ์ ์ ๋ณ์ ๊ฐ์ ํ์ ์ด๊ธฐํ๊ฐ ํ์ํ๋ฉฐ, ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ค๋ฅ๋ฅผ ๋ ์ ์ฒ๋ฆฌํ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณ ์ฐธ์กฐ ๋ฐ ๋ณ์ ๊ฐ๋ ์ ์ ์ฉํ๊ณ , ๊ฐ๋ ฅํ ์ ์ ์ ํ ์ง์ ์ ์ ๊ณตํ์ฌ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์ต์ํํฉ๋๋ค.
ํจ์น์ ์ ๋ฒ์ ์์๋ ํจ์น์ ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ, ๋ค ๋ฒ์งธ ๋ฐ ๋ค์ฏ ๋ฒ์งธ ๋ฒ์ ์ ๋ํ ๋ ผ์ ์ค์ ์ธ๊ธ๋ ๋ด์ฉ์ด ๊ณ์ํด์ ์ ๊ฑฐ๋์์ต๋๋ค. ์ ๋ฒ์ ์์๋:
- ํดํท์ด ์ ๋ฐ์ดํธ๋์ด Rust 1.59.0์ด ์ถ์๋์์ต๋๋ค. ๋ํ alloc ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณํ์ ์๋ก์ด ๋ฒ์ ์ Rust์ ๋๊ธฐํ๋์ด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ "ํจ๋" ์ํ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ์ ๊ฑฐํฉ๋๋ค. ์ด์ ๋ธ๋ฌ ์ฝ์ ("feature(global_asm)")์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด ์์ ํ๋์์ต๋๋ค.
- ์ปค๋ ์ปดํ์ผ ์ค์ ์ฌ์ฉ๋๋ Rust์์ ํธ์คํธ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ์ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ฏธ๋ฆฌ ์์ฑ๋ ๋์ ํ๋ซํผ ์ฌ์ ํ์ผ์ ์ ๊ณตํ๋ ๋์ ์ปค๋ ๊ตฌ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
- Rust๋ฅผ ์ง์ํ๋ ์ํคํ ์ฒ๋ฅผ ํ์ฑํํ๊ธฐ ์ํด HAVE_RUST ์ปค๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ํ๋์จ์ด ์์ฌ ๋์ ์์ฑ๊ธฐ์ฉ Rust ์ฝ๋์ ์ฌ์ฉํ๊ธฐ ์ํ ์ถ์ํ๊ฐ ์ ์๋์์ต๋๋ค.
- C์์ ์ค๋ฅ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ "Error::" ์ ๋์ฌ(์: "return Err(EINVAL)") ์์ด ์ค๋ฅ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ ์ C-์คํธ๋ง์ ์ํ "CString" ์ ํ์ ์ถ๊ฐํ์ต๋๋ค. Formatter ๋ฐ Buffer ์ ํ์ด ๊ฒฐํฉ๋์์ต๋๋ค.
- Bool ๋ฐ LockInfo ์ ํ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์คํ ์ ๊ธ ๊ตฌํ์ด ๋จ์ํ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru