Linux ์ปค๋„์— Rust ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋…ผ์˜ ์ œ์•ˆ

๋‹‰ ๋ฐ์ž๋‹ˆ์—(Nick Desagnier)๋‹‰ ๋ฐ์†”๋‹ˆ์—), Google์—์„œ ๊ทผ๋ฌดํ•˜๋ฉฐ ์ง€์ง€ Clang ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Linux ์ปค๋„์„ ๋นŒ๋“œํ•˜๊ณ  ๊ฑฐ๋“ค๊ธฐ Rust ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ , ะฟั€ะตะดะปะพะถะธะป ํšŒ์˜๋ฅผ ํ•˜๋‹ค ๋ฆฌ๋ˆ…์Šค ๋ฐฐ๊ด€๊ณต ์ปจํผ๋Ÿฐ์Šค 2020 Rust์—์„œ ์ปค๋„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ์„ธ์…˜์ž…๋‹ˆ๋‹ค. Nick์€ LLVM ์ „์šฉ ๋งˆ์ดํฌ๋กœ ์ปจํผ๋Ÿฐ์Šค๋ฅผ ์กฐ์งํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Rust ์ง€์›์„ ์ปค๋„์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ ์ธ ์ธก๋ฉด์„ ๋…ผ์˜ํ•˜๊ณ (๊ทธ๋Š” ์ด๋ฏธ KBuild์— ๋Œ€ํ•œ ์ž‘์—… ํ”„๋กœํ† ํƒ€์ž…์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค) ๊ทธ๋Ÿฌํ•œ ์ง€์›์ด ํ•„์š”ํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ „ํ˜€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์œผ๋ฉฐ Rust ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์–ด๋–ค ์ œํ•œ์ด ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•˜๋Š”์ง€.

Open Source Summit ๋ฐ Embedded Linux ์ปจํผ๋Ÿฐ์Šค์˜ ์ตœ๊ทผ ํ† ๋ก ์—์„œ Linus Torvalds๊ฐ€ ํ•œ ๋ง์„ ๊ธฐ์–ตํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋ฐฐ์ œํ•˜์ง€ ์•Š์•˜๋‹ค Rust์™€ ๊ฐ™์€ ์–ธ์–ด๋กœ ๋น„ํ•ต์‹ฌ ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ(์˜ˆ: ๋“œ๋ผ์ด๋ฒ„) ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ฐ”์ธ๋”ฉ์˜ ์ถœํ˜„. Rust์—์„œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ตœ์†Œํ•œ์˜ ๋…ธ๋ ฅ์œผ๋กœ ํ•ด์ œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค, ๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ ๋ฐ ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ ์—†์ด ๋” ์•ˆ์ „ํ•˜๊ณ  ๋” ๋‚˜์€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์—ฌ๋Ÿฌ ํƒ€์‚ฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค.

  • "Fish in a Barrel"ํšŒ์‚ฌ์˜ ๊ฐœ๋ฐœ์ž ะฟะพะดะณะพั‚ะพะฒะธะปะธ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ปค๋„ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ถ”์ƒ ๊ณ„์ธต ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Rust ์–ธ์–ด๋กœ Linux ์ปค๋„์šฉ ๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํˆดํ‚ท์ž…๋‹ˆ๋‹ค. ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ์ปค๋„ ํ—ค๋” ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ ˆ์ด์–ด๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”์ธ๋“œ๊ฒ. Clang์€ ๋ ˆ์ด์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„์ธต ์™ธ์—๋„ ์กฐ๋ฆฝ๋œ ๋ชจ๋“ˆ์€ staticlib ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ™์ฝฉ์ค‘๋ฌธ๋Œ€ํ•™๊ต ์—ฐ๊ตฌ์ง„ ๊ฐœ๋ฐœํ•˜๋‹ค Rust์—์„œ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ๋ฐ ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท ์žฅ์น˜์šฉ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋˜ํ•œ bingen์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ ํ—ค๋” ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปค๋„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ๋“œ๋ผ์ด๋ฒ„ ๋ณด์•ˆ์„ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„์—์„œ ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ๋ณด๋‹ค ์•ˆ์ „ํ•œ Rust ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋ฌธ์ œ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ฐ์‚ฌ๋ฅผ ์‹ค์‹œํ•˜์ง€ ์•Š๊ณ  ์„œ๋‘˜๋Ÿฌ ๋…์  ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์žฅ๋น„ ์ œ์กฐ์—…์ฒด์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค.
  • ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐœ๋ฐœ์ž C2๋Ÿฌ์ŠคํŠธ C ์ฝ”๋“œ๋ฅผ Rust์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…ํ•˜๊ธฐ ์œ„ํ•ด, ํ–‰์œ„ ์ตœ์†Œํ•œ์˜ ์ˆ˜๋™ ํŽธ์ง‘์œผ๋กœ ์ปค๋„ ๋ชจ๋“ˆ์„ ๋ณ€ํ™˜ํ•˜๋Š” ์‹คํ—˜์ž…๋‹ˆ๋‹ค. ์–ธ๊ธ‰๋œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” C2Rust์—์„œ ์•„์ง ์ง€์›๋˜์ง€ ์•Š๋Š” GCC ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ์ปค๋„์˜ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด C2Rust๋Š” GCC ์†์„ฑ ์ธ๋ผ์ธ, ์ฝœ๋“œ, ๋ณ„์นญ, ์‚ฌ์šฉ ๋ฐ ์„น์…˜์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ธ๋ผ์ธ ์–ด์…ˆ๋ธ”๋Ÿฌ์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ณ  ์ •๋ ฌ ๋ฐ ํŒจํ‚น๋œ ๊ตฌ์กฐ(์˜ˆ: xregs_state) ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. . ์ˆ˜๋™ ์ž‘์—…์ด ํ•„์š”ํ•œ ์ค‘์š”ํ•œ ๋ฌธ์ œ๋กœ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์€ C ๋งคํฌ๋กœ๋ฅผ Rust ๋งคํฌ๋กœ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ๊ณผ ์œ ํ˜•์„ ์žฌ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์  ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. C2Rust๋Š” C ์œ ํ˜•์„ libc ํŒจํ‚ค์ง€์˜ ์ •์˜๋กœ ๋ณ€ํ™˜ํ•˜์ง€๋งŒ ์ด ํŒจํ‚ค์ง€๋Š” ์ปค๋„ ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€