ИздањС Rust 1.96: ΠŸΡ€ΠΎΡ†Π΅Π½Π° Rust-ΠΎΠ²Π΅ погодности Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Ρ„ΠΈΡ€ΠΌΠ²Π΅Ρ€Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π°

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

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

БСзбСдност ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅ јС ΠΎΠ±Π΅Π·Π±Π΅Ρ’Π΅Π½Π° Ρƒ Русту Ρƒ Π²Ρ€Π΅ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ° ΠΊΡ€ΠΎΠ· ΠΏΡ€ΠΎΠ²Π΅Ρ€Ρƒ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ, ΠΏΡ€Π°Ρ›Π΅ΡšΠ΅ Π²Π»Π°ΡΠ½ΠΈΡˆΡ‚Π²Π° Π½Π°Π΄ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΠΌΠ°, ΠΏΡ€Π°Ρ›Π΅ΡšΠ΅ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ³ Π²Π΅ΠΊΠ° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π° (опсСга) ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρƒ исправности приступа ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΠΈ Ρ‚ΠΎΠΊΠΎΠΌ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° ΠΊΠΎΠ΄Π°. Руст Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠΏΡ€ΡƒΠΆΠ° Π·Π°ΡˆΡ‚ΠΈΡ‚Ρƒ ΠΎΠ΄ ΠΏΡ€Π΅ΠΊΠΎΡ€Π°Ρ‡Π΅ΡšΠ° Ρ†Π΅Π»ΠΎΠ³ Π±Ρ€ΠΎΡ˜Π°, Π·Π°Ρ…Ρ‚Π΅Π²Π° ΠΎΠ±Π°Π²Π΅Π·Π½Ρƒ ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Ρƒ врСдности ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ… ΠΏΡ€Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π΅, Π±ΠΎΡ™Π΅ ΠΎΠ±Ρ€Π°Ρ’ΡƒΡ˜Π΅ Π³Ρ€Π΅ΡˆΠΊΠ΅ Ρƒ ΡΡ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎΡ˜ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ†ΠΈ, ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ… Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ…, Π½ΡƒΠ΄ΠΈ снаТно статичко ΠΊΡƒΡ†Π°ΡšΠ΅ ΠΊΠ°ΠΊΠΎ Π±ΠΈ сС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π»Π΅ Π»ΠΎΠ³ΠΈΡ‡ΠΊΠ΅ Π³Ρ€Π΅ΡˆΠΊΠ΅.

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

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ range с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… для Π·Π°ΠΌΠ΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Range, RangeInclusive, RangeToInclusive ΠΈ RangeFrom, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π² Copy-структурах. Π’ΠΈΠΏ Range опрСдСляСт Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ допустимым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (Π½ΠΎ Π½Π΅ входящим Π² Π½Π΅Π³ΠΎ), Ρ‚ΠΈΠΏ RangeFrom опрСдСляСт числа начиная с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ значСния, Π° Ρ‚ΠΈΠΏ RangeInclusive β€” значСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° с ΠΎΠ±Π΅ΠΈΠΌΠΈ Π΅Π³ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ. Π’ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… выпусках Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ появятся Ρ‚ΠΈΠΏΡ‹ RangeFull ΠΈ RangeTo, старая рСализация Π±ΡƒΠ΄Π΅Ρ‚ пСрСнСсСна Π² core::range::legacy::*, Π° синтаксис Β«N..MΒ» ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄ΡƒΡ‚ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚ΠΈΠΏΠΎΠ².

    НовыС Ρ‚ΠΈΠΏΡ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ вмСсто Ρ‚ΠΈΠΏΠ°ΠΆΠ° Iterator Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏΠ°ΠΆ IntoIterator, Ρ‚.Π΅. вмСсто встроСнного ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π² ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ копирования (Ρ‚ΠΈΠΏΠ°ΠΆ Copy, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ значСния Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· простоС ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅), которая Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»Π° нСдоступна ΠΈΠ·-Π·Π° нСсовмСстимости с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ со встроСнными ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.
    НапримСр, Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ срСза Π² структуру, которая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ копируСтся Π±Π΅Π· Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сохранСния Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

    use core::range::Range;

    #[derive(Clone, Copy)]
    pub struct Span(Range<usize>);

    impl Span {
    pub fn of(self, s: &str) -> &str {
    &s[self.0]
    }
    }

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ макросы Β«assert_matches!Β» ΠΈ Β«debug_assert_matches!Β», ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠ΅ соотвСтствиС значСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ расхоТдСнии. ΠžΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Β«assert!(matches!(..))Β» ΠΈ Β«debug_assert!(matches!(..))Β» Π½ΠΎΠ²Ρ‹Π΅ макросы ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ со значСниями, Π²Ρ‹Π·Π²Π°Π²ΡˆΠΈΠΌΠΈ сбой. Для избСТания пСрСсСчСний со сторонними макросами, поставляСмыми с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½ΠΎΠ²Ρ‹Π΅ макросы Ρ‚Ρ€Π΅Π±ΡƒΡŽ явного ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Β«core::assert_matchesΒ».

    use core::assert_matches;

    fn get_random_number() -> u32 {
    4
    }

    Ρ„Π½ ΠΌΠ°ΠΈΠ½() {
    assert_matches!(get_random_number(), 1..=6);
    }

  • ΠŸΡ€ΠΈ сборкС для Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ WebAssembly ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΡƒ ΠΎΠΏΡ†ΠΈΠΈ Β«β€”allow-undefinedΒ», Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²ΡˆΠ΅ΠΉ связываниС ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈΡΡŒ Π² ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠ· модуля Β«envΒ». ΠŸΡ€ΠΈ сборкС для WebAssembly всС связанныС с ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ символы Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. Для возвращСния старого повСдСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния Β«RUSTFLAGS=-Clink-arg=β€”allow-undefinedΒ» ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€˜#[link(wasm_import_module = Β«envΒ»)]Β» Π² ΠΊΠΎΠ΄Π΅.
  • Нови Π΄Π΅ΠΎ АПИ-ја јС ΠΏΡ€Π΅ΠΌΠ΅ΡˆΡ‚Π΅Π½ Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ˜Ρƒ стабилних, ΡƒΠΊΡ™ΡƒΡ‡ΡƒΡ˜ΡƒΡ›ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ особина којС су стабилизованС:
    • assert_matches!
    • debug_assert_matches!
    • From<T> for AssertUnwindSafe<T>
    • From<T> for LazyCell<T, F>
    • From<T> for LazyLock<T, F>
    • core::range::RangeToInclusive
    • core::range::RangeToInclusiveIter
    • core::range::RangeFrom
    • core::range::RangeFromIter
    • core::range::Range
    • core::range::RangeIter
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ Cargo устранСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ CVE-2026-5223, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для пСрСзаписи исходного ΠΊΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ crate-ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² локальном кэшС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ рСпозитория Ρ‡Π΅Ρ€Π΅Π· манипуляции с символичСскими ссылками Π²Π½ΡƒΡ‚Ρ€ΠΈ crate-Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ проявляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со сторонними рСпозиториями ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ рСпозитория crates.io, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² crates.io Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с символичСскими ссылками.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ (PDF) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° пригодности языка Rust для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΈ встраиваСмых систСм с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ рСсурсами.
ИсслСдованиС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ STMicroelectronics ΠΏΡ€ΠΈ участии Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… СвропСйских унивСрситСтов. Π”Π²ΡƒΠΌ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π±Ρ‹Π»Π° поставлСна Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² STM32U585AI с ядром Arm Cortex-M33. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° создавала ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ Π½Π° Π‘ΠΈ, Π° вторая Π½Π° Rust.

