๋ณด๋์๋ฃ๊ฐ ๋ฐํ๋์์ต๋๋ค ๋ น 1.96.0 โ ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ต์ ์์ ๋ฒ์ ์ ๋๋ค. ์ ๋ฐ์ดํธ๊ฐ ์ถ์๋์์ต๋๋ค. 28 ์ 2026 ๋ ํ์ค `rustup update stable` ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ ์ ์์ต๋๋ค. ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก๋ `core::range`์ ์๋ก์ด ๋ฒ์ ์ ํ ์ถ๊ฐ, ํจํด ๋งค์นญ ๋งคํฌ๋ก ์์ ํ, WebAssembly ๋น๋ ๋์ ๊ฐํ, Cargo์ ๋ ๊ฐ์ง ์ทจ์ฝ์ ์์ ๋ฑ์ด ์์ต๋๋ค.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ
์๋ก์ด ๋ฒ์ ์ ํ core::range::Range*.
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ก์ด ๋ฒ์ ์ ํ์ธ core::range::Range, RangeFrom, RangeInclusive ๋ฐ ๊ด๋ จ ๋ฐ๋ณต์๊ฐ ์์ ํ๋์์ต๋๋ค. core::ops์ ๊ธฐ์กด ์ ํ๊ณผ ๋ฌ๋ฆฌ, ์๋ก์ด ๋ฒ์ ์ ํ์ Iterator ์ธํฐํ์ด์ค๋ฅผ ์ง์ ๊ตฌํํ์ง ์๊ณ IntoIterator๋ฅผ ํตํด ๋ฐ๋ณต์๋ก ๋ณํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๋ฒ์ ์ ํ์ ๋ณต์ฌ ๊ฐ๋ฅ(Copyable)ํ๋ฉฐ, ์๋ฅผ ๋ค์ด ๋ฒ์๋ฅผ ๊ตฌ์กฐ์ฒด ํ๋๋ก ์ ์ฅํ ๋ ํธ๋ฆฌํฉ๋๋ค. ํ์ฌ๋ 0..1๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ๋ฒ์ ์ ํ์ ์์ฑํ์ง๋ง, ํฅํ ๋ฒ์ ์์ ์๋ก์ด ์ ํ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋ ์์ ์ ๋๋ค.assert_matches! ๋ฐ debug_assert_matches! ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
์๋ก์ด ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ด ์ฃผ์ด์ง ํจํด๊ณผ ์ผ์นํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ assert!(matches!(โฆ))์ ๊ฐ๋ ์ ์ผ๋ก ์ ์ฌํ์ง๋ง, ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๊ฐ์ ๋๋ฒ๊ทธ ํํ์ด ์ถ๋ ฅ๋์ด ์ง๋จ์ด ๊ฐํธํด์ง๋๋ค. ์ด๋ฌํ ๋งคํฌ๋ก๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์ฌ ํฌ๋ ์ดํธ์์ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด Prelude์ ์ถ๊ฐ๋์ง ์์์ผ๋ฏ๋ก core ๋๋ std์์ ๋ช ์์ ์ผ๋ก ๊ฐ์ ธ์์ผ ํฉ๋๋ค.WebAssembly ํ๊ฒ์ ๋์ ๋ฐฉ์์ ๋ณ๊ฒฝํ์ต๋๋ค.
Rust๋ ๋ ์ด์ WebAssembly ๋น๋ ์ ๋ง์ปค์ `--allow-undefined` ์ต์ ์ ์ ๋ฌํ์ง ์์ต๋๋ค. ์ด์ ์ ์๋์ง ์์ ์ฌ๋ณผ์ ์๋์ผ๋ก "env" ๋ชจ๋์ ์ํฌํธ๋ก ๋ณํ๋์ง ์๊ณ ๋งํฌ ๊ณผ์ ์์ ์ค๋ฅ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋น๋ ์ค๋ฅ ๋ฐ ์๋ชป๋ ์ฌ๋ณผ ์ด๋ฆ์ ๋ ์ผ์ฐ ๊ฐ์งํ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ `RUSTFLAGS=-Clink-arg=--allow-undefined`๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ `#[link(wasm_import_module = "env")]`์ ๊ฐ์ด ์ํฌํธํ wasm ๋ชจ๋์ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ฌ ์ด์ ๋์์ผ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค.Cargo์ ๋ณด์ ์์ ์ฌํญ์ด ์ ์ฉ๋์์ต๋๋ค.
์ธ์ด์ ๋ณํ.
์ด๋ฒ ๋ฆด๋ฆฌ์ค์๋ ๋ค์ ๋ด์ฉ์ด ํฌํจ๋ฉ๋๋ค. ๋ช ๊ฐ์ง ์ฌ์ํ ์์ ๋ฐ ๊ฐ์ ์ฌํญ: ๋งคํฌ๋ก์ expr ๋ฉํ๋ณ์๋ฅผ cfg์ ์ ๋ฌํ ์ ์๋๋ก ํ์ฉ, ํํ ํํ์์์ ํ์ ์บ์คํ ์ด ๋ฐ์ํ์ง ์๋ ๋ฌธ์ ์์ , ํจ์ ์ธ์์ ๋ํ ์๋ชป๋ ํ์ ์ถ๋ก ํํธ์ ๋๋ฌธ ๊ฒฝ์ฐ ์์ , ์ธ๋ผ์ธ ์ด์ ๋ธ๋ฆฌ์์ s390x ๋ฒกํฐ ๋ ์ง์คํฐ ์ง์ ์ถ๊ฐ, ManuallyDrop ์์๋ฅผ ํ ํ๋ฆฟ์ผ๋ก ๋ค์ ํ์ฉ(์ด๋ Rust 1.94.0์์ ๋ฐ์ํ ํ๊ท ์ค๋ฅ๋ฅผ ์์ ํฉ๋๋ค).์ปดํ์ผ๋ฌ ๋ฐ ํ๋ซํผ ๋ณ๊ฒฝ ์ฌํญ.
์ LinuxLoongArch ํ๊ฒ์ ๋ํ ๋งํฌ ์ํ ์ง์์ด ํ์ฑํ๋์์ต๋๋ค. ์ด๋ ์ฝ๋ ๋ฐฐํฌ ํ ์ผ๋ถ ์ ํ ๋ฐ ํธ์ถ์ ๋จ์ํํ๋ ๋งํฌ ์ต์ ํ ๊ธฐ๋ฅ์ ๋๋ค. riscv64gc-unknown-fuchsia์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ด ๋ฒกํฐ ํ์ฅ์ ์ง์ํ๋ RVA22 ํ๋กํ์ผ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฐ์ดํธ.
0์ด ์๋ ์ ์ ๋ฒ์๋ฅผ ์ํํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ToSocketAddr์ ํตํ SGX์ ํธ์คํธ ์ฃผ์ ์ง์ฐ ์ฒ๋ฆฌ ๋ฌธ์ ๋ ์์ ๋์์ผ๋ฉฐ, ๋ฌธ์์ ๋ด๋ถ ๊ณ์ฝ์์ "์ฝ๊ธฐ/์ฐ๊ธฐ ๊ฐ๋ฅ" ๋ฉ๋ชจ๋ฆฌ ์ ์๊ฐ ๋ช ํํด์ก์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ ์์์ ๋ ํฌ์ธํฐ๊ฐ ์ ๊ฑฐ๋์๊ณ , ์์ธ๋ ์ด์ ํน์ ๋ฉ์๋์ ๋ํด ๋ณ๋๋ก ์ง์ ๋ฉ๋๋ค.์์ ํ๋ API.
์์ ํ๋ ์ธํฐํ์ด์ค์๋ assert_matches!, debug_assert_matches!, From์ ๊ตฌํ์ฒด๊ฐ ํฌํจ๋ฉ๋๋ค. AssertUnwindSafe์ ๊ฒฝ์ฐ ๋ ์ด์ง์ ๊ทธ๋ฆฌ๊ณ ๋ ์ด์ง๋ฝ ๋ํ, Range, RangeFrom, RangeToInclusive ๋ฐ ํด๋น ๋ฐ๋ณต์๋ฅผ ํฌํจํ์ฌ core::range์ ์๋ก์ด ๋ฒ์ ์ ํ ๋ฐ ๋ฐ๋ณต์๋ ํฌํจ๋ฉ๋๋ค.Cargo: ์ข ์์ฑ ๋ฐ ๋ฌธ์ ๋ณ๊ฒฝ ์ฌํญ.
์ด์ ์ข ์์ฑ์์ Git ์ ์ฅ์์ ๋์ฒด ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๋ชจ๋ ์ง์ ํ ์ ์์ต๋๋ค. ๋ก์ปฌ์์๋ Git ๋ฒ์ ์ด ์ฌ์ฉ๋๊ณ , ๊ฒ์ ์์๋ ๋ ์ง์คํธ๋ฆฌ ๋ฒ์ ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ crates.io์ ๋์ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค. ๋ํ Cargo ์ค์ ์์ `target.cfg(..)'.rustdocflags`์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.Rustdoc์ด ์ด์ ๋ฌธ์ํ๋ฅผ ๋์ฑ ์ ํํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ API ๊ด๋ จ ์ค๋ช ์ ์ด์ ์ด์ ์ฒ๋ผ ๊ณต๋ฐฑ์ผ๋ก ์ค ๋ฐ๊ฟํ๋ ํน์ ์ฒ๋ฆฌ ์์ด ์ผ๋ฐ ๋ฌธ์์ฒ๋ผ ํ์๋ฉ๋๋ค. ๋ํ rustdoc์ ๋ ์ด์ impl ๋ด๋ถ ์์์ ๋ํด missing_doc_code_examples ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์์ผ๋ฉฐ, ๋ฉ์๋์ ๊ด๋ จ ํจ์๊ฐ ๋ฌธ์ ์ฌ์ด๋๋ฐ์์ ๋ถ๋ฆฌ๋์ด ํ์๋ฉ๋๋ค.ํธํ์ฑ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ.
์ด๋ฒ ๋ฆด๋ฆฌ์ค์๋ ๋นํ์ค ์ฝ๋์์ ๋ํ๋ ์ ์๋ ๋ช ๊ฐ์ง ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ผ๋ถ #[repr(Int)] ์ด๊ฑฐํ์ ๋ ์ด์์์ด ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ์ ์์ ๋์์ผ๋ฉฐ, Pin์์ ๋ถํ์ํ ํฌ๊ธฐ ์กฐ์ ์ด ๋นํ์ฑํ๋์์ต๋๋ค. WebAssembly ๋น๋๋ ์ด์ ์ ์๋์ง ์์ ์ฌ๋ณผ์์ ํฌ๋์๋๋ฉฐ, ์ค์๋ก ์์ ํ๋์๋ #![reexport_test_harness_main] ์์ฑ์ ๋ค์ ๊ธฐ๋ฅ ์ ํ์ด ์ ์ฉ๋์๊ณ , -Csoft-float ์ต์ ์ด ์ ๊ฑฐ๋์์ผ๋ฉฐ, ์ต์ ์ธ๋ถ LLVM ๋ฒ์ ์ด 21๋ก ์ํฅ ์กฐ์ ๋์์ต๋๋ค. AVR์ ๊ฒฝ์ฐ, C double์ด ๊ธฐ๋ณธ์ ์ผ๋ก 32๋นํธ์ด๋ฏ๋ก c_double ์ ํ์ด f32๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
์ถ์ฒ : linux.org.ru
