Rust์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ํฌ์ธํฐ๋ฅผ ์กฐ์ํ ๋ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ํด์ ๋ ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ก์ธ์คํ๋ ๊ฒ, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ, ๋ฒํผ ์ค๋ฒ๋ฐ ๋ฑ๊ณผ ๊ฐ์ ์ ์์ค ๋ฉ๋ชจ๋ฆฌ ์กฐ์์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ๊ณ ์ด์
๋ธ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ฉฐ ํ๋ก์ ํธ๋ณ ์ข
์์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ํจํค์ง ๊ด๋ฆฌ์๊ฐ ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค.
์ฃผ์
- ์ ํ ์ง์ ๊ตฌํ
๋ฐฐ์ด ์ด๋ค ํฌ๊ธฐ. ์ด์ ์๋ ๋ชจ๋ ์ ์ ๊ฐ์ ๋ํด ์ผ๋ฐ ํจ์๋ฅผ ์ ์ํ ์ ์์๊ธฐ ๋๋ฌธ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ต๋ 32๊ฐ ์์ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ํด์๋ง ๋ด์ฅ ํน์ฑ ์ง์์ ์ ๊ณตํ์ต๋๋ค(๊ฐ ํฌ๊ธฐ์ ๋ํ ํน์ฑ์ ์ ์ ์ผ๋ก ์ ์๋์์ต๋๋ค). ์์ ์ ๋ค๋ฆญ("const ์ ๋ค๋ฆญ") ๊ธฐ๋ฅ์ ์์ฑ ๋๋ถ์ ๋ชจ๋ ๋ฐฐ์ด ํฌ๊ธฐ์ ๋ํด ์ผ๋ฐ ํจ์๋ฅผ ์ ์ํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ๊ทธ๋ฌ๋ ์ปดํ์ผ๋ฌ์์ ๊ตฌํ๋๊ณ ์ ๊ณต๋๊ธฐ๋ ํ์ง๋ง ์์ง ์์ ์ ์ธ ์ธ์ด ๊ธฐ๋ฅ์๋ ํฌํจ๋์ง ์์ต๋๋ค. ์ง๊ธ๊ด๋ จ๋ ๋ชจ๋ ํฌ๊ธฐ์ ๋ฐฐ์ด ํน์ฑ์ ๋ํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ต๋๋ค.์๋ฅผ ๋ค์ด Rust 1.47์ ๋ค์ ๊ตฌ์ฑ์ ๋ฐฐ์ด์ ๋ด์ฉ์ ์ธ์ํฉ๋๋ค. ์ด์ ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง:
fn ๋ฉ์ธ() {
xs = [0; 34];println!("{:?}", xs);
} - ๋ ์งง์ ์ถ์ (์ญ์ถ์ ) ์ถ๋ ฅ, ๊ธด๊ธ ์ํฉ ์ถ๋ ฅ ์ ๊ณต. ๋๋ถ๋ถ์ ์ํฉ์์ ๊ด์ฌ์ด ์์ง๋ง ์ถ๋ ฅ์ ์ด์ง๋ฝํ๊ณ ๋ฌธ์ ์ ์ฃผ์ ์์ธ์ ๋ํ ๊ด์ฌ์ ๋ถ์ฐ์ํค๋ ์์๋ ์ถ์ ์์ ์ ์ธ๋ฉ๋๋ค. ์ ์ฒด ์ถ์ ์ ๋ฐํํ๋ ค๋ฉด ํ๊ฒฝ ๋ณ์ "RUST_BACKTRACE=full"์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฝ๋์ ๊ฒฝ์ฐ
fn ๋ฉ์ธ() {
๊ณตํฉ!();
}์ด์ ์๋ ํธ๋ ์ด์ค๊ฐ 23๋จ๊ณ๋ก ์ถ๋ ฅ๋์์ผ๋ ์ด์ ๋ XNUMX๋จ๊ณ๋ก ์ถ์๋ฉ๋๋ค.
๋ณธ์ง์ ์ฆ์ ํ์ ํ ์ ์๋ 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 (๋ นะธัะฟะพะปัะทัะตั LLVM์ ๋ฐฑ์๋๋ก ์ฌ์ฉ์ฝ๋ ์์ฑ ). ๋์์ ์ด์ LLVM(์ต๋ ๋ฒ์ 8)์ ์ฌ์ฉํ์ฌ ๋น๋ํ๋ ๊ธฐ๋ฅ์ ์ ์ง๋์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก(๋ น-lang/llvm-ํ๋ก์ ํธ )๋ ํ์ฌ LLVM 11์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. LLVM 11์ ์์ผ๋ก ์ถ์๋ ์์ ์ ๋๋ค. - Windows ํ๋ซํผ์์ Rustc ์ปดํ์ผ๋ฌ๋ "-C control-flow-guard" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฑํ๋๋ ์ ์ด ํ๋ฆ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ(Control Flow Guard)๋ฅผ ํ์ฑํํ๋ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๋ค๋ฅธ ํ๋ซํผ์์๋ ์ด ํ๋๊ทธ๊ฐ ํ์ฌ ๋ฌด์๋ฉ๋๋ค.
- ์์ ํ๋ API๋ฅผ ํฌํจํ์ฌ API์ ์๋ก์ด ๋ถ๋ถ์ด ์์ ์ ์ธ ๋ฒ์ฃผ๋ก ์ด์ ๋์์ต๋๋ค.
ID::new_raw,
๋ฒ์::is_empty,
๋ฒ์ ํฌํจ::is_empty,
๊ฒฐ๊ณผ::as_deref,
๊ฒฐ๊ณผ::as_deref_mut,
Vec::๋์ถ,
ํฌ์ธํฐ::offset_from,
f32::TAU ๋ฐ
f64::TAU. - ์์ ๋์ ๋ชจ๋ ์ปจํ
์คํธ์์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ๊ฒฐ์ ํ๋ "const" ์์ฑ์ ๋ฉ์๋์์ ์ฌ์ฉ๋ฉ๋๋ค.
- XNUMX์ด ์๋ ๋ชจ๋ ์ ์์ ๋ํด์๋ new์ ๋๋ค.
- ๋ชจ๋ ์ ์์ ๋ํcheck_add,checked_sub,checked_mul,checked_neg,checked_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