ВСстированиС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ выявило Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… прСимущСств Π² использовании языка Π‘ΠΈ вмСсто Rust ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΈ сравнСнии потрСблСния памяти ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, задСйствованиС написанного Π½Π° Rust систСмного runtime ΠΎΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ariel OS ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ потрСблСния памяти Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Rust Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° языкС Π‘ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ стСк для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ newlib.

Π Π°Π·ΠΌΠ΅Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ составил 84100 Π±Π°ΠΉΡ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Rust ΠΈ 76744 Π±Π°ΠΉΡ‚Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° Π‘ΠΈ (Π½Π° 10% мСньшС), Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π² ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ΅ Π½Π° Rust оказалось Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΠΆΠ΅ β€” 24640 Π±Π°ΠΉΡ‚ΠΎΠ² ΠΏΡ€ΠΎΡ‚ΠΈΠ² 42608 Π±Π°ΠΉΡ‚ΠΎΠ². Π§Ρ‚ΠΎ касаСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚ΠΎ ΠΏΡ€ΠΈ тСстировании Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π·Π° 6 нСдСль, рСализация Π½Π° Rust Π² Π΄Π²Π° Ρ€Π°Π·Π° ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Π»Π°, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° Π‘ΠΈ, Π½ΠΎ ΠΎΠ±Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отставали ΠΎΡ‚ расчётной максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ПослС 4 нСдСль, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΎΠ±Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ достигли ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π±Π»ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ расчётному максимуму.



Π˜Π·Π²ΠΎΡ€: ΠΎΠΏΠ΅Π½Π½Π΅Ρ‚.Ρ€Ρƒ
ΠšΡƒΠΏΠΈΡ‚Π΅ ΠΏΠΎΡƒΠ·Π΄Π°Π½ хостинг Π·Π° ΡΠ°Ρ˜Ρ‚ΠΎΠ²Π΅ са Π”Π”ΠΎΠ‘ Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΎΠΌ, Π’ΠŸΠ‘ Π’Π”Π‘ сСрвСрС πŸ”₯ ΠšΡƒΠΏΠΈΡ‚Π΅ ΠΏΠΎΡƒΠ·Π΄Π°Π½ Π²Π΅Π± хостинг са DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΎΠΌ, VPS VDS сСрвСрС | ProHoster