ИздањС програмског јСзика Руст 1.51

ΠžΠ±Ρ˜Π°Π²Ρ™Π΅Π½ΠΎ јС издањС систСмског програмског јСзика Руст 1.51, који јС основао ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Мозилла, Π°Π»ΠΈ јС сада Ρ€Π°Π·Π²ΠΈΡ˜Π΅Π½ ΠΏΠΎΠ΄ ΠΎΠΊΡ€ΠΈΡ™Π΅ΠΌ нСзависнС Π½Π΅ΠΏΡ€ΠΎΡ„ΠΈΡ‚Π½Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅ Руст Π€ΠΎΡƒΠ½Π΄Π°Ρ‚ΠΈΠΎΠ½. ЈСзик сС фокусира Π½Π° бСзбСдност ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅, ΠΎΠ±Π΅Π·Π±Π΅Ρ’ΡƒΡ˜Π΅ аутоматско ΡƒΠΏΡ€Π°Π²Ρ™Π°ΡšΠ΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΠΎΠΌ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Ρ’ΡƒΡ˜Π΅ срСдства Π·Π° ΠΏΠΎΡΡ‚ΠΈΠ·Π°ΡšΠ΅ високог ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ° Π±Π΅Π· ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° сакупљача смСћа ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π° ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° (Π²Ρ€Π΅ΠΌΠ΅ ΠΈΠ·Π²ΠΎΡ’Π΅ΡšΠ° сС своди Π½Π° основну ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Ρƒ ΠΈ ΠΎΠ΄Ρ€ΠΆΠ°Π²Π°ΡšΠ΅ стандарднС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅).

Руст-ΠΎΠ²ΠΎ аутоматско ΡƒΠΏΡ€Π°Π²Ρ™Π°ΡšΠ΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΠΎΠΌ СлиминишС Π³Ρ€Π΅ΡˆΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΡ˜Π΅ ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°Ρ‡ΠΈΠΌΠ° ΠΈ ΡˆΡ‚ΠΈΡ‚ΠΈ ΠΎΠ΄ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° који ΠΏΡ€ΠΎΠΈΠ·ΠΈΠ»Π°Π·Π΅ ΠΈΠ· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΡ˜Π΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΠΎΠΌ ниског Π½ΠΈΠ²ΠΎΠ°, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС приступ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΡΠΊΠΎΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½Ρƒ Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ јС ΠΎΠ½ ослобођСн, Π½ΡƒΠ»Ρ‚Π΅ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†Π΅ ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°Ρ‡Π°, ΠΏΡ€Π΅ΠΊΠΎΡ€Π°Ρ‡Π΅ΡšΠ΅ Π±Π°Ρ„Π΅Ρ€Π° ΠΈΡ‚Π΄. Π”Π° Π±ΠΈ дистрибуирао Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠΎ склапањС ΠΈ ΡƒΠΏΡ€Π°Π²Ρ™Π°ΠΎ зависностима, ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Ρ€Π°Π·Π²ΠΈΡ˜Π° Π¦Π°Ρ€Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌ цратСс.ΠΈΠΎ јС ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π½ Π·Π° Ρ…ΠΎΡΡ‚ΠΎΠ²Π°ΡšΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

