Rust 1.44 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค

๊ฒŒ์‹œ ๋จ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค ๋…น 1.44, Mozilla ํ”„๋กœ์ ํŠธ์— ์˜ํ•ด ์„ค๋ฆฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์–ธ์–ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์— ์ค‘์ ์„ ๋‘๊ณ  ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋†’์€ ์ž‘์—… ๋ณ‘๋ ฌ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„.

Rust์˜ ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ํ•ด์ œ๋œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ, ๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ, ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ ๋“ฑ๊ณผ ๊ฐ™์€ ์ €์ˆ˜์ค€ ๋ฉ”๋ชจ๋ฆฌ ์กฐ์ž‘์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ๋ณ„ ์ข…์†์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฑƒ์ง, ํ•œ ๋ฒˆ์˜ ํด๋ฆญ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅ์†Œ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. crates.io.

์ƒˆ ๋ฆด๋ฆฌ์Šค ๋ฐœํ‘œ ํ…์ŠคํŠธ์—์„œ Rust ๊ฐœ๋ฐœ์ž๋Š” ์ •์น˜์— ๊ด€์—ฌํ–ˆ์œผ๋ฉฐ ๊ฒฝ์ฐฐ ํญ๋ ฅ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‹œ์œ„๋Œ€์™€์˜ ์—ฐ๋Œ€์˜ ํ‘œ์‹œ๋กœ Rust 1.44์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ „์ฒด ๋ฆฌ๋ทฐ ๊ฒŒ์‹œ๋ฅผ ๊ฑฐ๋ถ€ํ–ˆ์œผ๋ฉฐ ์ด๋Š” ์ด ๋ฌธ์ œ๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์ธ ์ง€์‹์˜ ๊ตํ™˜๋ณด๋‹ค ๊ธฐ์ดˆ์ ์ธ ํ˜์‹ :

  • Cargo ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋Š” ํŠธ๋ฆฌ์™€ ๊ฐ™์€ ์ข…์†์„ฑ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œ์‹œํ•˜๋Š” "cargo tree" ๋ช…๋ น์„ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋™์ผํ•œ ํŒจํ‚ค์ง€์˜ ๋‹ค๋ฅธ ๋ฒ„์ „์—์„œ ์ข…์†์„ฑ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” "โ€”duplicates"("cargo tree -d") ์˜ต์…˜๋„ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    โ”œโ”€โ”€ ์•”๋ชจ๋‹ˆ์•„ v3.0.0
    โ”‚ โ”œโ”€โ”€ html5ever v0.24.0
    โ”‚ โ”‚ โ”œโ”€โ”€ ๋กœ๊ทธ v0.4.8
    โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ cfg-if v0.1.9
    โ”‚ โ”‚ โ”œโ”€โ”€ ๋งฅ v0.1.1
    โ”‚ โ”‚ โ””โ”€โ”€ markup5ever v0.9.0
    โ”‚ โ”‚ โ”œโ”€โ”€ ๋กœ๊ทธ v0.4.8 (*)
    โ”‚ โ”‚ โ”œโ”€โ”€ phf v0.7.24
    โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ phf_shared v0.7.24
    โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ์‹œํŒŒ์…” v0.2.3
    โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ์œ ๋‹ˆ์ผ€์ด์Šค v1.4.2
    โ”‚ โ”‚ โ”‚ [๋นŒ๋“œ ์ข…์†์„ฑ] โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ version_check v0.1.5
    ...

  • std("#![no_std]")์— ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ง€์›์€ "async" ํ•จ์ˆ˜, async move { ... } ๋ธ”๋ก ๋ฐ ".await" ์—ฐ์‚ฐ์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋น„์ฐจ๋‹จ ์ฒ˜๋ฆฌ๊ธฐ ๊ธฐ๋ณธ ๋ช…๋ น ํ๋ฆ„ ์ž‘์„ฑ์„ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ ๊ณ„์ธต ๊ตฌ์กฐ ์ •์˜ ์ฒด๊ณ„์— ๋Œ€ํ•œ ์ง€์›์ด ํŒŒ์„œ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ๊ตฌ์„ฑ์€ "foo/bar/baz.rs" ๋ชจ๋“ˆ์ด ์‹ค์ œ๋กœ ์—†์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ตฌ์„ฑ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์˜๋ฏธ์ƒ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์Œ ์œ„์น˜์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณด๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๋งคํฌ๋กœ ๋ฐ ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ์ˆ˜์ค€):

    #[cfg(FALSE)] mod foo {
    ๋ชจ๋“œ ๋ฐ” {
    ๋ชจ๋“œ ๋ฐ”์ฆˆ;
    }
    }

  • Rustc ์ปดํŒŒ์ผ๋Ÿฌ์—๋Š” ์ฆ๋ถ„ ๋ชจ๋“œ์—์„œ "-C codegen-units" ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. unwinding ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜๊ณ  ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก catch_unwind ๊ตฌํ˜„์ด ์žฌ์ž‘์—…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos ๋ฐ x86_64-apple-tvos ํ”Œ๋žซํผ์— ๋Œ€ํ•ด ๋ ˆ๋ฒจ XNUMX ์ง€์›์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์ˆ˜์ค€์—๋Š” ๊ธฐ๋ณธ ์ง€์›์ด ํฌํ•จ๋˜์ง€๋งŒ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ๋ฐ ๊ณต์‹ ๋นŒ๋“œ ๊ฒŒ์‹œ๋Š” ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์•ˆ์ •ํ™”๋œ API๋ฅผ ํฌํ•จํ•˜์—ฌ API์˜ ์ƒˆ๋กœ์šด ๋ถ€๋ถ„์ด ์•ˆ์ •์ ์ธ ๋ฒ”์ฃผ๋กœ ์ด์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    PathBuf::with_capacity,
    PathBuf::์šฉ๋Ÿ‰,
    PathBuf::์ง€์šฐ๊ธฐ,
    PathBuf::์˜ˆ์•ฝ,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    ๋ ˆ์ด์•„์›ƒ::align_to,
    ๋ ˆ์ด์•„์›ƒ::pad_to_align,
    ๋ ˆ์ด์•„์›ƒ::๋ฐฐ์—ด ๋ฐ
    ๋ ˆ์ด์•„์›ƒ::ํ™•์žฅ.

  • ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ™•์žฅ ๊ธฐ๋Šฅ:
    • Vec::new()์— ์ง์ ‘ ๋ฐ˜์˜๋˜๋Š” ํŠน๋ณ„ํ•œ "vec![]" ๋ณ€ํ˜•์„ ์ถ”๊ฐ€ํ•˜์—ฌ "vec![]"๋ฅผ ์ƒ์ˆ˜ ๋Œ€์‹  ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ณ€ํ™˜::Infallible์— ํŠน์„ฑ์˜ ๊ตฌํ˜„(impl)์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ.
    • OsString์€ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. DerefMut ะธ IndexMut, "&mut OsStr"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์œ ๋‹ˆ์ฝ”๋“œ 13์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฌธ์ž์—ด๋กœ ๊ตฌํ˜„๋จ <&mut str>์—์„œ.
    • IoSlice๋Š” ํŠน์„ฑ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€.
    • ๋ฒ ํฌ ๊ตฌํ˜„๋จ <[T; N]>.
    • proc_macro::LexError๋Š” fmt::Display ๋ฐ Error๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์ˆ˜ ๋Œ€์‹  ๋ชจ๋“  ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” "const" ์†์„ฑ์€ ๋ชจ๋“  ์ •์ˆ˜ ์œ ํ˜•์— ๋Œ€ํ•ด from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes ๋ฐ to_ne_bytes ๋ฉ”์†Œ๋“œ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Windows์˜ GNU ํ”Œ๋žซํผ์— ๋Œ€ํ•ด ".lib" ๋Œ€์‹  ".a" ํ˜•์‹์œผ๋กœ ์ •์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • LLVM์˜ ์ตœ์†Œ ์š”๊ตฌ ์‚ฌํ•ญ์ด LLVM ๋ฒ„์ „ 8๋กœ ์ƒํ–ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€