Mozilla ํ๋ก์ ํธ์ ์ํด ์ค๋ฆฝ๋์์ง๋ง ํ์ฌ๋ ๋ ๋ฆฝ์ ์ธ ๋น์๋ฆฌ ์กฐ์ง์ธ Rust Foundation์ ํ์์ผ๋ก ๊ฐ๋ฐ๋ Rust 1.67 ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ถ์๊ฐ ๋ฐํ๋์์ต๋๋ค. ์ด ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ค์ ์ ๋๊ณ ๊ฐ๋น์ง ์์ง๊ธฐ ๋ฐ ๋ฐํ์(๋ฐํ์์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ ์ด๊ธฐํ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ก ์ถ์๋จ)์ ์ฌ์ฉ์ ํผํ๋ฉด์ ๋์ ์์ ๋ณ๋ ฌ์ฑ์ ๋ฌ์ฑํ ์ ์๋ ์๋จ์ ์ ๊ณตํฉ๋๋ค.
Rust์ ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ํฌ์ธํฐ๋ฅผ ์กฐ์ํ ๋ ๊ฐ๋ฐ์๋ฅผ ์ค๋ฅ๋ก๋ถํฐ ๋ณดํธํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ํด์ ๋ ํ ์ก์ธ์ค, null ํฌ์ธํฐ ์ญ์ฐธ์กฐ, ๋ฒํผ ์ค๋ฒ๋ฐ ๋ฑ๊ณผ ๊ฐ์ ์ ์์ค ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐฐํฌ, ๋น๋ ์ ๊ณต ๋ฐ ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ์ํด ํ๋ก์ ํธ๋ Cargo ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. crates.io ์ ์ฅ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์คํ ์ ์ํด ์ง์๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ปดํ์ผ ์๊ฐ์ ์ฐธ์กฐ ํ์ธ, ๊ฐ์ฒด ์์ ๊ถ ์ถ์ , ๊ฐ์ฒด ์๋ช (๋ฒ์) ์ถ์ ๋ฐ ์ฝ๋ ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค์ ์ ํ์ฑ ํ๊ฐ๋ฅผ ํตํด Rust์์ ์ ๊ณต๋ฉ๋๋ค. Rust๋ ๋ํ ์ ์ ์ค๋ฒํ๋ก์ ๋ํ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , ์ฌ์ฉํ๊ธฐ ์ ์ ๋ณ์ ๊ฐ์ ํ์ ์ด๊ธฐํ๊ฐ ํ์ํ๋ฉฐ, ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ค๋ฅ๋ฅผ ๋ ์ ์ฒ๋ฆฌํ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณ ์ฐธ์กฐ ๋ฐ ๋ณ์ ๊ฐ๋ ์ ์ ์ฉํ๊ณ , ๊ฐ๋ ฅํ ์ ์ ์ ํ ์ง์ ์ ์ ๊ณตํ์ฌ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์ต์ํํฉ๋๋ค.
์ฃผ์ ํ์ :
- Future::Output์ ์ฌ์ฉํ๋ ๋น๋๊ธฐ ํจ์์ ๊ฒฝ์ฐ ์ด์ ๋ฐํ ๊ฐ์ด ๋ฌด์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ํฌํจํ๋ "#[must_use]" ์ฃผ์์ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ํจ์๊ฐ ๊ฐ์ ๋ณ๊ฒฝํ ๊ฒ์ด๋ผ๋ ๊ฐ์ ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ก์ด ๊ฐ์ ๋ฐํํ๋ ๋์ #[ํ์_์ฌ์ฉ] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } ๊ฒฝ๊ณ : ์ฌ์ฉํด์ผ ํ๋ 'bar'์์ ๋ฐํ๋ future์ ์ฌ์ฉ๋์ง ์์ ์ถ๋ ฅ โ> src/lib.rs:5:5 | 5 | ๋ฐ().๊ธฐ๋ค๋ ค; | ^^^^^^^^^^^^^ | = ์ฐธ๊ณ : `#[warn(unused_must_use)]`๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
- FIFO ๋๊ธฐ์ด std::sync::mpsc(๋ค์ค ์์ฐ์ ๋จ์ผ ์๋น์) ๊ตฌํ์ด ์ ๋ฐ์ดํธ๋์ด ์ด์ API๋ฅผ ์ ์งํ๋ฉด์ crossbeam-channel ๋ชจ๋์ ์ฌ์ฉํ๋๋ก ์ ํ๋์์ต๋๋ค. ์๋ก์ด ๊ตฌํ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ฑ๋ฅ์ ๋์ด๋ฉฐ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๋ค๋ ์ ์์ ์ฐจ๋ณํ๋ฉ๋๋ค.
- API์ ์๋ก์ด ๋ถ๋ถ์ด ์์ ํ๋ ํน์ฑ์ ๋ฉ์๋ ๋ฐ ๊ตฌํ์ ํฌํจํ์ฌ ์์ ์ ์ธ ๋ฒ์ฃผ๋ก ์ด๋๋์์ต๋๋ค.
- {์ ์}::checked_ilog
- {์ ์}::checked_ilog2
- {์ ์}::checked_ilog10
- {์ ์}::ilog
- {์ ์}::ilog2
- {์ ์}::ilog10
- NonZeroU*::ilog2
- NonZeroU*::ilog10
- XNUMX์ด ์๋*::BITS
- ์์ ๋์ ๋ชจ๋ ์ปจํ
์คํธ์์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ๊ฒฐ์ ํ๋ "const" ์์ฑ์ ํจ์์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฌธ์::from_u32
- ๋ฌธ์::from_digit
- ๋ฌธ์::to_digit
- ์ฝ์ด::char::from_u32
- ์ฝ์ด::char::from_digit
- Linux ์ปค๋(linuxkernel)๋ฟ๋ง ์๋๋ผ Sony PlayStation 1(mipsel-sony-psx), AIX๊ฐ ํฌํจ๋ PowerPC(powerpc64-ibm-aix), QNX Neutrino RTOS( aarch64-unknown-nto-) ํ๋ซํผ qnx710, x86_64-pc-nto-qnx710). ์ธ ๋ฒ์งธ ์์ค์๋ ๊ธฐ๋ณธ ์ง์์ด ํฌํจ๋์ง๋ง ์๋ํ๋ ํ ์คํธ, ๊ณต์ ๋น๋ ๊ฒ์ ๋๋ ์ฝ๋ ๋น๋ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ์ ํฌํจ๋์ง ์์ต๋๋ค.
๋ํ AArch64 ์ํคํ
์ฒ ๊ธฐ๋ฐ ์์คํ
์ฉ์ผ๋ก ์กฐ๋ฆฝ๋ ๋๋ผ์ด๋ฒ ๋ฐ Linux ์ปค๋ ๋ชจ๋์ ๊ฐ๋ฐํ๊ธฐ ์ํด Rust ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ARM ํจ์น๊ฐ ๊ฒ์๋์๋ค๋ ์ ์ ์ฃผ๋ชฉํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru