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

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

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

์ฃผ์š” ํ˜์‹ :

  • ํŠน์„ฑ FnOnce, FnMut ะธ Fn ํž™ ํ• ๋‹น์„ ์œ„ํ•ด ๊ตฌํ˜„๋จ ๋ฐ•์Šคํ˜• Box<dyn FnOnce>, Box<dyn FnMut> ๋ฐ Box<dyn Fn>;
  • ์ถ”๊ฐ€๋จ ๊ธฐํšŒ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์— ํด๋กœ์ € ์บ์ŠคํŒ…(์•ˆ์ „ํ•˜์ง€ ์•Š์€ fn)
  • ๋งคํฌ๋กœ "dbg!"๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๊ณ  stderr์— ํŒŒ์ผ ์ด๋ฆ„๊ณผ ์ค„ ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์กฐ๊ฑด์‹ ์ž‘์—…์„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ€๋™ ์†Œ์ˆ˜์  ์œ ํ˜• f32 ๋ฐ f64์— "๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.์‚ฌ๋ณธยป ํ•œ ์ˆซ์ž์—์„œ ๋‹ค๋ฅธ ์ˆซ์ž๋กœ ๋ฌธ์ž๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ๋ฐฉ๋ฒ• "์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค", ์ง€์ •๋œ ๊ฐ’์ด ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ๋ฐฉ๋ฒ• ์ฐธ์กฐ:์…€:map_split, ๋นŒ๋ฆฐ ๋ฐ์ดํ„ฐ์˜ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•ด ๋นŒ๋ฆฐ RefCell ๊ฐ’์„ ๋ฐ˜์˜ํ•˜๊ณ  ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ๋ฐฉ๋ฒ• RefCell::replace_with ํ˜„์žฌ RefCell ๊ฐ’์„ ๋ฐ”๊พธ๊ณ  ์ด์ „ ๊ฐ’์„ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ๋ฐฉ๋ฒ• ptr::ํ•ด์‹œ ์ฃผ์†Œ๊ฐ€ ์ง€์ •๋œ ๊ฐ’์ด ์•„๋‹Œ ์ฃผ์†Œ๋กœ ํฌ์ธํ„ฐ๋‚˜ ์ฐธ์กฐ๋ฅผ ํ•ด์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ๋ฐฉ๋ฒ• ์˜ต์…˜::๋ณต์‚ฌ๋จ Option<&T> ๋˜๋Š” Option<&mut T> ์˜ต์…˜์˜ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์•ˆ์ •ํ™”๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ API์˜ ์ƒˆ๋กœ์šด ๋ถ€๋ถ„์ด ์•ˆ์ • ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์ด์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    f32::์นดํ”ผ์‚ฌ์ธ,
    f64::์นดํ”ผ์‚ฌ์ธ,
    RefCell::replace_with,
    RefCell::map_split,
    ptr::ํ•ด์‹œ,
    ๋ฒ”์œ„::ํฌํ•จ,
    ๋ฒ”์œ„์‹œ์ž‘::ํฌํ•จ,
    ๋ฒ”์œ„::ํฌํ•จ,
    ๋ฒ”์œ„ํฌํ•จ::ํฌํ•จ,
    RangeToInclusive::ํฌํ•จ ๋ฐ
    ์˜ต์…˜::๋ณต์‚ฌ๋จ;

  • ํ•จ์ˆ˜์— "T: Drop" ๋ฐ”์ธ๋”ฉ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” drop_bounds ๊ฒ€์‚ฌ๋ฅผ Clippy(linter)์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ์— ์ƒˆ๋กœ์šด ๋Œ€์ƒ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    wasm32-unknown-wasi(์ธํ„ฐํŽ˜์ด์Šค ๋‚ด๊ฐ€ ๊ทธ๋žฌ๋‹ˆ ๋ธŒ๋ผ์šฐ์ € ์™ธ๋ถ€์—์„œ WebAssembly๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด)

  • Rust ํˆดํ‚ท์€ ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Musl์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ฐฐํฌํŒ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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