์ตœ๊ณ ์˜ Rust ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ

Rust ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ƒ์ž: ์ตœ๊ณ ์˜ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ

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๊ฐ€ ์•ฝ์†ํ•˜๋Š” ์•ˆ์ „์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ํƒ€ํ˜‘ ์—†์ด ์ œ๊ณตํ•˜๋Š” ์•ˆ์ •์ ์ด๊ณ  ์•ˆ์ „ํ•˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.