Mozilla ํ๋ก์ ํธ์ ์ํด ์ค๋ฆฝ๋์์ง๋ง ํ์ฌ๋ ๋ ๋ฆฝ์ ์ธ ๋น์๋ฆฌ ์กฐ์ง์ธ Rust Foundation์ ํ์์ผ๋ก ๊ฐ๋ฐ๋ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด Rust 1.52์ ์ถ์๊ฐ ๋ฐํ๋์์ต๋๋ค. ์ด ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ค์ ์ ๋๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฉฐ ๊ฐ๋น์ง ์์ง๊ธฐ๋ ๋ฐํ์์ ์ฌ์ฉํ์ง ์๊ณ ๋์ ์์ ๋ณ๋ ฌ์ฑ์ ๋ฌ์ฑํ ์ ์๋ ์๋จ์ ์ ๊ณตํฉ๋๋ค(๋ฐํ์์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ ์ด๊ธฐํ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ก ๋จ์ถ๋ฉ๋๋ค).
Rust์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ํฌ์ธํฐ๋ฅผ ์กฐ์ํ ๋ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ํด์ ๋ ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ก์ธ์คํ๋ ๊ฒ, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ, ๋ฒํผ ์ค๋ฒ๋ฐ ๋ฑ๊ณผ ๊ฐ์ ์ ์์ค ๋ฉ๋ชจ๋ฆฌ ์กฐ์์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ๊ณ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ฉฐ ์ข ์์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ ํธ๋ Cargo ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. crates.io ์ ์ฅ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์คํ ์ ์ํด ์ง์๋ฉ๋๋ค.
์ฃผ์ ํ์ :
- "cargo check" ๋ฐ "cargo Clippy" ๋ช ๋ น ์คํ ์์์ ๋ํ ๋ฐ์ธ๋ฉ์ ์ ๊ฑฐํ์ต๋๋ค. ์ด์ ์๋ "ํ๋ฌผ ๊ฒ์ฌ" ํ์ "ํ๋ฌผ Clippy"๋ฅผ ํธ์ถํด๋ ์ด๋ฌํ ๊ฒ์ฌ ๋ชจ๋์ ๋ํ ์บ์ ๋ถ๋ฆฌ๊ฐ ๋ถ์กฑํ์ฌ Clippy ์ ํธ๋ฆฌํฐ(linter)๊ฐ ์์๋์ง ์์์ต๋๋ค. ์ด์ ์ด ๋ฌธ์ ๋ ํด๊ฒฐ๋์์ผ๋ฉฐ "cargo Clippy" ๋ฐ "Cargo Check" ํธ์ถ ์์๋ ๋ ์ด์ ์ค์ํ์ง ์์ต๋๋ค.
- ๋ค์ ๋ฉ์๋๊ฐ ์์ ํ๋ ๊ฒ์ ํฌํจํ์ฌ API์ ์๋ก์ด ๋ถ๋ถ์ด ์์ ์นดํ
๊ณ ๋ฆฌ๋ก ์ด์ ๋์์ต๋๋ค.
- ์ธ์::as_str
- ๋ฌธ์::MAX
- ๋ฌธ์::REPLACEMENT_CHARACTER
- ๋ฌธ์::UNICODE_VERSION
- char::decode_utf16
- ๋ฌธ์::from_digit
- char::from_u32_unchecked
- ๋ฌธ์::from_u32
- ์ฌ๋ผ์ด์ค::partition_point
- str::rsplit_once
- str::split_once
- ์์ ๋์ ๋ชจ๋ ์ปจํ
์คํธ์์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ๊ฒฐ์ ํ๋ "const" ์์ฑ์ ๋ฉ์๋์์ ์ฌ์ฉ๋ฉ๋๋ค.
- char::len_utf8
- char::len_utf16
- char::to_ascii_uppercase
- char::to_ascii_lowercase
- char::eq_ignore_ascii_case
- u8::to_ascii_uppercase
- u8::to_ascii_lowercase
- u8::eq_ignore_ascii_case
- ์์ ํ์ง ์์ ํจ์์ ์ฌ์ฉ๋ ์์ ํ์ง ์์ ์ฝ๋๊ฐ ์์ ํ์ง ์์ ๋ธ๋ก์ผ๋ก ๊ตฌ์ฑ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ฆฐํธ ๊ฒ์ฌ unsafe_op_in_unsafe_fn์ ์ถ๊ฐํ์ต๋๋ค.
- ๋ฐฐ์ด์ ๋ํ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ํฌ์ธํฐ๋ฅผ ๋ฐฐ์ด ์์์ ์ ํ์ ๋ํ ํฌ์ธํฐ ํ์์ผ๋ก ์บ์คํ ํ๋ ๊ฒ์ด ํ์ฉ๋ฉ๋๋ค. let mut x: [์ฌ์ฉ; 2] = [0, 0]; p = &mut x as *mut usize; p = &mut x๋ฅผ *const usize๋ก ๋์ธ์;
- Clippy(linter)์ 9๊ฐ์ ์๋ก์ด ๊ฒ์ฌ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- ํ๋ฌผ ํจํค์ง ๊ด๋ฆฌ์๋ ์ด์ ํจํค์ง์ ๋ํด JSON์ "manifest_path" ํ๋๋ฅผ ์ง์ํฉ๋๋ค. crates.io ์ ์ฅ์์ SPDX 3.11 ํ์์ ๋ผ์ด์ผ์ค ์ ๋ณด ์ง์ ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ํ ์คํธ๋ฅผ ์คํํ ๋ ์ฌ๋ฌ ํํฐ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด "cargo test - foo bar"๋ฅผ ์คํํ๋ฉด "foo" ๋ฐ "bar" ๋ง์คํฌ์ ์ผ์นํ๋ ๋ชจ๋ ํ ์คํธ๊ฐ ์คํ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ LLVM ํดํท์ด LLVM 12๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
- ์ธ ๋ฒ์งธ ์์ค์ ์ง์์ s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl ๋ฐ powerpc-unknown-openbsd ํ๋ซํผ์ ๋ํด ๊ตฌํ๋์์ต๋๋ค. ์ธ ๋ฒ์งธ ์์ค์๋ ๊ธฐ๋ณธ ์ง์์ด ํฌํจ๋์ง๋ง ์๋ํ๋ ํ ์คํธ, ๊ณต์ ๋น๋ ๊ฒ์ ๋ฐ ์ฝ๋ ๊ตฌ์ถ ๊ฐ๋ฅ์ฑ ํ์ธ์ ํฌํจ๋์ง ์์ต๋๋ค.
์ถ์ฒ : opennet.ru