coreutils์˜ Rust ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ฐ๋น„์•ˆ ์ ์šฉ

Clang ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Debian GNU/Linux๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์ž‘์—…์œผ๋กœ ์œ ๋ช…ํ•œ Sylvestre Ledru๋Š” Rust ์–ธ์–ด๋กœ ๋‹ค์‹œ ์ž‘์„ฑ๋œ ๋Œ€์ฒด ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ธํŠธ์ธ coreutils๋ฅผ ์‚ฌ์šฉํ•œ ์„ฑ๊ณต์ ์ธ ์‹คํ—˜์„ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. Coreutils์—๋Š” sort, cat, chmod, chown, chroot, cp, date, dd, echo, ํ˜ธ์ŠคํŠธ ์ด๋ฆ„, id, ln ๋ฐ ls์™€ ๊ฐ™์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. coreutils์˜ Rust ๋ฒ„์ „์„ Debian์— ํ†ตํ•ฉํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ๋‹ค์Œ ๋ชฉํ‘œ๊ฐ€ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

  • Debian ๋ฐ Ubuntu์šฉ coreutils์— ๋Œ€ํ•œ Rust ๋Œ€์•ˆ์„ ํŒจํ‚ค์ง•ํ•ฉ๋‹ˆ๋‹ค.
  • Rust-coreutils๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GNOME ๋ฐ์Šคํฌํƒ‘์œผ๋กœ ๋ฐ๋น„์•ˆ์„ ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  • ์ €์žฅ์†Œ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” 1000๊ฐœ์˜ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • Rust-coreutils๊ฐ€ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ Firefox, LLVM/Clang ๋ฐ Linux ์ปค๋„ ์†Œ์Šค๋กœ ๋นŒ๋“œํ•˜์„ธ์š”.

Rust/coreutils์— ๋Œ€ํ•œ 100๊ฐœ ์ด์ƒ์˜ ํŒจ์น˜๋ฅผ ๋งŒ๋“  ํ›„ ์šฐ๋ฆฌ๋Š” ์˜๋„ํ•œ ๋ชจ๋“  ๋ชฉํ‘œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์—๋Š” ๋ˆ„๋ฝ๋œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฐ ์˜ต์…˜ ๊ตฌํ˜„, ์ฝ”๋“œ์˜ ํ’ˆ์งˆ ๋ฐ ๊ท ์ผ์„ฑ ๊ฐœ์„ , ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ ๊ฐœ๋ฐœ, GNU Coreutils์—์„œ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ถฉ๋Œ ์ œ๊ฑฐ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์ง€๊ธˆ๊นŒ์ง€ 141๊ฐœ ํ…Œ์ŠคํŠธ ์ค‘ 613๊ฐœ ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ ์ค‘์ž„) ).

Rust-coreutils ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ coreutils ํŒจํ‚ค์ง€๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ‘๋ ฌ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. Rust ์–ธ์–ด์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์˜ต์…˜์€ โ€‹โ€‹/usr/lib/cargo/bin/์— ์„ค์น˜๋˜๋ฉฐ ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ•˜๋ฉด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. Rust-coreutils ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ Rust ๋ฐ ๋‹ค์–‘ํ•œ ์ž‘์€ ์ƒ์ž ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ๋นŒ๋“œ ์ข…์†์„ฑ์„ ์ €์žฅ์†Œ์— ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žกํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ถ€ํŒ… ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ, Rust-coreutils๊ฐ€ ์žˆ๋Š” ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ํŒจํ‚ค์ง€๋ฅผ ์กฐ์ •ํ•˜๋ ค๋ฉด ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋งŽ์€ ์„ค์น˜ ํ›„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ coreutils ์„ธํŠธ์—์„œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋งŽ์€ ์ˆ˜์˜ ๋ฌธ์ œ๋Š” ํ•„์š”ํ•œ ์˜ต์…˜์ด ๋ถ€์กฑํ•˜์—ฌ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "cp" ์œ ํ‹ธ๋ฆฌํ‹ฐ์—๋Š” "--archive" ๋ฐ "--no-dereference" ์˜ต์…˜์ด ์—†์—ˆ๊ณ  "ln"์€ "-"๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ƒ๋Œ€โ€ ์˜ต์…˜, mktemp๋Š” "-fs" ๋™๊ธฐํ™”, ์„ค์น˜ ์‹œ "--owner" ๋ฐ "-group"์—์„œ "-t"๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋™์ž‘์˜ ์ฐจ์ด๋กœ ์ธํ•ด ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค์น˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ /dev/null์„ ์ž…๋ ฅ ํŒŒ์ผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ์ง€์›ํ•˜์ง€ ์•Š์•˜๊ณ , mkdir์— "-parent" ๋Œ€์‹  "--parents" ์˜ต์…˜์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ ๋ฒ ์ด์Šค์˜ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ํฐ ๋ฌธ์ œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Firefox ๋ฐ LLVM/Clang์„ ๋นŒ๋“œํ•  ๋•Œ Python ์Šคํฌ๋ฆฝํŠธ์™€ cmake๊ฐ€ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ coreutils๋ฅผ ๊ต์ฒดํ•ด๋„ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Linux ์ปค๋„ ๊ตฌ์ถ•์€ ์ƒ๋Œ€์ ์œผ๋กœ ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์œผ๋ฉฐ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋งŒ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐํ˜ธ ๋งํฌ์™€ ํ•จ๊ป˜ chown์„ ์‚ฌ์šฉํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ๊ณผ ln ์œ ํ‹ธ๋ฆฌํ‹ฐ์— "-n" ์˜ต์…˜์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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