ИздадСна Π΅ Rust 1.53. Google Ρ‰Π΅ финансира добавянСто Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Rust към ядрото Π½Π° Linux

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

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

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

  • Π—Π° масиви Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½Π° характСристиката IntoIterator, която Π²ΠΈ позволява Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ итСрацията Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° масива ΠΏΠΎ стойности: for i in [1, 2, 3] { .. }

    Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ възмоТно Π΄Π° сС ΠΏΠΎΠ΄Π°Π΄Π°Ρ‚ масиви към ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: let set = BTreeSet::from_iter([1, 2, 3]); Π·Π° (a, b) Π² some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° IntoIterator бСшС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ само Π·Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ към масиви, Ρ‚.Π΅. Π·Π° ΠΈΡ‚Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° стойности изисква ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ (β€œ&[1, 2, 3]”) ΠΈΠ»ΠΈ β€œ[1, 2, 3].iter()”. ВнСдряванСто Π½Π° IntoIterator Π·Π° масиви бСшС Π²ΡŠΠ·ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²Π°Π½ΠΎ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ със ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π°, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ ΠΏΠΎ-Ρ€Π°Π½Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° ΠΎΡ‚ array.into_iter() Π² (&array).into_iter(). Π’Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ бяха Ρ€Π΅ΡˆΠ΅Π½ΠΈ със Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ - ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° array.into_iter() Π² (&array).into_iter(), сякаш Π½Π΅ Π΅ ΠΈΠΌΠ°Π»ΠΎ имплСмСнтация Π½Π° Ρ‡Π΅Ρ€Ρ‚Π°Ρ‚Π° IntoIterator, Π½ΠΎ само ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ".into_iter( )" синтаксис ΠΈ Π±Π΅Π· Π΄Π° докосватС извикванията във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° "in [1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3] )".

  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС Π·Π°Π΄Π°Π΄Π°Ρ‚ ΠΈΠ·Ρ€Π°Π·ΠΈ β€ž|β€œ (логичСска опСрация Π˜Π›Π˜) във всяка част ΠΎΡ‚ шаблона, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вмСсто β€žΠΡΠΊΠΎΠΈ(1) | Some(2)" Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ "Some(1 | 2)": Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ съвпадСниС { Ok(Some(1 | 2)) => { .. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) = > { .. } _ => { .. } }
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π΅-ASCII Π·Π½Π°Ρ†ΠΈ Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ всякакви Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ Π·Π½Π°Ρ†ΠΈ, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π² спСцификацията Unicode UAX 31, Π½ΠΎ с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π·Π½Π°Ρ†ΠΈ Π·Π° Π΅ΠΌΠΎΡ‚ΠΈΠΊΠΎΠ½ΠΈ. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ, Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ символи, ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ ΠΈΠ·Π΄Π°Π΄Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. const BLΓ…HAJ: &str = "🦈"; struct δΊΊ { 名字: String, } Π½Π΅ΠΊΠ° Ξ± = 1; letsos = 2; ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π΄Π²ΠΎΠΉΠΊΠ° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ сС счита Π·Π° ΠΎΠ±ΡŠΡ€ΠΊΠ²Π°Ρ‰Π° ΠΌΠ΅ΠΆΠ΄Ρƒ 's' ΠΈ 's'
  • Нова част ΠΎΡ‚ API Π΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½Π° Π² стабилната катСгория, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ слСднитС стабилизирани:
    • масив::ΠΎΡ‚_Ρ€Π΅Ρ„
    • масив::ΠΎΡ‚_ΠΌΡƒΡ‚
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet::retain
    • BTreeMap::retain
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_ΠΏΠΎ_ΠΊΠ»ΡŽΡ‡
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚::НУЛА
    • ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚::МАКБ
    • ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚::Π΅_Π½ΡƒΠ»Π°
    • Duration::saturating_add
    • Duration::saturating_sub
    • Duration::saturating_mul
    • f32::is_subnormal
    • f64::is_subnormal
    • IntoIterator Π·Π° масиви
    • {integer}::BITS
    • io::Error::Unsupported
    • НСнула*::Π²ΠΎΠ΄Π΅Ρ‰ΠΈ_Π½ΡƒΠ»ΠΈ
    • NonZero*::trailing_zeros
    • ΠžΠΏΡ†ΠΈΡ::вмъкванС
    • ΠŸΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅::is_eq
    • ΠŸΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅::is_ne
    • ΠŸΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅::is_lt
    • ΠŸΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅::is_gt
    • ΠŸΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅::is_le
    • ΠŸΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅::is_ge
    • OsStr::make_ascii_ΠΌΠ°Π»ΠΊΠΈ Π±ΡƒΠΊΠ²ΠΈ
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_ΠΌΠ°Π»ΠΊΠΈ Π±ΡƒΠΊΠ²ΠΈ
    • OsStr::to_ascii_Π³Π»Π°Π²Π΅Π½ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • Peekable::peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • slice::IterMut::as_slice
    • AsRef<[T]> Π·Π° slice::IterMut
    • impl SliceIndex Π·Π° (ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ , ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ )
    • Vec::extend_from_within
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° wasm64-unknown-unknown. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° основна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½.
  • ΠœΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΡŠΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Cargo Π΅ прСмСстСн Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠΌΠ΅Ρ‚ΠΎ β€žmainβ€œ Π·Π° главния ΠΊΠ»ΠΎΠ½ Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° Git (HEAD) ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. ЗависимоститС, хоствани Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ main вмСсто master, Π²Π΅Ρ‡Π΅ Π½Π΅ изискват ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° branch = "main".
  • Π’ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° изискванията Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π° вСрсия Π½Π° LLVM са повишСни Π΄ΠΎ LLVM 10.

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈΠΌ прСдоставянСто Π½Π° финансиранС Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° интСграция Π² ядрото Π½Π° Linux Π½Π° инструмСнти Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust. Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° Ρ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Prossimo ΠΏΠΎΠ΄ Π΅Π³ΠΈΠ΄Π°Ρ‚Π° Π½Π° организацията ISRG (Internet Security Research Group), която Π΅ основатСл Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Let's Encrypt ΠΈ Π½Π°ΡΡŠΡ€Ρ‡Π°Π²Π° HTTPS ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° повишаванС Π½Π° сигурността Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. БрСдствата Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ осигурСни ΠΎΡ‚ Google, която Ρ‰Π΅ ΠΏΠ»Π°Ρ‚ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° МигСл ΠžΡ…Π΅Π΄Π°, Π°Π²Ρ‚ΠΎΡ€ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rust-for-Linux. ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° ISRG ΠΈ Google Π²Π΅Ρ‡Π΅ финансираха ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π΅Π½ HTTP Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° curl ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ² TLS ΠΌΠΎΠ΄ΡƒΠ» Π·Π° http ΡΡŠΡ€Π²ΡŠΡ€Π° Apache.

Π‘ΠΏΠΎΡ€Π΅Π΄ Microsoft ΠΈ Google ΠΎΠΊΠΎΠ»ΠΎ 70% ΠΎΡ‚ уязвимоститС са ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ нСсигурна Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. ΠžΡ‡Π°ΠΊΠ²Π° сС, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° ядрото, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π½Π° устройства, Ρ‰Π΅ Π½Π°ΠΌΠ°Π»ΠΈ риска ΠΎΡ‚ уязвимости, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ опасна Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΈ Ρ‰Π΅ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ област Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, слСд ΠΊΠ°Ρ‚ΠΎ тя Π΅ Π±ΠΈΠ»Π° освободСна ΠΈ ΠΏΡ€Π΅Π²ΠΈΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π°.

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

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

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