posixutils-rs 0.2.1 ํ๋ก์ ํธ๊ฐ ์ถ์๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ POSIX ํ์ค์ ๋ช ์๋์ด ์๊ณ ํด๋น ํ์ค์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ Rust ๋ช ๋ น์ค ์ ํธ๋ฆฌํฐ ๋ชจ์(cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed ๋ฑ)์ ๊ฐ๋ฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ๊ฐ๋ฅํ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์๋ ๊ธฐ์กด ํฌ๋ ์ดํธ ํจํค์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. posixutils-rs ์ฝ๋๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ ์ฃผ๋ก POSIX.2024 ์ฌ์์ ์๊ตฌ ์ฌํญ์ ์ค์ํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ผ๋ฉฐ ์์ฑ์๊ฐ ๊ทธ ๊ธฐ๋ฅ์ด ์ง๋์น๊ฒ ๋ถํ๋ ค์ง ๊ฒ์ผ๋ก ์ธ์ํ๋ GNU ์ ํธ๋ฆฌํฐ์์ ํธํ์ฑ์ ์ ๊ณตํ ๊ณํ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ posixutils-rs๋ ๊ธฐ์กด ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ณ ๊ธ GNU ์ ํธ๋ฆฌํฐ ์ต์ ์ ๊ตฌํํ ๊ณํ์ ๋๋ค.
Rust๋ก GNU Coreutils ๊ตฌํ์ ๊ฐ๋ฐํ๋ uutils ํ๋ก์ ํธ์์ ์ฐจ์ด์ ์ค ํ๋๋ ์ ํธ๋ฆฌํฐ์ ๋ฒ์๊ฐ ๋ ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์๋ vi, awk, bc, m4, cron, c99 ์ปดํ์ผ๋ฌ์ ๊ฐ์ POSIX ์ง์ ์์คํ ๊ตฌ์ฑ ์์๋ฅผ ์์ฑํ๋ ๊ฒ์ด ํฌํจ๋๋ฉฐ, POSIX ์ฌ์์ ์ ์๋ ์ต์ํ์ ํ์ ์ต์ ๋ง ์ ๊ณตํ๊ฑฐ๋, ์ด ์ต์ ์์ด๋ ๊ตฌํ์ด ์ด๋ ค์ด ์ต์ํ์ ์ต์ ๋ง ์ ๊ณตํ๋ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค. posixutils-rs ์ธํธ์ ํ๋ก๊ทธ๋จ์ ์ฒ์์๋ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ ๋ฆฝํ ์ฝ๋๋ก ์ ๊ณต๋ฉ๋๋ค.
ํ์ฌ ์ด ํ๋ก์ ํธ์์ ๊ฐ๋ฐํ 55๊ฐ์ ์ ํธ๋ฆฌํฐ๋ POSIX๋ฅผ ์ค์ํ๋ฉฐ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๋จ๊ณ์ ์์ผ๋ฉฐ, 22๊ฐ์ ์ ํธ๋ฆฌํฐ๋ ํ์ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ง๋ง(ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ ์์ง ๊ตฌํ๋์ง ์์), 20๊ฐ์ ์ ํธ๋ฆฌํฐ๋ ์ด์ ๋ฒ์ ๋จ๊ณ์ ์์ผ๋ฉฐ, 44๊ฐ์ ์ ํธ๋ฆฌํฐ์ ๋ํ ์์ ์ ์์ง ์์๋์ง ์์์ต๋๋ค. ๊ธฐ๋ฅ์ด ๊ตฌํ๋ ์ ํธ๋ฆฌํฐ์๋ awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq๊ฐ ์์ต๋๋ค. ์์ ์ด ์์ง ์์๋์ง ์์ ์ ํธ๋ฆฌํฐ์๋ crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi๊ฐ ์์ต๋๋ค.
์๋ก์ด ๋ฆด๋ฆฌ์ค์ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก๋ awk, m4, ps, realpath, join, time, fuser ๋ฐ gencat ์ ํธ๋ฆฌํฐ ๊ตฌํ ์ถ๊ฐ, musl C ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฐ ํ๊ฒฝ์์์ ์์ ์ ๋ํ ์ด๊ธฐ ์ง์, ๊ฒฝ์ ์์ ์ฑ์ ๊ฐ์ถ ๋๋ ํ ๋ฆฌ ํธ๋ฆฌ ํ์์ ์ํ ftw ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณต ๋ฑ์ด ์์ต๋๋ค.
๋ํ, Rust ์ธ์ด๋ก ์์ฑ๋ AV1 ๋น๋์ค ์ธ์ฝ๋ฉ ํ์์ฉ ๊ณ ์ฑ๋ฅ ๋์ฝ๋๋ฅผ ๊ฐ๋ฐํ๋ rav1d ํ๋ก์ ํธ ๋ฐํ๋ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ ๊ณ ์ฑ๋ฅ์ผ๋ก ์ ๋ช ํ dav1d ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ฝ๋ ์ฝ๋๋ฅผ Rust๋ก ํฌํ ํ์ฌ ๊ฐ๋ฐ๋์์ต๋๋ค. ์ค๋น๋ ํฌํ ์ dav1d ๋ผ์ด๋ธ๋ฌ๋ฆฌ API์ ์๋ฒฝํ๊ฒ ํธํ๋ฉ๋๋ค. ์์ฒด ๋ฒ์ ์ ๊ฐ๋ฐํ๋ ๋์ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํ ํ๊ธฐ๋ก ํ ์ด์ ๋, ํธํ์ฑ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ณ AV1 ํ์ ์์ ์ ๋ชจ๋ ๋ณต์ก์ฑ์ ๊ณ ๋ คํ๊ธฐ ์ํด ์ด๋ฏธ ๊ฒ์ฆ๋๊ณ ํ ์คํธ๋ ๋์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ฌ rav1d์ ๊ตฌํ์ dav6d๋ณด๋ค ์ฑ๋ฅ ์ธก๋ฉด์์ 1% ๋๋ฆฌ์ง๋ง, ํฅํ ์ฝ๋ ์ต์ ํ๋ฅผ ํตํด ๋๋ฑํ ์ฑ๋ฅ์ ๋ฌ์ฑํ ๊ณํ์
๋๋ค. ๊ณ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ธฐ ์ํด ๊ธฐ๋ณธ ๊ฐ ๋์ฝ๋ฉ์ ์ํ ๊ธฐ๋ณธ ํจ์๋ค์ ์ด์
๋ธ๋ฌ์์ ์์ ํ์ง ์์ ๋ธ๋ก ํํ๋ก ๊ตฌํํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ต๋๋ค(dav1d์ ์ด์
๋ธ๋ฌ ์ฝ๋ ์ฌ์ฉ). ์ด ๋ธ๋ก์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ Rust๋ก ์์ฑ๋ ์คํธ๋ฆผ ํ์ฑ ํจ์์ ๊ฒ์ฆ์ ๊ฑฐ์น ํ ์์ ๋ฉ๋๋ค(๊ณผ๊ฑฐ ๋น๋์ค ๋์ฝ๋์ ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด, ๋ฌธ์ ๋ ์ฃผ๋ก ๊ณ ์์ค ํฌ๋งท ํ์ฑ ์ฝ๋์์ ๋ฐ์ํ๋ฉฐ ์ ์์ค ๋ฐ์ดํฐ ์ฐ์ฐ์์๋ ๋ฐ์ํ์ง ์์ต๋๋ค).
์ถ์ฒ : opennet.ru
