ИзданиС Π½Π° Rust 1.96. ΠžΡ†Π΅Π½ΠΊΠ° Π½Π° пригодността Π½Π° Rust Π·Π° създаванС Π½Π° Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€ Π·Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° вСрсия 1.96 Π½Π° програмния Π΅Π·ΠΈΠΊ Rust, ΠΊΠΎΠΉΡ‚ΠΎ бСшС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ ΠΎΡ‚ Mozilla, Π° сСга сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΏΠΎΠ΄ благосклонността Π½Π° нСзависимата нСстопанска организация Rust Foundation. Π―Π·ΠΈΠΊΡŠΡ‚ Π΅ насочСн към бСзопасна Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ прСдоставя срСдства Π·Π° постиганС Π½Π° висок ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ, Π±Π΅Π· Π΄Π° изисква ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° сборщик Π½Π° мусор ΠΈΠ»ΠΈ runtime (runtime Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎ основна инициализация ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°).

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

БСзопасната Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² Rust сС осигурява ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ, прослСдяванС Π½Π° собствСността Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅, ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ‚ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ (области Π½Π° видимост) ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° правилността Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π°. Rust ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅Π΄Π»Π°Π³Π° срСдства Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΏΡ€Π΅ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ†Π΅Π»ΠΈ числа, изисква Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½Π° инициализация Π½Π° стойноститС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ, подобрява ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΡ€ΠΈΠ»Π°Π³Π° концСпцията Π·Π° нСизмСняСмост (immutable) Π½Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° силна статична типизация, Π·Π° Π΄Π° сС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚ логичСскитС Π³Ρ€Π΅ΡˆΠΊΠΈ.

Основни нововъвСдСния:

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΌΠΎΠ΄ΡƒΠ» 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);

    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
    }

    fn main() {
    assert_matches!(get_random_number(), 1..=6);
    }

  • ΠŸΡ€ΠΈ създаванС Π½Π° Ρ†Π΅Π»Π΅Π²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° WebAssembly, ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° опцията Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‡ΠΈΠΊΠ° Β«β€”allow-undefinedΒ», която позволявашС ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ символи, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ…Π° Π² ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»Π° Β«envΒ», Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½ΠΎ. ΠŸΡ€ΠΈ създаванС Π·Π° WebAssembly всички символи, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°Ρ‚Π°, сСга ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ. Π—Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° старото ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° срСдата Β«RUSTFLAGS=-Clink-arg=β€”allow-undefinedΒ» ΠΈΠ»ΠΈ ΠΈΠ·Ρ€Π°Π·ΡŠΡ‚ β€˜#[link(wasm_import_module = Β«envΒ»)]’ Π² ΠΊΠΎΠ΄Π°.
  • Π’ катСгорията стабилни Π΅ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π° порция API, ΠΊΠ°Ρ‚ΠΎ са стабилизирани ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ°ΠΆΠΈΡ‚Π΅:
    • assert_matches!
    • debug_assert_matches!
    • From Π·Π° AssertUnwindSafe
    • From Π·Π° LazyCell
    • From Π·Π° LazyLock
    • 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. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅ΠΊΠΈΠΏ Π΅ създавал Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€ Π½Π° C, Π° вторият Π½Π° Rust.

ВСстовСтС Π½Π° Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ прСдимства ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° C вмСсто Rust ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€ΠΈ Π·Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ, ΠΏΡ€ΠΈ сравнСниС Π½Π° консумацията Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ производитСлност. По-скоро, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмния runtime, написан Π½Π° Rust ΠΎΡ‚ открития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ariel OS, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° сС постигнС консумация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Rust ΠΏΠΎΠ΄ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° рСализацията Π½Π° C, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π΅Π½ стСк Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€ΠΈ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° newlib.

Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° финалния Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€ Π±Π΅ 84100 Π±Π°ΠΉΡ‚Π° Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Rust ΠΈ 76744 Π±Π°ΠΉΡ‚Π° Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° C (с 10% ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ), Π½ΠΎ консумацията Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΡ€ΠΈ Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€Π° Π½Π° Rust сС ΠΎΠΊΠ°Π·Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ниска β€” 24640 Π±Π°ΠΉΡ‚Π° срСщу 42608 Π±Π°ΠΉΡ‚Π°. Π©ΠΎ сС отнася Π΄ΠΎ производитСлността, ΠΏΡ€ΠΈ тСстванСто Π½Π° Π½Π°Ρ‡Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π·Π° 6 сСдмици, рСализацията Π½Π° Rust Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ надминавашС рСализацията Π½Π° C, Π½ΠΎ ΠΈ Π΄Π²Π΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ изоставаха ΠΎΡ‚ изчислСната максимална производитСлност. Π‘Π»Π΅Π΄ 4 сСдмици, посвСтСни Π½Π° оптимизация, Π΄Π²Π΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ достигнаха ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, Π±Π»ΠΈΠ·ΠΊΠΈ Π΄ΠΎ изчислСния максимум.



Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru
ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster