๋ ๋ฐ์๋์(Nick Desagnier)
Open Source Summit ๋ฐ Embedded Linux ์ปจํผ๋ฐ์ค์ ์ต๊ทผ ํ ๋ก ์์ Linus Torvalds๊ฐ ํ ๋ง์ ๊ธฐ์ตํด ๋ณด์ญ์์ค.
- "Fish in a Barrel"ํ์ฌ์ ๊ฐ๋ฐ์
ะฟะพะดะณะพัะพะฒะธะปะธ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํด ์ธํฐํ์ด์ค์ ์ปค๋ ๊ตฌ์กฐ์ ๋ํ ์ถ์ ๊ณ์ธต ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ Rust ์ธ์ด๋ก Linux ์ปค๋์ฉ ๋ก๋ ๊ฐ๋ฅํ ๋ชจ๋์ ์์ฑํ๊ธฐ ์ํ ํดํท์ ๋๋ค. ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ปค๋ ํค๋ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์ด๊ฐ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.๋ฐ์ธ๋๊ฒ . Clang์ ๋ ์ด์ด๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ค๊ฐ์ธต ์ธ์๋ ์กฐ๋ฆฝ๋ ๋ชจ๋์ staticlib ํจํค์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ํ์ฝฉ์ค๋ฌธ๋ํ๊ต ์ฐ๊ตฌ์ง
๊ฐ๋ฐํ๋ค Rust์์ ์๋ฒ ๋๋ ์์คํ ๋ฐ ์ฌ๋ฌผ ์ธํฐ๋ท ์ฅ์น์ฉ ๋๋ผ์ด๋ฒ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ํ๋ก์ ํธ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ ๋ํ bingen์ ์ฌ์ฉํ์ฌ ์ปค๋ ํค๋ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์ด๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ปค๋์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ๋๋ผ์ด๋ฒ ๋ณด์์ ํฅ์ํ ์ ์์ต๋๋ค. ์ปค๋์์ ๋๋ผ์ด๋ฒ์ ๋ํ ์ถ๊ฐ ๊ฒฉ๋ฆฌ ์์ค์ ๋ง๋๋ ๋์ ๋ณด๋ค ์์ ํ Rust ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ ๋จ๊ณ์์ ๋ฌธ์ ๋ฅผ ์ฐจ๋จํ๋ ๊ฒ์ด ์ ์๋ฉ๋๋ค. ์ ์ ํ ๊ฐ์ฌ๋ฅผ ์ค์ํ์ง ์๊ณ ์๋๋ฌ ๋ ์ ๋๋ผ์ด๋ฒ๋ฅผ ๊ฐ๋ฐํ๋ ์ฅ๋น ์ ์กฐ์ ์ฒด์์๋ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํ ์ ์๋ค๊ณ ๊ฐ์ ๋ฉ๋๋ค. - ํ๋ ์์ํฌ ๊ฐ๋ฐ์
C2๋ฌ์คํธ C ์ฝ๋๋ฅผ Rust์ ๋ธ๋ก๋์บ์คํ ํ๊ธฐ ์ํด,ํ์ ์ต์ํ์ ์๋ ํธ์ง์ผ๋ก ์ปค๋ ๋ชจ๋์ ๋ณํํ๋ ์คํ์ ๋๋ค. ์ธ๊ธ๋ ๋ฌธ์ ์ค ํ๋๋ C2Rust์์ ์์ง ์ง์๋์ง ์๋ GCC ํ์ฅ์ ์ฌ์ฉํ๋ ์ฝ๋ ์ปค๋์ ๋ง์ ๋ถ๋ถ์์ ์ฌ์ฉ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด C2Rust๋ GCC ์์ฑ ์ธ๋ผ์ธ, ์ฝ๋, ๋ณ์นญ, ์ฌ์ฉ ๋ฐ ์น์ ์ ๋ํ ์ง์์ ์ถ๊ฐํ ๋ฟ๋ง ์๋๋ผ ์ธ๋ผ์ธ ์ด์ ๋ธ๋ฌ์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ณ ์ ๋ ฌ ๋ฐ ํจํน๋ ๊ตฌ์กฐ(์: xregs_state) ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ณํ์ ๋๋ค. . ์๋ ์์ ์ด ํ์ํ ์ค์ํ ๋ฌธ์ ๋ก๋ ์ค์ํ์ง ์์ C ๋งคํฌ๋ก๋ฅผ Rust ๋งคํฌ๋ก๋ก ๋ณํํ ์ ์๋ค๋ ๊ฒ๊ณผ ์ ํ์ ์ฌ์ ์ํด์ผ ํ๋ค๋ ์ ๋ฑ์ด ์์ต๋๋ค. C2Rust๋ C ์ ํ์ libc ํจํค์ง์ ์ ์๋ก ๋ณํํ์ง๋ง ์ด ํจํค์ง๋ ์ปค๋ ๋ชจ๋์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ถ์ฒ : opennet.ru