Mozilla ํ๋ก์ ํธ์ ์ํด ์ค๋ฆฝ๋์์ง๋ง ํ์ฌ๋ ๋ ๋ฆฝ์ ์ธ ๋น์๋ฆฌ ์กฐ์ง์ธ Rust Foundation์ ํ์์ผ๋ก ๊ฐ๋ฐ๋ Rust 1.60 ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ถ์๊ฐ ๋ฐํ๋์์ต๋๋ค. ์ด ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ค์ ์ ๋๊ณ ๊ฐ๋น์ง ์์ง๊ธฐ ๋ฐ ๋ฐํ์(๋ฐํ์์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ ์ด๊ธฐํ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ก ์ถ์๋จ)์ ์ฌ์ฉ์ ํผํ๋ฉด์ ๋์ ์์ ๋ณ๋ ฌ์ฑ์ ๋ฌ์ฑํ ์ ์๋ ์๋จ์ ์ ๊ณตํฉ๋๋ค.
Rust์ ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ํฌ์ธํฐ๋ฅผ ์กฐ์ํ ๋ ๊ฐ๋ฐ์๋ฅผ ์ค๋ฅ๋ก๋ถํฐ ๋ณดํธํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ํด์ ๋ ํ ์ก์ธ์ค, null ํฌ์ธํฐ ์ญ์ฐธ์กฐ, ๋ฒํผ ์ค๋ฒ๋ฐ ๋ฑ๊ณผ ๊ฐ์ ์ ์์ค ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐฐํฌ, ๋น๋ ์ ๊ณต ๋ฐ ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ์ํด ํ๋ก์ ํธ๋ Cargo ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. crates.io ์ ์ฅ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์คํ ์ ์ํด ์ง์๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ปดํ์ผ ์๊ฐ์ ์ฐธ์กฐ ํ์ธ, ๊ฐ์ฒด ์์ ๊ถ ์ถ์ , ๊ฐ์ฒด ์๋ช (๋ฒ์) ์ถ์ ๋ฐ ์ฝ๋ ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค์ ์ ํ์ฑ ํ๊ฐ๋ฅผ ํตํด Rust์์ ์ ๊ณต๋ฉ๋๋ค. Rust๋ ๋ํ ์ ์ ์ค๋ฒํ๋ก์ ๋ํ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , ์ฌ์ฉํ๊ธฐ ์ ์ ๋ณ์ ๊ฐ์ ํ์ ์ด๊ธฐํ๊ฐ ํ์ํ๋ฉฐ, ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ค๋ฅ๋ฅผ ๋ ์ ์ฒ๋ฆฌํ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณ ์ฐธ์กฐ ๋ฐ ๋ณ์ ๊ฐ๋ ์ ์ ์ฉํ๊ณ , ๊ฐ๋ ฅํ ์ ์ ์ ํ ์ง์ ์ ์ ๊ณตํ์ฌ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์ต์ํํฉ๋๋ค.
์ฃผ์ ํ์ :
- Rustc ์ปดํ์ผ๋ฌ์๋ ํ ์คํธ ์ค ์ฝ๋ ์ ์ฉ ๋ฒ์๋ฅผ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ์ฉ ๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์์ ํ๋ LLVM ๊ธฐ๋ฐ ์์คํ ์ด ์์ต๋๋ค. ์กฐ๋ฆฝ ์ค ์ปค๋ฒ๋ฆฌ์ง ๋ฐ์ดํฐ๋ฅผ ํ์ฑํํ๋ ค๋ฉด "-Cinstrument-coverage" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "RUSTFLAGS="-C Instrument-coverage" ํ๋ฌผ ๋น๋" ๋ช ๋ น์ผ๋ก ์กฐ๋ฆฝ์ ์์ํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ปดํ์ผ๋ ์คํ ํ์ผ์ ์คํํ๋ฉด default.profraw ํ์ผ์ด ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, ์ฒ๋ฆฌ๋ฅผ ์ํด llvm-tools-preview ๊ตฌ์ฑ ์์์ llvm-profdata ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ llvm-profdata์์ ์ฒ๋ฆฌํ ์ถ๋ ฅ์ llvm-cov๋ก ์ ๋ฌํ์ฌ ์ฃผ์์ด ๋ฌ๋ฆฐ ์ฝ๋ ์ ์ฉ ๋ฒ์ ๋ณด๊ณ ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์์ค ์ฝ๋์ ๋ํ ๋งํฌ์ ๋ํ ์ ๋ณด๋ ๊ฒ์ฌ ์ค์ธ ์คํ ํ์ผ์์ ๊ฐ์ ธ์ค๋ฉฐ, ์ฌ๊ธฐ์๋ ์ปค๋ฒ๋ฆฌ์ง ์นด์ดํฐ์ ์ฝ๋ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ํ ํ์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ฉ๋๋ค. 1| 1|fn ๋ฉ์ธ() { 2| 1| println!("์๋ ํ์ธ์, ์ธ์!"); 3| 1|}
- ํ๋ฌผ ํจํค์ง ๊ด๋ฆฌ์์์ ๋น๋ ์งํ ์ํฉ๊ณผ ๊ฐ ๋จ๊ณ์ ์คํ ์๊ฐ์ ๋ํ ์์ธํ ๋ณด๊ณ ์ ์์ฑ์ ํฌํจํ๋ "-timings" ํ๋๊ทธ์ ๋ํ ์ง์์ด ์์ ํ๋์์ต๋๋ค. ์ด ๋ณด๊ณ ์๋ ์กฐ๋ฆฝ ํ๋ก์ธ์ค์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
- ํ๋ฌผ ํจํค์ง ๊ด๋ฆฌ์๋ [features] ์น์
์ ๋ช
๋ช
๋ ์์ฑ ๋ชฉ๋ก์ ๋์ดํ์ฌ Cargo.toml ํ์ผ์ ๊ตฌ์ฑ๋๊ณ ํจํค์ง ๋น๋ ์ค์ ์์ฑ์ ํ์ฑํํ์ฌ ํ์ฑํ๋๋ ์กฐ๊ฑด๋ถ ์ปดํ์ผ ๋ฐ ์ ํ์ ์ข
์์ฑ ์ ํ ๋ฉ์ปค๋์ฆ์ ๋ํ ์๋ก์ด ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค. "--features" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ๋ฒ์ ์๋ ๋ณ๋์ ๋ค์์คํ์ด์ค์ ์ฝํ ์ข
์์ฑ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ "[features]" ์น์ ๋ด์์ "dep:" ์ ๋์ฌ๊ฐ ์๋ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ข ์์ฑ์ ๊ธฐ๋ฅ์ผ๋ก ์์์ ์ผ๋ก ๋ํ๋ด์ง ์๊ณ ์ ํ์ ์ข ์์ฑ์ ๋ช ์์ ์ผ๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๋ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ "?" ๊ธฐํธ ํ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ("ํจํค์ง ์ด๋ฆ?/๊ธฐ๋ฅ ์ด๋ฆ") ๋ค๋ฅธ ์์ฑ์ ์ง์ ๋ ์ ํ์ ์ข ์์ฑ์ด ํฌํจ๋ ๊ฒฝ์ฐ์๋ง ํฌํจ๋์ด์ผ ํ๋ ์ ํ์ ์ข ์์ฑ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ ์์์ serde ์์ฑ์ ํ์ฑํํ๋ฉด "serde" ์ข ์์ฑ๊ณผ "rgb" ์ข ์์ฑ์ ๋ํ "serde" ์์ฑ์ด ํ์ฑํ๋์ง๋ง "rgb" ์ข ์์ฑ์ด ๋ค๋ฅธ ๊ณณ์์ ํ์ฑํ๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค. serde = { ๋ฒ์ = " 1.0.133", ์ ํ ์ฌํญ = true } rgb = { ๋ฒ์ = "0.8.25", ์ ํ ์ฌํญ = true } [๊ธฐ๋ฅ] serde = ["dep:serde", "rgb?/serde"]
- ๋ง์ง๋ง ๋ฆด๋ฆฌ์ค์์ ๋นํ์ฑํ๋์๋ ์ฆ๋ถ ์ปดํ์ผ ์ง์์ด ๋ฐํ๋์์ต๋๋ค. ๊ธฐ๋ฅ์ด ๋นํ์ฑํ๋๋ ์์ธ์ด ๋๋ ์ปดํ์ผ๋ฌ ๋ฒ๊ทธ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
- ์์คํ ์ด ์ ์ ๋ชจ๋์์ ์๋นํ ์๊ฐ์ ๊ณ ๋ คํ๋ ๋จ์กฐ๋ก์ด ํ์ด๋ฐ์ ๋ณด์ฅํ๋ ์ธ์คํดํธ ํ์ด๋จธ ์ ๊ณต๊ณผ ๊ด๋ จ๋ ์ผ๋ถ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์ด์ ์๋ ํ์ด๋จธ ์๋์ ์ํด ๊ฐ๋ฅํ ๋๋ง๋ค OS API๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด๋ ํ๋์จ์ด ๋ฌธ์ ๋ ๊ฐ์ํ ์ฌ์ฉ, ์ด์์ฒด์ ์ค๋ฅ ๋ฑ ์๊ฐ์ ๋จ์กฐ๋ก์์ ๊นจ๋ ๋ฌธ์ ์ํฉ์ ๊ณ ๋ คํ์ง ์์๋ค.
- API์ ์๋ก์ด ๋ถ๋ถ์ด ์์ ํ๋ ํน์ฑ์ ๋ฉ์๋ ๋ฐ ๊ตฌํ์ ํฌํจํ์ฌ ์์ ์ ์ธ ๋ฒ์ฃผ๋ก ์ด๋๋์์ต๋๋ค.
- ํธ::new_cycle
- Rc::new_cycle
- ์ฌ๋ผ์ด์ค::EscapeAscii
- <[u8]>::escape_ascii
- u8::escape_ascii
- Vec::spare_capacity_mut
- MaybeUninit::assume_init_drop
- MaybeUninit::assume_init_read
- i8::abs_diff
- i16::abs_diff
- i32::abs_diff
- i64::abs_diff
- i128::abs_diff
- ํฌ๊ธฐ::abs_diff
- u8::abs_diff
- u16::abs_diff
- u32::abs_diff
- u64::abs_diff
- u128::abs_diff
- ์ฌ์ฉ::abs_diff
- io::ErrorKind์ ๋ํ ํ์
- ExitCode์ ๊ฒฝ์ฐ
- ! ("์ ๋"๋ผ๊ณ ์ ๋ ฅํ์ธ์)
- _Op_ํ ๋น<$t>
- ์์น::is_aarch64_feature_Detected!
- mips64-openwrt-linux-musl* ๋ฐ armv7-unknown-linux-uclibceabi(softfloat) ํ๋ซํผ์ ๋ํ ์ธ ๋ฒ์งธ ์์ค์ ์ง์์ด ๊ตฌํ๋์์ต๋๋ค. ์ธ ๋ฒ์งธ ์์ค์๋ ๊ธฐ๋ณธ ์ง์์ด ํฌํจ๋์ง๋ง ์๋ํ๋ ํ ์คํธ, ๊ณต์ ๋น๋ ๊ฒ์ ๋๋ ์ฝ๋ ๋น๋ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ์ ํฌํจ๋์ง ์์ต๋๋ค.
- ์ปดํ์ผ๋ฌ๊ฐ LLVM 14๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํ๋์์ต๋๋ค.
๋ํ ๋ค์ ์ฌํญ์ ์ ์ํ ์ ์์ต๋๋ค.
- Rustc_codegen_gcc ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ์ฌ Rustc ์ปดํ์ผ๋ฌ ๋ถํธ์คํธ๋ฉ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด GCC ํ๋ก์ ํธ์ libgccjit ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ Rustc์ ์ฝ๋ ์์ฑ๊ธฐ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด Rustc๋ GCC์์ ์ฌ์ฉํ ์ ์๋ ์ํคํ ์ฒ ๋ฐ ์ต์ ํ์ ๋ํ ์ง์์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ปดํ์ผ๋ฌ ์น๊ฒฉ์ด๋ Rustc์ GCC ๊ธฐ๋ฐ ์ฝ๋ ์์ฑ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ Rustc ์ปดํ์ผ๋ฌ ์์ฒด๋ฅผ ๊ตฌ์ถํ ์ ์๋ ๊ธฐ๋ฅ์ ์๋ฏธํฉ๋๋ค. ์ค์ฉ์ ์ธ ์ธก๋ฉด์์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ด์ ์ Rustc์์ ์ง์๋์ง ์์๋ ์ํคํ ์ฒ์ฉ Rust ํ๋ก๊ทธ๋จ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
- Rust ์ธ์ด๋ก ์ฌ์์ฑ๋ GNU Coreutils ํจํค์ง์ ์ ์ฌ ๋ฒ์ ์ด ๊ฐ๋ฐ ์ค์ธ uutils coreutils 0.0.13 ํดํท์ด ์ถ์๋์์ต๋๋ค. Coreutils์๋ sort, cat, chmod, chown, chroot, cp, date, dd, echo, ํธ์คํธ ์ด๋ฆ, id, ln ๋ฐ ls๋ฅผ ํฌํจํ์ฌ XNUMX๊ฐ ์ด์์ ์ ํธ๋ฆฌํฐ๊ฐ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์ด ํ๋ก์ ํธ์ ๋ชฉํ๋ Windows, Redox ๋ฐ Fuchsia ํ๋ซํผ์์ ์คํ๋ ์ ์์ ๋ฟ๋ง ์๋๋ผ GPL ์นดํผ๋ ํํธ ๋ผ์ด์ ์ค ๋์ ํ์ฉ๋๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌํ ์ ์๋ Coreutils์ ํฌ๋ก์ค ํ๋ซํผ ๋์ฒด ๊ตฌํ์ ๋ง๋๋ ๊ฒ์
๋๋ค.
์ ๋ฒ์ ์์๋ cp, dd, df, Split ๋ฐ tr ์ ํธ๋ฆฌํฐ์ GNU ํ๋ก์ ํธ์ ํด๋น ์ ํธ๋ฆฌํฐ์ ํธํ์ฑ์ด ํฌ๊ฒ ํฅ์๋๋ ๊ฒ์ ํฌํจํ์ฌ ๋ง์ ์ ํธ๋ฆฌํฐ์ ๊ตฌํ์ด ๊ฐ์ ๋์์ต๋๋ค. ์จ๋ผ์ธ ๋ฌธ์๊ฐ ์ ๊ณต๋ฉ๋๋ค. Clap ํ์๋ "--help" ํ๋๊ทธ์ ์ถ๋ ฅ์ ๊ฐ์ ํ๊ณ ๊ธด ๋ช ๋ น์ ์ฝ์ด์ ๋ํ ์ง์์ ์ถ๊ฐํ ๋ช ๋ น์ค ์ธ์๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค(์: "ls -color" ๋์ "ls -col"์ ์ง์ ํ ์ ์์) ").
์ถ์ฒ : opennet.ru