ИздаванС Π½Π° Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Rust 1.44

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

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

Π’ тСкста Π½Π° анонса Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Rust сС намСсиха Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ…Π° Π΄Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ‚ пълСн ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Rust 1.44 Π² Π·Π½Π°ΠΊ Π½Π° солидарност с протСстиращитС срСщу полицСйското насилиС, ΠΊΠ°Ρ‚ΠΎ посочват, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ Π΅ ΠΏΠΎ-Π²Π°ΠΆΠ΅Π½ ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° Π½Π° тСхничСски знания. ОсновСн ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ:

  • ΠœΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΡŠΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Cargo ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žΠΊΠ°Ρ€Π³ΠΎ Π΄ΡŠΡ€Π²ΠΎβ€œ, която ΠΏΠΎΠΊΠ°Π·Π²Π° Π΄ΡŠΡ€Π²ΠΎΠ²ΠΈΠ΄Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° зависимости. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° опцията β€žβ€”duplicatesβ€œ (β€žΠΊΠ°Ρ€Π³ΠΎ Π΄ΡŠΡ€Π²ΠΎ -dβ€œ), която Π²ΠΈ позволява Π΄Π° оцСняватС зависимоститС Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    β”œβ”€β”€ амоняк v3.0.0
    β”‚ β”œβ”€β”€ html5ever v0.24.0
    β”‚ β”‚ β”œβ”€β”€ Π»ΠΎΠ³ v0.4.8
    β”‚ β”‚ β”‚ └── cfg-if v0.1.9
    β”‚ β”‚ β”œβ”€β”€ mac v0.1.1
    β”‚ β”‚ └── markup5ever v0.9.0
    β”‚ β”‚ β”œβ”€β”€ Π»ΠΎΠ³ v0.4.8 (*)
    β”‚ β”‚ β”œβ”€β”€ phf v0.7.24
    β”‚ β”‚ β”‚ └── phf_shared v0.7.24
    β”‚ β”‚ β”‚ β”œβ”€β”€ siphasher v0.2.3
    β”‚ β”‚ β”‚ └── unicase v1.4.2
    β”‚ β”‚ β”‚ [зависимости Π½Π° компилация] β”‚ β”‚ β”‚ └── ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° вСрсията v0.1.5
    ...

  • Π—Π° прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ΠΈ със std ("#![no_std]"), ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° асинхронно ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ сС изпълнява въз основа Π½Π° функцията "async", Π±Π»ΠΎΠΊΠ° async move { ... } ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ".await", ΠΊΠΎΠΉΡ‚ΠΎ опростСтС писанСто Π½Π° главния ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ.
  • Към Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ΅ΠΌΠ° схСма Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° йСрархията Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π°. НапримСр, слСдната конструкция няма Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ°, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ дСйствитСлното ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° "foo/bar/baz.rs" (конструкцията всС ΠΎΡ‰Π΅ Π΅ сСмантично Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ°, Π½ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС видят ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΌΠ°ΠΊΡ€ΠΎ ΠΈ условна компилация):

    #[cfg(FALSE)] mod foo {
    ΠΌΠΎΠ΄Π½Π° Π»Π΅Π½Ρ‚Π° {
    mod baz;
    }
    }

  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ rustc Π΄ΠΎΠ±Π°Π²ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ„Π»Π°Π³Π° β€ž-C codegen-unitsβ€œ Π² ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ. ВнСдряванСто Π½Π° catch_unwind Π΅ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° няма влияниС Π²ΡŠΡ€Ρ…Ρƒ производитСлността, Π°ΠΊΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° ΠΎΡ‚Π²ΠΈΠ²Π°Π½Π΅ Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ ΠΈ Π½Π΅ сС Ρ…Π²ΡŠΡ€Π»ΡΡ‚ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΎΡ‚ Π½ΠΈΠ²ΠΎ 64 Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos ΠΈ x64_XNUMX-apple-tvos. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π±Π°Π·ΠΎΠ²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ.
  • Нова част ΠΎΡ‚ API Π΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½Π° Π² катСгорията стабилни, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ стабилизирани
    PathBuf::with_capacity,
    PathBuf::ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚,
    PathBuf::clear,
    PathBuf::reserve,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅::align_to,
    ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅::pad_to_align,
    ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ :: масив ΠΈ
    ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅::Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅.

  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°:
    • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ спСциалСн Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ "vec![]", ΠΊΠΎΠΉΡ‚ΠΎ сС отразява Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ във Vec::new(), позволявайки "vec![]" Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² контСкст вмСсто константи.
    • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ рСализация (impl) Π½Π° характСристиката Π·Π° convert::Infallible Π₯ашиш.
    • OsString Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ DerefMut ΠΈ IndexMut, Π²Ρ€ΡŠΡ‰Π°ΠΉΠΊΠΈ "&mut OsStr".
    • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Unicode 13.
    • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π² String ΠžΡ‚<&mut str>.
    • IoSlice ΠΏΡ€ΠΈΠ»Π°Π³Π° Ρ‡Π΅Ρ€Ρ‚Π°Ρ‚Π° ΠšΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Π΅.
    • Vec Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΎ ΠΎΡ‚<[T; N]>.
    • proc_macro::LexError ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° fmt::Display ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ°.
  • ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ β€žconstβ€œ, ΠΊΠΎΠΉΡ‚ΠΎ опрСдСля Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° във всСки контСкст вмСсто константи, сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes ΠΈ to_ne_bytes Π·Π° всички Ρ†Π΅Π»ΠΈ числа.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° статични Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ".a" вмСсто ".lib" Π·Π° GNU ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Π² Windows.
  • ΠœΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡ‚Π΅ изисквания Π·Π° LLVM са повишСни Π΄ΠΎ LLVM вСрсия 8.

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

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