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

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

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

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

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

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

    ์ „์ฒด ์ธ๋ฑ์Šค ๋‹ค์šด๋กœ๋“œ๋กœ ์ธํ•œ ์ง€์—ฐ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด Sparse์—์„œ๋Š” Git์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๋ฑ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋Œ€์‹  ํŠน์ • ํ”„๋กœ์ ํŠธ์˜ ์ข…์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ํ•„์ˆ˜ ์ธ๋ฑ์Šค ๋ฐ์ดํ„ฐ๋งŒ HTTPS๋ฅผ ํ†ตํ•ด ์ง์ ‘ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์„œ๋น„์Šค์ธ index.crates.io๊ฐ€ ์ธ๋ฑ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒˆ ํ”„๋กœํ† ์ฝœ์€ Rust 1.70 ๋ธŒ๋žœ์น˜์—์„œ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋ฉฐ, ๊ทธ ์ „์— ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse"๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ "[registries. crates-io]" .cargo/config.toml ํŒŒ์ผ 'sparse' ์„น์…˜.

  • ์ƒํƒœ๋ฅผ ๋กœ์ปฌ๋กœ ๊ณ ์ •ํ•˜์—ฌ "T" ํ‘œํ˜„์‹์—์„œ Pin<&mut T> ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” "pin!" ๋งคํฌ๋กœ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(Box::pin๊ณผ ๋‹ฌ๋ฆฌ ํž™์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฐ”์ธ๋”ฉํ•จ). ์Šคํƒ ์ˆ˜์ค€์—์„œ).
  • ํ‘œ์ค€ alloc ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (std ์—†์ด) ํ• ๋‹น๋งŒ ํ™œ์„ฑํ™”ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ด์ œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์‹คํŒจํ•  ๋•Œ "panic!" ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉฐ, ์„ ํƒ์ ์œผ๋กœ "#[panic_handler]"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. std ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ๊ณ„์†ํ•ด์„œ stderr ๋ฐ ์ถฉ๋Œ์— ์˜ค๋ฅ˜ ์ •๋ณด๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.
  • API์˜ ์ƒˆ๋กœ์šด ๋ถ€๋ถ„์ด ์•ˆ์ •ํ™”๋œ ํŠน์„ฑ์˜ ๋ฉ”์„œ๋“œ ๋ฐ ๊ตฌํ˜„์„ ํฌํ•จํ•˜์—ฌ ์•ˆ์ •์ ์ธ ๋ฒ”์ฃผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • {์ฝ”์–ด,ํ‘œ์ค€}::ํ•€::ํ•€!
    • impl์—์„œ {f32,f64}์— ๋Œ€ํ•ด
    • ํ‘œ์ค€::๊ฒฝ๋กœ::MAIN_SEPARATOR_STR
    • PathBuf์— ๋Œ€ํ•œ impl DerefMut
  • ์ƒ์ˆ˜ ๋Œ€์‹  ๋ชจ๋“  ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๊ฒฐ์ •ํ•˜๋Š” "const" ์†์„ฑ์€ VecDeque::new ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Android ํ”Œ๋žซํผ์—์„œ ์ž‘์—…ํ•˜๋ ค๋ฉด ์ด์ œ ์ตœ์†Œํ•œ NDK r25(API 19)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์ตœ์†Œ Android ๋ฒ„์ „์ด 4.4(KitKat)๋กœ ์ƒํ–ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Sony PlayStation Vita ํ”Œ๋žซํผ(armv7-sony-vita-newlibeabihf)์— ๋Œ€ํ•œ ์„ธ ๋ฒˆ์งธ ์ˆ˜์ค€์˜ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์ˆ˜์ค€์—๋Š” ๊ธฐ๋ณธ ์ง€์›์ด ํฌํ•จ๋˜์ง€๋งŒ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ, ๊ณต์‹ ๋นŒ๋“œ ๊ฒŒ์‹œ ๋˜๋Š” ์ฝ”๋“œ ๋นŒ๋“œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ์€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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