Mozilla ํ๋ก์ ํธ์ ์ํด ์ค๋ฆฝ๋ Rust ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฆด๋ฆฌ์ค 1.47์ด ๊ฒ์๋์์ต๋๋ค. ์ด ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ค์ ์ ๋๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฉฐ ๊ฐ๋น์ง ์์ง๊ธฐ๋ ๋ฐํ์์ ์ฌ์ฉํ์ง ์๊ณ ๋์ ์์ ๋ณ๋ ฌ์ฑ์ ๋ฌ์ฑํ ์ ์๋ ์๋จ์ ์ ๊ณตํฉ๋๋ค(๋ฐํ์์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ ์ด๊ธฐํ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ก ๋จ์ถ๋ฉ๋๋ค).
Rust์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ํฌ์ธํฐ๋ฅผ ์กฐ์ํ ๋ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ํด์ ๋ ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ก์ธ์คํ๋ ๊ฒ, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ, ๋ฒํผ ์ค๋ฒ๋ฐ ๋ฑ๊ณผ ๊ฐ์ ๋ฎ์ ์์ค์ ๋ฉ๋ชจ๋ฆฌ ์กฐ์์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ๊ณ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ฉฐ ์ข ์์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ ํธ๋ Cargo ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. crates.io ์ ์ฅ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์คํ ์ ์ํด ์ง์๋ฉ๋๋ค.
์ฃผ์ ํ์ :
- ์์ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ํ ํน์ฑ ์ง์์ ๊ตฌํํ์ต๋๋ค. ์ด์ ์๋ ๋ชจ๋ ์ ์ ๊ฐ์ ๋ํด ์ผ๋ฐ ํจ์๋ฅผ ์ ์ํ ์ ์์๊ธฐ ๋๋ฌธ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ต๋ 32๊ฐ ์์ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ํด์๋ง ๋ด์ฅ ํน์ฑ ์ง์์ ์ ๊ณตํ์ต๋๋ค(๊ฐ ํฌ๊ธฐ์ ๋ํ ํน์ฑ์ ์ ์ ์ผ๋ก ์ ์๋์์ต๋๋ค). const ์ ๋ค๋ฆญ ๊ธฐ๋ฅ์ ์์ฑ ๋๋ถ์ ๋ชจ๋ ๋ฐฐ์ด ํฌ๊ธฐ์ ๋ํด ์ผ๋ฐ ํจ์๋ฅผ ์ ์ํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก์ง๋ง ์ปดํ์ผ๋ฌ์์ ๊ตฌํ๋๊ณ ํ์ฌ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉ๋์ง๋ง ์์ง ์ธ์ด์ ์์ ์ ์ธ ๊ธฐ๋ฅ์ ํฌํจ๋์ง ์์์ต๋๋ค. ๋ชจ๋ ํฌ๊ธฐ์ ๋ฐฐ์ด ์ ํ์ ๋ํด.
์๋ฅผ ๋ค์ด Rust 1.47์ ๋ค์ ๊ตฌ์ฑ์ ๋ฐฐ์ด์ ๋ด์ฉ์ ์ธ์ํฉ๋๋ค. ์ด์ ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง:
fn ๋ฉ์ธ() {
xs = [0; 34];
println!("{:?}", xs);
}
- ๋ ์งง์ ์ถ์ (์ญ์ถ์ ) ์ถ๋ ฅ, ๊ธด๊ธ ์ํฉ ์ถ๋ ฅ ์ ๊ณต. ๋๋ถ๋ถ์ ์ํฉ์์ ๊ด์ฌ์ด ์์ง๋ง ์ถ๋ ฅ์ ์ด์ง๋ฝํ๊ณ ๋ฌธ์ ์ ์ฃผ์ ์์ธ์ ๋ํ ๊ด์ฌ์ ๋ถ์ฐ์ํค๋ ์์๋ ์ถ์ ์์ ์ ์ธ๋ฉ๋๋ค. ์ ์ฒด ์ถ์ ์ ๋ฐํํ๋ ค๋ฉด ํ๊ฒฝ ๋ณ์ "RUST_BACKTRACE=full"์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฝ๋์ ๊ฒฝ์ฐ
fn ๋ฉ์ธ() {
๊ณตํฉ!();
}
์ด์ ์๋ ํธ๋ ์ด์ค๊ฐ 23๋จ๊ณ๋ก ์ถ๋ ฅ๋์์ผ๋ ์ด์ ๋ 3๋จ๊ณ๋ก ์ถ์๋์ด ๋ณธ์ง์ ์ฆ์ ํ์ ํ ์ ์์ต๋๋ค.
์ค๋ ๋ 'main'์ด '๋ช
์์ ์ธ ํจ๋'์ ํจ๋ ์ํ์ ๋น ์ก์ต๋๋ค, src/main.rs:2:5
์คํ ์ญ์ถ์ :
0: ํ์ค::ํจ๋::begin_panic
/rustc/dโฆd75a/library/std/src/panicking.rs:497์์
1: ๋์ดํฐ::๋ฉ์ธ
./src/main.rs:2์์
2: ์ฝ์ด::ops::ํจ์::FnOnce::call_once
/rustc/dโฆd75a/library/core/src/ops/function.rs:227์์
- Rustc ์ปดํ์ผ๋ฌ๋ LLVM 11์ ์ฌ์ฉํ์ฌ ๋น๋ํ๋๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค(Rust๋ ์ฝ๋ ์์ฑ์ ์ํ ๋ฐฑ์๋๋ก LLVM์ ์ฌ์ฉํฉ๋๋ค). ๋์์ ์ด์ LLVM(๋ฒ์ 8๊น์ง)์ ์ฌ์ฉํ์ฌ ๋น๋ํ๋ ๊ธฐ๋ฅ์ ์ ์ง๋์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก(rust-lang/llvm-project์์) LLVM 11์ด ์ฌ์ฉ๋ฉ๋๋ค. LLVM 11์ ์ถ์๋ ํฅํ์ ์์๋ฉ๋๋ค. ๋ .
- Windows ํ๋ซํผ์์ Rustc ์ปดํ์ผ๋ฌ๋ "-C control-flow-guard" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฑํ๋๋ ์ ์ด ํ๋ฆ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ(Control Flow Guard)๋ฅผ ํ์ฑํํ๋ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๋ค๋ฅธ ํ๋ซํผ์์๋ ์ด ํ๋๊ทธ๊ฐ ํ์ฌ ๋ฌด์๋ฉ๋๋ค.
- ์์ ํ๋ Ident::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, ํฌ์ธํฐ::offset_from์ ํฌํจํ์ฌ API์ ์๋ก์ด ๋ถ๋ถ์ด ์์ ์ ์ธ ์นดํ ๊ณ ๋ฆฌ๋ก ์ด์ ๋์์ต๋๋ค. , f32::TAU ๋ฐ f64::TAU.
- ์์ ๋์ ๋ชจ๋ ์ปจํ
์คํธ์์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ๊ฒฐ์ ํ๋ "const" ์์ฑ์ ๋ฉ์๋์์ ์ฌ์ฉ๋ฉ๋๋ค.
- XNUMX์ด ์๋ ๋ชจ๋ ์ ์์ ๋ํด์๋ new์ ๋๋ค.
- ๋ชจ๋ ์ ์์ ๋ํcheck_add,checked_sub,checked_mul,checked_neg,check_shl,checked_shr, saturating_add, saturating_sub ๋ฐ saturating_mul;
- char ๋ฐ u8 ์ ํ์ ๊ฒฝ์ฐ is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punkation, is_ascii_graphic, is_ascii_whitespace ๋ฐ is_ascii_control.
- FreeBSD์ ๊ฒฝ์ฐ FreeBSD 11.4์ ํดํท์ด ์ฌ์ฉ๋ฉ๋๋ค(FreeBSD 10์ LLVM 11์ ์ง์ํ์ง ์์ต๋๋ค).
์์ ๊ฐ์ ธ์จ opennet.ru
์ถ์ฒ : linux.org.ru