๊ฐœ๋ฐœํŒ€์€ Rust 1.36์„ ์†Œ๊ฐœํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

Rust 1.36์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์ƒˆ๋กœ์šด ํŠน์„ฑ์ด ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค: ํ• ๋‹น ์ƒ์ž, MaybeUninit , Rust 2015์šฉ NLL, HashMap์˜ ์ƒˆ๋กœ์šด ๊ตฌํ˜„ Cargo์˜ ์ƒˆ๋กœ์šด ํ”Œ๋ž˜๊ทธ๋Š” ์˜คํ”„๋ผ์ธ์ž…๋‹ˆ๋‹ค.


์ด์ œ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ๋งˆ์นจ๋‚ด Rust 1.36์—์„œ ์•ˆ์ •๋œ ํŠน์„ฑ ๋ฏธ๋ž˜.
  • ์ƒ์ž ํ• ๋‹น.
    Rust 1.36๋ถ€ํ„ฐ ์ „์—ญ ํ• ๋‹น์ž(์˜ˆ: Vec)์— ์˜์กดํ•˜๋Š” std์˜ ์ผ๋ถ€ )์€ ํ• ๋‹น ์ƒ์ž์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ std๋Š” ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ.
  • ์–ด์ฉŒ๋ฉด๋‹จ์œ„ mem::uninitialized ๋Œ€์‹ .
    ์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” mem::uninitialized๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐํ™” ํ™•์ธ์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ๊ฒŒ์œผ๋ฅธ ๋ฐฐ์—ด ํ• ๋‹น์— ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ ์ด ํ•จ์ˆ˜๋Š” ๋งค์šฐ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค(๋”), MaybeUninit ์œ ํ˜•์ด ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. , ๋” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
    ์Œ, MaybeUninit ์ดํ›„๋กœ ๋” ์•ˆ์ „ํ•œ ๋Œ€์•ˆ์ด๋ผ๋ฉด Rust 1.38๋ถ€ํ„ฐ mem::uninitialized๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด Alexis Beingessner์˜ ์ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์–ด๋ณด์„ธ์š”.
  • Rust 2015์šฉ NLL.
    ๊ณต์ง€์‚ฌํ•ญ์—์„œ ๋…น 1.31.0 ๊ฐœ๋ฐœ์ž๋“ค์€ ๋นŒ๋ฆผ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ๋”์šฑ ์Šค๋งˆํŠธํ•˜๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ์–ธ์–ด ๊ฐœ์„  ์‚ฌํ•ญ์ธ NLL(Non-Lexical Lifetime)์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:
    fn ๋ฉ”์ธ() {
    mut x = 5๋กœ ๋‘ก๋‹ˆ๋‹ค.
    y = &x;
    z = &mut x; // 1.31.0 ์ด์ „์—๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    }

    1.31.0์—์„œ NLL์€ ๊ฐœ๋ฐœ์ž๊ฐ€ Rust 2018์—์„œ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋ผ๋Š” ์•ฝ์†๊ณผ ํ•จ๊ป˜ Rust 2015์—์„œ๋งŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
    NLL์— ๋Œ€ํ•ด ๋” ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ๋” ๋งŽ์€ ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ํ•ญ๋ชฉ (ํŽ ๋ฆญ์Šค ํด๋ก์Šค).

  • Cargo์˜ ์ƒˆ๋กœ์šด ํ”Œ๋ž˜๊ทธ๋Š” -ofline์ž…๋‹ˆ๋‹ค.
    Rust 1.36์—์„œ๋Š” Cargo์˜ ์ƒˆ๋กœ์šด ํ”Œ๋ž˜๊ทธ๊ฐ€ ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. --offline ํ”Œ๋ž˜๊ทธ๋Š” Cargo๊ฐ€ ๋‚˜์ค‘์— ์˜คํ”„๋ผ์ธ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ์ปฌ๋กœ ์บ์‹œ๋œ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ์˜คํ”„๋ผ์ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ์ธํ„ฐ๋„ท์ด ์—ฌ์ „ํžˆ ํ•„์š”ํ•œ ๊ฒฝ์šฐ Cargo๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ข…์†์„ฑ์„ ์‚ฌ์ „ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋ฉด ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ํ™”๋ฌผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๊ธฐ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฐœ์š”๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋…น, ๋ฑƒ์ง ะธ ํด๋ฆฌ ํ”ผ.

์ถœ์ฒ˜ : linux.org.ru

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