Mozilla ํ๋ก์ ํธ์ ์ํด ์ค๋ฆฝ๋์์ง๋ง ํ์ฌ๋ ๋ ๋ฆฝ์ ์ธ ๋น์๋ฆฌ ์กฐ์ง์ธ Rust Foundation์ ํ์์ผ๋ก ๊ฐ๋ฐ๋ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด Rust 1.56์ ์ถ์๊ฐ ๋ฐํ๋์์ต๋๋ค. ์ผ๋ฐ ๋ฒ์ ๋ฒํธ ์ธ์๋ ์ด ๋ฆด๋ฆฌ์ค๋ Rust 2021๋ก ์ง์ ๋์ด ์์ผ๋ฉฐ ์ง๋ 2021๋ ๋์ ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ํ๋์์์ ๋ํ๋ ๋๋ค. Rust 2018์ ๋ํ ์ง๋ XNUMX๋ ๋์ Rust XNUMX์ ์ถ์๊ฐ ์ธ์ด ๊ฐ๋ฐ์ ๊ธฐ์ด๊ฐ ๋ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ ํฅํ XNUMX๋ ๋์ ๊ธฐ๋ฅ์ ํฅ์ํ๊ธฐ ์ํ ๊ธฐ์ด ์ญํ ์ ํ ๊ฒ์ ๋๋ค.
ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๊ฐ๋ฐ์๋ ํ๋ก๊ทธ๋จ์ "2015", "2018" ๋ฐ "2021" ๋ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ์ ํํ Rust ์๋์ ์ ํด๋นํ๋ ์ธ์ด ์ํ ์กฐ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์๋์ ์ ํธํ๋์ง ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ๋์ ๋์์ผ๋ฉฐ โ[ํจํค์ง]โ ์น์ ์ โ์๋์ โ ํ๋๋ฅผ ํตํด ํ๋ฌผ ํจํค์ง์ ๋ฉํ๋ฐ์ดํฐ์ ๊ตฌ์ฑ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, "2018" ๋ฒ์ ์๋ 2018๋ ๋ง์ ์์ ํ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ ํธํ์ฑ์ ์์์ํค์ง ์๋ ๋ชจ๋ ์ถ๊ฐ ๋ณ๊ฒฝ ์ฌํญ๋ ํฌํจ๋ฉ๋๋ค. 2021 ๋ฒ์ ์๋ ํ์ฌ 1.56 ๋ฆด๋ฆฌ์ค์์ ์ ์๋๊ณ ํฅํ ๊ตฌํ์ ์ํด ์น์ธ๋ ์ํธ ์ด์ฉ์ฑ์ ๊นจ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ก ํฌํจ๋์ด ์์ต๋๋ค. ํธ์ง์๋ ์ธ์ด ์์ฒด ์ธ์๋ ๋๊ตฌ ๋ฐ ๋ฌธ์์ ์ํ๋ ๊ณ ๋ คํฉ๋๋ค.
Rust 2021์ ๊ธฐ๋ก๋ ์ฃผ์ ๋นํธํ์ฑ:
- ํด๋ก์ ์์ ๋ณ๋ ์บก์ฒ - ํด๋ก์ ๋ ์ด์ ์ ์ฒด ์๋ณ์ ๋์ ๊ฐ๋ณ ํ๋ ์ด๋ฆ์ ์บก์ฒํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด "|| ax + 1"์ "a" ๋์ "ax"๋ง ์บก์ฒํฉ๋๋ค.
- ๋ฐฐ์ด์ IntoIterator ํน์ฑ: array.into_iter()๋ฅผ ์ฌ์ฉํ๋ฉด ์ฐธ์กฐ๊ฐ ์๋ ๊ฐ์ผ๋ก ๋ฐฐ์ด ์์๋ฅผ ๋ฐ๋ณตํ ์ ์์ต๋๋ค.
- Macro_rules์์ "|" ํํ์ ์ฒ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค. (๋ถ์ธ OR) ํจํด - ์ผ์น ํญ๋ชฉ์ ":pat" ์ง์ ์๋ ์ด์ "A | ๋น".
- ์นด๊ณ ํจํค์ง ๊ด๋ฆฌ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก Rust 1.51์ ์ง์๋๋ ๊ธฐ๋ฅ ํ์ธ์์ ๋ ๋ฒ์งธ ๋ฒ์ ์ด ํฌํจ๋์ด ์์ต๋๋ค.
- TryFrom, TryInto ๋ฐ FromIterator ํน์ฑ์ด prelude ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋์ ์ถ๊ฐ๋์์ต๋๋ค.
- Panic!(..) ๋ฐ Assert!(expr, ..) ๋งคํฌ๋ก๋ ์ด์ println!()๊ณผ ์ ์ฌํ๊ฒ ๋ฌธ์์ด ํ์์ ์ง์ ํ๊ธฐ ์ํด ํญ์ format_args!(..)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ident#, identยป..." ๋ฐ ident'...' ํํ์์ ์ธ์ด ๊ตฌ๋ฌธ์ ์์ฝ๋์ด ์์ต๋๋ค.
- bare_trait_objects ๋ฐ ellipsis_inclusive_range_patterns ๊ฒฝ๊ณ ๋ฅผ ์ค๋ฅ๋ก ์ด๋ํ์ต๋๋ค.
Rust 1.56์ ์๋ก์ด ๊ธฐ๋ฅ:
- Cargo.toml์ โ[package]โ ์น์ ์ Rust-version ํ๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์ ํจํค์ง์ ๋ํด ์ง์๋๋ ์ต์ Rust ๋ฒ์ ์ ํ์ธํ ์ ์์ต๋๋ค. ํ์ฌ ๋ฒ์ ์ด ์ง์ ๋ ๋งค๊ฐ๋ณ์์ ์ผ์นํ์ง ์์ผ๋ฉด Cargo๋ ์ค๋ฅ ๋ฉ์์ง์ ํจ๊ป ์๋์ ์ค์งํฉ๋๋ค.
- "๋ฐ์ธ๋ฉ @ ํจํด" ํํ์์ ์ฌ์ฉํ์ฌ ํจํด ์ผ์น๋ฅผ ์ํํ ๋ ์ถ๊ฐ ๋ฐ์ธ๋ฉ ์ง์ ์ ๋ํ ์ง์์ด ์ ๊ณต๋ฉ๋๋ค(์: "let Matrix @ Matrix { row_len, .. } = get_matrix();").
- API์ ์๋ก์ด ๋ถ๋ถ์ด ์์ ํ๋ ํน์ฑ์ ๋ฉ์๋ ๋ฐ ๊ตฌํ์ ํฌํจํ์ฌ ์์ ์ ์ธ ๋ฒ์ฃผ๋ก ์ด๋๋์์ต๋๋ค.
- std::os::unix::fs::chroot
- UnsafeCell::raw_get
- BufWriter::into_parts
- core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
- Vec::shrink_to
- ๋ฌธ์์ด::shrink_to
- OsString::shrink_to
- PathBuf::shrink_to
- BinaryHeap::shrink_to
- VecDeque::shrink_to
- HashMap::shrink_to
- HashSet::shrink_to
- ์์ ๋์ ๋ชจ๋ ์ปจํ
์คํธ์์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ๊ฒฐ์ ํ๋ "const" ์์ฑ์ ํจ์์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํ์ค::mem::๋ณํ
- [T]::์ฒซ ๋ฒ์งธ
- [T]::split_first
- [T]::๋ง์ง๋ง
- [T]::split_last
- ์ปดํ์ผ๋ฌ๊ฐ LLVM ๋ฒ์ 13์ ์ฌ์ฉํ๋๋ก ์ ํ๋์์ต๋๋ค.
- aarch64-apple-ios-sim ํ๋ซํผ์ ๋ํ ๋ ๋ฒ์งธ ์์ค์ ์ง์๊ณผ powerpc-unknown-freebsd ๋ฐ riscv32imc-esp-espidf ํ๋ซํผ์ ๋ํ ์ธ ๋ฒ์งธ ์์ค์ ์ง์์ด ๊ตฌํ๋์์ต๋๋ค. ์ธ ๋ฒ์งธ ์์ค์๋ ๊ธฐ๋ณธ ์ง์์ด ํฌํจ๋์ง๋ง ์๋ํ๋ ํ ์คํธ, ๊ณต์ ๋น๋ ๊ฒ์ ๋๋ ์ฝ๋ ๋น๋ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ์ ํฌํจ๋์ง ์์ต๋๋ค.
Rust๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ค์ ์ ๋๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฉฐ ๊ฐ๋น์ง ์์ง๊ธฐ๋ ๋ฐํ์์ ์ฌ์ฉํ์ง ์๊ณ ์์ ์คํ์์ ๋์ ๋ณ๋ ฌ์ฑ์ ๋ฌ์ฑํ ์ ์๋ ์๋จ์ ์ ๊ณตํฉ๋๋ค(๋ฐํ์์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ ์ด๊ธฐํ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ก ์ถ์๋ฉ๋๋ค).
Rust์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ํฌ์ธํฐ๋ฅผ ์กฐ์ํ ๋ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ํด์ ๋ ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ก์ธ์คํ๋ ๊ฒ, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ, ๋ฒํผ ์ค๋ฒ๋ฐ ๋ฑ๊ณผ ๊ฐ์ ์ ์์ค ๋ฉ๋ชจ๋ฆฌ ์กฐ์์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ๊ณ ์ด์
๋ธ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ฉฐ ์ข
์์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ ํธ๋ Cargo ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. crates.io ์ ์ฅ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์คํ
์ ์ํด ์ง์๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru