ИздаванС Π½Π° Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Rust 1.51

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° систСмния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Rust 1.51, основан ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Mozilla, Π½ΠΎ сСга Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠΎΠ΄ Π΅Π³ΠΈΠ΄Π°Ρ‚Π° Π½Π° нСзависимата организация с нСстопанска Ρ†Π΅Π» Rust Foundation. Π•Π·ΠΈΠΊΡŠΡ‚ сС фокусира Π²ΡŠΡ€Ρ…Ρƒ бСзопасността Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, осигурява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ прСдоставя срСдствата Π·Π° постиганС Π½Π° висок ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° ΠΎΡ‚ΠΏΠ°Π΄ΡŠΡ†ΠΈ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС (Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π΄ΠΎ основна инициализация ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°).

Автоматичното ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° Rust Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΏΡ€ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡ€ΠΎΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‰ΠΈ ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ област Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, слСд ΠΊΠ°Ρ‚ΠΎ тя Π΅ Π±ΠΈΠ»Π° освободСна, Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π», ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€ ΠΈ Ρ‚.Π½. Π—Π° разпространСниС Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, осигуряванС Π½Π° сглобяванС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° зависимости, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Cargo. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ crates.io сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π·Π° хостванС Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Основни ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ:

  • Ѐункционалността, ΡΠ²ΡŠΡ€Π·Π°Π½Π° с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° постоянни Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈ статут Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ТизнСспособСн ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ (MVP), ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π°Π²Π° Π·Π΅Π»Π΅Π½Π° свСтлина Π·Π° ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Const Π³Π΅Π½Π΅Ρ€ΠΈΡ†ΠΈΡ‚Π΅ позволяват Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Π΄ΠΎ постоянни стойности, Ρ‚.Π΅. ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ‰ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π΄ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ постоянни стойности, Π° Π½Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π½Π° ΠΆΠΈΠ²ΠΎΡ‚. Π’Π°Π·ΠΈ функция Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ цСлочислСни ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈ абстракция, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Ρ‡Π΅Ρ€Ρ‚ΠΈ Π·Π° масиви ΠΎΡ‚ всякакъв Ρ€Π°Π·ΠΌΠ΅Ρ€, Π±Π΅Π· Π΄Π° сС Π½Π°Π»Π°Π³Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ Π·Π° всСки Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ Π²Π°Π»ΠΈΠ΄Π½ΠΈ стойности, Π·Π° Π΄Π° стС сигурни, Ρ‡Π΅ няма ΡΡŠΠ±ΠΈΡ‚ΠΈΡ извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅.

    Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ с Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° вСрсия, Π·Π° масиви с Ρ‚ΠΈΠΏ β€ž[T; N]" (Ρ‚ΠΈΠΏ T ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ N) прСдоставя Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° абстрахиранС Π½Π° Ρ‚ΠΈΠΏ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ стойности с всякакви Ρ†Π΅Π»ΠΈ числа, Π±ΡƒΠ»Π΅Π²ΠΈ ΠΈ символни Ρ‚ΠΈΠΏΠΎΠ²Π΅ (Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ struct ΠΈ enum всС ΠΎΡ‰Π΅ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚). ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΈΡ‚Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опростяват Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ масив, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ Π΅ ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ Ρ‚ΠΈΠΏ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС: struct Array { // ^^^^^^ ^^^^^^^ ^^^^^^ дСфиниция Π½Π° постоянСн ΠΎΠ±Ρ‰ списък: [T; Π”ΠͺΠ›Π–Π˜ΠΠ] // ^^^^^^ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° }

    ΠšΠΎΠ³Π°Ρ‚ΠΎ дСйствитСлно сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° с Ρ‚Π°Π·ΠΈ дСфиниция Π½Π° "Array", ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΌΠΎΠ½ΠΎΠΌΠΎΡ€Ρ„Π½Π° вСрсия Π½Π° Array: struct Array { list: [u8; 32] }

  • API std::array::IntoIter, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° постоянни Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅, Π΅ стабилизиран, с ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΠΏΠΎ стойност Π·Π° всСки масив: fn main() { let array = [1, 2, 3, 4, 5] ; // ΠŸΡ€Π΅Π΄ΠΈ, Π·Π° Π΄Π° ΠΈΡ‚Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ стойност, Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .iter() Π·Π° item Π² array.iter().copied() { println!("{}", item); } // Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС Π·Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π² std::array::IntoIter::new(array) { println!("{}", item); }}
  • ΠœΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΡŠΡ‚ Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π½ΠΎΠ²ΠΎ ΠΏΠΎΠ»Π΅ Π·Π° Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€ Π² Cargo.toml, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° вСрсия Π½Π° Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Новата вСрсия Π½Π° Π΄Π΅Ρ„ΠΈΠ½Π°Ρ‚ΠΎΡ€Π° избягва ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° зависимости, ΠΈΠ·Π±Ρ€ΠΎΠ΅Π½ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π° β€ž[Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ]β€œ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ нСподходящо, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС Π²ΠΊΠ»ΡŽΡ‡Π²Π° зависимост, която изисква някаква стандартна функция Π² скриптовС Π·Π° компилация ΠΈ макроси, Π½ΠΎ ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° нСстандартна функция Π² получСния изпълним Ρ„Π°ΠΉΠ».

    ДосСга Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚, спомСнат ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π² Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π° Π½Π° зависимоститС, бяха ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ. НапримСр, Π°ΠΊΠΎ Π΄Π°Π΄Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π²Π° зависимост foo, която Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ A ΠΈ B, ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ bar ΠΈ baz, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ bar зависи ΠΎΡ‚ foo с функция A, Π° baz зависи ΠΎΡ‚ foo с функция B, Ρ‚ΠΎΠ³Π°Π²Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ Ρ‰Π΅ бъдС, Ρ‡Π΅ cargo Ρ‰Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‰Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° foo с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ A ΠΈ B. Π’ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ функция, която Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ Π½Π° някаква зависимост с Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° систСма, Π·Π° която Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°Ρ‚Π° компилация. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ вСрсия Π½Π° foo с "#![no_std]" Π² изпълним Ρ„Π°ΠΉΠ», ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ с "#![no_std]", ΠΈ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ foo с "std" ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. rs. ΠšΠΎΠ³Π°Ρ‚ΠΎ посочитС resolver="2" Π² Cargo.toml, ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΡŠΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ сСга Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° сС справи ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ с Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, раздСляйки зависимоститС dev, host ΠΈ target.

  • Cargo ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° опцията split-debuginfo, Π·Π°Π΄Π°Π΄Π΅Π½Π° Π² сСкцията β€ž[profile]β€œ ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Ρ„Π»Π°Π³ β€ž-Csplit-debuginfo=unpackedβ€œ Π² rustc, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΉΠΊΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° информация Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° нСобходимостта ΠΎΡ‚ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° dsymutil ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ускорява процСса Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ с информация Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² macOS.
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€Π°Π½ makos "ptr::addr_of!" ΠΈ β€œptr::addr_of_mut!”, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π·Π° Π½Π΅ΠΏΠΎΠ΄Ρ€Π°Π²Π½Π΅Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°. ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ std::ptr; #[repr(packed)] struct Packed { f1: u8, f2: u16, } let packed = Packed { f1: 1, f2: 2 }; // &packed.f2 Ρ‰Π΅ създадС Π½Π΅ΠΏΠΎΠ΄Ρ€Π°Π²Π½Π΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π», Π²ΠΎΠ΄Π΅Ρ‰ Π΄ΠΎ Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ let raw_f2 = ptr::addr_of!(packed.f2); assert_eq!(unsafe { raw_f2.read_unaligned() }, 2);
  • Нова част ΠΎΡ‚ API Π΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½Π° Π² стабилна катСгория, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ слСднитС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ са стабилизирани:
    • Arc::decrement_strong_count
    • Arc::increment_strong_count
    • Once::call_once_force
    • Peekable::next_if_eq
    • Peekable::next_if
    • Seek::stream_position
    • array::IntoIter
    • panic::panic_any
    • ptr::addr_of!
    • ptr::addr_of_mut!
    • slice::fill_with
    • slice::split_inclusive_mut
    • slice::split_inclusive
    • slice::strip_prefix
    • slice::strip_suffix
    • str::split_inclusive
    • sync::OnceState
    • Π·Π°Π΄Π°Ρ‡Π° :: Π‘ΡŠΠ±ΡƒΠΆΠ΄Π°Π½Π΅
  • Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΎ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ i386-unknown-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32 ΠΈ aarch64_be-unknown-linux-gnu_ilp32 . Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° основна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€