Rust๋ ๊ฐ๋ ฅํ ์์ ์ฑ ๋ณด์ฅ, ํํ๋ ฅ ์๋ ํ์ ์์คํ , ๊ทธ๋ฆฌ๊ณ ๋น์ฉ ์๋ ์ถ์ํ๋ก ์นญ์ฐฌ๋ฐ์ผ๋ฉฐ, ํ์ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋น ๋ฅด๊ฒ ๋ถ์ํ์ต๋๋ค. ํ์ง๋ง Borrow Checker์ ์๊ฒฉํ ์ปดํ์ผ ํ์ ๊ฒ์ฌ๋ฅผ ํตํด ๋ชจ๋ ์ข ๋ฅ์ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ค๋ ๋ช ์ฑ์๋ ๋ถ๊ตฌํ๊ณ , ํ๋ก๋์ ๊ธ Rust๋ฅผ ์์ฑํ๋ ค๋ฉด ์ฌ์ ํ ํ์ง, ์ ์ง๋ณด์์ฑ, ๊ทธ๋ฆฌ๊ณ ๋ณด์์ ๋ํ ์๊ฒฉํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
ํ๋ก์ ํธ์ ๊ท๋ชจ์ ๋ณต์ก์ฑ์ด ์ปค์ง์ ๋ฐ๋ผ, ์๋ฌด๋ฆฌ ์๊ฒฉํ ํ์ด๋ผ๋ ๋ฏธ๋ฌํ ๋ฒ๊ทธ, ์คํ์ผ ๋ถ์ผ์น ๋๋ ๋ณด์ ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด๋ฌํ ๊ฒฝ์ฐ์ ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์ ํ์์ ์ ๋๋ค. ์์ค ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ๊ฒ์ฌํจ์ผ๋ก์จ ์ด๋ฌํ ๋๊ตฌ๋ ์ ์ฌ์ ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ , ํ ์ ์ฒด์ ์ฝ๋ฉ ํ์ค์ ์ ์ฉํ๋ฉฐ, ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก ์ค์๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค.
Rust ๊ฐ๋ฐ์์๊ฒ ์ ์ ๋ถ์์ ๋จ์ํ ์์ ๋ง ๊ทธ ์ด์์ ๋๋ค. ์ปดํ์ผ๋ฌ์ ์๊ฒฉํ ๊ธฐ์ค์ ๋ง์ถฐ ๋ณํํ๋ ํ๋ก์ ํธ ์๊ตฌ์ ๋ง์ถฐ ํนํ๋ ๋ฆฐํ , ๋ณด์ ์ค์บ๋, ๊ทธ๋ฆฌ๊ณ ๊ณ ๊ธ ์ง๋จ ๊ธฐ๋ฅ์ ์ถ๊ฐํจ์ผ๋ก์จ ์ ์ ๋ถ์์ ์ฅ์ ์ ๋ณด์ํฉ๋๋ค. ์ด ๊ธ์์๋ ํ์ฌ Rust์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ์ ์ ๋ถ์ ๋๊ตฌ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฐ ๋ฆฐํฐ๋ถํฐ ์ ๊ตํ ์ทจ์ฝ์ ์ค์บ๋๊น์ง, ์ด๋ฌํ ์๋ฃจ์ ๋ค์ ๊ฐ๋ฐํ์ด ์ ์ ๋ ๊น๋ค๋ก์์ง๋ ํ๊ฒฝ์์ ๋์ ์์ค์ ์ฝ๋ ํ์ง์ ์ ์งํ๊ณ , ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ค์ด๋ฉฐ, ์์ ์ ์ธ ์ํํธ์จ์ด๋ฅผ ์ ๊ณตํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
SMART TS XL
์ธ์ด์ ๊ฐ๋ ฅํ ์์ ์ฑ์ด ๋ณด์ฅ๋๋๋ผ๋, ์ต์ Rust ๊ฐ๋ฐ์์ ํ์ง์ ์ ์งํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. SMART TS XL Rust์ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ๋ง์ถฐ ์ฌ์ธต์ ์ธ ์ ์ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ํ์ด ์์ ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ฉฐ ์์ ํ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ , ์ผ๊ด์ฑ์ ์ ์งํ๋ฉฐ, ์๋ ๊ฒํ ์์ ์ ์ค์ฌ ์ ๋ฌธ์ ์ธ ์์ง๋์ด๋ง ์ํฌํ๋ก๋ฅผ ์ง์ํฉ๋๋ค.
SMART TS XL Rust ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ํ์๊ฒ ํ์ํ ์ ํ์ด ๋ ์ ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
- ์ฌ์ธต์ ์ธ ์๋ฏธ ๋ถ์
ํจ์, ๋ชจ๋, ์์ ๊ถ ํจํด ๊ฐ์ ๊ด๊ณ๋ฅผ ์ดํดํจ์ผ๋ก์จ ๋จ์ํ ๋ฆฐํ ์ ๋์ด, ์ฝ๋ ๊ฒํ ์ค ๋ฐ๊ฒฌํ๊ธฐ ์ด๋ ค์ด ๋์์ฑ ์ํ, ๋ถ์ ์ ํ ์ฐจ์ฉ, ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ ์ค๋ฅ, ๋ ผ๋ฆฌ์ ์ค๋ฅ ๋ฑ ๋ฏธ๋ฌํ ๋ฌธ์ ๋ค์ ํ์ ํฉ๋๋ค. - ๊ณ ๊ธ ๋ฆฐํ
๋ฐ ์คํ์ผ ์ ์ฉ
์ผ๊ด๋ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฝ๋ฉ ์ง์นจ์ ์๋์ผ๋ก ์ ์ฉํฉ๋๋ค. ํ์ ๋ด๋ถ ํ์ค์ ๋ง์ถฐ ์ฌ์ฉ์ ์ง์ ๋ฆฐํธ ๊ท์น์ ์ ์ํ๊ฑฐ๋ ์ ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํ์ฌ ์๊ฐ์ด ์ง๋๋ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ ์ฉ์ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค. - ๋ณด์ ์ทจ์ฝ์ ํ์ง
์์ ํ์ง ์์ ํจํด, ์์ ํ์ง ์์ ๋ธ๋ก์ ๋ํ ์ฝ๋๋ฅผ ๋ถ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ทจ์ฝ์ ์ข ์์ฑ์์ ์๋ ค์ง ๋ฌธ์ ๋ฅผ ๊ฒ์ฌํ์ฌ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ ฅํ ๋ณด์ ํ์ธ๋ฅผ ์ ์งํ๊ณ ๊ณต๊ธ๋ง ์ํ์ ๋ ธ์ถ๋๋ ๊ฒ์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ท์น ์ธํธ
๋ค์ํ ํ๋ก์ ํธ ๋๋ ํ์ ์๊ตฌ์ ๋ง์ถฐ ๋ถ์์ ๋ง์ถค ์ค์ ํ ์ ์๋ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๊ท์น์ ํ์์ ๋ฐ๋ผ ์ฌ์ฉ์ ์ง์ , ํ์ฑํ ๋๋ ๋นํ์ฑํํ ์ ์์ด, ๋ถํ์ํ ์ก์ ์์ด ๊ด๋ จ์ฑ๊ณผ ์คํ ๊ฐ๋ฅ์ฑ์ ๋ชจ๋ ๊ฐ์ถ ๋ถ์์ ๋ณด์ฅํฉ๋๋ค. - ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ํ์ฅ ๊ฐ๋ฅํ ๋ถ์
์๊ท๋ชจ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ถํฐ ๊ด๋ฒ์ํ ๋ชจ๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ๋ณต์กํ ์ํฐํ๋ผ์ด์ฆ๊ธ ์์คํ ๊น์ง ๋ค์ํ ํ๋ก์ ํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ต์ ํ๋์์ต๋๋ค. ๊น์ด๋ ์ ํ์ฑ์ ํฌ์ํ์ง ์๊ณ ๋น ๋ฅธ ๋ถ์ ์๊ฐ์ ์ ์งํฉ๋๋ค. - ํฌ๊ด์ ์ธ๋ณด๊ณ
์ฌ๊ฐ๋, ์์น ๋ฐ ๊ถ์ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ๋ณ๋ก ๋ฌธ์ ๋ฅผ ๊ฐ์กฐํ์ฌ ์์ธํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ๋ณด๊ณ ์๋ฅผ ์์ฑํฉ๋๋ค. ๋ฌธ์ํ ์์คํ ๋๋ ํฐ์ผํ ์ํฌํ๋ก์์ ํตํฉ์ ์ง์ํ์ฌ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. - CI / CD ํตํฉ
์ต์ DevOps ํ์ดํ๋ผ์ธ์ ๋ง๊ฒ ์ค๊ณ๋์์ต๋๋ค. SMART TS XL ์ค์ํ ๋ฌธ์ ๊ฐ ์๋ ๋ฐฐํฌ๋ฅผ ์ฐจ๋จํ๊ณ , ํ์ง ๊ฒ์ดํธ๋ฅผ ์ ์ฉํ๊ณ , ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด ์ ๋ฐ์ ๊ฑธ์ณ ๋์ ํ์ค์ ์ ์งํ๊ธฐ ์ํด ์ง์์ ์ธ ํตํฉ ์์คํ ์ ํตํฉ๋ ์ ์์ต๋๋ค. - ํ์
์ง์
๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ์ผ๊ด๋๊ณ ์๋ํ๋ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ฌ ํ์ ํ์ง ๊ธฐ๋์น๋ฅผ ์ผ์น์ํค๋ ๋ฐ ๋์์ ์ค๋๋ค. ์ผ์์ ์ธ ์ ๊ฒ ์์ ์ ๋ถ์ ๋๊ตฌ๋ก ์ด์ ํ์ฌ ์ฝ๋ ๊ฒํ ์ ๋ง์ฐฐ์ ์ค์ด๊ณ , ์์ง๋์ด๊ฐ ์ค๊ณ ๋ฐ ์ํคํ ์ฒ ๋ ผ์์ ์ง์คํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. - IDE ํตํฉ ๋ฐ ๊ฐ๋ฐ์ ๊ฒฝํ
์ธ๊ธฐ ํธ์ง๊ธฐ ๋ฐ IDE์์ ํตํฉ ์ต์ ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ฝ๋ ์์ฑ ์ ์ค์๊ฐ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์์ ๋ฌธ์ ๋ฅผ ํ์ ํ์ฌ ๋์ค์ ๋น์ฉ์ด ๋ง์ด ๋๋ ์์ ์์ ์ ์ค์ฌ์ค๋๋ค. - ๊ต์ฐจ ์ธ์ด ๋ฐ ๋ค์ค ํ๋ก์ ํธ ๋ถ์
์ฌ๋ฌ ์ธ์ด๋ฅผ ํฌํจํ๊ฑฐ๋ ๋ค๋ฅธ ์์คํ ๊ณผ ์ํธ ์ด์ฉ๋๋ ํ๋ก์ ํธ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ฌํ ์ ์ฐ์ฑ์ Rust ๋ชจ๋์ด ๋ค๋ฅธ ์คํ๊ณผ ์ํธ ์์ฉํ๋ ๋ค์ค ์ธ์ด ํ๊ฒฝ์์ ์์ ํ๋ Rust ํ์๊ฒ ํ์์ ์ ๋๋ค.
์ด๋ฌํ ์์ค์ ํฌ๊ด์ ์ด๊ณ ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ถ์์ ์ ๊ณตํจ์ผ๋ก์จ, SMART TS XL ๋จ์ํ ๋ฆฐํ ๋๊ตฌ ์ด์์ ์ญํ ์ ํฉ๋๋ค. ์ ๋ฌธ์ ์ธ Rust ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฝ๋ ํ์ง๊ณผ ๋ณด์์ ์ํ ๊ฐ๋ ฅํ ๋ณดํธ ์ฅ์น ์ญํ ์ ํฉ๋๋ค. ๋์ ํ๋ ํ์ SMART TS XL ์ด์ ๊ณผ์ ์์ ๋ฒ๊ทธ๊ฐ ์ค์ด๋ค๊ณ , ์ฝ๋ ๊ฒํ ๊ฐ ๋นจ๋ผ์ง๊ณ , ๊ธฐ์ ๋ถ์ฑ๊ฐ ์ค์ด๋ค๊ณ , ์ฝ๋๋ฒ ์ด์ค์ ์ฅ๊ธฐ์ ์ ์ง ๊ด๋ฆฌ์ ๋ํ ํ์ ์ด ๋ ๊ฐํด์ง ๊ฒ์ผ๋ก ๊ธฐ๋ํ ์ ์์ต๋๋ค.
ํด๋ฆฌ ํผ
Clippy๋ Rust ์ปค๋ฎค๋ํฐ์ ํ์ค ์ ์ ๋ถ์ ๋๊ตฌ๋ก, ๊ณต์ Rust ํด์ฒด์ธ์ ์ง์ ํตํฉ๋์ด ์์ผ๋ฉฐ ๊ฐ๋ฐ์๋ค์ด ์ฝ๋ ํ์ง์ ํฅ์ํ๊ณ ๊ด์ฉ์ ์ธ ๊ดํ์ ๊ฐํํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉํฉ๋๋ค. ์๋ํ๋ ์ฝ๋ ๊ฒํ ์ ์ค์ํ ์ฒซ ๋ฒ์งธ ๊ณ์ธต ์ญํ ์ ํ๋ฉฐ, ์์ ์ฑ๊ณผ ํํ๋ ฅ์ด๋ผ๋ Rust ์ธ์ด์ ์ฒ ํ์ ๋ถํฉํ๋ ํฌ๊ด์ ์ธ ๋ฆฐํ
๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋ค์์ ์ฌ์ฉํ์ฌ Clippy๋ฅผ ์ฝ๊ฒ ์คํํ ์ ์์ต๋๋ค. cargo clippy ๋ช
๋ น์ผ๋ก ์ธํด ๋ชจ๋ ๊ท๋ชจ์ ํ๋ก์ ํธ์ ๋งค์ฐ ์ ํฉํ๊ณ ์ ๊ทผ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ๊ด๋ฒ์ํ ๋ฆฐํธ ์นดํ๋ก๊ทธ
์ ํ์ฑ, ์ฑ๋ฅ, ์คํ์ผ, ๋ณต์ก์ฑ ๋ฑ ๋ค์ํ ๋ฒ์ฃผ์ ๊ฑธ์ณ ์๋ฐฑ ๊ฐ์ ๋ด์ฅ ๋ฆฐํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋ฆฐํธ๋ ํํ ์ค์๋ฅผ ํ์ ํ๊ณ ๊ฐ๋ฐ์๊ฐ Rust๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์๋ดํฉ๋๋ค. - ๊ด์ฉ์ ์ํ
๋น๊ด์ฉ์ ์ธ ํจํด์ ํ์ํ๊ณ ๋ ์์ ํ๊ณ ํจ์จ์ ์ธ Rust ๊ตฌ์กฐ๋ฅผ ์ ์ํ์ฌ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฅ๋ คํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ์ฅ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. - ์ํํ ํ๋ฌผ ํตํฉ
์ถ๊ฐ ์ค์น ์์ด ํ์ค Rust ๊ฐ๋ฐ ์ํฌํ๋ก์ ์ผ๋ถ๋ก ์คํ๋ฉ๋๋ค. ๋ค์์ ํตํด ๊ตฌ์ฑ ๊ฐ๋ฅclippy.tomlํ์์ ๋ฐ๋ผ ํน์ ๋ฆฐํธ๋ฅผ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํฉ๋๋ค. - ๊ฐ๋ฐ์ ์นํ์ ํผ๋๋ฐฑ
์ฝ๋ ์์ ์ ๋ฌธ์ ๋งํฌ๋ฅผ ํฌํจํ์ฌ ๋ช ํํ๊ณ ์คํ ๊ฐ๋ฅํ ๋ฉ์์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ต ์ฅ๋ฒฝ์ ๋ฎ์ถ๊ณ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค. - ์ ๊ทน์ ์ธ ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ปค๋ฎค๋ํฐ ์ง์
Rust-lang์ ํ ์์์ ์ธ์ด์ ์งํ์ ๋ฐ๋ง์ถฐ ์ ๊ธฐ์ ์ธ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ง๋ฉฐ ๊ด๋ฆฌ๋ฉ๋๋ค. ์ปค๋ฎค๋ํฐ์ ๊ธฐ์ฌ ๋๋ถ์ Clippy๋ ๊ด๋ จ์ฑ๊ณผ ํฌ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค. - CI/CD ํธํ์ฑ
๋ชจ๋ ๋ธ๋์น์ ๊ธฐ์ฌ์์์ ์ผ๊ด๋๊ฒ ๋ฆฐํ ํ์ค์ ์ ์ฉํ๊ธฐ ์ํด ์ง์์ ์ธ ํตํฉ ํ์ดํ๋ผ์ธ์ ์ฝ๊ฒ ํตํฉ๋ฉ๋๋ค.
Clippy๋ ๋ชจ๋ Rust ์ฝ๋๋ฒ ์ด์ค์ ํ์์ ์ธ ๋๊ตฌ์ด์ง๋ง, ํนํ ํ๋ก๋์ ๋ฑ๊ธ ์์คํ ์ ๊ตฌ์ถํ๊ฑฐ๋ ๋๊ท๋ชจ๋ก ์์ ํ ๋ ๊ฐ๋ฐ์๊ฐ ์ดํดํด์ผ ํ ํ๊ณ๊ฐ ์์ต๋๋ค.
- ์ฌ์ธต ๋ถ์๋ณด๋ค ์คํ์ผ ์ค์ฌ
Clippy๋ ์คํ์ผ ์ ์ฉ๊ณผ ๊ฐ๋จํ ์ค๋ฅ ํฌ์ฐฉ์๋ ํ์ํ์ง๋ง, ๊ณ ๊ธ ์๋ฏธ ๋ถ์์ ์ํํ์ง ์์ต๋๋ค. ์ฌ๋ฌ ๋ชจ๋์ ๊ฑธ์น ๋ฏธ๋ฌํ ์์ ๊ถ ์ํธ์์ฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ณต์กํ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ ๋์์ฑ ๋ฌธ์ ๋ ๊ฐ์งํ ์ ์์ต๋๋ค. - ์ ๋ด ๋ณด์ ์ค์บ๋ ์์
ํ๊ฒ ๋ณด์ ๋ถ์์ด๋ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํตํฉ์ด ๋ถ์กฑํฉ๋๋ค. ๊ธฐ๋ณธ ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ์ธ์ ์ข ์์ฑ ์ทจ์ฝ์ ์ด๋ ์์ ํ์ง ์์ ํจํด์ ๊ฐ์งํ์ง ๋ชปํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ณ๋์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.cargo-audit์ ์ฒด ์ ์ฉ์ ์ํด. - ์ฌ์ฉ์ ์ ์ ๊ท์น ์์ฑ ์์
Clippy์ ๊ท์น์ ๋๊ตฌ์ ๋ด์ฅ๋์ด ์์ผ๋ฉฐ ์ฌ์ฉ์๊ฐ ํ์ฅํ ์ ์์ต๋๋ค. ๋๋ฉ์ธ๋ณ ํ์ค์ด๋ ์ํคํ ์ฒ ๊ท์น์ ์ฌ์ฉํ๋ ํ์ ์์ฒด ๊ฐ์ด๋๋ผ์ธ์ ์ ์ฉํ๊ธฐ ์ํ ๋ง์ถคํ ๋ฆฐํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. - ์ ํ๋ ๋ณด๊ณ ์ต์
๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ ๊ฐ๋จํ ๋ช ๋ น์ค ์ถ๋ ฅ์ ์์ฑํ์ง๋ง ๊ตฌ์กฐํ๋ ๊ธฐ๊ณ ํ๋ ํ์, ๋์๋ณด๋ ๋๋ ๋ฌธ์ ์ถ์ ํตํฉ๊ณผ ๊ฐ์ ๊ณ ๊ธ ๋ณด๊ณ ๊ธฐ๋ฅ์ด ๋ถ์กฑํฉ๋๋ค. - ๋จ์ผ ์ธ์ด ๋ฒ์
Rust ์ ์ฉ์ผ๋ก ์ค๊ณ๋ Clippy๋ Rust ๊ตฌ์ฑ ์์๊ฐ ๋ค๋ฅธ ์ธ์ด์ ์ํธ ์์ฉํ๋ ๊ต์ฐจ ์ธ์ด ์์คํ ์ด๋ ํ๋ก์ ํธ์ ๋ถ์์ ์ง์ํ์ง ์์ต๋๋ค. ์ด๋ก ์ธํด ํด๋ฆฌ๊ธ๋กฏ ์ํคํ ์ฒ์์์ ํจ์จ์ฑ์ด ์ ํ๋ฉ๋๋ค. - ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๋ํ ํ์ฅ์ฑ
๋งค์ฐ ํฐ Rust ์ฝ๋๋ฒ ์ด์ค์์ Clippy๋ ๊ด๋ฆฌํ๊ธฐ ์ํด ์๋นํ ํ๋์ด ํ์ํ ๋ง์ ์์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๊ด๋ จ ์๋ ๋ฆฐํธ๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ๋ ธ์ด์ฆ๋ฅผ ์ค์ด๋๋ก ๋๊ตฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์๊ฐ์ ํฌ์ํด์ผ ํ ์๋ ์์ต๋๋ค. - ์ต์ํ์ CI ์๋ํ ์ ์ด
Clippy๋ CI ํ์ดํ๋ผ์ธ์ ์ถ๊ฐํ ์๋ ์์ง๋ง, ์ค์ํ ๊ฒฝ๊ณ ์ ๋ํ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์คํจ ์๊ณ๊ฐ, ๊ธฐ์ค ์ค์ ๋๋ ์ฌ๋ฌ ์ง์ ์ ๊ฑธ์น ์ต์ ๊ด๋ฆฌ์ ๊ฐ์ ๊ณ ๊ธ ์๋ํ ๊ธฐ๋ฅ์ ํฌํจํ์ง ์์ต๋๋ค. - ์ ํ๋ ๋ฌธ๋งฅ ์ดํด
Clippy์ ๋ถ์์ ์ฃผ๋ก ๊ตฌ๋ฌธ ๋ฐ ๊ท์น ๊ธฐ๋ฐ์ด๋ฉฐ, ์ฌ์ธต์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ์ด๋ ์ ์ด ํ๋ฆ ๋ถ์์ด ๋ถ์กฑํฉ๋๋ค. ์ฌ๋ฌ ํจ์๋ ๋ชจ๋์ ๊ฑธ์ณ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ๊ณ ๊ธ ์ ์ ๋ถ์ ๋๊ตฌ์ฒ๋ผ ์ถ์ ํ ์ ์์ต๋๋ค.
Clippy๋ Rust ํ๋ก์ ํธ์์ ์ฝ๋ ํ์ง์ ์ ์งํ๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ด๊ณ ์ ๊ทผ์ฑ์ด ๋ฐ์ด๋ ๋๊ตฌ์ ๋๋ค. ๊ด์ฉ์ ์ธ ๊ดํ์ ์ ์ฉํ๊ณ ๊ฐ๋ฐ ์ด๊ธฐ์ ์ฌ๋ฌ ์ ํ์ ํํ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ์ฌ ์ฆ๊ฐ์ ์ธ ํจ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ๋ณต์กํ๊ณ ๋ณด์์ด ์ค์ํ๊ฑฐ๋ ๋๊ท๋ชจ ์์คํ ์ ๊ตฌ์ถํ๋ ํ์ ๊ฒฝ์ฐ, Clippy๋ ์ฌ์ธต์ ์ธ ์๋ฏธ ๋ถ์, ๋ณด์ ์ค์บ๋, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ์ ์ฉ ๊ธฐ๋ฅ์ ํฌํจํ๋ ๋ ๊ด๋ฒ์ํ ์ ์ ๋ถ์ ์ ๋ต์ ์ผ๋ถ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
rustc(์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ )
Rust ์ปดํ์ผ๋ฌ, rustc๋ ๋ช
ํํ๊ณ ์์ธํ๋ฉฐ ์คํ ๊ฐ๋ฅํ ์ง๋จ ๊ธฐ๋ฅ์ผ๋ก ์ ๋ช
ํฉ๋๋ค. ์ฝ๋์ ์ ํ์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ ์ต์ ์ ์ ์์นํ๋ฉฐ, ๊ฐ๋น์ง ์ปฌ๋ ์
์์ด ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๋ณด์ฅํ๋ Rust์ ํต์ฌ์ ์ธ ์ปดํ์ผ ํ์ ๊ฒ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ฐํ ์ค๋ฅ๊ฐ ๋ฐํ์์๋ง ๋ํ๋๋ ๋ค๋ฅธ ์ธ์ด๋ค๊ณผ ๋ฌ๋ฆฌ, Rust์ ์ปดํ์ผ๋ฌ๋ ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ ๋ชจ๋ ์ข
๋ฅ์ ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๊ทธ ํต์ฌ์์, rustc ๊ตฌ๋ฌธ ๊ฒ์ฆ ์ด์์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ธต์ ์ธ ์๋ฏธ ๋ถ์์ ์ํํ๊ณ ์์ ๊ถ ๊ท์น, ์๋ช
๋ฐ ์ ํ ์ ํ์ฑ์ ์ ์ฉํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ ๊ฒฝํฉ, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ ๋ฐ ์์คํ
ํ๋ก๊ทธ๋๋ฐ์์ ํํ ๋ฐ์ํ๋ ์ฌ๋ฌ ๋ฌธ์ ์์ด ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ฌ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ ์ ์๋ ํจํด์ ๊ฒฝ๊ณ ํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋์ฑ ๊ฐ์ ํฉ๋๋ค. ์ด๋ฌํ ํจํด์ ํฉ๋ฒ์ ์ด๊ธฐ๋ ํ์ง๋ง ๋
ผ๋ฆฌ ์ค๋ฅ๋ ์ ์ง ๊ด๋ฆฌ ์ํ์ ๋ํ๋ผ ์ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ์์ ๊ถ ๋ฐ ์ฐจ์
์งํ
์ปดํ์ผ ํ์์ ๋ณ์ ์์ ๊ถ, ์ฐจ์ฉ, ๊ทธ๋ฆฌ๊ณ ์๋ช ์ ๋ํ ์๊ฒฉํ ๊ท์น์ ์ ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ๋ฐํ์ ์ค๋ฒํค๋ ์์ด ๋ฐ์ดํฐ ๊ฒฝํฉ๊ณผ ๋๊ธ๋ง ํฌ์ธํฐ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. - ๋ฆฌ์น ํ์
์์คํ
๊ฒ์ฌ
์๋ฌต์ ์บ์คํธ์ ์ ํ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ํ์ ์๊ฒฉํ๊ฒ ๊ฒ์ฆํ์ฌ API๋ฅผ ๋ ์์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. - ๋ช
ํํ๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ์ค๋ฅ ๋ฉ์์ง
๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๋ ์ ์, ์ฝ๋ ๊ฐ์กฐ ํ์ ๋ฐ ์คํ ๊ฐ๋ฅํ ์ง์นจ์ด ํฌํจ๋ ์์ธํ ์ปดํ์ผ๋ฌ ๋ฉ์์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. - ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ํ ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ
์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋ ๋ฒ๊ทธ๋ก ์ด์ด์ง ์ ์๋ ์ธ๋ชจ์๋ ์ฝ๋, ์ฌ์ฉ๋์ง ์๋ ๋ณ์, ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ API ๋ฐ ๊ธฐํ ํจํด์ ๋ํด ๊ฐ๋ฐ์์๊ฒ ๊ฒฝ๊ณ ํฉ๋๋ค. - ์ง์์ ์ธ ๊ฐ์ ๊ณผ ์์ ์ฑ
๊ณต์ Rust ํ๋ก์ ํธ์ ์ผ๋ถ๋ก ์ ์ง ๊ด๋ฆฌ๋๋ฉฐ, ์ธ์ด์ ํจ๊ป ์งํํ๋ ์ ๊ธฐ์ ์ธ ์ ๋ฐ์ดํธ๊ฐ ์ ๊ณต๋ฉ๋๋ค. Rust ํ์ด ์์ ์ ์ด๊ณ ๊ณ ํ์ง์ ํด๋ง์ ์ง์คํ๋ ๋๋ถ์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. - ํ๋ฌผ ์ํฌํ๋ก์ฐ์์ ํตํฉ
Rust์ ํจํค์ง ๊ด๋ฆฌ์์ ์ํํ๊ฒ ์๋ํ์ฌcargo build,cargo check๊ธ๋ ๋ฐ์ผcargo test๊ฐ๋ฐ์ ์ํฌํ๋ก์ ํ์ค ๋ถ๋ถ.
DaVinci์๋ rustc ๊ฐ์ฅ ์ง๋ณด์ ์ด๊ณ ์ ์ฉํ ์ปดํ์ผ๋ฌ ์ค ํ๋์ด์ง๋ง, ์ ์ ๋ถ์์ ์ํด ๊ฒฝ๊ณ ์ ์ค๋ฅ์๋ง ์์กดํ๋ ๋ฐ์๋ ํ๊ณ๊ฐ ์์ผ๋ฉฐ, ํนํ ๋ณต์กํ ํ๋ก์ ํธ์ ๋ณด์ ์๊ตฌ ์ฌํญ์ด ์๋ ์ ๋ฌธ ๊ฐ๋ฐ ํ์๊ฒ๋ ๊ทธ๋ ์ต๋๋ค.
๋ฌธ์ ๊ฐ์ง ๋ฒ์์ ์ ํ ์ฌํญ
์ ์ฉ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋ฌ๋ฆฌ rustc ์ฃผ๋ก ์ธ์ด ์์ค์ ์ ํ์ฑ์ ์ค์ ์ ๋ก๋๋ค. ์ธ์ด ๊ท์น์ ์๋ฐํ์ง ์๋ ๊ณ ์ฐจ์ ์ค๊ณ ๋ฌธ์ , ๋ฏธ๋ฌํ ๋
ผ๋ฆฌ ๋ฒ๊ทธ, ๋๋ ์ฝ๋ ์
์ทจ๋ฅผ ์๋ณํ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋นํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ, ๋ณต์กํ ์ ์ด ํ๋ฆ, ๋๋ ํ๋ก์ ํธ๋ณ ์ค๊ณ ํจํด ์๋ฐ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ๋์ด์๋ ์คํ์ผ๊ณผ ๋ณดํธ๋ผ๊ธฐ ๋ฐฉ์ง ๊ธฐ๋ฅ์ ๋ถ์ฌ
rustc ์คํ์ผ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ต์ํ์ ๋ด์ฅ ๊ฒฝ๊ณ ๋ง ํฌํจํฉ๋๋ค. ์ฌ์ฉ๋์ง ์๋ ๋ณ์๋ ์ง์ ์ค๋จ๋ API์ ๋ํด ๊ฒฝ๊ณ ํ ์๋ ์์ง๋ง, ํ๋ถํ ์คํ์ผ ๊ท์น์ด๋ ๊ด์ฉ์ ์ธ ์ฌ์ฉ๋ฒ์ ๊ฐ์ ํ์ง๋ ์์ต๋๋ค. ์ผ๊ด๋ ์์์ด๋ ๊ด์ฉ์ ์ธ Rust ํจํด์ ์ํ๋ ํ์๊ฒ๋ Clippy์ ๊ฐ์ ๋๊ตฌ๊ฐ ์ฌ์ ํ ํ์์ ์
๋๋ค.
๋ณด์ ์ทจ์ฝ์ ๋ถ์ ์์
์ปดํ์ผ๋ฌ๋ ๊ธฐ๋ณธ์ ๋์ด์ ์์ ํ์ง ์์ ์ฝ๋ ๋ธ๋ก์ ๋ํ ๋ณด์ ์ค์บ๋์ ์ํํ์ง ์์ต๋๋ค. unsafe ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ง ์์ผ๋ฉฐ, ์ข
์์ฑ ์ทจ์ฝ์ ์ ๋ถ์ํ์ง๋ ์์ต๋๋ค. ํฌ๋ ์ดํธ์์ ์๋ ค์ง CVE๋ฅผ ๊ฐ์งํ์ง๋ ์๊ณ , ํ๋์ฝ๋ฉ๋ ๋น๋ฐ์ฒ๋ผ ์ ์ฌ์ ์ผ๋ก ์์ ํ์ง ์์ ์ฝ๋ ํจํด์ ํ์ํ์ง ์์ผ๋ฏ๋ก, ์ด๋ฌํ ๋ฌธ์ ๋ ์ ์ ์ผ๋ก ์ธ๋ถ ๋๊ตฌ์ ๋งก๊ฒจ์ง๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ๊ท์น์ด ๋ถ์กฑํจ
rustc ๊ฐ๋ฐ์๊ฐ ์กฐ์ง์ ์๊ตฌ์ ๋ง๋ ์ฌ์ฉ์ ์ง์ ๋ฆฐํ
๊ท์น์ ์ ์ํ๊ฑฐ๋ ์ ์ฉํ ์ ์์ต๋๋ค. ํ์ ์ปดํ์ผ๋ฌ ์ง๋จ ๋๊ตฌ์ ์ํคํ
์ฒ ์ง์นจ, ๋๋ฉ์ธ๋ณ ๋ถ๋ณ์ ๋๋ ํ๋ก์ ํธ๋ณ ๋ช
๋ช
๊ท์น์ ์ง์ ์ธ์ฝ๋ฉํ ์ ์์ต๋๋ค.
ํ์ ๋ํ ์ ํ๋ ๋ณด๊ณ
์ปดํ์ผ๋ฌ ์ถ๋ ฅ์ ๊ฐ๋ณ ๊ฐ๋ฐ์๊ฐ ํฐ๋ฏธ๋์ด๋ ํธ์ง๊ธฐ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋์๋ณด๋๋ฅผ ์ํ ๊ตฌ์กฐํ๋ JSON ์ถ๋ ฅ, ๊ณผ๊ฑฐ ์ถ์ธ ์ถ์ ๋๋ ์ด์ ์ถ์ ๊ธฐ์์ ํตํฉ ๋ฑ ํ ์ํฌํ๋ก์ ์ ํฉํ ๊ณ ๊ธ ๋ณด๊ณ ๊ธฐ๋ฅ์ด ๋ถ์กฑํฉ๋๋ค.
CI/CD ํ์ง ๊ฒ์ดํธ์์ ์ต์ ํตํฉ
์ด๊ธฐ๋ํ์ง๋ง rustc CI์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋น๋๊ฐ ์คํจํฉ๋๋ค. ํน์ ๊ฒฝ๊ณ ์์ค์ด๋ ๋ฆฐํธ ์ ์ฑ
์ ์ฐจ๋จ ๊ธฐ์ค์ผ๋ก ์ ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์ ๊ณต ๋ฐฉ์์ ์์ต๋๋ค. ํ์ ์๋ํ๋ ํ์ดํ๋ผ์ธ์์ ์ฌ๊ฐํ ๋ฌธ์ ์ ์ฌ์ํ ๋ฌธ์ ๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐ ์์ด ์ ํ์ ์ธ ์ ์ด๊ถ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ต์ฐจ ์ธ์ด ๋๋ ์์คํ ์์ค ๋ถ์ ์์
rustc Rust ์ฝ๋๋ง ๋ถ์ํฉ๋๋ค. ๋์ผ ์์คํ
์ ํฌํจ๋ ๋ค๋ฅธ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋์์ ์ํธ์์ฉ์ ์ดํดํ๊ฑฐ๋ ๋ถ์ํ์ง ์์ต๋๋ค. ์ธ๋ถ ํจ์ ์ธํฐํ์ด์ค(FFI)๋ ์ธ์ด ๊ฐ ๊ฒฝ๊ณ๊ฐ ์๋ ํ๋ก์ ํธ์์๋ ์ ์ ๋ถ์ ๋ฒ์์ ๊ณต๋ฐฑ์ด ๋ฐ์ํฉ๋๋ค.
Rust ์ปดํ์ผ๋ฌ์ ์๊ฒฉํ ๊ฒ์ฌ๋ ์ด ์ธ์ด๋ฅผ ๋๋ฆฌ ๋ณด๊ธํ ์์ ์ฑ๊ณผ ์ ํ์ฑ ๋ณด์ฅ์ ํ ๋๊ฐ ๋ฉ๋๋ค. ๊ณ ๊ธ ์ค๋ฅ ๋ฉ์์ง์ ์ปดํ์ผ ์์ ์ ์์ ๊ถ ๊ท์น ์ ์ฉ์ ์ฌ๋ฌ ์ข
๋ฅ์ ๋ฒ๊ทธ๋ฅผ ์์ ํ ๋ฐฉ์งํฉ๋๋ค. ํ์ง๋ง ํฌ๊ด์ ์ธ ์ฝ๋ ํ์ง, ๋ณด์ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ชฉํ๋ก ํ๋ ์กฐ์ง์ ๊ฒฝ์ฐ, rustc์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ ์ ์ฒด ํด๊ฒฐ์ฑ
์ด ์๋ ์์์ ์ผ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค. ํ์ ์ปดํ์ผ๋ฌ์ ๊ฒ์ฌ ๊ธฐ๋ฅ๊ณผ ์ ์ฉ ์ ์ ๋ถ์ ๋๊ตฌ, ๋ฆฐํฐ, ๋ณด์ ์ค์บ๋, ๊ทธ๋ฆฌ๊ณ CI ํตํฉ ํ์ง ๊ฒ์ดํธ๋ฅผ ๊ฒฐํฉํ์ฌ ๋์ฑ ๊ด๋ฒ์ํ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ๊ณ ๋์ฑ ํ๋ถํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํจ์ผ๋ก์จ ๊ฐ์ฅ ํฐ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
ํ๋ฌผ ๊ฐ์ฌ
cargo-audit Rust ํ๋ก์ ํธ๋ฅผ ์ํ ์ ๋ฌธ ๋ณด์ ๊ฐ์ฌ ๋๊ตฌ๋ก, ๊ฐ๋ฐ์๊ฐ ์ข
์์ฑ์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ์๋ณํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. Rust์ ํจํค์ง ๊ด๋ฆฌ ์ํ๊ณ์ ๊ธด๋ฐํ๊ฒ ํตํฉ๋๋ฉฐ, RustSec Advisory Database๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์์๊ฒ ์คํ ๊ฐ๋ฅํ ์ต์ ๋ณด์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. Cargo.lock ํ์ผ cargo-audit ํ์ด ์ํํธ์จ์ด์ ์ํฅ์ ์ค ์ ์๋ ๊ณต๊ณต ๋ณด์ ๊ถ๊ณ ์ฌํญ์ ์๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
์ด ๋๊ตฌ๋ Rust์ ๊ฐ๋ฐ ์ํฌํ๋ก์ ์ค์ํ ๋ณด์ ๊ฒ์ฆ ๊ณ์ธต์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ์คํ ์์ค์ ์ ๋ฌธ์ ์ธ ๋งฅ๋ฝ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. Rust์ ๊ฐ๋ฐ ์ํฌํ๋ก๋ ์ฃผ๋ก ์ธ์ด ์์ค์์ ์ ํ์ฑ๊ณผ ์์ ์ฑ์ ์ด์ ์ ๋ง์ถฅ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- RustSec Advisory ๋ฐ์ดํฐ๋ฒ ์ด์ค ํตํฉ
์ปค๋ฎค๋ํฐ์์ ๊ด๋ฆฌํ๋ Rust ํฌ๋ ์ดํธ ๋ณด์ ๊ถ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ์์ฑ์ ํ์ธํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ ์ ์๋ ค์ง ์ทจ์ฝ์ ์ ์ธ์งํ๋๋ก ๋ณด์ฅํฉ๋๋ค. - ํ๋ฌผ ์ํฌํ๋ก์ฐ์์ ์ฌ์ด ํตํฉ
๊ฐ๋จํ ๊ฒ์ ํตํด ์คํ๋ฉ๋๋คcargo audit๋ก์ปฌ ๊ฐ๋ฐ ๋ฃจํด์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ ๋ช ๋ น์ ๋๋ค. ๋ณ๋์ ๊ตฌ์ฑ ์์ด ํ์ค Rust ๋๊ตฌ์ ํธํ๋ฉ๋๋ค. - ์์ธํ๊ณ ์คํ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ
๋ณด๊ณ ์์๋ ์ํฅ์ ๋ฐ์ ํจํค์ง ๋ฒ์ , ์ฌ๊ฐ๋ ์์ค, CVE ์๋ณ์, ํจ์น ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฑ์ ์ ์๋ ํด๊ฒฐ ๋จ๊ณ๊ฐ ํฌํจ๋ฉ๋๋ค. - CI/CD ํ์ดํ๋ผ์ธ ํธํ์ฑ
๋ชจ๋ ๋น๋ ๋๋ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ๋ํด ์๋์ผ๋ก ๋ณด์ ๊ฒ์ฌ๋ฅผ ์ํํ๊ธฐ ์ํด ์ง์์ ์ธ ํตํฉ ์์คํ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. - yanked ํจํค์ง ๊ฐ์ง ์ง์
crates.io์์ ๊ฐ์ ธ์จ ํฌ๋ ์ดํธ์ ์์กดํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ์์๊ฒ ์๋ฆผ์ ๋ณด๋ด ์ ์ง ๊ด๋ฆฌ๋์ง ์๊ฑฐ๋ ๋ฌธ์ ๊ฐ ์๋ ํจํค์ง๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ์ ๊ทน์ ์ธ ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ง์ญ ์ฌํ ๊ธฐ์ฌ
RustSec ํ๋ก์ ํธ์ ์ง์์ ๋ฐ๊ณ Rust ์ํ๊ณ ์ ๋ฐ์ ๋๋ฆฌ ์ฑํ๋์ด ์๋ก์ด ๊ถ๊ณ ์ฌํญ์ด ๋ฐํ๋ ๋๋ง๋ค ์ต์ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
DaVinci์๋ cargo-audit ๋ณด์์ ์ค์ํ๋ Rust ํ์๊ฒ๋ ํ์์ ์ธ ๋๊ตฌ์ด์ง๋ง, ์ฌ์ฉ์๊ฐ ์ ์ผํ ๋ณด์ ์๋จ์ผ๋ก ์์กดํ์ง ์๋๋ก ํ๊ธฐ ์ํด ๊ณ ๋ คํด์ผ ํ ์ค์ํ ํ๊ณ๊ฐ ์์ต๋๋ค.
์๋ ค์ง ์ทจ์ฝ์ ์ ๋ํ ์ง์ค์ ์ธ ๋ฒ์
cargo-audit RustSec Advisory Database์ ๊ฒ์๋ ์ทจ์ฝ์ ๋ง ํ์งํฉ๋๋ค. ์ฝ๋๋ ์ข
์์ฑ์์ ์๋ก์ด ๋ณด์ ๊ฒฐํจ์ด๋ ์๋ ค์ง์ง ์์ ๋ณด์ ๊ฒฐํจ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ํฌ๋ ์ดํธ์ ์์ง ๊ณต๊ฐ๋์ง ์์ ๋ณด์ ๋ฒ๊ทธ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ, cargo-audit ์ด๋ฅผ ๊ฐ์งํ์ง ๋ชปํ๋ฏ๋ก ํ์ด ์ ์ฌ์ ์ผ๋ก ๋
ธ์ถ๋ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ์ฝ๋์ ์ ์ ์ฝ๋ ๋ถ์ ์์
์ด ๋๊ตฌ๋ ์ข
์์ฑ ๋ฉํ๋ฐ์ดํฐ๋ง ๋ถ์ํฉ๋๋ค. Cargo.lock ํ์ผ์
๋๋ค. ํ๋ก์ ํธ ์์ฒด ์์ค ์ฝ๋์์ ์์ ํ์ง ์์ ํจํด, ์์ ํ์ง ์์ ์ฌ์ฉ ๋ฐฉ์, ๋
ผ๋ฆฌ ์ค๋ฅ ๋๋ ํ๋์ฝ๋ฉ๋ ๋ณด์ ์ ๋ณด๋ฅผ ๊ฒํ ํ์ง ์์ต๋๋ค. ์์ฒด ์ฝ๋์ ๋ณด์์ ๊ฒ์ฆํด์ผ ํ๋ ํ์ ๊ฒฝ์ฐ, ์ถ๊ฐ์ ์ธ ์ ์ ๋ถ์ ๋ฐ ์๋ ๊ฒํ ๊ฐ ํ์์ ์
๋๋ค.
๊ถ๊ณ ์ฌํญ์ ๋์ด์๋ ์ ์ด์ ์ข ์์ฑ์ ๋ํ ์ ํ๋ ํต์ฐฐ๋ ฅ
DaVinci์๋ cargo-audit ์ง์ ๋ฐ ์ ์ด ์ข
์์ฑ์์ ๊ถ๊ณ ๋ฅผ ํ์ํ ์๋ ์์ง๋ง, ์ค์ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๋ถ์ํ์ฌ ์ทจ์ฝํ ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ํ๋จํ ์๋ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ์ฌ์ฉ๋์ง ์๋ ์ฝ๋ ๊ฒฝ๋ก์ ์ทจ์ฝ์ ์ ๋ํด์๋ ๊ถ๊ณ ๊ฐ ํ์๋ ์ ์์ผ๋ฉฐ, ์ค์ ์ํ์ ํ๋จํ๊ธฐ ์ํด ์๋ ํ๊ฐ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ท์น ์ง์ ๋๋ ์กฐ์ง๋ณ ์ ์ฑ ์์
cargo-audit ๋ด๋ถ ๋ณด์ ์ ์ฑ
์ด๋ ์ฝ๋ฉ ์ง์นจ์ ์ํํ ์ ์์ต๋๋ค. ๊ณต๊ฐ ๊ถ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๊ฒ ์ธ์ ์ฌ์ฉ์ ์ง์ ๋ณด์ ๊ฒ์ฌ, ์กฐ์ง๋ณ ๊ถ๊ณ ๋๋ ์ข
์์ฑ ์ ํ ๊ท์น์ ์ ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ์์ฑ ๋ฐ ์ ๋ฐ์ดํธ ์๊ตฌ ์ฌํญ
ํจ์จ์ฑ์ ๋์ด๋ ค๋ฉด ๋ก์ปฌ RustSec ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ๋ณธ์ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ํ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ง ๋ชปํ๋ฉด ๊ถ๊ณ ์ฌํญ์ ๋์น๊ฒ ๋ ์ํ์ด ์์ต๋๋ค. ์ ๋ฐ์ดํธ๋ ๊ฐ๋จํ์ง๋ง, ์ด ์ ์ง ๊ด๋ฆฌ ๋จ๊ณ๋ ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ํด ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋ ๊ด๋ฒ์ํ ์ทจ์ฝ์ฑ ๊ด๋ฆฌ ์์คํ ๊ณผ์ ํตํฉ ์์
cargo-audit ๊ฐ๋ฐ์์๊ฒ๋ ์ ์ฉํ์ง๋ง ๊ธฐ์
๋ณด์ ์์คํ
๊ณผ์ ํตํฉ์๋ ์ ํ์ ์ธ ํฐ๋ฏธ๋ ์นํ์ ์ธ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ์ถ๊ฐ ์คํฌ๋ฆฝํ
์ด๋ ์ฌ์ฉ์ ์ง์ ์์ด๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ทจ์ฝ์ ์ถ์ ๋๊ตฌ, ๋์๋ณด๋ ๋๋ ํฐ์ผํ
์์คํ
์ผ๋ก ์ ์กํ ์ ์๋ ๊ธฐ๋ณธ ์ง์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
๋ผ์ด์ผ์ค ์ค์ ํ์ธ์ด ์์
๋ณด์ ๊ฐ์ฌ์ ํ์์ ์ด์ง๋ง, cargo-audit ์ข
์์ฑ ๋ผ์ด์ ์ค์ ๊ท์ ์ค์ ๋๋ ์ ์ฑ
์๋ฐ ์ฌ๋ถ๋ฅผ ๋ถ์ํ์ง ์์ต๋๋ค. ๋ฒ๋ฅ ๋๋ ๊ท์ ์ค์ ์๊ตฌ ์ฌํญ์ด ์๋ ํ์ ๋ผ์ด์ ์ค ์ํ์ ๊ฒ์ฆํ๊ธฐ ์ํด ์ถ๊ฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
cargo-audit Rust ํ๋ก์ ํธ์์ ๊ณต๊ธ๋ง ๋ณด์์ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ๋๊ตฌ์
๋๋ค. ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด ์ด๊ธฐ์ ์ข
์์ฑ์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ํ์งํจ์ผ๋ก์จ ํ์ ์ฌ์ ์ ๋์ํ๊ณ ๋๋ฆฌ ๋ณด๊ณ ๋ ๋ณด์ ๊ฒฐํจ์ ๋ํ ๋
ธ์ถ์ ์ค์ผ ์ ์์ต๋๋ค. ํ์ง๋ง ์ ์ฉ ๋ฒ์๊ฐ ์ ํ์ ์ด๋ฏ๋ก, ํ๋ก๋์
ํ๊ฒฝ์์ ํฌ๊ด์ ์ธ ์ํํธ์จ์ด ๋ณด์์ ์ ๊ณตํ๊ธฐ ์ํด์๋ ๋ณด์ ์ฝ๋ฉ ํ์ค, ์ฝ๋ ๊ฒํ , ์ ์ ๋ถ์, ์ทจ์ฝ์ ๊ด๋ฆฌ ์์คํ
๋ฑ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ค๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ฃจ๋๋ผ
Rudra๋ ์์ ํ์ง ์์ Rust ์ฝ๋์์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋๋ก ํน๋ณํ ์ค๊ณ๋ ๊ณ ๊ธ ์ ์ ๋ถ์ ๋๊ตฌ์
๋๋ค. ๊ด์ฉ์ ์ธ ์คํ์ผ์ด๋ ์๋ ค์ง ๋ณด์ ๊ถ๊ณ ๋ฅผ ์ ์ฉํ๋ ๋ฐ ์ค์ ์ ๋๋ ๋๋ถ๋ถ์ Rust ๋ถ์ ๋๊ตฌ์ ๋ฌ๋ฆฌ, Rudra๋ ๊ฐ๋ฐ์๊ฐ Rust๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ํ ์ ์๋ ๋ฏธ๋ฌํ๊ณ ๋ณต์กํ ๋ฒ๊ทธ๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด ์ฌ์ธต์ ์ธ ์ ์ ๋ถ์์ ์ํํฉ๋๋ค. unsafe ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ ํ๋ ๋ณด์ฅ์ ์ฐํํ๋ ๋ธ๋ก์
๋๋ค.
์๋ ํ์ด์ค๋ถ(ํ์ฌ ๋ฉํ) ์ฐ๊ตฌ์ง์ด ๊ฐ๋ฐํ Rudra๋ Rust ์ํ๊ณ์ ์ฌ๊ฐํ ๊ฐ๊ทน์ ํด์ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. Rust์ ์์ ๊ถ ์์คํ ์ ์์ ํ ์ฝ๋์์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๋ณด์ฅํ์ง๋ง, ์์ ํ์ง ์์ ์ฝ๋๋ ์ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ, FFI ๋ฐ์ธ๋ฉ, ๊ทธ๋ฆฌ๊ณ ์ฑ๋ฅ์ด ์ค์ํ ๋ชจ๋์์ ์ฌ์ ํ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. Rudra์ ๋ชฉ์ ์ ์ปดํ์ผ๋ฌ ๊ฒ์ฌ๊ฐ ์๋์ ์ผ๋ก ์ฐํ๋๋ ์ํฉ์์๋ Rust์ ๋ช ์ฑ๊ณผ ๋์ผํ ์์ค์ ์์ ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ด๋ฌํ ์์ ํ์ง ์์ ๋ธ๋ก์ ์๊ฒฉํ๊ฒ ๋ถ์ํ๋ ๊ฒ์ ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ์์ ํ์ง ์์ ์ฝ๋ ๋ธ๋ก์ ์ ์ ๋ถ์
์ปดํ์ผ๋ฌ์ ์์ ์ฑ ๋ณด์ฅ์ด ์ ์ฉ๋์ง ์๋ Rust ์ฝ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ๋ถ๋ถ์ ๊ณต๋ตํฉ๋๋ค. ์ฌ์ฉ ํ ํด์ (use-after-free), ๋ฒํผ ์ค๋ฒํ๋ก, ๋๊ธ๋ง ํฌ์ธํฐ์ ๊ฐ์ ์ ์ฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ์ทจ์ฝ์ ์ ํ์ ํฉ๋๋ค. - ๊ฑด์ ์ฑ ๋ฌธ์ ๊ฐ์ง
๋ค์ด์คํธ๋ฆผ ํฌ๋ ์ดํธ์์ ๋ฉ๋ชจ๋ฆฌ ์์์ ์ผ์ผํค๊ฑฐ๋ Rust์ ์ ํ ์์ ์ฑ์ ์๋ฐํ ์ ์๋ ์์ ํ์ง ์์ API๋ฅผ ์ฐพ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค. ํด๋น API์ ์์ ํ์ง ์์ ์ฌ์ฉ์ด ๋จ๋ ์ผ๋ก ์ฌ์ฉ๋์์ ๋๋ ํ๋นํด ๋ณด์ด๋๋ผ๋ ๋ง์ ๋๋ค. - ์ ์ฐจ ๊ฐ ๋ถ์
์์ ํ์ง ์์ ์์ ์ด ๊ธฐ๋ฅ ๊ฒฝ๊ณ๋ฅผ ๋์ด ํ์ฐ๋๋ ๋ฐฉ์์ ์กฐ์ฌํ์ฌ ๋ณด๋ค ๊ฐ๋จํ ์ ์ฐจ์ ๋๊ตฌ๊ฐ ๋์น ์ ์๋ ์ทจ์ฝ์ ์ ํฌ์ฐฉํฉ๋๋ค. - ์์ ํ์ง ์์ ์ฝ๋๊ฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์์ ์ง์คํ์ธ์
ํนํ ์ํ๊ณ์์ ๋๋ฆฌ ์ฌ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์์๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ํ์ ๋งค์ฐ ์ ์ฉํ๋ฉฐ, ์ฑ๋ฅ์ด๋ ์ ์ฐ์ฑ ์ธก๋ฉด์์ ์์ ํ์ง ์์ ์์๋ฅผ ์ฌ์ฉํ ๋์๋ ์์ ์ฑ์ ๋ณด์ฅํด์ผ ํฉ๋๋ค. - ์ฐ๊ตฌ ์ค์ฌ ๋์์ธ
ํ์ ์ฐ๊ตฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Rust์ ์๋ฏธ๋ก ๊ณผ ์ผ๋ฐ์ ์ธ ์์ ํ์ง ์์ ํจํด์ ๋ํ ๊ณต์ ๋ชจ๋ธ์ ํ์ฉํ์ฌ ๋ณต์กํ ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํฉ๋๋ค. - ์คํ ์์ค ๊ฐ์ฉ์ฑ
Rust ์ปค๋ฎค๋ํฐ์์ ๋ฌด๋ฃ๋ก ์ด์ฉํ ์ ์์ผ๋ฉฐ, ๋๋ฆฌ ์ฌ์ฉ๋๋ ์์์ ์์ ์ฑ์ ๊ฐ์ ํ๊ณ ์ ์ฒด ์ํ๊ณ์ ๊ธฐ์ค์ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
Rudra๋ ์ธ์์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๊ณ ๋๋ก ์ ๋ฌธํ๋ ๋๊ตฌ์ด์ง๋ง, ๊ฐ๋ฐํ์ด ์ ์ ๋ถ์ ์ํฌํ๋ก์ ์ฌ์ฉํ ๊ฒ์ ๊ณ ๋ คํ ๋ ์์์ผ ํ ์ค์ํ ์ ์ฝ ์กฐ๊ฑด๋ ์์ต๋๋ค.
์์ ํ์ง ์์ ๋ น์๋ง ์ด์ ์ ๋ง์ถ๋ค
Rudra์ ์ฃผ์ ํ๊ณ๋ ์ ์ฉ ๋ฒ์์ ๋๋ค. ์์ ํ์ง ์์ ๋ธ๋ก์ ๋ถ์ํ๊ณ ํด๋น ๋ธ๋ก์์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋๋ก ํน๋ณํ ์ค๊ณ๋์์ต๋๋ค. ์คํ์ผ ๋ฌธ์ , ๋ ผ๋ฆฌ์ ์ค๋ฅ ๋๋ ์ผ๋ฐ์ ์ธ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํ์ธํ๊ธฐ ์ํด ์์ ํ Rust ์ฝ๋๋ฅผ ๋ถ์ํ๊ฑฐ๋ ๋ฆฐํธ(lint)ํ์ง ์์ต๋๋ค. ์์ ํ์ง ์์ ์ฝ๋๋ฅผ ๊ฑฐ์ ๋๋ ์ ํ ์ฌ์ฉํ์ง ์๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ Rudra๋ ์ ํ์ ์ธ ๊ฐ์น๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋์ ๋ณต์ก์ฑ๊ณผ ์ฐ๊ตฌ-ํ๋กํ ํ์ ํน์ฑ
Rudra๋ ์ฐ๊ตฌ ํ๋ก์ ํธ๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ์คํ ์์ค๋ก ์ ๊ณต๋์ง๋ง, ํ๋ก๋์ ์ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ๋ฐ์ ๋๊ตฌ๋งํผ ์ธ๋ จ๋ ์ฌ์ฉ์ ๊ฒฝํ์ด๋ ํตํฉ ํธ์์ฑ์ ํญ์ ์ ๊ณตํ๋ ๊ฒ์ ์๋๋๋ค. ํ์ Rudra์ ํจ๊ณผ์ ์ธ ์ค์น, ๊ตฌ์ฑ ๋ฐ ์ถ๋ ฅ ๊ฒฐ๊ณผ ํด์์ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค.
์ ํ๋ CI/CD ํตํฉ ๊ธฐ๋ฅ
๊ฐ๋จํ ๋ฆฐํ ๋๊ตฌ๋ ๋ณด์ ์ค์บ๋์ ๋ฌ๋ฆฌ Rudra๋ ์ผ๋ฐ์ ์ธ CI/CD ์์คํ ์ ๋ํ ๊ธฐ๋ณธ ํตํฉ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์๋ํ๋ ํ์ดํ๋ผ์ธ์ ํตํฉํ๋ ค๋ฉด ๋ง์ถคํ ์คํฌ๋ฆฝํ ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ ๋ด DevSecOps ์ธ๋ ฅ์ด ์๋ ํ์๊ฒ๋ ์ฅ๋ฒฝ์ด ๋ ์ ์์ต๋๋ค.
์ผ๋ฐ ๋ณด์ ์ทจ์ฝ์ ์ค์บ๋ ์์
Rudra๋ (cargo-audit์ฒ๋ผ) ์ข ์์ฑ์ ์๋ ค์ง ์ทจ์ฝ์ ์ ๊ฒ์ฌํ์ง ์์ผ๋ฉฐ, ์ค๋๋ ํฌ๋ ์ดํธ์ ์์ ํ์ง ์์ ์ฌ์ฉ์ ํ์ํ์ง๋ ์์ต๋๋ค. ๋ํ ํ๋์ฝ๋ฉ๋ ๋น๋ฐ, ๋ถ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ, ์์ ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์์ ๊ณผ ๊ด๋ จ ์๋ API ์ค์ฉ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ ๊ฒ์ฌํ์ง ์์ต๋๋ค. ํ์ ํฌ๊ด์ ์ธ ๋ณด์ ๋ฒ์๋ฅผ ํ๋ณดํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ๋ณด์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ท์น ์์ฑ ๋ถ์กฑ
Rudra๋ ํ์ฌ ํน์ ํ๋ก์ ํธ์ ์๊ตฌ์ ๋ง๋ ์ฌ์ฉ์ ์ง์ ๊ฒ์ฌ ๋๋ ๊ท์น ์ ์๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ์๋ ค์ง ์์ ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฒ๊ทธ ์ ํ์ ๋์์ผ๋ก ํ๋ ์ ๋ณ๋ ๋ถ์ ์ธํธ์ ์ค์ ์ ๋ก๋๋ค. ๋๋ฉ์ธ๋ณ ์ง์นจ์ด๋ ์ํคํ ์ฒ ์ ์ฑ ์ ์ํํ๋ ค๋ ์กฐ์ง์ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
์ ํ๋ ๋ณด๊ณ ๋ฐ ๊ฐ๋ฐ์ UX
Rudra์ ์ถ๋ ฅ์ Rust ๋ด๋ถ ๊ตฌ์กฐ์ ์์ ํ์ง ์์ ์ฝ๋ ๊ดํ์ ์ต์ํ ๊ธฐ์ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ณด๊ณ ์๋ ๋งค์ฐ ์์ธํ ์ ์์ง๋ง, Rust์ ์์ ๋ชจ๋ธ์ ๋ํ ๊น์ ์ง์์ด ์๋ ๊ฐ๋ฐ์์๊ฒ๋ ํด์ํ๊ธฐ ์ด๋ ค์ธ ์ ์์ผ๋ฉฐ, ์ถ๊ฐ์ ์ธ ๊ต์ก์ด๋ ์ ๋ฌธ ์ง์์ด ํ์ํฉ๋๋ค.
๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์์ ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
Rudra๋ ํ๋ก์์ ๊ฐ ๋ถ์๊ณผ ์๋ฏธ ๋ถ์์ ์ํํ๊ธฐ ๋๋ฌธ์ ๊ณ์ฐ ์ง์ฝ์ ์ธ ๋ถ์์ด ํ์ํ ์ ์์ต๋๋ค. ๋งค์ฐ ํฐ ์ฝ๋๋ฒ ์ด์ค์์ ์คํํ๋ฉด ๋ถ์ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ผ๋ฉฐ, ์ ์คํ ํ๋ ์์ด ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ์์ ์์ฃผ ์ฌ์ฉํ๊ธฐ์๋ ์ค์ฉ์ ์ด์ง ์์ ์ ์์ต๋๋ค.
Rudra๋ ์์ ํ์ง ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฌ์ฉํ๋ ๋ชจ๋ Rust ํ์๊ฒ ํ์์ ์ธ ๋๊ตฌ์ ๋๋ค. Rust์ ๊ฐ๋ ฅํ ์์ ์ฑ ๋ณด์ฅ๊ณผ ์์ ํ์ง ์์ ์ฝ๋๊ฐ ์ ๊ณตํ๋ ์ ์ฐ์ฑ ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ์ ์์คํ ์ ๊ฐ์ฅ ์ฑ๋ฅ์ด ์ค์ํ ๋ถ๋ถ์์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ์ต์ฐ์ ์ผ๋ก ๊ณ ๋ คํ๋๋ก ํฉ๋๋ค. ํ์ง๋ง Rudra์ ์ ๋ฌธ์ ์ธ ์ด์ , ํตํฉ์ ์ด๋ ค์, ๊ทธ๋ฆฌ๊ณ ๊ณ ๊ธ ์ถ๋ ฅ ๊ธฐ๋ฅ ๋๋ฌธ์ ๋ฆฐํฐ, ์ข ์์ฑ ์ค์บ๋, ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด์ ์ฝ๋ ๊ฒํ ๋ฐฉ์์ ํฌํจํ๋ ๋ ๊ด๋ฒ์ํ ์ ์ ๋ถ์ ๋ฐ ๋ณด์ ์ ๋ต์ ์ผ๋ถ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
๋ฏธ๋ผ์ด
MIRAI๋ Rust์ฉ ๊ณ ๊ธ ์ ์ ๋ถ์ ๋๊ตฌ๋ก, ์ปดํ์ผ ์์ ์ ํ๋ก๊ทธ๋จ ์์ฑ์ ๋ํ ์ ํํ ํ์์ ๊ฒ์ฆ์ ์ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ถ์์ ํด์์ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ ์ํ์ ๋ํ ์ถ๋ก ์ ํตํด, ๊ธฐ์กด์ ๋ฆฐํ (linting)์ด๋ ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ฅผ ํต๊ณผํ์ง ๋ชปํ ์ ์๋ ๋ ผ๋ฆฌ ์ค๋ฅ, ๊ณ์ฝ ์๋ฐ, ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ ๋ณด์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํฉ๋๋ค.
์คํ์ผ์ด๋ ๊ด์ฉ์ ์ฌ์ฉ์๋ง ์ง์คํ๋ ๋๊ตฌ์ ๋ฌ๋ฆฌ, MIRAI๋ ์๋ฏธ์ ์ ํ์ฑ์ ์ค์ํฉ๋๋ค. Rust ํ๋ก๊ทธ๋จ์ ๋ถ์ํ์ฌ ์ฝ๋์ ์ ์๋ ๋จ์ธ, ์ ์ ์กฐ๊ฑด, ์ฌํ์กฐ๊ฑด, ๋ถ๋ณ์์ ํ์ธํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ฐฐํฌ ์ ์ ์ฌ๊ฐํ ๋ ผ๋ฆฌ์ ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํ ์ ์๋๋ก ํฉ๋๋ค. MIRAI์ ๊ฐ์ ์ ๋ถ๊ธฐ, ๋ฃจํ, ํจ์ ํธ์ถ ๋ฑ ๋ณต์กํ ํ๋ก๊ทธ๋จ ๋์์ ๋ชจ๋ธ๋งํ์ฌ ๋ชจ๋ ์คํ ํ๊ฒฝ์์ ์ค์ํ ์์ฑ์ด ์ ์ง๋๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ๊ณ์ฝ์ ๊ณต์์ ๊ฒ์ฆ
๊ฐ๋ฐ์๊ฐ Rust์ ์ฌ์ ์กฐ๊ฑด, ์ฌํ ์กฐ๊ฑด ๋ฐ ๋ถ๋ณ์์ ์ง์ ํ ์ ์๋๋ก ํฉ๋๋ค.pre,post๊ธ๋ ๋ฐ์ผassert๋งคํฌ๋ก(๊ณ์ฝ ํฌ๋ ์ดํธ๋ฅผ ํตํด). MIRAI๋ ์ด๋ฌํ ์กฐ๊ฑด์ด ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์์ ์ ์ง๋๋์ง ์ ์ ์ผ๋ก ๊ฒ์ฆํฉ๋๋ค. - ๋
ผ๋ฆฌ ์ค๋ฅ ๊ฐ์ง
๋๋ฌํ ์ ์๋ ์ฝ๋, ํญ์ ์คํจํ๋ ์ด์ค์ , ์คํ ๋ถ๊ฐ๋ฅํ ๋ถ๊ธฐ๋ฅผ ์๋ณํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ ์ด ํ๋ฆ์ ๋จ์ํํ๊ณ ์์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค. - ๊ณ ๊ธ ์ฌ๋ณผ๋ฆญ ์คํ
์ถ์์ ํด์์ ์ฌ์ฉํ์ฌ ์ฝ๋์ ์ฌ๋ฌ ๊ฒฝ๋ก๋ฅผ ํ์ํ๊ณ , ๊ฐ๋จํ ๊ตฌ๋ฌธ ๋ถ์์ผ๋ก๋ ๋ฐ๊ฒฌ๋์ง ์๋ ๋ฒ๊ทธ๋ฅผ ๊ฐ์งํฉ๋๋ค. - ๋ณต์กํ Rust ๊ธฐ๋ฅ ๋ถ์ ์ง์
์ด๊ฑฐํ, ํจํด ๋งค์นญ, ์ ๋ค๋ฆญ, ์์ ๊ถ ์๋ฏธ๋ก ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ Rust ๊ตฌ์กฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ค์ ์ฝ๋์ ์ค์ง์ ์ธ ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. - Cargo์์ ํตํฉ
ํ์ค Rust ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉ๋ ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฏ๋ก ์ต์ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค. - ์คํ ์์ค ๊ฐ์ฉ์ฑ
์ง์์ ์ธ ๊ฐ๋ฐ ๋ฐ ์ฐ๊ตฌ ์ง์์ ํตํด Rust ์ปค๋ฎค๋ํฐ์์ ๋ฌด๋ฃ๋ก ์ ๊ณต๋ฉ๋๋ค.
MIRAI๋ ๊ณต์์ ์ธ ๋ฐฉ๋ฒ์ ์ค์ Rust ๊ฐ๋ฐ์ ์ ์ฉํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ด์ง๋ง, ํ์ด ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํ ํน์ ์ ํ ์ฌํญ๊ณผ ๊ณผ์ ๋ ์์ต๋๋ค.
๊ณ์ฝ ๊ธฐ๋ฐ ๊ฒ์ฆ์ ๋ํ ์ข์ ์ด์
MIRAI๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ๋ช ์์ ๊ณ์ฝ๊ณผ ๋จ์ธ๋ฌธ์ ๊ฒ์ฌํ๋ ๋ฐ ํ์ํ์ง๋ง, ์ด๋ฌํ ์ฃผ์ ์์ด๋ ๋ชจ๋ ์ ํ์ ๋ฒ๊ทธ๋ฅผ ์๋์ผ๋ก ์ก์๋ผ ์ ์์ต๋๋ค. MIRAI์ ํจ๊ณผ๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋์ ์ ์ ์กฐ๊ฑด๊ณผ ๋ถ๋ณ์์ ์ผ๋ง๋ ์ฒ ์ ํ๊ฒ ๋ช ์ํ๋์ง์ ๋ฌ๋ ค ์์ต๋๋ค. ์ ์์ฑ๋ ๊ณ์ฝ๋ฌธ์ด ์๋ค๋ฉด MIRAI์ ๋ถ์ ๋ฒ์๋ ์ ํ๋ ๊ฒ์ ๋๋ค.
๊ฐํ๋ฅธ ํ์ต ๊ณก์ ๋ฐ ์ ๋ฌธ ์ง์ ์๊ตฌ ์ฌํญ
MIRAI๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ ํํ ๊ณ์ฝ์ ์์ฑ ๋ฐ ๋ฐ๋ก ํด์์ ํฌํจํ ์ ํ์ ๊ฒ์ฆ ๊ฐ๋ ์ ๋ํ ์ดํด๊ฐ ํ์ํฉ๋๋ค. ์ ํ์ ๊ฒ์ฆ ๋ฐฉ๋ฒ์ ๋ํ ์ฌ์ ๊ฒฝํ์ด ์๋ ํ์ ๊ฒฝ์ฐ, ์จ๋ณด๋ฉ์ด ์ด๋ ค์ธ ์ ์์ผ๋ฉฐ, ์ ์ฌ์ ์ผ๋ก ๊ต์ก ๋ฐ ํ๋ก์ธ์ค ๋ณ๊ฒฝ์ด ํ์ํ ์ ์์ต๋๋ค.
ํตํฉ ๋ฐ ์ฌ์ฉ์ฑ ์ ํ
MIRAI๋ Cargo๋ฅผ ํตํด ์ฌ์ฉํ ์ ์์ง๋ง, ๊ฐ๋ฐ์ ์ํฌํ๋ก ํตํฉ์ ๋จ์ํ ๋ฆฐํ ๋๊ตฌ๋ณด๋ค ์์ฑ๋๊ฐ ๋จ์ด์ง๋๋ค. ์ฌ์ธต์ ์ธ IDE ํตํฉ์ด๋ ์ฌ์ฉ์ ์นํ์ ์ธ GUI๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์์ ๊ณ ๋๋ก ํตํฉ๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ต์ํ ํ์๊ฒ๋ ๋์ ์ด ์ด๋ ต์ต๋๋ค.
๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์์ ์ฑ๋ฅ ์ค๋ฒํค๋
MIRAI์ ๊ณ ๊ธ ๋ถ์์ ์ฐ์ฐ ์ง์ฝ์ ์ ๋๋ค. ์ฌ๋ฌ ๊ธฐ๋ฅ๊ณผ ๊ฒฝ๋ก๊ฐ ์๋ ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ถ์ํ ๊ฒฝ์ฐ ์๋นํ ๋ถ์ ์๊ฐ์ด ์์๋ ์ ์์ผ๋ฉฐ, ์ด๋ ์ ํ์ ํ๊ฒํ ์์ด ๋น ๋ฅธ ๋ฐ๋ณต ์ฃผ๊ธฐ๋ ์ง์์ ์ธ ํตํฉ ์คํ์ ์ ์ฉํ๊ธฐ์ ์ ํ์ด ๋ ์ ์์ต๋๋ค.
๋น๊ณ์ฝ ๋ฌธ์ ๊ฐ์ง ์ ํ
MIRAI๋ Clippy๋ cargo-audit ๊ฐ์ ๋๊ตฌ๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค. ๊ด์ฉ์ ์ธ ์คํ์ผ์ ์ ์ฉํ๊ฑฐ๋, ์ข ์์ฑ ์ทจ์ฝ์ ์ ํฌ์ฐฉํ๊ฑฐ๋, ์ ์ธ๋ ๊ณ์ฝ๊ณผ ๊ด๋ จ ์๋ ์์ ํ์ง ์์ ์ฝ๋ ์ค์ฉ์ ์๋ณํ์ง ์์ต๋๋ค. MIRAI์ ๋ฒ์๋ ์ฌ์ฉ์ ์ ์ ๋ ผ๋ฆฌ ์์ฑ ๋ฐ ๋ถ๋ณ์ ๊ฒ์ฆ์ ๊ตญํ๋ฉ๋๋ค.
๋ด์ฅ๋ ๋ณด์ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํตํฉ ์์
Cargo-audit๊ณผ ๋ฌ๋ฆฌ MIRAI๋ ์ข ์์ฑ์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ํ์ธํ์ง ์์ต๋๋ค. ์ฝ๋์์ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ ๋ ผ๋ฆฌ์ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ์๋ ์์ง๋ง, CVE๋ ์ ๊ฑฐ๋ ํจํค์ง๋ ๋ชจ๋ํฐ๋งํ์ง ์์ต๋๋ค.
๋๊ท๋ชจ ํ์ ์ํ ์ ํ๋ ์๋ํ
MIRAI์ ์ถ๋ ฅ์ ์์ธํ๊ณ ์ ํํ์ง๋ง ๋๊ท๋ชจ ํ ์ํฌํ๋ก์ ์ ํฉํ์ง ์์ต๋๋ค. ๊ตฌ์กฐํ๋ ๋ณด๊ณ ํ์, ๋ฌธ์ ์ถ์ ํตํฉ, ๋๋ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๊ณ์ฝ ์๋ฐ ์ฌํญ์ ์ถ์ ํ๋ ๋์๋ณด๋์ ๋ํ ๊ธฐ๋ณธ ์ง์์ด ๋ถ์กฑํ์ฌ ํ์ ์์ ํ ์๋ํ๋ฅผ ์ํด ์ถ๊ฐ ๋๊ตฌ๋ฅผ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ณ์ฝ์ ๋ํ ์ข ์์ฑ
์๋ง๋ ๊ฐ์ฅ ํฐ ํ๊ณ๋ MIRAI์ ์ฑ๋ฅ์ด ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ ๊ณ์ฝ์์ ํ์ง์ ๋ฌ๋ ค ์๋ค๋ ์ ์ผ ๊ฒ์ ๋๋ค. ์ ํํ๊ณ ์์ ํ ๊ณ์ฝ์๋ฅผ ๋ช ์ํ๋ ์ผ๊ด๋ ์์น์ด ์๋ค๋ฉด MIRAI์ ๋ฌธ์ ๊ฐ์ง ๋ฅ๋ ฅ์ด ์ ํ๋์ด, ๊ฒฐ๊ตญ ๊ฐ๋ ฅํ ํ์ํฌ์ ๋ฐ๋ผ ๊ฐ์น๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค.
MIRAI๋ Rust ํ๋ก์ ํธ์ ์ ์ ๊ฒ์ฆ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ธฐ์กด ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ๋ฐ๋ผ์ฌ ์ ์๋ ์์ค์ ๋ณด์ฆ์ ์ ๊ณตํฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ํ ๊ณ์ฝ์ ์๊ฒฉํ๊ฒ ๊ฒ์ฆํจ์ผ๋ก์จ ๊ฐ๋ฐ ์ด๊ธฐ์ ๋ชจ๋ ์ข ๋ฅ์ ๋ ผ๋ฆฌ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํ์ง๋ง MIRAI์ ์ ๋ฌธ์ ์ธ ์ด์ , ํ์ต ์๊ตฌ ์ฌํญ, ๊ทธ๋ฆฌ๊ณ ๋ช ์์ ์ฃผ์์ ๋ํ ์์กด์ฑ ๋๋ฌธ์ MIRAI๋ ๋ค๋ฅธ ๋ถ์ ๋๊ตฌ๋ฅผ ๋ณด์ํ๋ ๋๊ตฌ๋ก, ์ ๋ฌธ Rust ๊ฐ๋ฐํ์ ์ํ ํฌ๊ด์ ์ธ ํ์ง ๋ฐ ๋ณด์ ์ ๋ต์ ์ผ๋ถ๋ก ํ์ฉ๋๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
ํฌ๋ฃจ์
Creusot๋ Rust์ฉ ๊ณ ๊ธ ์ ํ ๊ฒ์ฆ ํ๋ ์์ํฌ๋ก, ๊ฐ๋ฐ์๊ฐ ์ฝ๋์ ํ๋ถํ ์ํ์ ์์ฑ์ ๋ช ์ํ๊ณ ์ฆ๋ช ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์คํ์ผ ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ธ ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํ๋ ๊ธฐ์กด์ ์ ์ ๋ถ์์ด๋ ๋ฆฐํ ๋๊ตฌ์ ๋ฌ๋ฆฌ, Creusot๋ ๊ธฐ๊ณ ๊ฒ์ฆ์ ํตํ ์ฌ์ธต์ ์ธ ์ ํ์ฑ ๋ณด์ฅ์ ์ค์ ์ ๋ก๋๋ค. Creusot๋ ํ์ ์ ๋๋ ์์ ํ์ ์ํํธ์จ์ด ์์ง๋์ด๋ง ๋ถ์ผ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ ํ ๊ธฐ๋ฒ์ ์ค์ Rust ๊ฐ๋ฐ ์ํฌํ๋ก์ ๋์ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
Creusot-Rust๋ผ๊ณ ํ๋ Rust์ ํ์ ์งํฉ๊ณผ ํจ๊ป ์๋ํ๋๋ก ์ค๊ณ๋ ์ด ๋๊ตฌ๋ ๊ฐ๋ฐ์๊ฐ ์ ์ ์กฐ๊ฑด, ์ฌํ์กฐ๊ฑด, ๋ถ๋ณ์, ๋ณด์กฐ์ ๋ฆฌ์ ๊ฐ์ ๋ช ์ธ๋ก ์ฝ๋์ ์ฃผ์์ ๋ฌ ์ ์๋๋ก ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ Creusot๋ ์๋ํ๋ ์ ๋ฆฌ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์์ฑ์ ๊ฒ์ฆํ์ฌ ๊ตฌํ์ด ํ์ ๋ช ์ธ๋ฅผ ์ถฉ์กฑํ๋์ง ํ์ธํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ๊ณต์ ์ฌ์ ์ง์
๊ฐ๋ฐ์๊ฐ Rust ์ฝ๋์ ํจ๊ป ์ ํํ ์ ์ ์กฐ๊ฑด, ์ฌํ์กฐ๊ฑด, ๋ถ๋ณ์, ๋ณด์กฐ์ ๋ฆฌ๋ฅผ ์ง์ ์์ฑํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์์ ๋์๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ๋ํ ์๊ฒฉํ ๋ฌธ์ํ๋ฅผ ์ง์ํฉ๋๋ค. - ๊ธฐ๊ณ๋ก ๊ฒ์ฌํ ๊ต์ ๋ณธ
SMT(Satisfiability Modulo Theories) ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๊ฐ ์ฌ์์ ์ถฉ์กฑํ๋์ง ์๋์ผ๋ก ๊ฒ์ฆํ์ฌ ํ ์คํธ๋ฅผ ๋์ด ์ ํ์ฑ์ ๊ฐ๋ ฅํ๊ฒ ๋ณด์ฅํฉ๋๋ค. - Rust ๊ตฌ๋ฌธ๊ณผ์ ํตํฉ
Rust ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ด์ฉ์ ์ธ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฐ์ค๋ฝ๊ฒ ๋๋ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. Creusot-Rust๋ ํ์์ ์ถ๋ก ์ ์ง์ํ๋ฉด์๋ Rust์ ์น์ํ ์คํ์ผ์ ์๋น ๋ถ๋ถ ์ ์งํ๋ ํ์ ์งํฉ์ ๋๋ค. - ๊ธฐ๋ฅ์ ์ ํ์ฑ ๊ฒ์ฆ
๋ฒ๊ทธ ํ์ง๋ฅผ ๋์ด ์ฝ๋๊ฐ ๋ช ์๋ ๋๋ก ์ ํํ๊ฒ ๋์ํจ์ ์ฆ๋ช ํฉ๋๋ค. ์ค์ ์๊ณ ๋ฆฌ์ฆ, ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ถ๋ณ์, ์์ ํ์ ๋ ผ๋ฆฌ์ ์ ํฉํฉ๋๋ค. - ์ผ๋ฐ์ ์ธ Rust ๊ตฌ์ฑ์ ๋ํ ์ง์
์ด๊ฑฐํ, ํจํด ๋งค์นญ, ํน์ฑ, ์ ๋ค๋ฆญ ๋ฐ ๊ธฐํ ์ผ๋ฐ์ ์ธ Rust ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ฅ๋๊ฐ ์์ ๊ฐ ์๋ ํ์ค์ ์ธ ์ฝ๋๋ฒ ์ด์ค์ ์ ์ฉํ ์ ์์ต๋๋ค. - ์คํ ์์ค ๋ฐ ์ฐ๊ตฌ ์ง์
์ ๊ทผ ๊ฐ๋ฅํ ๊ณต์ ๊ฒ์ฆ์ ํตํด ์ํํธ์จ์ด ์์ ์ฑ์ ๊ฐ์ ํ๋ค๋ ๋ชฉํ๋ก ํ์ ์ ์ด๊ณ ์ปค๋ฎค๋ํฐ ์ค์ฌ์ ํ๋ก์ ํธ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค.
Creusot๋ ํนํ ์ค์ํ ์์คํ ์์ Rust ์ฝ๋๋ฅผ ๊ฒ์ฆํ๋ ๋ฐ ๊ณ ์ ํ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ๊ฐ๋ฐํ์ด ์ ์คํ๊ฒ ํ๊ฐํด์ผ ํ ๋์ ๋๋ ์ ์ฝ๋ ์์ต๋๋ค.
ํ์์ ๊ฒ์ฆ์ ๋ํ ์ ๋ฌธํ๋ ์ด์
Creusot๋ ๋ฒ์ฉ ๋ฆฐํฐ, ๋ณด์ ์ค์บ๋ ๋๋ ์ข ์์ฑ ๊ฐ์ฌ๊ธฐ๋ฅผ ๋์ฒดํ๋๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค. Creusot์ ๋ชฉ์ ์ ์ฌ์ฉ์๊ฐ ์ง์ ํ ์์ฑ์ด ์ ์ง๋๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๊ณต์ ๋ช ์ธ๋ฅผ ์์ฑํ์ง ์์ผ๋ฉด Creusot๋ ์ฝ๋์ ๋ํ ๋ง์ ๋ถ์์ด๋ ์ฆ๋ช ์ ํ ์ ์์ผ๋ฉฐ, ์ฃผ์์ด ์ ๋๋ก ์์ฑ๋์ง ์์ผ๋ฉด ํ๋ก์ ํธ์ ์๋น ๋ถ๋ถ์ด ํ์ธ๋์ง ์์ ์ํ๋ก ๋จ๊ฒ ๋ฉ๋๋ค.
๊ณต์์ ๋ฐฉ๋ฒ์ ๋ํ ํ์ต ๊ณก์
Creusot๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ํ์ ๊ฒ์ฆ ์์น์ ์ดํดํ๊ณ , ๋ช ํํ ๋ช ์ธ ์ฌํญ์ ์์ฑํ๊ณ , ์ฆ๋ช ๊ฒฐ๊ณผ๋ฅผ ํด์ํด์ผ ํฉ๋๋ค. ํ์ ๊ฒ์ฆ ๋ฐฉ๋ฒ์ ์ต์ํ์ง ์์ ํ์ ์์ฐ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ๊ต์ก๊ณผ ์ฐ์ต์ด ํ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ ๋์ ์๋๋ฅผ ๋ฆ์ถ ์ ์์ต๋๋ค.
Rust ํ์ ์งํฉ์ผ๋ก ์ ํ๋จ
Creusot๋ ์ ์ฒด Rust ์ธ์ด์ ์ ํ๋ ํ์ ์งํฉ์ธ Creusot-Rust๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ถ ๊ณ ๊ธ Rust ๊ธฐ๋ฅ์ ์์ ํ ์ง์๋์ง ์๊ฑฐ๋ Creusot ๊ฒ์ฆ ๋ชจ๋ธ์ ๋ง๊ฒ ์ฝ๋๋ฅผ ์ฌ์์ฑํด์ผ ํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ๊ท๋ชจ๊ฐ ํฌ๊ณ ๋ณต์กํ๊ฑฐ๋ ๋งค์ฐ ๊ด์ฉ์ ์ธ Rust ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์ ์ฉ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์์ ํ์ง ์์ ๋ธ๋ก ๋ถ์ ์์
Creusot๋ ์์ ํ Rust ์ฝ๋ ๊ฒ์ฆ์ ์ง์คํฉ๋๋ค. ์ปดํ์ผ๋ฌ์ ๋ณด์ฅ์ ๋ช ์์ ์ผ๋ก ์ฐํํ๋ ์์ ํ์ง ์์ ๋ธ๋ก์ ์ ํ์ฑ์ ๋ถ์ํ๊ฑฐ๋ ๊ฒ์ฆํ์ง ์์ต๋๋ค. ์ฑ๋ฅ์ด๋ FFI(Fast File Initiative)๋ฅผ ์ํด ์์ ํ์ง ์์ ์ฝ๋์ ํฌ๊ฒ ์์กดํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์ด๋ ๊ฒ์ฆ ๊ฐญ์ ๋ฐ์์ํต๋๋ค.
๋ณด์ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒ์ฌ ๋ถ์กฑ
Creusot๋ cargo-audit์ฒ๋ผ ์ข ์์ฑ์์ ์๋ ค์ง ๋ณด์ ๋ฌธ์ ๋ฅผ ํ์ธํ์ง ์์ต๋๋ค. ๋ํ ํ๋์ฝ๋ฉ๋ ๋น๋ฐ, ๋ถ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ, ๋๋ ๊ณต์ ์ฌ์ ๋งฅ๋ฝ์ ๋ฒ์ด๋ ์์ ํ์ง ์์ API ์ฌ์ฉ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ณด์ ํจํด์ ๋ถ์ํ์ง ์์ต๋๋ค.
์ ํ๋ CI/CD ํตํฉ ๊ธฐ๋ฅ
Creusot๋ ๋น๋ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ์คํํ ์ ์์ง๋ง, CI/CD ์์คํ ์ ์ํ ์ ๊ตํ ํตํฉ ๊ธฐ๋ฅ์ด ๋ถ์กฑํฉ๋๋ค. ๋ฐ๋ผ์ ํ์ดํ๋ผ์ธ์์ ์๋์ผ๋ก ๊ฒ์ฆ์ ์ํํ๊ธฐ ์ํด ํ์์ ์ฌ์ฉ์ ์ง์ ์คํฌ๋ฆฝํธ์ ์ํฌํ๋ก๋ฅผ ๊ฐ๋ฐํด์ผ ํ ์๋ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ๋ฆฐํ ์ด๋ ์คํ์ผ ๊ท์น ์์
Creusot๋ ๋ฆฐํ ๋๊ตฌ๊ฐ ์๋๋ฉฐ ์คํ์ผ ๊ฐ์ด๋, ๋ช ๋ช ๊ท์น ๋๋ ๊ด์ฉ์ ์ธ ์ฌ์ฉ๋ฒ์ ๊ฐ์ ํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ํ์ ์ผ๊ด๋ ์ฝ๋ฉ ํ์ค์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ ํ Clippy๋ ๋ค๋ฅธ ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
ํ์ ๊ฒ์ฆ์ ๊ณ์ฐ ์ง์ฝ์ ์ ๋๋ค. ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค๋ ๋งค์ฐ ๋ณต์กํ ํจ์์์ Creusot๋ฅผ ์คํํ๋ฉด ๊ฒ์ฆ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ผ๋ฉฐ, ์ด๋ ์ ํ์ ์ ์ฉ ์์ด ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ์๊ตฌํ๋ ํ๊ฒฝ์ ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค.
Creusot๋ ์ค์ํ ์ ํ์ฑ ์์ฑ์ ์ํ์ ์๋ฐ์ฑ์ ๋ฐํ์ผ๋ก ์ฆ๋ช ํด์ผ ํ๋ Rust ํ์๊ฒ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ ํ ๋ช ์ธ๋ฅผ ์์ฑํ๊ณ ๊ฒ์ฆํ ์ ์๋๋ก ์ง์ํจ์ผ๋ก์จ ํ ์คํธ ๋ฐ ๊ธฐ์กด์ ์ ์ ๋ถ์์ ๋ฐ์ด๋๋ ์์ค์ ๋ณด์ฆ์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ์ ํ ๊ฒ์ฆ, ํ์ต ์๊ตฌ ์ฌํญ, ํ์ ์ธ์ด ์ ์ฝ ์กฐ๊ฑด, ๊ทธ๋ฆฌ๊ณ ํตํฉ ๊ณผ์ ์ ์ค์ ์ ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ฝ๋ ๋ถ์ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๋ ๋จ๋ ์๋ฃจ์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ์ํํธ์จ์ด ํ์ง ์ ์ง๋ฅผ ์ํ ๊ด๋ฒ์ํ ํดํท์ ํนํ๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ผ๋ก ๋ณด๋ ๊ฒ์ด ๋ ์ ์ ํฉ๋๋ค.
ํ๋ฃจ์คํฐ
Prusti๋ Rust ํ๋ก๊ทธ๋จ์ฉ ์ ์ ๊ฒ์ฆ ๋๊ตฌ๋ก, ์ผ์์ ์ธ ๊ฐ๋ฐ ์ํฌํ๋ก์ ์ ํ ๊ฒ์ฆ ๊ธฐ๋ฒ์ ๋์ ํฉ๋๋ค. Rust ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ Prusti๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๊ณ์ฝ(contract)์ ์ฌ์ฉํ์ฌ Rust ์ฝ๋์์ ์ง์ ์ ์ ์กฐ๊ฑด, ์ฌํ์กฐ๊ฑด, ๋ถ๋ณ์๊ณผ ๊ฐ์ ์ ํ ๋ช ์ธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋ ์ถ๋ก ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๋ช ์ธ๋ฅผ ๊ฒ์ฆํ์ฌ ๋ชจ๋ ์คํ ํ๊ฒฝ์์ ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋์ง ํ์ธํฉ๋๋ค.
์คํ์ผ์ด๋ ์ผ๋ฐ์ ์ธ ๋ฒ๊ทธ ํจํด์ ์ด์ ์ ๋ง์ถ ์ผ๋ฐ์ ์ธ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋ฌ๋ฆฌ, Prusti๋ ์ฌ์ธต์ ์ธ ๋ ผ๋ฆฌ์ ์ ํ์ฑ์ ๋ชฉํ๋ก ํฉ๋๋ค. ํน์ ์กฐ๊ฑด์์๋ง ๋ฐ์ํ ์ ์๋ ๋ฏธ๋ฌํ ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํ๊ณ ํน์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๊ธฐ๊ณ ๊ฒ์ฆ์ ํตํด ๋ณด์ฅํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. Prusti๋ Rust์ ์์ ๊ถ ๋ฐ ํ์ ์์คํ ๊ณผ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์ฌ์ฉ์ ์ ์ ๋์ ๊ณ์ฝ์ ํตํด ์ธ์ด์ ์์ ๋ชจ๋ธ์ ๊ฐํํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- Rust์ ๊ณต์ ๊ณ์ฝ
Rust ์คํ์ผ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ์ ์ ์กฐ๊ฑด, ์ฌํ์กฐ๊ฑด, ๋ฃจํ ๋ถ๋ณ์ ๋ฐ ๋จ์ธ๋ฌธ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ณ์ฝ์ ์์ ๋์๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ์ฝ๋์ ๋ช ์์ ์ผ๋ก ์ค๋ช ํฉ๋๋ค. - ์๋ ๊ฒ์ฆ
SMT(Satisfiability Modulo Theories) ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ ์คํ ๊ฒฝ๋ก์์ ๊ณ์ฝ์ ์ถฉ์กฑํ๋์ง ํ์ธํ์ฌ ๋ชจ๋ ์ข ๋ฅ์ ๋ ผ๋ฆฌ์ ๋ฒ๊ทธ๋ฅผ ์ ๊ฑฐํฉ๋๋ค. - Rust ์ปดํ์ผ๋ฌ์์ ๊ธด๋ฐํ ํตํฉ
ํ์ค Rust ํด๊ณผ ํจ๊ป ์๋ํ๋ฉฐ ์ปดํ์ผ๋ฌ์ ๊ธฐ์กด ์ ํ ๋ฐ ์ฐจ์ฉ ๊ฒ์ฌ๋ฅผ ํ์ฉํ์ฌ ์ค์ Rust ํ๋ก์ ํธ์์ ๊ฒ์ฆ์ ์ค์ฉ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. - ์ผ๋ฐ์ ์ธ Rust ๊ตฌ์ฑ์ ๋ํ ์ง์
ํจํด ๋งค์นญ, ์ด๊ฑฐํ, ํน์ฑ, ์ ๋ค๋ฆญ ๋ฐ ๊ธฐํ ์ผ๋ฐ์ ์ธ Rust ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ฏ๋ก ๋ง์ ํ์ ์ ๊ฒ์ฆ ๋๊ตฌ๋ณด๋ค ํ์ค์ ์ธ ์ฝ๋๋ฒ ์ด์ค์์ ๋ ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค. - ์์ธํ ๋ฐ๋ก ๋ณด๊ณ
๊ฒ์ฆ์ด ์คํจํ๋ฉด Prusti๋ ๊ฐ๋ฐ์๊ฐ ๊ณ์ฝ ์๋ฐ์ ์ ํํ ์ด์ ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ ๊ตฌ์ฒด์ ์ธ ๋ฐ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. - ์คํ ์์ค ๋ฐ ์ฐ๊ตฌ ์ง์
ํ๋ฐํ ์ปค๋ฎค๋ํฐ์ ์ง์์ ์ธ ๊ฐ์ ์ ํตํด ์ ์ ๊ฒ์ฆ์ ์ฃผ๋ฅ Rust ๊ฐ๋ฐ์ ๋์ ํ๊ธฐ ์ํ ํ์ ์ฐ๊ตฌ์ ์ผํ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค.
Prusti๋ ์ ํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ํ์ด ๋์ ํ๊ธฐ ์ ์ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํ ํน์ ์ ํ ์ฌํญ๋ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ณ์ฝ์ ๋ํ ์์กด์ฑ
Prusti์ ํจ๊ณผ๋ ์ ์ ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ ๊ณ์ฝ์์ ํ์ง๊ณผ ์ ์ฉ ๋ฒ์์ ๋ฌ๋ ค ์์ต๋๋ค. ๋ช ํํ๊ณ ์ฒ ์ ํ ์ฌ์์ด ์์ผ๋ฉด Prusti๋ ์ฝ๋๋ฒ ์ด์ค์ ๋ํด ๋ง์ ๊ฒ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ์ฆ, ๊ฐ๋ฐ์๋ ๋๊ตฌ์ ์ด์ ์ ๋๋ฆฌ๊ธฐ ์ํด ์ ํํ ๊ณ์ฝ์๋ฅผ ์ดํดํ๊ณ ์์ฑํ๋ ๋ฐ ์๊ฐ์ ํฌ์ํด์ผ ํฉ๋๋ค.
์์ ํ์ง ์์ Rust์ ๋ํ ์ ํ๋ ์ง์
Prusti๋ ์์ ํ Rust ์ฝ๋ ๊ฒ์ฆ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ปดํ์ผ๋ฌ์ ๋ณด์ฅ ๋ฒ์๊ฐ ์ํ๋ ์์ ํ์ง ์์ ๋ธ๋ก์ ์ ํ์ฑ์ ๋ถ์ํ๊ฑฐ๋ ๊ฒ์ฆํ์ง ์์ต๋๋ค. ์ฑ๋ฅ์ด๋ FFI(Fast File Initiative)๋ฅผ ์ํด ์์ ํ์ง ์์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ๊ฒ์ฆ ๋ฒ์์ ์ ์ฌ์ ์ธ ๊ณต๋ฐฑ์ด ๋ฐ์ํฉ๋๋ค.
์ธ์ด ํ์ ์งํฉ ๋ฐ ๊ธฐ๋ฅ ์ ํ
Prusti๋ ์์ง Rust์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์ต๋๋ค. ๋ณต์กํ ๋งคํฌ๋ก๋ ๋งค์ฐ ๋์ ์ธ ํจํด๊ณผ ๊ฐ์ ํน์ ๊ณ ๊ธ ๊ตฌ์ฑ ์์๋ ์ง์๋์ง ์๊ฑฐ๋ ๊ฒ์ฆ์ ์ํด ๋จ์ํ๊ฐ ํ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Rust์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋๊ท๋ชจ์ ์ฑ์ํ ์ฝ๋๋ฒ ์ด์ค์์๋ Prusti์ ์ ์ฉ์ด ์ ํ๋ ์ ์์ต๋๋ค.
ํ์ ์ํ ๊ฐํ๋ฅธ ํ์ต ๊ณก์
Prusti๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ๋ฐ์๊ฐ ๊ณ์ฝ์ ์์ฑ ๋ฐ ๋ฐ๋ก ํด์๊ณผ ๊ฐ์ ์ ํ ๊ฒ์ฆ ๊ฐ๋ ์ ์ตํ์ผ ํฉ๋๋ค. ์ ํ ๊ฒ์ฆ ๋ฐฉ๋ฒ์ ๋ํ ์ฌ์ ๊ฒฝํ์ด ์๋ ํ์ Prusti๋ฅผ ์์ฐ์ ์ผ๋ก ๋์ ํ๋ ๋ฐ ์๋นํ ํ์ต ๊ณก์ ์ ์ง๋ฉดํ ์ ์์ต๋๋ค.
์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ ๊ณผ์
์ ํ ๊ฒ์ฆ์ ๊ณ์ฐ์ ์ผ๋ก ๊น๋ค๋กญ์ต๋๋ค. ๋ณต์กํ ์ ์ด ํ๋ฆ์ ๊ฐ์ง ๋๊ท๋ชจ ํจ์๋ฅผ ๋ถ์ํ๊ฑฐ๋ ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฒ์ฆํ๋ ๊ฒฝ์ฐ ๋ถ์ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์คํ ๋ฒ์ ์ค์ ์์ด ๋ชจ๋ ์ปค๋ฐ์ด๋ ๋น ๋ฅธ CI ์ฃผ๊ธฐ์์ Prusti๋ฅผ ์คํํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค.
์ต์ IDE ๋ฐ CI/CD ํตํฉ
Prusti๋ฅผ ๊ฐ๋ฐ์ ์ํฌํ๋ก์ ํตํฉํ๋ ์์ ์ ์์ง ์งํ ์ค์ ๋๋ค. ํธ์ง๊ธฐ ๋ด ๊ณ์ฝ์ ์์ฑ ๋ฐ ๊ฒ์ฆ ํผ๋๋ฐฑ์ ์ํ ์ฌ์ธต์ ์ธ IDE ํตํฉ ๊ธฐ๋ฅ์ ์์ง ์ ๊ณต๋์ง ์์ผ๋ฉฐ, CI/CD ํ์ดํ๋ผ์ธ์ ์ถ๊ฐํ๋ ค๋ฉด ์ข ์ข ๋ง์ถคํ ์คํฌ๋ฆฝํ ์ด ํ์ํฉ๋๋ค.
๋ณด์ ์ทจ์ฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํตํฉ ์์
Cargo-audit ๊ฐ์ ๋๊ตฌ์ ๋ฌ๋ฆฌ Prusti๋ ์ข ์์ฑ์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ํ์ธํ์ง ์์ต๋๋ค. Prusti๋ ๊ณต๊ธ๋ง ๋ณด์์ด๋ ์ข ์์ฑ ์ํ์ด ์๋, ์ฌ์ฉ์ ์์ฑ ์ฝ๋์ ๊ธฐ๋ฅ์ ์ ํ์ฑ์ ๊ฒ์ฆํ๋ ๋ฐ์๋ง ์ง์คํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฆฐํ ๋ฐ ์คํ์ผ ํ์ธ ๋ถ์กฑ
Prusti๋ ์คํ์ผ ๊ท์น์ด๋ ๊ด์ฉ์ ์ธ Rust ํจํด์ ๊ฐ์ ํ์ง ์์ต๋๋ค. ํ์ Prusti์ ํ์์ ๊ฒ์ฆ๊ณผ ํจ๊ป ์ผ๊ด๋ ์คํ์ผ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์งํ๊ธฐ ์ํด Clippy์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
Prusti๋ Rust ๊ฐ๋ฐ์ ์๊ฒฉํ ํ์ ๊ฒ์ฆ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ์กฐ๊ฑด์์ ์ฝ๋๊ฐ ์๋ํ ๋๋ก ์ ํํ๊ฒ ๋์ํจ์ ์ฆ๋ช ํ ์ ์๋๋ก ํฉ๋๋ค. ํนํ ์ค์ํ ์๊ณ ๋ฆฌ์ฆ, ๋ฐ์ดํฐ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ ์์ ์ฑ์ด ์ค์ํ ๋ก์ง์ ์ ์ฉํฉ๋๋ค. ํ์ง๋ง ๋ช ์์ ๊ณ์ฝ, ํ์ต ์๊ตฌ ์ฌํญ, ์ธ์ด ํ์ ์งํฉ ์ ์ฝ ์กฐ๊ฑด, ๊ทธ๋ฆฌ๊ณ ์ ํ๋ ์๋ํ ์ง์์ ์์กดํ๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด์ ์ ์ ๋ถ์, ๋ฆฐํฐ, ๋ณด์ ์ค์บ๋, ๊ทธ๋ฆฌ๊ณ ์ฒ ์ ํ ์ฝ๋ ๊ฒํ ๊ดํ์ ๋ณด์ํ์ฌ ์ข ํฉ์ ์ธ ์ฝ๋ ํ์ง๊ณผ ์์ ์ฑ์ ํ๋ณดํ๋ ๋ฐ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
์นด๋
Kani๋ Rust ํ๋ก๊ทธ๋จ์ LLVM ์ค๊ฐ ํํ(IR) ์์ค์์ ๋ถ์ํ๊ธฐ ์ํด ํน๋ณํ ์ ์๋ ์ ์ ๊ฒ์ฆ ๋๊ตฌ์ ๋๋ค. AWS์์ ๊ฐ๋ฐ ๋ฐ ์ ์ง ๊ด๋ฆฌํ๊ณ ์๋ Kani๋ Rust ์ฝ๋์ ์ ์ ๊ฒ์ฆ์ ์ค์ฉ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ ํ๋ ๋ชจ๋ธ ํ์ธ (BMC). ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๋ฒ์๊น์ง ๋ชจ๋ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ ์ํ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ํ์ํ์ฌ ์ฝ๋์ ์์ฑ์ ์ฆ๋ช ํ๊ฑฐ๋ ๋ฐ๋ฐํฉ๋๋ค.
Kani๋ ์์ ์ด ์ค์ํ ์์คํ , ์๋ฒ ๋๋ ์ํํธ์จ์ด, ์ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ ๊ฐ๋ฐ์๊ฐ Rust ์ฝ๋์ ํน์ ์ ํ์ ๋ฒ๊ทธ๊ฐ ์๋ค๋ ๋์ ํ์ ์ ํ์๋ก ํ๋ ํ๊ฒฝ์ ํนํ ์ ํฉํฉ๋๋ค. Kani๋ ์ง์ ๋ ๋ฒ์ ๋ด์์ ๊ฐ๋ฅํ ๋ชจ๋ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ธ๋งํจ์ผ๋ก์จ ํ ์คํธ๋ ๊ธฐ์กด์ ์ ์ ๋ถ์์ผ๋ก๋ ๋ฐ๊ฒฌํ๊ธฐ ์ด๋ ค์ด ๋ฏธ๋ฌํ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ์ ํ๋ ๋ชจ๋ธ ๊ฒ์ฌ
๋ชจ๋ ์๋๋ฆฌ์ค์์ ํด๋น ํ๊ณ ๋ด์์ ์ ํ์ฑ ์์ฑ์ด ์ ์ง๋๋์ง ํ์ธํ๊ธฐ ์ํด ๊ฐ๋ฅํ ๋ชจ๋ ์คํ ๊ฒฝ๋ก๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๋ถ์ํฉ๋๋ค. - Rust ์ด์ค์
์ง์
ํ์ค Rust๋ฅผ ํ์ธํฉ๋๋คassert๊ฐ๋ฐ์๊ฐ ์ ์ํ ์์ ์ฑ ๋ฐ ์ ํ์ฑ ์กฐ๊ฑด์ด ํญ์ ์ ํ๋ ๋ฒ์ ๋ด์์ ์ ์ง๋๋๋ก ๋ณด์ฅํฉ๋๋ค. - ํ๋ค์ค ๊ธฐ๋ฐ ๊ฒ์ฆ ๋ชจ๋ธ
๊ฐ๋ฐ์๊ฐ ์์ฑํ๋๋ก ํฉ๋๋ค ๊ฒ์ฆ ํ๋ค์ค์ด๋ Kani๊ฐ ๊ฒ์ฆํด์ผ ํ๋ ์กฐ๊ฑด๊ณผ ์ ๋ ฅ์ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํน์ ์ง์ ์ ์ผ๋ก, ๋ถ์ ๋ฒ์์ ๋ํ ์ธ๋ถ์ ์ธ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. - ๋ฉ๋ชจ๋ฆฌ ์์ ๊ฒ์ฆ
์์ ํ์ง ์์ ๋ธ๋ก์ด ์๋ ์ฝ๋์์๋ ์ง์ ๋ ๋ฒ์ ๋ด์์ ๋ฒํผ ์ค๋ฒํ๋ก, null ์ญ์ฐธ์กฐ ๋๋ ์ฌ์ฉ ํ ํด์ ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ค๋ฅ๊ฐ ์์์ ์ฆ๋ช ํฉ๋๋ค. - ์์ ํ์ง ์์ Rust ์ง์
์์ ํ์ง ์์ ์ฝ๋๋ฅผ ๋ฌด์ํ๋ ๋ง์ ๋๊ตฌ์ ๋ฌ๋ฆฌ Kani๋ ์ด๋ฅผ ๋ช ์์ ์ผ๋ก ๋ถ์ํ์ฌ ์ฑ๋ฅ์ด ์ค์ํ๊ฑฐ๋ ์์คํ ์์ค ์ฝ๋์์๋ ์์ ์ฑ ์์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - Cargo์์ ํตํฉ
ํ์ค Rust ํด๊ณผ ์ํํ๊ฒ ์๋ํ๋ฏ๋ก Rust ๊ฐ๋ฐ์๊ฐ ์ต์ํ์ ๋ง์ฐฐ๋ก ๊ธฐ์กด ์ํฌํ๋ก์ ๊ฒ์ฆ์ ์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค. - ์์ธํ ๋ฐ๋ก ์์ฑ
๊ฒ์ฆ์ด ์คํจํ๋ฉด ์นด๋๋ ์์ฑ์ด ์ด๋ป๊ฒ ์๋ฐ๋ ์ ์๋์ง๋ฅผ ์ ํํ ๋ณด์ฌ์ฃผ๋ ๊ตฌ์ฒด์ ์ธ ๋ฐ๋ก๋ฅผ ์ ๊ณตํ์ฌ ๋๋ฒ๊น ๊ณผ ์์ ์ ํฐ ๋์์ด ๋ฉ๋๋ค. - AWS ์ง์์ ํตํ ์คํ ์์ค
AWS์ ์ง์์ ๋ฐ์ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ์ง์์ ์ธ ๊ฐ์ , ๋ฌธ์ํ, ์ปค๋ฎค๋ํฐ ์ฐธ์ฌ๊ฐ ๋ณด์ฅ๋ฉ๋๋ค.
Kani๋ Rust ๊ฐ๋ฐ์ ๊ฐ๋ ฅํ ๊ณต์ ๊ฒ์ฆ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ํ์ด ์ด๋ฅผ ๋์ ํ๊ธฐ ์ ์ ์ดํดํด์ผ ํ ์ค์ํ ๊ณ ๋ ค ์ฌํญ๊ณผ ๊ท ํ์ ์ด ์์ต๋๋ค.
๋ถ์ ๋ฐ์ด๋ ์ ํ ์ฌํญ
์นด๋์ ๋ชจ๋ธ์ฒดํน์ ๊ฒฝ๊ณ์ฆ, ํด๋น ๋ณด์ฅ์ ์ง์ ๋ ์คํ ๋ฒ์(์: ๋ฃจํ ํ๊ธฐ ์ ํ, ์ฌ๊ท ๊น์ด) ๋ด์์๋ง ์ ํจํฉ๋๋ค. ์ ํ ์๋ ๋์์ด๋ ๋งค์ฐ ๊น์ ์ํ ๊ณต๊ฐ์ ์์กดํ๋ ์์ฑ์ ํน๋ณํ ๋ฒ์ ์ง์ ๋ฐ ์กฐ์ ํ์ง ์๋ ํ ๊ฒ์ฌ๋์ง ์์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฒฝ๊ณ๋ฅผ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด ๊ฑฐ์ง ๋ถ์ (false negative)์ด ๋ฐ์ํ ์ํ์ด ์์ต๋๋ค.
๊ฒ์ฆ ํ๋ค์ค ์์ฑ์ด ํ์ํฉ๋๋ค
์นด๋์ ํจ๊ณผ๋ ํ์ํ ์กฐ๊ฑด๊ณผ ์ ๋ ฅ๊ฐ์ ์ ์ํ๋ ์ ์์ฑ๋ ๊ฒ์ฆ ํ๋ค์ค์ ๋ฌ๋ ค ์์ต๋๋ค. ์ ์คํ๊ฒ ํ๋ค์ค๋ฅผ ์ค๊ณํ์ง ์์ผ๋ฉด ์ค์ํ ๊ฒฝ๋ก๋ฅผ ๋์น ์ ์์ต๋๋ค. ํ์ ์ค์ ์ฌ์ฉ ์๋๋ฆฌ์ค๋ฅผ ํฌ์ฐฉํ๋ ์๋ฏธ ์๋ ํ๋ค์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด ์๊ฐ๊ณผ ์ ๋ฌธ ์ง์์ ํฌ์ํด์ผ ํฉ๋๋ค.
์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ ๊ณ ๋ ค ์ฌํญ
์ ํ๋ ๋ชจ๋ธ ๊ฒ์ฌ๋ ๊ณ์ฐ ์ง์ฝ์ ์ ๋๋ค. ์ฝ๋ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ Kani๊ฐ ํ์ํด์ผ ํ๋ ์ํ์ ์๋ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ์ฌ ๋ถ์ ์๊ฐ์ด ๊ธธ์ด์ง๊ฑฐ๋ ๊ฒฝ๊ณ๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ์ง ์๊ณ ์๋ ๊ฒ์ฆ์ด ์ด๋ ค์์ง ์ ์์ต๋๋ค.
์ ํ๋ IDE ํตํฉ ๋ฐ ๊ฐ๋ฐ์ UX
Kani์ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค๋ ๋ช ๋ น์ค ๊ธฐ๋ฐ์ด๋ฉฐ ๋น๋ ์๋ํ์ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. ๋ช ํํ๊ณ ์ ํํ์ง๋ง, ์ถ๋ ฅ ๊ฒฐ๊ณผ๊ฐ ์์ง ๋๋ฆฌ ์ฌ์ฉ๋๋ Rust IDE๋ ํธ์ง๊ธฐ์ ๊น์ด ํตํฉ๋์ด ์์ง ์์ ์ผ์์ ์ธ ์ฆ๋ถ ๊ฐ๋ฐ ํผ๋๋ฐฑ์ ์ป๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์ผ๋ฐ ์ฉ๋์ ๋ฆฐํฐ๋ ์คํ์ผ ๊ฒ์ฌ๊ธฐ๊ฐ ์๋๋๋ค.
Kani๋ ์ ํ์ฑ ์์ฑ์ ์ ์ฆํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. Rust ์คํ์ผ ๊ฐ์ด๋๋ผ์ธ, ๊ด์ฉ์ ์ฌ์ฉ ๋ฐฉ์ ๋๋ ์ผ๋ฐ์ ์ธ ๋ฆฐํธ ๊ท์น์ ๊ฐ์ ํ์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ผ๊ด๋ ์ฝ๋ฉ ํ์ค๊ณผ ๊ด์ฉ์ ๋ฐฉ์์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ ํ Clippy์ ๊ฐ์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
์ข ์์ฑ ์ทจ์ฝ์ฑ ๊ฒ์ฌ ์์
cargo-audit๊ณผ ๋ฌ๋ฆฌ Kani๋ ์๋ ค์ง ๋ณด์ ๊ถ๊ณ ๋ ๊ณต๊ธ๋ง ์ํ์ ๋ํ ์ข ์์ฑ์ ๋ถ์ํ์ง ์์ต๋๋ค. ์ข ์์ฑ์ CVE๊ฐ ํฌํจ๋์ด ์๊ฑฐ๋ crates.io์์ ์ญ์ ๋ ๊ฒฝ์ฐ์๋ ๊ฐ๋ฐ์์๊ฒ ๊ฒฝ๊ณ ํ ์ ์์ต๋๋ค.
ํ์์ ์ธ ์ฌ๊ณ ์ ์ ๋ฌธ์ฑ์ด ํ์ํฉ๋๋ค
Kani๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ๋ฐ์๊ฐ ์์ ์ ์ฝ๋์ ๋ํด ์ ํ์ ์ผ๋ก ์๊ฐํ๊ณ , ์ ํํ ํ๋ค์ค๋ฅผ ์ค๊ณํ๊ณ , ๋ฐ๋ก๋ฅผ ํด์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ํ ๊ฒ์ฆ ๊ฒฝํ์ด ์๋ ํ์ Kani๋ฅผ ์์ฐ์ ์ผ๋ก ๋์ ํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค.
์ ๋ฌธ๊ฐ ์ค์ฌ์ ์ถ๋ ฅ ๋ฐ ๋ณด๊ณ
Kani์ ์ค๋ฅ ๋ณด๊ณ ๊ธฐ๋ฅ์ ์์ธํ์ง๋ง, ์ ํํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์์ค ํ๋ก๊ทธ๋จ ๋ถ์์ ์ต์ํ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค. ๋ชจ๋ธ ๊ฒ์ฌ ๊ฐ๋ ์ ์ต์ํ์ง ์์ ๊ฐ๋ฐ์๋ ๋๊ตฌ์ ํต์ฐฐ๋ ฅ์ ์ต๋ํ ํ์ฉํ๊ธฐ ์ํด ์ถ๊ฐ ๊ต์ก์ด ํ์ํ ์ ์์ต๋๋ค.
Kani๋ Rust์ ์ต์ฒจ๋จ ํ์ ๊ฒ์ฆ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ํนํ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ๊ณผ ์ ํ์ฑ์ด ์ ๋์ ์ผ๋ก ์ค์ํ ์์คํ ์์ค ๋ฐ ์์ ์ด ์ค์ํ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ ์ฉํฉ๋๋ค. ์์ ํ์ง ์์ ๋ธ๋ก์ ํฌํจํ Rust ์ฝ๋์ ์์ฑ์ ์ฒด๊ณ์ ์ผ๋ก ์ฆ๋ช ํจ์ผ๋ก์จ, ํ ์คํธ์์ ์ ์ธ๋ ์ ์๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ํ์ง๋ง Kani์ ์ ํ๋ ํน์ฑ, ์ฑ๋ฅ ๋น์ฉ, ์ฌ์ฉ ์๊ฑด, ๊ทธ๋ฆฌ๊ณ ํ์ต ๊ณก์ ๋๋ฌธ์, Kani๋ Rust ์ํํธ์จ์ด์ ํ์ง, ๋ณด์, ๊ทธ๋ฆฌ๊ณ ์ ์ง ๋ณด์์ฑ์ ๋ณด์ฅํ๋ ๊ด๋ฒ์ํ ๊ฐ๋ฐ ๋ฐ ๋ถ์ ๋๊ตฌ ์ ํ๊ตฐ์ ํนํ๋ ์ถ๊ฐ ๋๊ตฌ๋ก ๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
์์ด
Seer๋ ๊ธฐํธ ์คํ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ Rust ํ๋ก๊ทธ๋จ์์ ๋ฏธ๋ฌํ๊ณ ์ ํ์ฑ์ ์ค์ํ ๋ฒ๊ทธ๋ฅผ ํ์งํ๋๋ก ์ค๊ณ๋ ์คํ์ ์ธ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. ํผ๋ ๋ํ๊ต ์ฐ๊ตฌ์ง์ด ๊ฐ๋ฐํ Seer๋ Rust ํด ์ํ๊ณ์์ ๋ ๋ณด์ ์ธ ์์น๋ฅผ ์ฐจ์งํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ธ์ด์ ๊ฐ๋ ฅํ ์ปดํ์ผ ํ์ ๋ณด์ฅ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ์์ ํ Rust ์ฝ๋์์๋ ๋ฐ์ํ ์ ์๋ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์๋ณํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
๋ฆฐํฐ๋ ์คํ์ผ ๊ฒ์ฌ๊ธฐ์ ๋ฌ๋ฆฌ Seer๋ ๋ค์์ ์ค์ ์ ๋ก๋๋ค. ์๋งจํฑ ๋ฌธ์ . ํ๋ก๊ทธ๋จ ๊ฒฝ๋ก๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ธฐํธ์ ์ผ๋ก ํ์ํ์ฌ ๋จ์ธ ์คํจ, ์ ์ ์กฐ๊ฑด์ ์๋ฐํ๋ ์ ํจํ์ง ์์ ์ ๋ ฅ, ์ปดํ์ผ๋ฌ ๊ฒ์ฌ์ ๊ธฐ์กด ํ ์คํธ ๋ชจ๋์์ ๋ฐ๊ฒฌ๋์ง ์์ ์ ์๋ ์ ์ด ํ๋ฆ ์ค๋ฅ์ ๊ฐ์ ๋ ผ๋ฆฌ์ ๊ฒฐํจ์ ๊ฐ์งํฉ๋๋ค. Seer๋ ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ฐฉ์์ผ๋ก Rust ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ํ ์คํธํ๊ธฐ ์ด๋ ค์ด ํน์ ์กฐ๊ฑด์์๋ง ๋ํ๋๋ ๋ฒ๊ทธ๋ฅผ ์ฐพ์๋ผ ์ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- Rust์ ๋ํ ์์ง์ ์คํ
์ ๋ ฅ์ ๊ธฐํธ ๊ฐ์ผ๋ก ํํํ์ฌ ํ๋ก๊ทธ๋จ ๊ฒฝ๋ก๋ฅผ ๋ถ์ํ๊ณ , ์๋ ํ ์คํธ ์ ๋ ฅ์ ์์ฑํ์ง ์๊ณ ๋ ๊ด๋ฒ์ํ ์คํ ๊ฐ๋ฅ์ฑ์ ํ์ํ ์ ์์ต๋๋ค. - ์ด์ค์
์๋ฐ ๊ฐ์ง
๋ฐ์ํ ์ ์๋ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ์๋ณํฉ๋๋ค.assert์ง์ ์ด๋ ๊ณ์ฝ ์กฐ๊ฑด์ด ์คํจํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ๊ฐ๋ฐ์๊ฐ ์์ฐ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ๋ฒ๊ทธ ๋ฐ๊ฒฌ์ ์ํ ์๋ ์
๋ ฅ ์์ฑ
์ด์ค์ ์คํจ๋ฅผ ์ ๋ฐํ๋ ๊ตฌ์ฒด์ ์ธ ์ ๋ ฅ ์์ ๋ฅผ ์์ฑํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ฒ๊ทธ๋ฅผ ์ฌํํ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ํด์ค๋๋ค. - ์์ ํ Rust ๋ถ์์ ์ง์คํ์ธ์
์์ ํ์ง ์์ ์ฝ๋์๋ง ์ด์ ์ ๋ง์ถ ๋ง์ ์ ์ ๋ถ์๊ธฐ์ ๋ฌ๋ฆฌ Seer๋ ์์ ํ ์์ ํ Rust ์ฝ๋๋ฒ ์ด์ค์์ ๋ฏธ๋ฌํ ์๋ฏธ์ ์ค๋ฅ๋ฅผ ์ฐพ๋๋ก ์ค๊ณ๋์์ต๋๋ค. - ์ฐ๊ตฌ ๋ฑ๊ธ ์ ๋ฐ๋
Rust์ ์ ํ ๋ฐ ์ฐจ์ฉ ๊ฒ์ฌ ์์คํ ์ ๋ณด์ํ๋ ์ ํํ๊ณ ๊ฒฝ๋ก์ ๋ฏผ๊ฐํ ๋ฒ๊ทธ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ํ์ ์ฐ๊ตฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค. - ์คํ ์์ค ๋ฐ ์ปค๋ฎค๋ํฐ ์ ๊ทผ ๊ฐ๋ฅ
Rust ์ปค๋ฎค๋ํฐ์์ ์คํ๊ณผ ๊ฐ์ ์ ์ํด ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ง์์ ์ธ ์ฐ๊ตฌ๋ฅผ ํตํด ๊ฐ๋ฐ์ด ์ง์๋ฉ๋๋ค.
Seer๋ Rust ์ฝ๋์์ ์ฌ๊ฐํ ์ ํ์ฑ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ํ์ด ์ค์ ํ๋ก์ ํธ์์ ์ฌ์ฉ์ ํ๊ฐํ ๋ ๊ณ ๋ คํด์ผ ํ ์ค์ง์ , ๊ฐ๋ ์ ํ๊ณ๋ ์์ต๋๋ค.
์ ํ๋ ์ฑ์๋ ๋ฐ ์์ฐ ์ค๋น
Seer๋ ์ฑ์ํ๊ณ ์์ฐ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ์ฐ๊ตฌ ์ค์ฌ์ ์ด๊ณ ์คํ์ ์ธ ๋๊ตฌ๋ก ๋จ์ ์์ต๋๋ค. ์ ๋ฌธ๊ฐ ํ์ด ํต์ฌ ๊ฐ๋ฐ ๋๊ตฌ์ ๊ธฐ๋ํ๋ ์์ ์ฑ, ์ฌ์ฉ ํธ์์ฑ, ๋๋ ์ธ๋ จ๋ ํตํฉ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ๋ชปํ ์ ์์ต๋๋ค. Seer๋ฅผ ์ค์น, ๊ตฌ์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ๋ ๋ง์ ๋ ธ๋ ฅ๊ณผ ์ฐ๊ตฌ ํ๋กํ ํ์ ์ ๋ํ ์ง์์ด ํ์ํ ์ ์์ต๋๋ค.
์ฃผ์ฅ ์๋ฐ์ ๋ํ ์ข์ ์ด์
Seer์ ์ฃผ์ ๊ฐ์ ์ ๋ช ์์ ์ธ ๋จ์ธ์ด๋ ์ ์ ์กฐ๊ฑด์ ์๋ฐํ ์ ์๋ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ์งํ๋ ๊ฒ์ ๋๋ค. ๋ฒ์ฉ ๋ฆฐํฐ๋ ์คํ์ผ ๊ฒ์ฌ๊ธฐ ์ญํ ์ ํ์ง ์์ผ๋ฉฐ, Clippy์ ๊ฐ์ ๋๊ตฌ์์ ์ฒ๋ฆฌํ๋ ๊ด์ฉ์ ์ฉ๋ฒ, ๋ช ๋ช ๊ท์น ๋๋ ์ผ๋ฐ์ ์ธ Rust ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํ์ง ์์ต๋๋ค.
์ข ์์ฑ ์๋ ์ทจ์ฝ์ฑ ๋ถ์
Cargo-audit์ ๊ฐ์ ๋๊ตฌ์ ๋ฌ๋ฆฌ Seer๋ ํ๋ก์ ํธ์ Cargo.toml ๋๋ Cargo.lock ํ์ผ์ ๊ฒ์ฌํ์ฌ ์ข ์์ฑ์์ ์๋ ค์ง ๋ณด์ ์ทจ์ฝ์ ์ ํ์ ํ์ง ์์ต๋๋ค. ๊ณต๊ธ๋ง ๋ณด์์ ์ ๊ณตํ์ง ์์ผ๋ฏ๋ก, ์ด๋ฌํ ์ค์ํ ๋ฌธ์ ๋ ์ํ๊ณ์ ๋ค๋ฅธ ๋๊ตฌ์ ๋งก๊ฒจ์ง๋๋ค.
์์ ํ์ง ์์ ์ฝ๋ ๋ธ๋ก ๋ถ์ ์์
Seer๋ ์์ ํ Rust ์ฝ๋์ ์ด์ ์ ๋ง์ถฐ ์ค๊ณ๋์์ผ๋ฉฐ, ์์ ํ์ง ์์ ๋ธ๋ก์ ๋ถ์ ๋ฒ์์์ ํฌ๊ฒ ์ ์ธ๋์์ต๋๋ค. ์ฑ๋ฅ์ด๋ FFI(Fast File Initiative)๋ฅผ ์ํด ์์ ํ์ง ์์ ์ฝ๋๊ฐ ํฌํจ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, Seer๋ Kani๋ Rudra์ ๊ฐ์ ๋๊ตฌ์์ ์ ๊ณตํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๊ฒ์ฆ์ด๋ ๊ณ ๊ธ ๊ฒ์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ ์ ์ฝ
์ฌ๋ณผ๋ฆญ ์คํ์ ๋ณธ์ง์ ์ผ๋ก ๊ณ์ฐ ์ง์ฝ์ ์ ๋๋ค. ์ฝ๋ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์คํ ๊ฐ๋ฅํ ๊ฒฝ๋ก์ ์๊ฐ ํญ๋ฐ์ ์ผ๋ก ์ฆ๊ฐํ์ฌ ๋ถ์ ์๊ฐ์ด ๊ธธ์ด์ง๊ฑฐ๋ ๋ฆฌ์์ค๊ฐ ๊ณ ๊ฐ๋ฉ๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ๋ ๋งค์ฐ ๋์ ์ธ ์ฝ๋์ ๊ฒฝ์ฐ, ์ ํ์ ๋ถ์์ด๋ ์ ์คํ ๊ฒฝ๋ก ์ ๋ฆฌ ์์ด๋ Seer์ ์ค์ฉ์ฑ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ท์น ์์ฑ ๋ถ์กฑ
Seer๋ ํน์ ํ๋ก์ ํธ ๋๋ ์กฐ์ง ํ์ค์ ๋ง์ถฐ ์ฌ์ฉ์ ์ง์ ๊ท์น์ด๋ ๊ฒ์ฌ๋ฅผ ์ ์ํ ์ ์๋ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ํ์ง ๊ธฐ๋ฅ์ ์ด์ค์ ๊ณผ ์ ์ด ํ๋ฆ์ ์ ํ์ฑ์ ์ค์ ์ ๋๊ณ ์์ด, ๋ ๊ด๋ฒ์ํ ์ ์ ๋ถ์ ์๊ตฌ ์ฌํญ์ ๋ํ ์ ์ฐ์ฑ์ด ์ ํ๋ฉ๋๋ค.
์ต์ IDE ๋ฐ CI/CD ํตํฉ
Seer๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ตฌ ์์ค์ ๊ฒฐ๊ณผ๋ฌผ์ ์ ๊ณตํ๋ ๋ช ๋ น์ค ๋๊ตฌ์ ๋๋ค. ๋๋ฆฌ ์ฌ์ฉ๋๋ Rust IDE, ํธ์ง๊ธฐ ๋๋ CI/CD ์์คํ ๊ณผ์ ๊ฐ๋ ฅํ ํตํฉ์ด ๋ถ์กฑํฉ๋๋ค. Seer๋ฅผ ๋์ ํ๋ ํ์ Seer๋ฅผ ์ํฌํ๋ก์ ํจ๊ณผ์ ์ผ๋ก ํตํฉํ๊ธฐ ์ํด ๋ง์ถคํ ์คํฌ๋ฆฝํธ์ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ฐํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๊ธฐํธ ์คํ ๊ฐ๋ ์ ๋ํ ํ์ต ๊ณก์
Seer๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๊ธฐํธ ์คํ, ์ ์ฝ ์กฐ๊ฑด ํด๊ฒฐ, ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ก ํด์์ ๋ํ ์ดํด๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฌํ ํ์์ ๋ฐฉ๋ฒ์ ์ต์ํ์ง ์์ ๊ฐ๋ฐ์๋ Seer์ ํต์ฐฐ๋ ฅ์ ์์ฐ์ ์ผ๋ก ์ ์ฉํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค.
Seer๋ Rust ์ ์ ๋ถ์์ ๊ณ ๊ธ ์ฐ๊ตฌ ๊ธฐ๋ฒ์ ์ ์ฉํ์ฌ ๊ธฐ์กด ํ ์คํธ ๋ฐ ์ปดํ์ผ๋ฌ ๊ฒ์ฌ๋ฅผ ์ฐํํ๋ ์ฌ์ธต์ ์ด๊ณ ๊ฒฝ๋ก์ ๋ฏผ๊ฐํ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ํนํ ๋ฏธ๋ฌํ ๋จ์ธ ์ค๋ฅ์กฐ์ฐจ ์ฉ๋ฉํ ์ ์๋ ์์ ํ์ ๋ก์ง์ ๋งค์ฐ ์ ํฉํฉ๋๋ค. ํ์ง๋ง ์คํ์ ์ธ ์ฑ๊ฒฉ, ๋จ์ธ ์๋ฐ์๋ง ๊ตญํ๋ ์ง์ค, ์์ ํ์ง ์์ ์ฝ๋ ๋ถ์ ๊ธฐ๋ฅ์ ๋ถ์ฌ, ๊ทธ๋ฆฌ๊ณ ์ ํ๋ ํตํฉ ๊ธฐ๋ฅ ๋๋ฌธ์, ๋ค๋ฅธ Rust ์ ์ ๋ถ์, ๋ฆฐํ , ๋ณด์ ๋๊ตฌ์ ํจ๊ป Seer์ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋ ์ ๋ฌธ ์ง์๊ณผ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ถ ํ์๊ฒ๋ ์ ๋ฌธ์ ์ด๊ณ ๋ณด์์ ์ธ ๋๊ตฌ๋ก ๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
ํ๋ก์์คํธ๋ฆฌ
Flowistry๋ Rust๋ฅผ ์ํ ์ ๊ตํ ์ ์ ๋ถ์ ๋ฐ ์๊ฐํ ๋๊ตฌ๋ก ์ดํด์ ์ค์ ์ ๋ก๋๋ค. ๋ฐ์ดํฐ ํ๋ฆ Rust ํ๋ก๊ทธ๋จ์์. Rust ๋ถ์๊ธฐ ํ์ฅ ๊ธฐ๋ฅ์ด์ ๋ช ๋ น์ค ๋๊ตฌ๋ก ์ ์๋ Flowistry๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ด๋ํ๋์ง ํ์ธํ ์ ์๋๋ก ์ง์ํ์ฌ, ์์ค ์ฝ๋๋ง ์ฝ์ด์๋ ํ์ ํ๊ธฐ ์ด๋ ค์ด ์์ ๊ถ, ์ฐจ์ฉ ๋ฐ ๋ณํ ํจํด์ ํฌ๋ช ํ๊ฒ ๋ณด์ฌ์ค๋๋ค.
Rust์ ๊ฐ์ฅ ๋ ํนํ ๊ธฐ๋ฅ ์ค ํ๋์ธ ์์ ๊ถ ์์คํ ์ ๋ค๋ฃจ๋๋ก ์ค๊ณ๋ Flowistry๋ ๊ฐ๋ฐ์๊ฐ ๋์ฑ ์์ ํ๊ณ ๋ช ํํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค. Rust์ ์ฐจ์ฉ ์๋ฏธ๋ก ์ ์ฒ์ ์ ํ๋ ์ฌ์ฉ์์๊ฒ๋ ํ์ต ๋๊ตฌ๋ก, ๋ณต์กํ ์๋ช ๊ณผ ์์ ๊ถ ํ๋ฆ์ด ์๋ ๋ณต์กํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์๋ จ๋ ๊ฐ๋ฐ์์๊ฒ๋ ์ค์ฉ์ ์ธ ๋๋ฒ๊น ๋ฐ ๊ฒํ ๋๊ตฌ๋ก ํ์ฉ๋ฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ์ ํํ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์
์ ์ ๋ถ์์ ์ํํ์ฌ ํจ์์ ๋ชจ๋ ์ ์ฒด์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ด๋, ์ฐจ์ฉ, ๋ณํ ๋๋ ์ญ์ ๋๋์ง ์ถ์ ํฉ๋๋ค. - ์๊ฐ์ ์์ ๊ถ ํต์ฐฐ๋ ฅ
ํน์ ํ๋ก๊ทธ๋จ ์ง์ ์์ ์ด๋ค ๋ณ์๊ฐ ๋ณํ๋๊ฑฐ๋ ์ฐจ์ฉ๋์๋์ง ๋ณด์ฌ์ฃผ๋ ๋ช ํํ ์๊ฐํ๋ฅผ ์ ๊ณตํ์ฌ ์ปดํ์ผ๋ฌ ์ค๋ฅ์ ์์ ๊ถ ์ถฉ๋์ ์ค๋ช ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - IDE ํตํฉ
rust-analyzer๋ฅผ ํตํด Visual Studio Code์ ๊ฐ์ ์ธ๊ธฐ ์๋ Rust ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ํธํ๋์ด ํธ์ง๊ธฐ ๋ด์์ ๋ฐ์ดํฐ ํ๋ฆ๊ณผ ์์ ๊ถ์ ์๊ฐํํ ์ ์์ต๋๋ค. - ๋ช
๋ น ์ค ์ธํฐํ์ด์ค
IDE ์ธ๋ถ์์ ๋ถ์ ๋ฐ ๊ฒ์ฌ๋ฅผ ์ํ ํฐ๋ฏธ๋ ๊ธฐ๋ฐ ์ํฌํ๋ก๋ฅผ ์ง์ํ๋ฏ๋ก ๋ค์ํ ๊ฐ๋ฐ ์คํ์ผ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์์ต๋๋ค. - ์ผ๋ฐ์ ์ธ Rust ๊ด์ฉ์ด ์ง์
Rust์ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ฅ์ธ ์ด๊ฑฐํ, ํจํด ๋งค์นญ, ํน์ฑ ๋ฐ ๊ธฐํ ๊ธฐ๋ฅ์ ๋ถ์์ ์ ์ฉํ์ฌ ์ค์ ์ฝ๋๋ฒ ์ด์ค์ ์ ์ฉํ ์ ์์ต๋๋ค. - ๊ต์ก์ ํ์ฉ ์ฌ๋ก
ํนํ Rust์ ์์ ๊ถ ๋ชจ๋ธ์ ๊ฐ๋ฅด์น๋ ๋ฐ ๊ฐ์น๊ฐ ์๋๋ฐ, ๋ณด์ด์ง ์๋ ์ปดํ์ผ๋ฌ ๊ฒ์ฌ์ ๊ท์น์ ๋ช ํํ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. - ์คํ ์์ค ๋ฐ ์ปค๋ฎค๋ํฐ ์ ์ง
๊ฐ๋ฐ์๊ฐ ์์ ๋กญ๊ฒ ์ฌ์ฉํ๊ณ ํ์ฅํ ์ ์์ผ๋ฉฐ, Rust ์ปค๋ฎค๋ํฐ์ ์ง์์ ์ธ ๊ธฐ์ฌ๋ฅผ ํตํด ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ์ฑ์ด ๊ฐ์ ๋๊ณ ์์ต๋๋ค.
Flowistry๋ Rust์ ์์ ๊ถ ์์คํ ์ ๋ํ ๋ ํนํ๊ณ ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ์ง๋ง, ํ์ด ์ค์ ๋ก ์ด๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ ๋ ๊ณ ๋ คํด์ผ ํ ๋ถ๋ช ํ ํ๊ณ๋ ์์ต๋๋ค.
๊ท์น์ ์ํํ๋ ๊ฒ๋ณด๋ค ์ดํดํ๋ ๋ฐ ์ง์คํ์ธ์
Flowistry์ ์ฃผ์ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ค๋ช ์์ ๊ถ ๋ฐ ์ฐจ์ฉ์ ์ํ ๊ฒ์ด์ง, ์ฝ๋ฉ ํ์ค์ ์ํํ๊ฑฐ๋ ์ ํ์ฑ ์ค๋ฅ๋ฅผ ํ์ธํ๊ธฐ ์ํ ๊ฒ์ด ์๋๋๋ค. ๋ฒ๊ทธ๋ฅผ ํ์ํ๊ฑฐ๋, ๋ฆฐํธ๋ฅผ ์ ์ฉํ๊ฑฐ๋, ์ฝ๋๊ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ๋์ง ๋ณด์ฅํ์ง ์์ต๋๋ค. ๋์ ๊ฐ๋ฐ์์๊ฒ ๋์์ ์ค๋๋ค. ์ดํด ์ฝ๋๊ฐ ์ปดํ์ผ๋๊ฑฐ๋ ์ปดํ์ผ๋์ง ์๋ ์ด์ ๋ ํ์ต์๋ ๋งค์ฐ ์ค์ํ์ง๋ง ํ์ง ๊ด๋ฆฌ์๋ ๊ทธ๋ค์ง ์ง์ ์ ์ด์ง ์์ต๋๋ค.
๋ก์ง ๋ฒ๊ทธ๋ ๋ณด์ ๋ฌธ์ ๊ฐ ๊ฐ์ง๋์ง ์์
Flowistry๋ ๋ ผ๋ฆฌ์ ์ค๋ฅ, ๋จ์ธ ์ค๋ฅ ๋๋ ๋ณด์ ์ทจ์ฝ์ ์ ํฌ์ฐฉํ๋๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค. ์ ํ์ฑ ์์ฑ์ด๋ ์ข ์์ฑ ๋ฌธ์ ๋ฅผ ๊ฒ์ฌํ๋ ์ ์ ๋ถ์๊ธฐ์ ๋ฌ๋ฆฌ, Flowistry๋ ์ข ์์ฑ์์ ์ํํ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ ์๋ ค์ง CVE๋ฅผ ์๋ณํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด cargo-audit์ด๋ ๊ณต์ ๊ฒ์ฆ ๋๊ตฌ์ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
์์ ํ์ง ์์ ์ฝ๋ ์๋ฏธ ๋ถ์ ์์
Flowistry๋ ์์ ํ Rust ์ฝ๋์์ ์์ ๊ถ์ ๋งค์ฐ ์ ๋ชจ๋ธ๋งํ์ง๋ง, ์์ ํ์ง ์์ ๋ธ๋ก์ ๋ํ ์๋ฏธ๋ก ์ ๊ฒ์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์์ ํ์ง ์์ Rust๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์๋ ํฌ์ธํฐ ์กฐ์์ด๋ ๋น๊ฒ์ฌ ์ฐ์ฐ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์๋ฐ์ ํ์ ํ๋ ๋ฐ ๋์์ด ๋์ง ์์ต๋๋ค.
CI/CD ํ์ดํ๋ผ์ธ๊ณผ์ ์ ํ๋ ํตํฉ
Flowistry๋ ์๋ํ๋ ๊ฒ์ดํธํคํผ๊ฐ ์๋ ๊ฐ๋ฐ์ ์ง์ ๋๊ตฌ๋ก ์ค๊ณ๋์์ต๋๋ค. ์ ์ฑ ์ ์ ์ฉํ๊ฑฐ๋ ๋น๋๋ฅผ ์ฐจ๋จํ๊ธฐ ์ํด ์ง์์ ํตํฉ ์์คํ ๊ณผ ๊ธฐ๋ณธ์ ์ผ๋ก ํตํฉ๋์ง ์์ต๋๋ค. Flowistry์ ๊ฐ์น๋ ๊ฐ๋ฐ ๊ณผ์ ์์ ์๋์ผ๋ก ํ์ํ๊ณ ์๊ฐํํ๋ ๋ฐ ์์ต๋๋ค.
๋ฆฐํ ๋๊ตฌ๊ฐ ์๋๋๋ค
Flowistry๋ Clippy์ฒ๋ผ ์คํ์ผ ์ง์นจ, ๋ช ๋ช ๊ท์น ๋๋ ๊ด์ฉ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ ์ฉํ์ง ์์ต๋๋ค. ์ง๋์น๊ฒ ๋ณต์กํ ํํ์, ์ํฐํจํด ๋๋ ํ ์ฝ๋ ์คํ์ผ ์ ์ฑ ์๋ฐ์ ํ์ํ ์ ์์ต๋๋ค. ์คํ์ผ ์ผ๊ด์ฑ์ ์ ์งํ๋ ค๋ฉด ํ๋ง๋ค ๋ณ๋์ ๋ฆฐํฐ๊ฐ ํ์ํฉ๋๋ค.
๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์์ ์ฑ๋ฅ
Flowistry๋ ํ์ค์ ์ธ Rust ํ๋ก์ ํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ์์ ๊ถ ์ฒด์ธ์ด ๊น๊ฒ ์ค์ฒฉ๋ ๋งค์ฐ ํฐ ์ฝ๋๋ฒ ์ด์ค์์๋ ์ ์ ๋ถ์ ์๋๊ฐ ๋๋ ค์ง๊ฑฐ๋ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์์ ๋ํํ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ธ๋ด์ฌ์ ๊ฐ์ ธ์ผ ํ๊ฑฐ๋ ํน์ ๋ชจ๋์ ๋ํ ์ ํ์ ๋ถ์์ด ํ์ํ ์ ์์ต๋๋ค.
ํจ๊ณผ์ ์ธ ์ฌ์ฉ์ ์ํ ํ์ต ๊ณก์
Flowistry๋ Rust์ ์์ ๊ถ ์์คํ ์ ๋ ๋ช ํํ๊ฒ ๋ณด์ฌ์ฃผ๋๋ก ์ค๊ณ๋์์ง๋ง, ๊ฐ๋ฐ์๋ ์๊ฐํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํด์ํ๊ธฐ ์ํด ์์ ๊ถ, ์ฐจ์ฉ, ์๋ช ์ ๊ธฐ๋ณธ ์ฌํญ์ ์ดํดํด์ผ ํฉ๋๋ค. Rust๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ Flowistry์ ์ด์ ์ ์ต๋ํ ํ์ฉํ๊ธฐ ์ํด ํํ ๋ฆฌ์ผ์ด๋ ๊ต์ก ๊ณผ์ ์ ๋ณํํด์ผ ํ ์ ์์ต๋๋ค.
Flowistry๋ Rust ์ธ์ด์ ๊ฐ์ฅ ๊ฐ๋ ฅํ๋ฉด์๋ ๊น๋ค๋ก์ด ๊ธฐ๋ฅ ์ค ํ๋๋ฅผ ๋ช ํํ๊ฒ ์ค๋ช ํจ์ผ๋ก์จ Rust ํด ์ํ๊ณ์์ ๋ ๋ณด์ ์ธ ์ญํ ์ ์ํํฉ๋๋ค. ์์ ๊ถ๊ณผ ์ฐจ์ฉ ๊ด๊ณ๋ฅผ ๋ช ํํ๊ณ ์๊ฐ์ ์ผ๋ก ํํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ ์์ ํ๊ณ ๋ช ํํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํผ๋์ค๋ฌ์ด ์ฐจ์ฉ ๊ฒ์ฌ๊ธฐ ์ค๋ฅ๋ฅผ ๋์ฑ ํจ์จ์ ์ผ๋ก ๋๋ฒ๊น ํ ์ ์์ต๋๋ค. ํ์ง๋ง Flowistry์ ์ญํ ์ ์ํธ ๋ณด์์ ์ธ ๊ฒ์ผ๋ก ๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. Flowistry๋ ๊ฐ๋ฐ์๋ฅผ ์ง์ํฉ๋๋ค. ์ดํด Rust์ ๋ชจ๋ธ์ ๋ค๋ฅธ ์ ์ ๋ถ์, ๋ฆฐํ ๋ฐ ๋ณด์ ๋๊ตฌ๊ฐ ๋์์ด ๋๋ ๋ฐ๋ฉด ์ต์ง๋ก ์ํค๋ค ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์ ๊ฑธ์ณ ์ ํ์ฑ, ๋ณด์์ฑ, ์ ์ง ๊ด๋ฆฌ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
ํด๋ก๋์ด์ค
ํด๋ก๋์ด์ค๋ Rust ์ปดํ์ผ๋ฌ ํ๋ก์ ํธ์ ์ผํ์ผ๋ก ๊ฐ๋ฐ๋ ๊ณ ๊ธ ์ฐจ์ฉ ๊ฒ์ฌ ์์ง์ผ๋ก, Rust์ ์์ ๊ถ ๋ฐ ์ฐจ์ฉ ๋ถ์์ ์ ํ์ฑ, ์ ์ง ๊ด๋ฆฌ ์ฉ์ด์ฑ, ๊ทธ๋ฆฌ๊ณ ํฅํ ํ์ฅ์ฑ์ ํฅ์์ํต๋๋ค. ์ ฐ์ต์คํผ์ด์ ํฌ๊ณก์ ๋ฑ์ฅํ๋ ์ธ๋ฌผ์ ์ด๋ฆ์ ๋ฐ์ ๋ช ๋ช ๋์์ต๋๋ค. ์์ ์ด๋ฝPolonius๋ Rust์ ์๋ ๊ตฌํ๊ณผ ๋น๊ตํ์ ๋ ์ฐจ์ฉ ๊ฒ์ฌ์ ๋ํ ๋ณด๋ค ๊ณต์์ ์ด๊ณ ์ ์ธ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋ํ๋ ๋๋ค.
Polonius์ ํต์ฌ์ ๋ถ์์ ๋์ฑ ์ ํํ๊ณ ๊ฑด์ ํ๊ฒ ๋ง๋ค์ด ํ์ฌ ์ฐจ์ฉ ๊ฒ์ฌ๊ธฐ์ ํ๊ณ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋๋ค. ๋น์ดํ์ ์๋ช (NLL). Rust์ ํ์ค Borrow Checker๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ ์์ด๋ ์์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ง๋ง, ํน์ ์ํฉ์์๋ ๋ณด์์ ์ผ๋ก ๋์ํ์ฌ ์ค์ ๋ก ์์ ํ ์ฝ๋๋ฅผ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค. Polonius๋ Rust์ ๊ฐ๋ ฅํ ์์ ์ฑ ๋ณด์ฅ์ ์ ์งํ๋ฉด์๋ ๋์ฑ ์ ํจํ Rust ํ๋ก๊ทธ๋จ์ ์์ฉํ ์ ์๋ ๋์ฑ ์์ธํ๊ณ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ ๋ถ์์ ์ ๊ณตํฉ๋๋ค.
ํด๋ก๋์ด์ค๋ Rust ์ปดํ์ผ๋ฌ์ ์ ํ์ ์คํ ์์ง์ผ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ค์ฌ์ ๋ ๋ฆฝํ ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ์๋๋ผ, ์ถ๋ก , ๊ฒ์ฆ, ๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก ํ์ฅ์ด ์ฉ์ดํ ์ ํํ๋ ๋ชจ๋ธ์ ๊ฐ์ถ ๋ด๋ถ ๊ตฌ์ฑ ์์์ ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ์ ์ธ์ ์ฐจ์ฉ ๊ฒ์ฌ
์ฐจ์ฉ ๊ฒ์ฌ ๊ท์น์ ํํํ๊ธฐ ์ํด ์ ์ธ์ Datalog ๊ธฐ๋ฐ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ ผ๋ฆฌ๋ฅผ ๋ ๋ช ํํ๊ณ ๊ณต์์ ์ผ๋ก ๊ฒ์ฆํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. - ๋น์ดํ์ ์๋ช
์ง์
Rust์ NLL ์์คํ ์ ์ ํํ๊ฒ ์ฒ๋ฆฌํ์ฌ ์ดํ ๋ฒ์๊ฐ ๋๋๊ธฐ ์ ์ ์ฐจ์ฉ์ ์ข ๋ฃํ ์ ์์ผ๋ฏ๋ก ๊ฑฐ์ง ์์ฑ์ ์ค์ด๊ณ ๋ ์ ์ฐํ ์ฐจ์ฉ ํจํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ํฅ์๋ ๋ถ์ ์ ํ๋
๊ธฐ์กด ์ฐจ์ฉ ๊ฒ์ฌ๊ธฐ์์ ๋ณผ ์ ์์๋ ๋ถํ์ํ ๊ฑฐ๋ถ๋ฅผ ํผํ๊ณ ์ฐธ์กฐ ๋ฐ ์ฐจ์ฉ ํ๋ฆ์ ์ ํํ๊ฒ ๋ชจ๋ธ๋งํ์ฌ ๋์ฑ ์ ํจํ ํ๋ก๊ทธ๋จ์ ์์ฉํฉ๋๋ค. - ๊ณต์ ์ฌ์
์ฐ๊ตฌ์์ ์ปดํ์ผ๋ฌ ์์ง๋์ด๊ฐ ์ฐจ์ฉ ๊ฒ์ฌ์ ๊ฑด์ ์ฑ์ ๋ํด ์ถ๋ก ํ๊ธฐ ์ฝ๋๋ก ๋ช ํํ๊ณ ๊ณต์์ ์ธ ์ผ๋ จ์ ๊ท์น์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. - Rust ์ปดํ์ผ๋ฌ์์ ํตํฉ
rustc์์ ์คํ์ฉ ์์ง์ผ๋ก ๊ตฌํ๋์์ผ๋ฉฐ, ํ ์คํธ ๋ฐ ์ฐ๊ตฌ๋ฅผ ์ํด ์ผ๊ฐ ๋น๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ Rust์ ๊ธฐ๋ณธ ๋น๋ฆผ ๊ฒ์ฌ ๊ธฐ๋ฅ์ ๋ํ ํฅํ ๊ฐ์ ์ฌํญ์ ํ์ ํ๊ธฐ ์ํด ์ด ์์ง์ ์คํํด ๋ณผ ์ ์์ต๋๋ค. - ์ฅ๊ธฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ
ํฅํ Rust ์งํ์ ๋ง์ถฐ ์ฐจ์ฉ ๊ฒ์ฌ๊ธฐ ๊ตฌํ์ ๋ณด๋ค ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ณ ํ์ฅํ๊ธฐ ์ฝ๊ฒ ์ค๊ณ๋์์ผ๋ฉฐ, ๋ณด๋ค ๊ณ ๊ธ ์์ ๊ถ ํจํด์ ์ง์ํฉ๋๋ค.
ํด๋ก๋์ด์ค๊ฐ Rust์ ์ฐจ์ฉ ๊ฒ์ฌ ์ฐ๊ตฌ ๋ฐ ์ค๊ณ์ ์์ด์ ์๋นํ ์ง์ ์ ๋ํ๋ด์ง๋ง, ํด๋ก๋์ด์ค์ ๊ตฌ์ฒด์ ์ธ ์ญํ ๊ณผ ํด๋ก๋์ด์ค๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํ๊ณ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ ๋ฆฝํ ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ์๋๋๋ค
Polonius๋ ๊ฐ๋ฐ์๊ฐ ๋ช ๋ น์ค ๋๊ตฌ๋ IDE ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ์ง์ ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค. ๋ฆฐํฐ, ์ ์ ๋ถ์๊ธฐ, ํ์ ๊ฒ์ฆ๊ธฐ์ ๋ฌ๋ฆฌ, Polonius๋ ์ปดํ์ผ๋ฌ์ ์ผ๋ถ๋ก ์คํ๋๋ ๋ด๋ถ ์์ง์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ปดํ์ผ๋ฌ ์ธ๋ถ์์ ์ฝ๋๋ฅผ ๋ถ์ํ๊ธฐ ์ํด Polonius๋ฅผ ๋ณ๋๋ก ์ค์นํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
์คํ์ ์ด๊ณ ์์ง ๊ธฐ๋ณธ์ด ์๋
ํ์ฌ Polonius๋ ์คํ์ ์ธ ๋ฒ์ ์ผ๋ก ๊ฐ์ฃผ๋๋ฉฐ ์์ ์ ์ธ Rust์ ๊ธฐ๋ณธ borrow checker๊ฐ ์๋๋๋ค. ๊ฐ๋ฐ์๋ ์ผ๊ฐ ๋น๋์์ Polonius๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํํ ์ ์์ง๋ง, ๋ชจ๋ ํ๋ก๋์ ์ํฌ๋ก๋์ ๋ํด ์์ ์ฑ์ด๋ ์๋ฒฝํ ์ต์ ํ๊ฐ ๋ณด์ฅ๋์ง๋ ์์ต๋๋ค.
๋์ถ ํ์ธ์๋ง ์ง์ค
ํด๋ก๋์ด์ค๋ ์ฐจ์ฉ ๊ฒ์ฌ(borrow check)๋ง ๋ค๋ฃน๋๋ค. ๊ด์ฉ์ ์ฉ๋ฒ ๊ฒ์ฌ(linting), ์ข ์์ฑ ์ทจ์ฝ์ ์ ๋ํ ๋ณด์ ์ค์บ๋, ๊ธฐ๋ฅ์ ์ ํ์ฑ์ ๋ํ ํ์์ ๊ฒ์ฆ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ข ๋ฅ์ ์ ์ ๋ถ์์ ์ํํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์ฝ๋ ํ์ง ์ธก๋ฉด์ ๋ค๋ฃจ๋ ค๋ฉด ๋ค๋ฅธ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
๋ ผ๋ฆฌ ๋ฒ๊ทธ ๋๋ ๋ณด์ ๊ฒฐํจ ๊ฐ์ง ์ ๋จ
ํด๋ก๋์ด์ค๋ ์ฐจ์ฉ ๊ฒ์ฌ์ ์ ํ๋๋ฅผ ํฅ์์ํค์ง๋ง, ์์ ๊ถ ๋ฐ ์๋ช ๊ณผ ๊ด๋ จ ์๋ ์ผ๋ฐ์ ์ธ ๋ ผ๋ฆฌ ์ค๋ฅ, ๋จ์ธ ์ค๋ฅ, ๋๋ ๋ณด์ ๋ฌธ์ ๋ ๊ฐ์งํ์ง ๋ชปํฉ๋๋ค. ๊ฐ๋ฐ์๋ ํฌ๊ด์ ์ธ ์์ ์ ์ํด ์ฌ์ ํ Clippy, MIRAI, Cargo-Audit๊ณผ ๊ฐ์ ํ ์คํธ, ๊ฒํ ๋ฐ ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
์์ ํ์ง ์์ ์ฝ๋ ๊ฒ์ฆ ์ง์ ์์
ํด๋ก๋์ด์ค๋ Rust์ ์์ ํ ์ฐจ์ฉ ๊ท์น์ ๋ชจ๋ธ๋งํ์ง๋ง, ๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ์ฐจ์ฉ ๊ฒ์ฌ๊ธฐ๋ฅผ ์ฐํํ๋ ์์ ํ์ง ์์ ๋ธ๋ก์ ์๋ฏธ๋ก ์ ๋ถ์ํ์ง ์์ต๋๋ค. ์์ ํ์ง ์์ ์ฝ๋์ ๋ฒ๊ทธ๋ ์ฌ์ ํ ๊ฐ๋ฐ์์ ์ฑ ์์ด๋ฉฐ ํด๋ก๋์ด์ค์ ๋ถ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
์ ํ๋ ๊ฐ๋ฐ์ ๊ฐ์์ฑ ๋ฐ ๋ณด๊ณ
ํด๋ก๋์ด์ค๋ ์ปดํ์ผ๋ฌ ๋ด๋ถ ๊ตฌ์ฑ ์์์ด๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์๋ ํน์ ๋ณด๊ณ ์, ๋์๋ณด๋ ๋๋ ๊ตฌ์กฐํ๋ ์ถ๋ ฅ์ ์์ฑํ์ง ์์ต๋๋ค. ํด๋ก๋์ด์ค์ ์ด์ ์ ๋ ์ ํจํ ์ฝ๋๋ฅผ ์์ฉํ๊ฑฐ๋, ๋ถ์ ์ ํ ์ฝ๋๋ฅผ ๋ ์ ํํ๊ฒ ๊ฑฐ๋ถํจ์ผ๋ก์จ ๊ฐ์ ์ ์ผ๋ก ๋๋ฌ๋ฉ๋๋ค.
๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์์ ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
ํด๋ก๋์ด์ค์ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๋ชจ๋ธ์ ์ ๋ฐ์ฑ์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์์ง๋ง, ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์ฌ๋ก์๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ๊ธฐ์กด ์ฐจ์ฉ ๊ฒ์ฌ๊ธฐ๋ณด๋ค ์๋๊ฐ ๋๋ฆด ์ ์์ผ๋ฉฐ, ์ด๊ฒ์ด ํด๋ก๋์ด์ค๊ฐ ์คํ์ ์ธ ๋ชจ๋ธ๋ก ๋จ์ ์๋ ์ด์ ์ค ํ๋์ ๋๋ค.
Polonius๋ ์์ ๊ถ ๋ฐ ์ฐจ์ฉ์ ๋ํ ์ ํ์ ์ด๊ณ ์ ํํ๋ฉฐ ์ ์ง ๋ณด์ ๊ฐ๋ฅํ ๋ถ์์ ํตํด Rust์ ํต์ฌ ์์ ์ฑ ๋ณด์ฅ์ ํฅ์์ํค๊ฒ ๋ค๋ ์์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ด๋ ์ธ์ด์ ์ฅ๊ธฐ์ ์ธ ์ฌ์ฉ์ฑ๊ณผ ์์ ์ฑ, ํนํ ์์ ์ฑ์ ํฌ์ํ์ง ์์ผ๋ฉด์ ๋์ฑ ์ ์ฐํ๊ณ ํํ๋ ฅ์ด ํ๋ถํ ์ฐจ์ฉ ํจํด์ ์ง์ํ๊ธฐ ์ํ ์ค์ํ ํฌ์์ ๋๋ค. ๊ทธ๋ฌ๋ ์ค๋๋ ๊ฐ๋ฐ์์๊ฒ Polonius๋ ๋ฒ์ฉ ์ ์ ๋ถ์ ๋๊ตฌ๋ผ๊ธฐ๋ณด๋ค๋ ์ปดํ์ผ๋ฌ์ ์ด๋ฉด์ ์ธ ๊ฐ์ ์ฌํญ์ผ๋ก ์ดํด๋๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ๊ฐ๋ฐํ์ ๊ธฐ์กด Rust ์ปดํ์ผ๋ฌ, Clippy, ๋ณด์ ์ค์บ๋, ์ ํ ๊ฒ์ฆ ๋๊ตฌ๋ฅผ ๊ณ์ ์ฌ์ฉํ๋ ๋์์ Rust ํ๋ก์ ํธ์ ํฌ๊ด์ ์ธ ํ์ง๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๋์์ Polonius๊ฐ Rust์ ๋ฏธ๋ ๋ฐ์ ์ ์ผ๋ถ๋ก์ ์ด๋ป๊ฒ ๋ฐ์ ํ๋์ง ์ง์ผ๋ด์ผ ํฉ๋๋ค.
๋ฏธ๋ฆฌ
Miri๋ Rust ํ๋ก๊ทธ๋จ์ ์ ํํ๊ณ ๋จ๊ณ๋ณ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ Rust์ ์ค๊ฐ ์์ค ์ค๊ฐ ํํ(MIR)์ ์ํ ์ธํฐํ๋ฆฌํฐ์ ๋๋ค. ์ ์๋์ง ์์ ๋์ ์ปดํ์ผ ํ์์. ๊ธฐ์กด์ ํ ์คํธ ๋๋ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋ฌ๋ฆฌ Miri๋ Rust ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ๊ฐ์ฅ ์๊ฒฉํ ๊ท์น์ ์ ์ฉํ๋ฉด์ ์คํ์ ์๋ฎฌ๋ ์ด์ ํ๋ ํ๊ฒฝ์์ Rust ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ๊ณผ์ ์ด๋ ํน์ ์ํฉ์์๋ ๋ฐํ์์ ๊ฐ๊ณผ๋ ์ ์๋ ๋ฏธ๋ฌํ๊ณ ์ข ์ข ์ํํ ๋ฒ๊ทธ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
Rust ํด์ฒด์ธ์ cargo ํ์ ๋ช
๋ น์ผ๋ก ํฌํจ๋จ(cargo miri), Miri๋ ์์ ํ์ง ์์ ์ฝ๋๊ฐ Rust์ ์จ๋ฆฌ์ด์ฑ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์ ๊ท์น์ ์ค์ํ๋์ง ํ์ธํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค. ๋ํ ์์ ํ ์ฝ๋์ ์ ํ์ฑ์ ๊ฒ์ฌํ ์ ์์ผ๋ฉฐ, ํนํ ์ปดํ์ผ๋ฌ์ ์ ์ ๋ถ์๋ง์ผ๋ก๋ ์์ ์ฑ์ ์
์ฆํ ์ ์๋ ๋ณต์กํ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ์์ ์ ๊ฒ์ ํตํ MIR ์คํ
Rust์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๋ณด์ฅ์ ๊ฐํํ๋ฉด์ MIR ์์ค์์ Rust ์ฝ๋๋ฅผ ํด์ํ๊ณ , ์ฌ์ฉ ํ ํด์ , ์ ๋ ฌ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ๋๋ ์๋ชป๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ์ ๊ฐ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํฉ๋๋ค. - ์ ์๋์ง ์์ ๋์ ๊ฐ์ง
์์ ํ์ง ์์ ์ฝ๋์์ ์ ์๋์ง ์์ ๋์์ ํ์ํ์ฌ ์๋์ผ๋ก ๊ด๋ฆฌ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ Rust์ ๋ณด์ฅ์ ์ค์ํ๋๋ก ๋ณด์ฅํฉ๋๋ค. - ์์ ํ Rust์ ์์ ํ์ง ์์ Rust๋ฅผ ์ง์ํฉ๋๋ค.
์์ ํ ์ฝ๋ ๊ฒฝ๋ก์ ์์ ํ์ง ์์ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ๊ฒ์ฌํ์ฌ ์ฑ๋ฅ์ด๋ FFI๋ฅผ ์ํด ์์ ํ์ง ์์ ๋ธ๋ก์ ์์กดํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ฆํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. - ํ๋ฌผ๊ณผ์ ํตํฉ
์ฌ์ฉ ๊ฐ๋ฅcargo miri๋ณต์กํ ์ค์ ์์ด Rust ์ํฌํ๋ก์ ๊ฐ๋จํ ํฌํจํ ์ ์์ต๋๋ค. - ์์ธํ ์ค๋ฅ ๋ณด๊ณ
์ ์๋์ง ์์ ๋์์ด ๋ฐ์ํ๋ ์์น์ ์ด์ ๋ฅผ ์ ํํ๊ฒ ๋ํ๋ด๋ ์ ๋ฐํ ์ง๋จ ์ถ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. - ์์ ํ ์ถ์ํ ๊ฐ๋ฐ์ ์ง์ํฉ๋๋ค
์์ ํ์ง ์์ ์ฝ๋ ์์ ์์ ํ API๋ฅผ ๊ตฌํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์์๊ฒ ํ์์ ์ด๋ฉฐ, ์ถ์ํ๊ฐ ๋ถ์ ์ ํ ๋์์ ์จ๊ธฐ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค. - FFI(์ธ๋ถ ํจ์ ์ธํฐํ์ด์ค)์ ๋ํ ์คํ์ ์ง์
Miri๋ ์ ํ์ ์ด๊ธฐ๋ ํ์ง๋ง C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ผ๋ถ ์ํธ์์ฉ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์์ ๊ฒฝ๊ณ๊ฐ ๋ชจํธํ ์ ์๋ ํผํฉ ์ธ์ด ์ฝ๋์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ์คํ ์์ค์ด๋ฉฐ ์ ๊ทน์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌ๋ฉ๋๋ค.
Rust ํ๋ก์ ํธ์ ์ผ๋ถ๋ก, ์ง์์ ์ธ ๊ฐ์ ๊ณผ ๋ ๊ด๋ฒ์ํ Rust ํด์ฒด์ธ๊ณผ์ ํตํฉ์ด ์ด๋ฃจ์ด์ง๊ณ ์์ต๋๋ค.
Miri๋ ๊ท์คํ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ง๋ง, ๊ฐ๋ฐ์๊ฐ ์ํฌํ๋ก์ Miri๋ฅผ ๋์ ํ ๋ ์ดํดํด์ผ ํ ์ค์ํ ํ๊ณ์ ๋จ์ ์ด ์์ต๋๋ค.
๊ธฐ์กด ํ ์คํธ๋ฅผ ๋์ฒดํ์ง ์์
Miri๋ ์์ ์ถ๋ ฅ ์ธก๋ฉด์์ ํ ์คํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ ํ์ฑ์ ๊ฒ์ฆํ์ง ์์ต๋๋ค. ๊ฐ์ง์ ์ค์ ์ ๋ก๋๋ค. ์ ์๋์ง ์์ ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๋ค๊ณ ์ฃผ์ฅํ๊ธฐ๋ณด๋ค๋, ๊ฐ๋ฐ์๋ ๋ ผ๋ฆฌ์ ์ ํ์ฑ์ ๊ฒ์ฆํ๊ธฐ ์ํด ๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ, ์์ฑ ๊ธฐ๋ฐ ํ ์คํธ๊ฐ ์ฌ์ ํ ํ์ํฉ๋๋ค.
๋์ ๊ธฐ๋ฅ ๋ฐ ์์คํ ํธ์ถ์ ๋ํ ์ ํ๋ ์ง์
Miri๋ ๋ชจ๋ ์์คํ ์์ค ์์ ์ ์๋ฒฝํ๊ฒ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ต๋๋ค. OS๋ณ ๊ธฐ๋ฅ, I/O, ๋คํธ์ํน ๋๋ ์ค๋ ๋ฉ ๊ธฐ๋ณธ ์์์ ์์กดํ๋ ์ฝ๋๋ Miri ํ๊ฒฝ์์ ์คํจํ๊ฑฐ๋ ์ง์๋์ง ์์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ถ์ํ๊ธฐ ์ํด ํน์ํ ๋๊ตฌ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฝ๋ ์น์ ์ ๋ถ๋ฆฌํด์ผ ํ ์ ์์ต๋๋ค.
๋ค์ดํฐ๋ธ ์คํ๋ณด๋ค ๋๋ฆผ
Miri๋ ์ฝ๋๋ฅผ ๋ค์ดํฐ๋ธ ๋ช ๋ น์ด๋ก ์ปดํ์ผํ๋ ๋์ ํด์ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ์คํ ์๋๋ณด๋ค ํจ์ฌ ๋๋ฆฝ๋๋ค. Miri๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ถ์ํ๊ฑฐ๋ ๋ณต์กํ ๊ณ์ฐ์ ์คํํ๋ ๋ฐ๋ ์๊ฐ์ด ๋ง์ด ์์๋ ์ ์์ผ๋ฉฐ, ์ด๋ ๋๊ท๋ชจ ์๋ ๊ฒ์ฌ์ ๋ํ ์ค์ฉ์ฑ์ ์ ํํฉ๋๋ค.
์ข ์์ฑ ์ทจ์ฝ์ ๋ถ์ ์์
Miri๋ cargo-audit๊ณผ ๊ฐ์ ๋๊ตฌ์ ๋ฌ๋ฆฌ ์ข ์์ฑ์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ๊ฒ์ฌํ์ง ์์ต๋๋ค. ๋ณด์ ๊ถ๊ณ ๊ฐ ํฌํจ๋ ์ค๋๋ ํฌ๋ ์ดํธ์ ๋ํด ๊ฒฝ๊ณ ํ ์ ์์ผ๋ฏ๋ก, ๊ณต๊ธ๋ง ๋ณด์์ ์ํด์๋ ๋ณ๋์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
์คํ์ผ์ด๋ ๊ด์ฉ์ ์ฌ์ฉ์ ๊ฐ์ํ์ง ์์ต๋๋ค
Miri๋ ๋ฆฐํฐ๊ฐ ์๋๋ฉฐ ์ฝ๋ ์คํ์ผ, ๋ช ๋ช ๊ท์น ๋๋ Rust์ ๊ด์ฉ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ผ๊ด๋๊ณ ๊ด์ฉ์ ์ธ ์ฝ๋๋ฅผ ์ ์งํ๊ธฐ ์ํด Clippy์ ๊ฐ์ ์คํ์ผ ์ค์ฌ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
์ผ๋ฐ ๋ ผ๋ฆฌ ๋ฒ๊ทธ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ง์ค
Miri๋ ์ ์๋์ง ์์ ๋์์ ๊ฐ์งํ๋ ๋ฐ ํ์ํ์ง๋ง, ์์ ํ ์ฝ๋์ ์ค์ฐจ, ์๋ชป๋ ์๊ณ ๋ฆฌ์ฆ, ๋๋ฉ์ธ๋ณ ๋ถ๋ณ์ ์๋ฐ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ ผ๋ฆฌ ์ค๋ฅ๋ฅผ ์๋ณํ์ง ๋ชปํฉ๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ ๋ค๋ฅธ ํํ์ ํ ์คํธ๋ ํ์์ ๊ฒ์ฆ์ด ํ์ํฉ๋๋ค.
์คํ์ FFI ์ง์ ์ ํ ์ฌํญ
Miri์ ์ธ๋ถ ํจ์ ํธ์ถ ํด์ ๋ฅ๋ ฅ์ ์ ํ์ ์ด๊ณ ์คํ์ ์ ๋๋ค. ๋ณต์กํ FFI ์๋๋ฆฌ์ค๋ ํน์ ํ๋ซํผ์ ํนํ๋ C ์ฝ๋๋ Miri๋ก ์๋ฒฝํ๊ฒ ๋ถ์ํ๊ธฐ ์ด๋ ค์ธ ์ ์์ผ๋ฏ๋ก, ๋ณ๋์ ๊ฒํ ๋ฐ ํ ์คํธ ์ ๋ต์ด ํ์ํฉ๋๋ค.
ํจ๊ณผ์ ์ธ ์ฌ์ฉ์ ์ํ ํ์ต ๊ณก์
Miri์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ๊ฐ๋จํ์ง๋ง cargo miriํนํ ์์ ๊ถ ํจํด์ด ๋ณต์กํ๊ฑฐ๋ ์์ ํ์ง ์์ ๊ณ ๊ธ ์ฝ๋๊ฐ ์๋ ํ๋ก์ ํธ์์๋ ์ถ๋ ฅ์ ํจ๊ณผ์ ์ผ๋ก ํด์ํ๊ณ ๋ถ์์ ์ํด ์ฝ๋๋ฅผ ๊ตฌ์กฐํํ๋ ๊ฒ์ด ์ฝ์ง ์์ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ Miri๋ฅผ ์์ ์ ์ํฉ์ ๋ง๊ฒ ๊ฐ์ฅ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํ์
ํ๊ธฐ ์ํด ์๊ฐ์ ํฌ์ํด์ผ ํ ์๋ ์์ต๋๋ค.
Miri๋ Rust์ ์ ํ์ฑ ๋๊ตฌ ๋ชจ์์ ์ถ๊ฐ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก, ์ปดํ์ผ๋ฌ์๋ ๋ณด์ด์ง ์๊ณ ๊ธฐ์กด ํ ์คํธ๋ก๋ ์ฌํํ๊ธฐ ์ด๋ ค์ด ์ ์๋์ง ์์ ๋์์ ํฌ์ฐฉํ๋ ๊ณ ์ ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์๊ฒฉํ ์์ ๊ฒ์ฌ๋ฅผ ํตํด ์คํ์ ์๋ฎฌ๋ ์ด์ ํจ์ผ๋ก์จ ์์ ํ ์ฝ๋์ ์์ ํ์ง ์์ ์ฝ๋ ๋ชจ๋ Rust์ ์๊ฒฉํ ๋ณด์ฅ์ ์ค์ํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ํ์ง๋ง Miri๋ ๋ณด์ด Rust ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ํฌ๊ด์ ์ธ ์ ๋ขฐ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ฆฐํฐ, ์ ์ ๋ถ์๊ธฐ, ๋ณด์ ์ค์บ๋ ๋ฐ ์ฒ ์ ํ ํ ์คํธ์ ํจ๊ป ์ฌ์ฉ๋๋ ๋ค๋ฅธ ๋๊ตฌ์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์นด๊ณ ์ค์บ
cargo-scan์ Rust ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฒ ์ด์ค์ ์ทจ์ฝ์ ๊ณผ ์์ ํ์ง ์์ ํจํด์ ํ์งํ ์ ์๋๋ก ์ค๊ณ๋ ๋ณด์ ์ค์ฌ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. ์ธ๋ถ ํฌ๋ ์ดํธ์ ์๋ ค์ง ๊ถ๊ณ ์ฌํญ์ ์ด์ ์ ๋ง์ถ๋ cargo-audit๊ณผ ๊ฐ์ ์ข ์์ฑ ์ค์บ๋์ ๋ฌ๋ฆฌ, cargo-scan์ ํ๋ก์ ํธ์ ์ค์ Rust ์์ค ์ฝ๋์์ฐ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์ ์ฌ์ ์ธ ๋ณด์ ๋ฌธ์ ๋ฅผ ํ์ํฉ๋๋ค.
Semgrep ์์ง์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ cargo-scan์ ๊ท์น ๊ธฐ๋ฐ ํจํด ๋งค์นญ์ ํ์ฉํ์ฌ ์์ ํ์ง ์์ ์ฝ๋ฉ ํจํด, ์ํฐํจํด, ๊ทธ๋ฆฌ๊ณ ์ทจ์ฝ์ ์ผ๋ก ์ด์ด์ง ์ ์๋ ํํ ์ค์๋ฅผ ์๋ณํฉ๋๋ค. Rust ๊ฐ๋ฐ ์ํฌํ๋ก์ ์๋ฒฝํ๊ฒ ํตํฉ๋๋๋ก ์ค๊ณ๋์ด ๊ฐ๋ฐ์์๊ฒ CI/CD ํ์ดํ๋ผ์ธ๊ณผ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ณด์ ์ค์บ๋์ ์ง์ ๋์ ํ ์ ์๋ ๊ฐ๋ณ์ง๋ง ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ์ ์ ์ฝ๋ ๋ณด์ ์ค์บ๋
ํ๋์ฝ๋ฉ๋ ๋น๋ฐ, ์์ ํ์ง ์์ API ์ฌ์ฉ ๋๋ ์์ ํ์ง ์์ ์ํธํ ๊ดํ๊ณผ ๊ฐ์ ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ ์ฐพ๊ธฐ ์ํด Rust ์์ค ์ฝ๋๋ฅผ ๋ถ์ํฉ๋๋ค. - Semgrep ๊ธฐ๋ฐ ์์ง
Semgrep์ ์ ์ฐํ ํจํด ๋งค์นญ ์์ง์ ์ฌ์ฉํ์ฌ ๊ณ ๊ธ ๊ท์น ์ ์์ ๋ณด์ ๋ฌธ์ ์ ์ ํํ ํ์ง๊ฐ ๊ฐ๋ฅํฉ๋๋ค. - ํ๋ ์ดํธ๋ ๊ท์น ์ธํธ
์ผ๋ฐ์ ์ธ Rust ๋ณด์ ํจ์ ์ ๋ง์ถฐ ๋ฏธ๋ฆฌ ์์ฑ๋ ๊ท์น ์ธํธ๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๋ฐ์๊ฐ ์ฌ์ธต์ ์ธ ๋ณด์ ์ ๋ฌธ ์ง์ ์์ด๋ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ์ฌ์ฉ์ ์ ์ ๊ท์น ์ง์
ํ์ด ์กฐ์ง๋ณ ์ง์นจ์ด๋ ์ ์ฑ ์ ์ํํ๊ธฐ ์ํด ์์ฒด ๋ณด์ ๊ท์น์ ์ ์ํ ์ ์์ต๋๋ค. - ํ๋ฌผ ํตํฉ
Cargo ๋ช ๋ น๊ณผ ํจ๊ป ์๋ํฉ๋๋ค(cargo scan), ๊ฐ๋ฐ์๊ฐ ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์๋ ๋์ผํ ์ํฌํ๋ก์์ ์ฝ๊ฒ ์ค์บ์ ์คํํ ์ ์์ต๋๋ค. - CI/CD ํ์ดํ๋ผ์ธ ํธํ์ฑ
๋ณํฉํ๊ธฐ ์ ์ ๋ณด์ ๋ฌธ์ ๊ฐ ์๋์ง ํ ๋ฆฌํ์คํธ์ ์ ์ปค๋ฐ์ ์๋์ผ๋ก ๊ฒ์ฌํ๊ธฐ ์ํด ์ง์์ ํตํฉ ์์คํ ์ ํตํฉํ ์ ์์ต๋๋ค. - ์ฝ๊ธฐ ์ฝ๊ณ ์คํ ๊ฐ๋ฅํ ๋ณด๊ณ ์
๊ฐ์ง๋ ๋ฌธ์ ์ ๋ํ ๋ช ํํ ์ค๋ช ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ์ ๊ณตํ์ฌ ์ธ๊ฐ ์นํ์ ์ธ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. - ์คํ ์์ค์ด๋ฉฐ ์ ๊ทน์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌ๋ฉ๋๋ค.
Rust ์ปค๋ฎค๋ํฐ์์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊ท์น ์ธํธ์ ๊ฐ์ง ๊ธฐ๋ฅ์ด ์ง์์ ์ผ๋ก ๊ฐ์ ๋๊ณ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
cargo-scan์ Rust ํ๋ก์ ํธ์ ๊ท์คํ ๋ณด์ ์ค์บ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ์ด๋ฅผ ๋์ ํ ๋ ์์์ผ ํ ์ค์ํ ์ ํ ์ฌํญ๊ณผ ์์ถฉ ๊ด๊ณ๊ฐ ์์ต๋๋ค.
๊ท์น ๊ธฐ๋ฐ ํ์ง ํ๊ณ
์นด๊ณ ์ค์บ์ ์ฌ์ธต์ ์ธ ์๋ฏธ๋ก ์ ๋๋ ํ์์ ๋ถ์๋ณด๋ค๋ ํจํด ๋งค์นญ์ ์์กดํฉ๋๋ค. ์ ์๋ ๊ท์น๊ณผ ์ผ์นํ๋ ๋ฌธ์ ๋ง ํ์งํ ์ ์์ต๋๋ค. ์ฆ, ๊ธฐ์กด ๊ท์น์์ ๋ค๋ฃจ์ง ์๋ ๋ฏธ๋ฌํ ๋งฅ๋ฝ ๊ธฐ๋ฐ ๋ณด์ ์ทจ์ฝ์ ์ด๋ ์๋ก์ด ๊ณต๊ฒฉ ํจํด์ ๋์น ์ ์์ต๋๋ค.
๊ฑฐ์ง ๊ธ์ ๊ฐ๋ฅ์ฑ
ํจํด ๊ธฐ๋ฐ ๊ท์น์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ ์ ๋ถ์๊ธฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก, cargo-scan์ ์คํ์ง(์ค์ ๋ก๋ ์์ ํ์ง๋ง ์์ฌ์ค๋ฌ์ด ํจํด๊ณผ ์ผ์นํ๋ ์ฝ๋๋ฅผ ํ์ํ๋ ๊ฒ)๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์คํ๊ฒ ๊ฒํ ํ๊ณ ๋ฏผ๊ฐ๋์ ๋ ธ์ด์ฆ์ ๊ท ํ์ ๋ง์ถ๋๋ก ๊ท์น์ ์กฐ์ ํด์ผ ํฉ๋๋ค.
์์ ํ์ง ์์ ์ฝ๋ ๋ถ์์ ๋ํ ์ ํ๋ ์ง์
cargo-scan์ Rudra๋ Miri์ ๊ฐ์ ๋๊ตฌ์ฒ๋ผ ์์ ํ์ง ์์ ๋ธ๋ก์ ๋ํ ์ฌ์ธต์ ์ธ ๊ฒ์ฆ์ ์ํํ์ง ์์ต๋๋ค. ํจํด์ ํตํด ํน์ ์์ ํ์ง ์์ ์ฌ์ฉ๋ฒ์ ํ์ํ ์๋ ์์ง๋ง, ๋ณต์กํ๊ณ ์์ ํ์ง ์์ ์ฝ๋์์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ์ ์ฆํ๊ฑฐ๋ ๋ฐ๋ฐํ๋ ๋ฐ ํ์ํ ์๋ฏธ๋ก ์ ์ดํด๊ฐ ๋ถ์กฑํฉ๋๋ค.
์ข ์์ฑ ์ทจ์ฝ์ ๋ถ์ ์์
cargo-scan์ ์ฌ์ฉ์ ํ๋ก์ ํธ์ ์์ค ์ฝ๋๋ฅผ ์ค์บํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. Cargo.lock cargo-audit์ฒ๋ผ ์ธ๋ถ ํฌ๋ ์ดํธ์ ์๋ ค์ง ์ทจ์ฝ์ ์ ํ์ผ๋งํฉ๋๋ค. ์ ์ฒด ๊ณต๊ธ๋ง ๋ณด์์ ์ํด์๋ ํ์ด cargo-audit๋ฅผ ๋ณํํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ ์ ๊ฒ์ฆ ๊ธฐ๋ฅ ์์
cargo-scan์ ์ ์ ์ฌ์์ด๋ ๊ณ์ฝ์ ๋ํ ์ฝ๋์ ์ ํ์ฑ์ ์ฆ๋ช ํ๋ ค๋ ๊ฒ์ด ์๋๋๋ค. Prusti๋ MIRAI์ ๊ฐ์ ๋๊ตฌ๋ ์ ํํ ๊ธฐ๋ฅ์ ์์ฑ๊ณผ ๋ถ๋ณ๋์ ๊ฒ์ฆํ๋ ๋ฐ ์ฌ์ ํ ํ์ํฉ๋๋ค.
์ ํ๋ IDE ํตํฉ
cargo-scan์ ํฐ๋ฏธ๋๊ณผ CI ํ๊ฒฝ์์๋ ์ ์๋ํ์ง๋ง, ๊ฐ๋ฐ ์ค์ ์ธ๋ผ์ธ ์ค์บ๋๊ณผ ํผ๋๋ฐฑ์ ์ํ ์ธ๊ธฐ ์๋ Rust IDE๋ ํธ์ง๊ธฐ์์ ๊ธด๋ฐํ ํตํฉ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์์ ์ฑ๋ฅ
๋งค์ฐ ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ ์ค์บ์, ํนํ ๋ง์ ์ฌ์ฉ์ ์ง์ ๊ท์น์ด๋ ๋งค์ฐ ๊ด๋ฒ์ํ ํจํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ CI ํ์ดํ๋ผ์ธ์์ ์ค์ง์ ์ธ ์ฑ๋ฅ์ ์ ์งํ๊ธฐ ์ํด ์ค์บ ๋ฒ์๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ๊ท์น์ ์ต์ ํํด์ผ ํ ์๋ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ท์น์๋ ๋ณด์ ์ ๋ฌธ ์ง์์ด ํ์ํฉ๋๋ค.
์นด๊ณ ์ค์บ์ ์ฌ์ฉ์ ์ง์ ๊ท์น ์์ฑ์ ์ง์ํ์ง๋ง, ํจ๊ณผ์ ์ด๊ณ ์ ํํ ๋ณด์ ๊ท์น์ ์์ฑํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ณด์ ์ง์์ด ํ์ํฉ๋๋ค. ์ด๋ฌํ ์ ๋ฌธ ์ง์์ด ๋ถ์กฑํ ํ์ ์ง์์ด๋ ๊ต์ก ์์ด ์ฌ์ฉ์ ์ง์ ๊ท์น ์ธํธ์ ๊ฐ์น๋ฅผ ๊ทน๋ํํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
cargo-scan์ Rust ๋ณด์ ํดํท์ ๊ท์คํ ์ถ๊ฐ ๊ธฐ๋ฅ์ผ๋ก, ํ์ด ํ๋ก์ ํธ ์ถ์ ์ ์ ์์ฒด ํ๋ก์ ํธ์ ์์ ํ์ง ์์ ์ฝ๋ฉ ํจํด์ ํ์ ํ๊ณ ์์ ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ข ์์ฑ ์ค์บ๋, ๋ฉ๋ชจ๋ฆฌ ์์ , ํ์ ๊ฒ์ฆ์ ์ค์ ์ ๋ ๋ค๋ฅธ ๋๊ตฌ๋ค์ ๋ณด์ํ์ฌ ์ต์ ๊ฐ๋ฐ ๋ฐ CI/CD ์ํฌํ๋ก์ ์์ฐ์ค๋ฝ๊ฒ ์ ์ฉ๋๋ ์ค์ฉ์ ์ด๊ณ ์ ๊ทผ ๊ฐ๋ฅํ ์ ์ ๋ณด์ ๋ถ์์ ์ ๊ณตํฉ๋๋ค. cargo-scan์ ๋ค๋ฅธ ๋ณด์ ์ค์ฌ ๊ดํ๊ณผ ๊ฒฐํฉํจ์ผ๋ก์จ Rust ํ์ Rust์ ํน์ง์ธ ์์ฐ์ฑ๊ณผ ์์ ํ๊ฒฝ์ ์ ์งํ๋ฉด์๋ ๋์ฑ ๊ฐ๋ ฅํ๊ณ ์์ ํ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
Rust ์ธ์ด ์๋ฒ(RLS)
Rust ์ธ์ด ์๋ฒ(RLS)๋ Rust ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ์ค์๊ฐ ํธ์ง๊ธฐ ํตํฉ ์ง์์ ์ ๊ณตํ๋ ๊ฐ๋ฐ ๋๊ตฌ์ ๋๋ค. ์ธ์ด ์๋ฒ ํ๋กํ ์ฝ(LSP)์ ๊ตฌํํ์ฌ ๋๋ฆฌ ์ฌ์ฉ๋๋ IDE์ ํธ์ง๊ธฐ๊ฐ Rust ์ฝ๋์ ๋ํ ์ฝ๋ ์์ฑ, ๋ฐ๋ก ๊ฐ๊ธฐ ์ ์, ์ธ๋ผ์ธ ์ค๋ฅ ๊ฒ์ฌ์ ๊ฐ์ ํ๋ถํ๊ณ ์ํฉ ์ธ์์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋๋ก ํฉ๋๋ค.
RLS๋ Rust์ ๊ฐ๋ ฅํ ์ปดํ์ผ๋ฌ ์ง๋จ, ๊ตฌ๋ฌธ ๊ฒ์ฌ ๋ฐ ๋ฆฌํฉํ ๋ง ๋๊ตฌ๋ฅผ ๊ฐ๋ฐ์ ํธ์ง๊ธฐ์์ ์ง์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฌ ๊ฐ๋ฐ์ ์์ฐ์ฑ๊ณผ ์ฝ๋ ํ์ง์ ํฅ์์ํค๋๋ก ์ค๊ณ๋์์ต๋๋ค. RLS๋ ์์ ๋ถ์ ํ๊ฒฝ์ ์ ๊ณตํจ์ผ๋ก์จ ์ฝ๋ ์์ฑ๊ณผ ์ค๋ฅ ๋ฐ๊ฒฌ ์ฌ์ด์ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ์ค์ฌ ๊ฐ๋ฐ์๊ฐ Rust์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฑํํ๊ณ ๊ณ ํ์ง ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ์งํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
- ์ค์๊ฐ ์ค๋ฅ ๋ฐ ๊ฒฝ๊ณ ๋ณด๊ณ
์ฝ๋๋ฅผ ์์ฑํ ๋ ํธ์ง๊ธฐ์์ ์ปดํ์ผ๋ฌ ์ค๋ฅ์ ๊ฒฝ๊ณ ๋ฅผ ์ง์ ํ์ํ์ฌ ์ค์๋ฅผ ์ผ์ฐ ๋ฐ๊ฒฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ์ฝ๋ ์์ฑ
๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๊ณ ์คํ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ ํ, ํน์ฑ, ๋ฉ์๋ ๋ฐ ๋ชจ๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ง๋ฅํ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. - ์ ์๋ก ์ด๋ํ์ฌ ์ฐธ์กฐ ์ฐพ๊ธฐ
๊ฐ๋ฐ์๊ฐ ์ฌ๋ณผ ์ ์๋ก ๋ฐ๋ก ์ด๋ํ์ฌ ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์์ ํญ๋ชฉ์ด ์ฌ์ฉ๋ ์์น๋ฅผ ํ์ ํ ์ ์์ต๋๋ค. - ํธ๋ฒ ๋ฌธ์
ํธ์ง๊ธฐ์์ ๋๊ฐ์ง ์๊ณ ๋ API๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ์ ํ, ํจ์ ๋ฐ ํน์ฑ์ ๋ํ ์ธ๋ผ์ธ ๋ฌธ์๋ฅผ ํ์ํฉ๋๋ค. - ์ฌ๋ณผ ๊ฒ์ ๋ฐ ํ์
๋๊ท๋ชจ ํ๋ก์ ํธ์์ ํจ์, ๊ตฌ์กฐ์ฒด, ํน์ฑ ๋ฐ ๊ธฐํ ์ฌ๋ณผ์ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์์ต๋๋ค. - ํฌ๋งท ์ง์
rustfmt์ ํตํฉํ์ฌ ๋ชจ๋ ํ์์ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ์๋์ผ๋ก ์ ์ฉํฉ๋๋ค. - ์ธ๊ธฐ ์๋ ํธ์ง๊ธฐ์์ ํตํฉ
LSP๋ฅผ ํตํด Visual Studio Code, Sublime Text, Atom ๋ฑ์ ํธ์ง๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค. - rustc์ ๋ถ์์ ์ฌ์ฉํฉ๋๋ค
Rust์ ์๊ฒฉํ ์์ ๋ณด์ฅ์ ๋ง์ถฐ ์ ํํ๊ณ ๊ด์ฉ์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ธฐ ์ํด ์ค์ Rust ์ปดํ์ผ๋ฌ๋ฅผ ํ์ฉํฉ๋๋ค. - ์คํ ์์ค์ด๋ฉฐ Rust ํ๋ก์ ํธ์์ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
Rust ์ปค๋ฎค๋ํฐ์์ ๊ฐ๋ฐํ๊ณ ๊ณต์ ํด๋ง ๋ ธ๋ ฅ์ ํตํด ์ง์ํ๋ฉฐ, Rust์ ์งํํ๋ ์ธ์ด ๊ธฐ๋ฅ๊ณผ์ ์ผ์น๋ฅผ ๋ณด์ฅํฉ๋๋ค.
RLS๋ Rust ํ๋ก์ ํธ์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํ๊ธฐ์ ์ผ๋ก ๊ฐ์ ํ์ง๋ง, ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ ๋ ์ดํดํด์ผ ํ ์ค์ํ ๊ณ ๋ ค ์ฌํญ๊ณผ ์ ํ ์ฌํญ์ด ์์ต๋๋ค.
๋ถ์ ์ํ์ด ์๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ง์ค
RLS๋ ์ฃผ๋ก ์ค๋ฅ๋ฅผ ํ์ํ๊ณ ์์ฐ์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ ์ง์์ ๋ชฉ์ ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์์ ๋ฆฐํ ๊ท์น, ์คํ์ผ ๊ท์น ๋๋ ๋ณด์ ์ ์ฑ ์ ์๋์ผ๋ก ์ ์ฉํ์ง ์์ต๋๋ค. ํ์ ์ฌ์ ํ โโClippy๋ cargo-audit๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฑ ์ ์ ์ฉํ๊ณ ํ๋ก๋์ ์ํฌํ๋ก์์ ๋ณด์ ์ทจ์ฝ์ ์ ํ์ธํด์ผ ํฉ๋๋ค.
์ปดํ์ผ๋ฌ ์ค๋ฅ๋ฅผ ๋์ด์๋ ์ ํ๋ ์ ์ ๋ถ์
RLS๋ ์ปดํ์ผ๋ฌ ์ง๋จ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ์์ ํ์ง ์์ ์ฝ๋์์ ๋ ผ๋ฆฌ ์ค๋ฅ, ๋ฐ์ดํฐ ํ๋ฆ ๋ฌธ์ , ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฌธ์ ๋ฑ์ ๊ฐ์งํ๋ ๊ณ ๊ธ ์ ์ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ฌ์ธต ๋ถ์์ ์ํด์๋ Clippy, Rudra, MIRAI์ ๊ฐ์ ๋๊ตฌ๊ฐ ์ฌ์ ํ ํ์ํฉ๋๋ค.
๊ณต์์ ์ธ ๊ฒ์ฆ์ด๋ ์ฆ๋ช ๊ธฐ๋ฅ ์์
RLS๋ Prusti๋ Creusot์ ๊ฐ์ ๋๊ตฌ๊ฐ ํ๋ ๋ฐฉ์์ผ๋ก ํ์์ ๋ช ์ธ, ์ ์ ์กฐ๊ฑด ๋๋ ์ฌํ์กฐ๊ฑด์ ์์ฑํ๊ฑฐ๋ ๊ฒ์ฆํ๋ ๊ฒ์ ์ง์ํ์ง ์์ต๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ์ ์ฉํ๋ ๊ฒ ์ด์์ ๊ธฐ๋ฅ์ ์ ํ์ฑ์ด๋ ๋ถ๋ณ์ฑ์ ์ฆ๋ช ํ ์ ์์ต๋๋ค.
๋ณด์ ์ทจ์ฝ์ ์ค์บ๋ ์์
RLS๋ ์ข ์์ฑ์์ ์๋ ค์ง ๋ณด์ ์ทจ์ฝ์ ์ ํ์ธํ์ง ์์ต๋๋ค. cargo-audit๊ณผ ๋ฌ๋ฆฌ, Cargo.lock ํ์ผ์ ๋ถ์ํ์ฌ ๊ถ๊ณ ์ฌํญ์ ํ์ธํ๊ฑฐ๋ ๊ณต๊ธ๋ง์์ ์ค๋๋์๊ฑฐ๋ ์ทจ์ฝํ ์์๊ฐ ์๋์ง ๋ชจ๋ํฐ๋งํ์ง ์์ต๋๋ค.
๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์์ ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
RLS๋ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ์ธ๋ฑ์ฑํ๊ณ ๋ถ์ํ ๋ ์๋นํ ๋ฉ๋ชจ๋ฆฌ์ CPU ๋ฆฌ์์ค๋ฅผ ์๋ชจํ์ฌ ํธ์ง๊ธฐ ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์์ต๋๋ค. ๋๊ท๋ชจ ๋จ์ผ ์ ์ฅ์๋ ๊ณ ๋๋ก ๋ชจ๋ํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์๋ ์ค์ ์ ์กฐ์ ํ๊ฑฐ๋ ์๋ต ์๋ ์ ํ๋ฅผ ๊ฐ์ํด์ผ ํ ์๋ ์์ต๋๋ค.
์ผ๋ถ ๊ณ ๊ธ ์ธ์ด ๊ธฐ๋ฅ์ ๋ํ ์ง์์ด ์ ํ๋จ
RLS๋ Rust ์ปดํ์ผ๋ฌ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ต์ Rust ๋์ดํ๋ฆฌ ๊ธฐ๋ฅ์ด๋ ์คํ์ ๊ตฌ๋ฌธ๋ณด๋ค ์ข ์ข ๋ค์ฒ์ง ์ ์์ต๋๋ค. ์ต์ฒจ๋จ ์ธ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ ์ง์์ด ๋ถ์กฑํ๊ฑฐ๋ rust-analyzer์ ๊ฐ์ ๋์ฒด ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํ ์๋ ์์ต๋๋ค.
rust-analyzer๋ก ๋ง์ด๊ทธ๋ ์ด์
Rust ํ๋ก์ ํธ๋ rust-analyzer๊ฐ RLS์ ์ฐจ์ธ๋ ๋์ฒด์ฌ๋ก, ๋ ๋์ ์ฑ๋ฅ, ๋ ํ๋ถํ ๊ธฐ๋ฅ, ๊ทธ๋ฆฌ๊ณ ํฅ์๋ ์ฅ๊ธฐ ์ ์ง ๋ณด์์ฑ์ ์ ๊ณตํ๋ค๊ณ ๋ฐํํ์ต๋๋ค. RLS๋ ์ฌ์ ํ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ์ ์ง ๋ณด์๊ฐ ๊ฐ๋ฅํ์ง๋ง, ๋ง์ ํ๋ค์ด ๋ฏธ๋ ์งํฅ์ ์ธ ๊ฐ๋ฐ์ ์ํด rust-analyzer๋ฅผ ๋์ ํ๋๋ก ๊ถ์ฅ๋ฉ๋๋ค.
Rust ์ธ์ด ์๋ฒ(RLS)๋ Rust์ ์ต๊ณ ์์ค์ IDE ์ง์์ ์ ๊ณตํ๋ ๊ธฐ๋ฐ ๋๊ตฌ๋ก, ํ์ต ๊ณก์ ์ ๋ฎ์ถ๊ณ ์ด๋ณด์์ ์ ๊ทผ์ฑ์ ๋์ด๊ณ ์ ๋ฌธ๊ฐ์ ์์ฐ์ฑ์ ํฅ์์์ผ ์์ต๋๋ค. RLS๋ ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ํผ๋๋ฐฑ์ ํธ์ง๊ธฐ์ ์ง์ ํตํฉํ์ฌ ๊ฐ๋ฐ ๊ณผ์ ์์ ์ฝ๋ ํ์ง์ ํฅ์์ํต๋๋ค. ํ์ง๋ง ๋ฆฐํฐ, ๋ณด์ ์ค์บ๋, ์ ํ ๊ฒ์ฆ ๋๊ตฌ, CI/CD ์๋ํ๋ฅผ ํฌํจํ๋ ๋ ๊ด๋ฒ์ํ ํดํท์ ์ผ๋ถ๋ก ๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์ด๋ฅผ ํตํด Rust ํ๋ก์ ํธ์ ํฌ๊ด์ ์ธ ํ์ง๊ณผ ์์ ์ฑ์ ํ๋ณดํ ์ ์์ต๋๋ค.
๊ฒฌ๊ณ ํ๊ณ ์์ ํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ Rust ํ๋ก์ ํธ ์ ์
Rust ํ๋ก์ ํธ์์ ํ์ง, ๋ณด์, ๊ทธ๋ฆฌ๊ณ ์ ์ง๋ณด์์ฑ์ ๋ณด์ฅํ๋ ค๋ฉด ์ปดํ์ผ๋ฌ์๋ง ์์กดํ๋ ๊ฒ ์ด์์ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค. Rust์ ์์ ์ฑ ๋ณด์ฅ์ ์ ๊ณ ์ต๊ณ ์์ค์ด์ง๋ง, ์ฌ๋ฌ ๋ถ์, ๊ฒ์ฆ, ๊ทธ๋ฆฌ๊ณ ์์ฐ์ฑ ๋๊ตฌ๋ฅผ ๊ฒฐํฉํ ๊ณ์ธต์ ์ ๊ทผ ๋ฐฉ์์ ์ผ๋ถ๋ก ํ์ฉ๋ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. ์ ํฌ๊ฐ ์ดํด๋ณธ ๊ฐ ๋๊ตฌ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด์์ ์๋ก ๋ค๋ฅด์ง๋ง ์ํธ ๋ณด์์ ์ธ ๋ชฉํ๋ฅผ ์ถ๊ตฌํ๋ฉฐ, ํ์๊ฒ ๊ฒฌ๊ณ ํ Rust ์์คํ ๊ตฌ์ถ์ ์ํ ์ ์ฒด์ ์ธ ์ ๋ต์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ์ด์๋ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๊ฐ ์์ต๋๋ค. rustc(์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ) ํด๋ฆฌ ํผ๊ฐ๋ฐ์ ์ํฌํ๋ก์ฐ์์ ์ ํ์ฑ, ๊ด์ฉ์ ์ธ ์คํ์ผ, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ก ์ ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ธ ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ์ค์ด๊ณ ํ ์ ์ฒด์์ ์ผ๊ด๋ ์ฝ๋ ํ์ง์ ์ ์งํ ์ ์์ต๋๋ค.
๋ณด์์ ์ํด, ํ๋ฌผ ๊ฐ์ฌ ์นด๊ณ ์ค์บ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. cargo-audit์ ๊ณต๊ฐ๋ ๊ถ๊ณ ์ฌํญ์ ์ข ์์ฑ์ ๊ฒ์ฌํ์ฌ ์๋ ค์ง ๊ณต๊ธ๋ง ์ทจ์ฝ์ ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๋ฐ๋ฉด, cargo-scan์ ์์ค ์ฝ๋์ ์ง์คํ์ฌ ๋ฐฐํฌ ์ ์ ์์ ํ์ง ์์ ํจํด์ ์ฐพ์๋ ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ์ฌ์ฉ์๊ฐ ์์ฑํ ์ฝ๋์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณด์์ ์ ์งํฉ๋๋ค.
๋ค์์ ํฌํจํ ๊ณ ๊ธ ์ ์ ๋ถ์ ๋ฐ ํ์์ ๊ฒ์ฆ ๋๊ตฌ ๋ฏธ๋ผ์ด, ํ๋ฃจ์คํฐ, ํฌ๋ฃจ์, ์นด๋, ์์ด๊ธ๋ ๋ฐ์ผ ๋ฃจ๋๋ผ, ๋์ฑ ์ฌ์ธต์ ์ธ ์ ํ์ฑ ๋ฐ ์์ ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๋ฏธ๋ฌํ ๋ ผ๋ฆฌ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ณ , ์ค์ํ ๋ถ๋ณ์ฑ์ ์ฆ๋ช ํ๋ฉฐ, ์์ ํ์ง ์์ ๋ธ๋ก์์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๊ฒ์ฆํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋์ ๋ณด์ฆ ์๊ตฌ ์ฌํญ์ด๋ ์์ ์ฑ์ด ์ค์ํ ๊ตฌ์ฑ ์์๊ฐ ์๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์ด๋ฌํ ๋๊ตฌ๋ ๋ฐํ์ ํ ์คํธ์์ ๋์น ์ ์๋ ๋ชจ๋ ์ข ๋ฅ์ ๋ฒ๊ทธ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
๋ฏธ๋ฆฌ ์ปดํ์ผ ์์ ์ ์ ์๋์ง ์์ ๋์์ ๊ฐ์งํ๊ธฐ ์ํด Rust ์ฝ๋๋ฅผ ํด์ํ๋ ๊ณ ์ ํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ๋ฉฐ, ํนํ ์์ ํ์ง ์์ ์ฝ๋๋ก ์์ ํ ๋ ์ ์ฉํฉ๋๋ค. ํด๋ก๋์ด์ค์คํ์ ์ธ ๋น๋ฆผ ๊ฒ์ฌ๊ธฐ ์์ง์ธ , ์ปดํ์ผ๋ฌ์ ์ ํ๋๋ฅผ ํฅ์์ํค๊ณ Rust์ ๋ฏธ๋์ ๋ณด๋ค ํํ๋ ฅ์ด ํ๋ถํ๋ฉด์๋ ์์ ํ ํจํด์ ์ํ ํ ๋๋ฅผ ๋ง๋ จํ๊ณ ์์ต๋๋ค.
๊ฐ๋ฐ์ ๊ฒฝํ ์ง์, Rust ์ธ์ด ์๋ฒ(RLS) ํ๋ก์์คํธ๋ฆฌ Rust์ ๊ณ ๊ธ ์๋ฏธ๋ก ์ ๋์ฑ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. RLS๋ IDE์์ ์ค์๊ฐ ์ค๋ฅ ๊ฒ์ฌ, ์ฝ๋ ํ์ ๋ฐ ์์ฐ์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , Flowistry๋ Rust์ ์ฐจ์ฉ ๋ชจ๋ธ์ ์ดํดํ๊ธฐ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์์ ๊ถ๊ณผ ๋ฐ์ดํฐ ํ๋ฆ์ ์๊ฐํํฉ๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด Rust ํ์ ์ฝ๋ ํ์ง์ ๋ชจ๋ ๊ณ์ธต์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์ ํ์ฑ๊ณผ ๊ด์ฉ์ ์ฌ์ฉ ์ปดํ์ผ๋ฌ ๊ฒ์ฌ ๋ฐ ๋ฆฐํ ํฌํจ
- ๋ณด์ ์ข ์์ฑ ์ค์บ๋ ๋ฐ ์ ์ ์ฝ๋ ๋ถ์ ํฌํจ
- ๊ณต์ ๊ฒ์ฆ ์ค์ํ ์์ฑ๊ณผ ๋ถ๋ณ์
- ๋ฉ๋ชจ๋ฆฌ ์์ ๋ณด์ฅ ์์ ํ์ง ์์ ์ฝ๋์์๋
- ๊ฐ์ ๋ ๊ฐ๋ฐ์ ์ํฌํ๋ก ํตํฉ๋ ์ค์๊ฐ ํผ๋๋ฐฑ ๋ฐ ์๊ฐํ ๊ธฐ๋ฅ
๋จ์ผ ๋๊ตฌ๋ง์ผ๋ก ๋ชจ๋ ๊ฒ์ ํด๊ฒฐํ ์๋ ์์ต๋๋ค. ์ง์ ํ ๊ฐ์ ์ ํ์ ์๊ตฌ ์ฌํญ, ํ๋ก์ ํธ ๋ณต์ก์ฑ, ๊ทธ๋ฆฌ๊ณ ์ํ ํ๋กํ์ ๋ง์ถฐ ๋ง์ถคํ ์ํฌํ๋ก์ฐ๋ก ๊ฒฐํฉํ๋ ๋ฐ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ๊ฐ๋ฐ, ๊ฒํ , ๊ทธ๋ฆฌ๊ณ CI/CD ํ์ดํ๋ผ์ธ์ ์ ์คํ๊ฒ ํตํฉํจ์ผ๋ก์จ Rust ํ์ ์ฃผ์ ๋ชฉํ, ์ฆ Rust๊ฐ ์ฝ์ํ๋ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ํํ ์์ด ์ ๊ณตํ๋ ์์ ์ ์ด๊ณ ์์ ํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค.