Руст 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]); for (a, b) in 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])Β».

  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Β«|Β» (логичСская опСрация OR) Π² любой части шаблона, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вмСсто Β«Some(1) | Some(2)Β» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Β«Some(1 | 2)Β»: match result { Ok(Some(1 | 2)) => { .. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. } }
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС Π½Π΅-ASCII символов Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ…, Π² Ρ‚ΠΎΠΌ числС Π»ΡŽΠ±Ρ‹Ρ… Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π² спСцификации Unicode UAX 31, Π½ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ символов emoji. ΠŸΡ€ΠΈ использовании Ρ€Π°Π·Π½Ρ‹Ρ…, Π½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΏΠΎ Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΡŽ символов, компилятор Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. const BLΓ…HAJ: &str = «🦈»; struct δΊΊ { 名字: String, } let Ξ± = 1; let sos = 2; warning: identifier pair considered confusable between β€˜ο½“β€™ and β€˜s’
  • Нов Π΄Π΅Π» ΠΎΠ΄ API Π΅ ΠΏΡ€Π΅Ρ„Ρ€Π»Π΅Π½ Π²ΠΎ стабилна ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ˜Π°, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΈ слСднитС стабилизирани:
    • array::from_ref
    • array::from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet::retain
    • BTreeMap::retain
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • Duration::ZERO
    • Duration::MAX
    • Duration::is_zero
    • Π’Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅::saturating_add
    • Π’Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅::заситСна_ΠΏΠΎΠ΄
    • Π’Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅::saturating_mul
    • f32::is_subnormal
    • f64::is_subnormal
    • IntoIterator для массивов
    • {integer}::BITS
    • io::Error::Unsupported
    • NonZero*::leading_zeros
    • NonZero*::trailing_zeros
    • Option::insert
    • Ordering::is_eq
    • Ordering::is_ne
    • Ordering::is_lt
    • Ordering::is_gt
    • Ordering::is_le
    • Ordering::is_ge
    • OsStr::make_ascii_lowercase
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_lowercase
    • OsStr::to_ascii_uppercase
    • 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 для (Bound<usize>, Bound<usize>)
    • 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, которая ΠΎΠΏΠ»Π°Ρ‚ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ МигСля ΠžΡ…Π΅Π΄Π° (Miguel Ojeda), Π°Π²Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rust-for-Linux. Π Π°Π½Π΅Π΅ ISRG ΠΈ Google ΡƒΠΆΠ΅ профинансировали созданиС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ HTTP-бэкСнда для ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ curl ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ TLS-модуля для http-сСрвСра Apache.

По Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Microsoft ΠΈ Google ΠΎΠΊΠΎΠ»ΠΎ 70% уязвимостСй Π²Ρ‹Π·Π²Π°Π½Ρ‹ нСбСзопасной Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ использованиС языка Rust для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ядра, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ устройств, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ риск появлСния уязвимостСй, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… нСбСзопасной Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ появлСниС Ρ‚Π°ΠΊΠΈΡ… ошибок, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ области памяти послС Π΅Ρ‘ освобоТдСния ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π°.

Π‘Π΅Π·Π±Π΅Π΄Π½ΠΎΡ‚ΠΎ Ρ€Π°ΠΊΡƒΠ²Π°ΡšΠ΅ со ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ Rust Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ ΠΏΡ€Π΅ΠΊΡƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ, слСдСњС Π½Π° сопствСноста Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΎΡ‚ ΠΈ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈΠΎΡ‚ Π²Π΅ΠΊ Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΎΡ‚ (ΠΎΠ±Π΅ΠΌ), ΠΊΠ°ΠΊΠΎ ΠΈ ΠΏΡ€Π΅ΠΊΡƒ ΠΏΡ€ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° исправноста Π½Π° пристапот Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚. Rust исто Ρ‚Π°ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° ΠΎΠ΄ ΠΏΡ€Π΅Π»Π΅Π²Π°ΡšΠ΅ Π½Π° Ρ†Π΅Π»ΠΈ Π±Ρ€ΠΎΠ΅Π²ΠΈ, Π±Π°Ρ€Π° Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»Π½Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° врСдноститС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ сС справува со Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π²ΠΎ стандардната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, стандардно Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΡ‚ Π½Π° Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π½ΡƒΠ΄ΠΈ силно статичко ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π·Π° Π΄Π° сС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π°Ρ‚ Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ.

Π˜Π·Π²ΠΎΡ€: opennet.ru

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