λͺ¨μ§λΌ νλ‘μ νΈμμ κ°λ°λμμ§λ§ νμ¬λ λ 립 λΉμ리 λ¨μ²΄μΈ Rust Foundationμ νμμΌλ‘ κ°λ°λκ³ μλ Rust 1.98 νλ‘κ·Έλλ° μΈμ΄κ° μΆμλμμ΅λλ€. μ΄ μΈμ΄λ λ©λͺ¨λ¦¬ μμ μ±μ μ€μ μ λκ³ μμΌλ©°, κ°λΉμ§ 컬λ ν°μ λ°νμμ μ¬μ©νμ§ μμΌλ©΄μλ λμ λ³λ ¬μ±μ ꡬνν μ μλ λꡬλ₯Ό μ 곡ν©λλ€(λ°νμμ κΈ°λ³Έ μ΄κΈ°ν λ° νμ€ λΌμ΄λΈλ¬λ¦¬ μ μ§ κ΄λ¦¬λ‘ μΆμλ¨).
Rustμ λ©λͺ¨λ¦¬ κ΄λ¦¬ λ°©μμ ν¬μΈν° μ‘°μ μ€λ₯λ₯Ό λ°©μ§νκ³ , ν΄μ λ λ©λͺ¨λ¦¬μ μ κ·Όνκ±°λ, λ ν¬μΈν°λ₯Ό μμ°Έμ‘°νκ±°λ, λ²νΌ μ€λ²λ°μ μΌμΌν€λ λ± μ μμ€ λ©λͺ¨λ¦¬ κ΄λ¦¬μμ λ°μνλ λ¬Έμ λ₯Ό μλ°©νλλ‘ μ€κ³λμμ΅λλ€. λ³Έ νλ‘μ νΈλ λΌμ΄λΈλ¬λ¦¬ λ°°ν¬, λΉλ κ°μν λ° μ’ μμ± κ΄λ¦¬λ₯Ό μν΄ Cargo ν¨ν€μ§ κ΄λ¦¬μλ₯Ό κ°λ°νκ³ μμ΅λλ€. λΌμ΄λΈλ¬λ¦¬ νΈμ€ν μ μν΄ crates.io μ μ₯μλ₯Ό κ΄λ¦¬νκ³ μμ΅λλ€.
λ©λͺ¨λ¦¬ μμ μ μ»΄νμΌ μκ°μ μ°Έμ‘° νμΈ, κ°μ²΄ μμ κΆ μΆμ , κ°μ²΄ μλͺ (λ²μ) μΆμ λ° μ½λ μ€ν μ€ λ©λͺ¨λ¦¬ μ‘μΈμ€μ μ νμ± νκ°λ₯Ό ν΅ν΄ Rustμμ μ 곡λ©λλ€. Rustλ λν μ μ μ€λ²νλ‘μ λν λ³΄νΈ κΈ°λ₯μ μ 곡νκ³ , μ¬μ©νκΈ° μ μ λ³μ κ°μ νμ μ΄κΈ°νκ° νμνλ©°, νμ€ λΌμ΄λΈλ¬λ¦¬μμ μ€λ₯λ₯Ό λ μ μ²λ¦¬νκ³ , κΈ°λ³Έμ μΌλ‘ λΆλ³ μ°Έμ‘° λ° λ³μ κ°λ μ μ μ©νκ³ , κ°λ ₯ν μ μ μ ν μ§μ μ μ 곡νμ¬ λ Όλ¦¬μ μ€λ₯λ₯Ό μ΅μνν©λλ€.
μ£Όμ νμ :
- f32 λ° f64 λΆλ μμμ νμ μ κ²½μ°, λ§μ , λΊμ , κ³±μ , λλμ , λλ¨Έμ§ μ°μ°μ λν λμμ λ°©λ²μ΄ ꡬνλμ΄ μμΌλ©°, C/C++ μ»΄νμΌλ¬μ "-ffast-math" μ΅μ κ³Ό μ μ¬ν μ΅μ νλ₯Ό μ 곡ν©λλ€. μ΄λ¬ν λ°©λ²μ ν΅ν΄ 루ν 벑ν°νμ κ°μ μ΅μ νλ₯Ό μν΄ νμν κ²½μ° μ°μ° μμλ₯Ό λ³κ²½ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μΌλ°μ μΈ λ§μ μΌλ‘ "a + b + c + d"λ₯Ό κ³μ°ν λ μ»΄νμΌλ¬λ νμ "(a + b) + c) + d" μμλ‘ κ³μ°μ μννμ§λ§, algebraic_add λ°©λ²μ μ¬μ©νλ©΄ ννμμ "(a + b) + (c + d)"λ‘ λ¬Άμ΄ SIMD λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ "(a + b)"μ "(c + d)"λ₯Ό λ³λ ¬λ‘ μ€νν μ μμ΅λλ€. λμμ λ°©λ²μ μ¬μ©νλ λ¨μ μ κ³μ° κ²°κ³Όκ° λΉκ²°μ μ μ΄λ©° μ€μ°¨ λ²μ λ΄μμ λ¬λΌμ§ μ μλ€λ κ²μ λλ€.
- λͺ¨λ κΈ°λ³Έ μ μνμλ μ«μλ₯Ό λ¬Έμμ΄λ‘ λ³ννλ λ΄μ₯ "format_into" λ©μλκ° μμΌλ©°, μ΄λ itoa ν¨ν€μ§ λμ μ¬μ©ν μ μμ΅λλ€. λ§€κ°λ³μλ‘ NumBuffer λ²νΌκ° μ λ¬λ©λλ€. μ΄ λ²νΌλ μ¬μ©λ νμ μ λͺ¨λ κ°μ μμ§μ ννλ‘ κΈ°λ‘νκΈ°μ μΆ©λΆν ν¬κΈ°λ₯Ό 보μ₯ν©λλ€. μΆλ ₯μ νμνλ λ¬Έμμ΄ &strμ΄λ©°, ν΄λΉ λ¬Έμμ΄μ μλͺ μ λ²νΌμ νμ λ©λλ€.
- ManuallyDrop νλ€μ€μ Box μ€λ§νΈ ν¬μΈν° κ°μ μνΈ μμ©μΌλ‘ μΈν΄ λ μ΄μ μ μλμ§ μμ λμμ΄ λ°μνμ§ μμ΅λλ€.
- APIμ μλ‘μ΄ λΆλΆμ΄ μμ νλ νΉμ±μ λ©μλ λ° κ΅¬νμ ν¬ν¨νμ¬ μμ μ μΈ λ²μ£Όλ‘ μ΄λλμμ΅λλ€.
- str::substr_range
- [T]::νμ μ¬λΌμ΄μ€ λ²μ
- core::fmt::NumBuffer
- <{integer}>::format_into
- std::process::CommandArgsμ λν μ μ‘/λκΈ°ν
- {fN}::λμμ μΆκ°
- {fN}::λμμ _νμ
- {fN}::λμμ _λ©ν°ν
- {fN}::λμμ _div
- {fN}::λμμ _λ
- NonZero<{integer}>::from_str_radix
- λ¬Έμμ΄::from_utf16le
- λ¬Έμμ΄::from_utf16le_lossy
- λ¬Έμμ΄::from_utf16be
- λ¬Έμμ΄::from_utf16be_lossy
- [T]::strip_circumfix
- str::strip_circumfix
- μμ ::from_mut
- μμ ::get_mut_slice
- μμ ::from_mut_slice
- std::range::legacy
- thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7r-none-eabi, thumbv7r-none-eabihf λ° thumbv8r-none-eabihf λμ νλ«νΌμ λΉλ 보μ₯μ μ 곡νμ§λ§ ν μ€νΈ μ€μνΈ ν΅κ³Όλ 보μ₯νμ§ μλ 2λ¨κ³ μ§μμΌλ‘ λ³κ²½λμμ΅λλ€.
- powerpc64-unknown-linux-gnuelfv2 λ° aarch64-unknown-linux-pauthtest νλ«νΌμ λν μ§μμ΄ μΆκ°λμμΌλ©°, μ΄μ λ 벨 3 μ§μμ μ 곡ν©λλ€. λ 벨 3μλ κΈ°λ³Έ μ§μμ΄ ν¬ν¨λμ§λ§ μλνλ ν μ€νΈ, 곡μ λΉλ λ¦΄λ¦¬μ€ λλ λΉλ κ²μ¦μ ν¬ν¨λμ§ μμ΅λλ€.
λν, μ§λ 90μΌ λμ 5,300λ§ ν μ΄μ λ€μ΄λ‘λλμκ³ 403κ°μ ν¨ν€μ§μμ μ’ μμ±μΌλ‘ μ¬μ©λλ μΈκΈ° ν¬λ μ΄νΈ ν¨ν€μ§μΈ arrayrefκ° κ³΅κ²©λ°μμ΅λλ€. 곡격μλ€μ μ μ± μ½λκ° ν¬ν¨λ μλ‘μ΄ ν¨ν€μ§(proc-macro1, proc-macro-en, aovine, arone, aronenao, tinymember)λ₯Ό crates.io μ μ₯μμ κ²μνμ΅λλ€. μ΄ν arrayref 0.3.10, internment 0.8.7, append-only-vec 0.1.9μ μλ‘μ΄ λ¦΄λ¦¬μ€κ° μ μ₯μμ κ²μλμμΌλ©°, κ° λ¦΄λ¦¬μ€μλ μ μ± proc-macro1 ν¨ν€μ§κ° μ’ μμ±μΌλ‘ μΆκ°λμμ΅λλ€. μ μ± λ²μ μ arrayref ν¨ν€μ§λ 8μ 20μΌ μ€μ 10μ 15λΆ(MSK)μ κ²μλμ΄ μ€μ 11μ 41λΆκΉμ§ νμ±νλμ΄ μλ€κ° crates.io κ΄λ¦¬μμ μν΄ μμ λμμ΅λλ€.
arrayref ν¨ν€μ§ κ΄λ¦¬μμκ² μμ§ μ°λ½μ΄ λΏμ§ μμ μν©μ λͺ
νν νμ
νμ§ λͺ»νμ§λ§, κ΄λ¦¬μμ μ격 μ¦λͺ
μ΄ κ³΅κ²©μμκ² νμ·¨λ κ²μΌλ‘ μΆμ λ©λλ€. proc-macro1 ν¨ν€μ§μ λΉλ μ€ν¬λ¦½νΈμμ μ
μμ μΈ λ³κ²½ μ¬νμ΄ λ°κ²¬λμμΌλ©°, μ΄ λ³κ²½ μ¬νμ μΈλΆ λλ ν°λ¦¬μ μ€ν νμΌμ λ‘λνλ μν μ νμ΅λλ€. μλ²λ€μ΄λ‘λν νμΌμ μ λμ€ μμ€ν
μμλ /tmp/rust-setupμ μ μ₯λκ³ , Windows β %TEMP%\rust-setup.ps1 λλ %TEMP%\rust-setup-launch.vbs.
μΆμ² : opennet.ru