Π“Π»Π°Π²Π½Π΅ ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΡ˜Π΅:

  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, связанная с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ константных Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ² (Β«const genericsΒ»), ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° статус минимально ТизнСспособного ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° (MVP), Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π΅Π»Ρ‘Π½Ρ‹ΠΉ свСт Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±ΠΎΠ±Ρ‰Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ для постоянных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚.Π΅. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ постоянных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° Π½Π΅ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈ Π½Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ. Указанная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, ΠΈ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ создании Ρ‚ΠΈΠΏΠ°ΠΆΠ΅ΠΉ для массивов любого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π΅Π· нСобходимости создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ отсутствиС Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

    Начиная с Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ выпуска, для массивов с Ρ‚ΠΈΠΏΠΎΠΌ Β«[T; N]Β» (Ρ‚ΠΈΠΏ T ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ N) прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ значСния с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ, Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (Ρ‚ΠΈΠΏΡ‹ struct ΠΈ enum ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ). ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для использования массива, Π½Π΅ привязанного ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ: struct Array<T, const LENGTH: usize> { // ^^^^^^^^^^^^^^^^^^^ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ константного Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠ° list: [T; LENGTH] // ^^^^^^ Π΅Π³ΠΎ использованиС }

    ΠŸΡ€ΠΈ фактичСском использовании c этим ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Β«Array<u8, 32>Β» компилятор сгСнСрируСт ΠΌΠΎΠ½ΠΎΠΌΠΎΡ€Ρ„Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Array: struct Array<u8, 32> { list: [u8; 32] }

  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ основанный Π½Π° константных Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠ°Ρ… API std::array::IntoIter, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ для любого массива ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ: fn main() { let array = [1, 2, 3, 4, 5]; // РаньшС для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ .iter() for item in array.iter().copied() { println!(Β«{}Β», item); } // Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ for item in std::array::IntoIter::new(array) { println!(Β«{}Β», item); } }
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ cargo Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ поля resolver Π² Cargo.toml, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ опрСдСлитСля доступных возмоТностСй (feature resolver). Новая вСрсия опрСдСлитСля ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ объСдинСния возмоТностСй зависимостСй, пСрСчисляСмых Π² сСкции Β«[features]Β», Ρ‚Π°ΠΌ, Π³Π΄Π΅ это нСумСстно, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ зависимости, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² сборочных скриптах ΠΈ макросах, Π½ΠΎ ΠΏΡ€ΠΈ использовании нСстандартной возмоТности Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΌ исполняСмом Ρ„Π°ΠΉΠ»Π΅.

    Π”ΠΎ сих ΠΏΠΎΡ€ возмоТности ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠΎΠ³ΠΎ нСсколько Ρ€Π°Π· Π² Π³Ρ€Π°Ρ„Π΅ зависимости, объСдинялись. НапримСр, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ foo, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ возмоТности A ΠΈ B, ΠΈ этот ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… bar ΠΈ baz, ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ bar зависит ΠΎΡ‚ foo с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ A, Π° baz ΠΎΡ‚ foo с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ B, Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ cargo ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ эти возмоТности ΠΈ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ foo с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ возмоТностСй A ΠΈ B. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Π°Ρ ΠΈΠ·-Π·Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ зависимости ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСсовмСстимой с Ρ†Π΅Π»Π΅Π²ΠΎΠΉ систСмой, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ осущСствляСтся итоговая сборка. НапримСр, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ foo с Β«#![no_std]Β» Π² исполняСмом Ρ„Π°ΠΉΠ»Π΅, собираСмом с Β«#![no_std]Β», ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ foo с Β«stdΒ» Π²ΠΎ врСмя сборки Π² build.rs. ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ resolver=Β»2β€³ Π² Cargo.toml ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ попытаСтся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, раздСляя dev-, host- ΠΈ target-зависимости.

  • Π’ cargo Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° опция split-debuginfo, задаваСмая Π² сСкции Β«[profile]Β» ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π»Π°Π³ Β«-Csplit-debuginfo=unpackedΒ» Π² rustc, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сохранСния ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ нСобходимости Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ dsymutil ΠΈ сущСствСнно ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс сборки с ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π² macOS.
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ макосы Β«ptr::addr_of!Β» ΠΈ Β«ptr::addr_of_mut!Β», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ raw-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. use 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);
  • Нови Π΄Π΅ΠΎ АПИ-ја јС ΠΏΡ€Π΅Π±Π°Ρ‡Π΅Π½ Ρƒ стабилну ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ˜Ρƒ, ΡƒΠΊΡ™ΡƒΡ‡ΡƒΡ˜ΡƒΡ›ΠΈ стабилизованС слСдСћС ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅:
    • 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
    • task::Wake
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ i386-unknown-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32 ΠΈ aarch64_be-unknown-linux-gnu_ilp32. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования, ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ возмоТности сборки ΠΊΠΎΠ΄Π°.

Π˜Π·Π²ΠΎΡ€: ΠΎΠΏΠ΅Π½Π½Π΅Ρ‚.Ρ€Ρƒ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€