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

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

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

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

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

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Sparse Π΅ стабилизирана Π² ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Cargo ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ crates.io, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π½ΠΎΠ² Π½Π°Ρ‡ΠΈΠ½ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с индСкс, ΠΊΠΎΠΉΡ‚ΠΎ отразява Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ вСрсии Π½Π° всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ. Новият ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π²ΠΈ позволява Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ скоростта Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с crates.io ΠΈ Π΄Π° Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ с Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° броя Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ.

    Π—Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΡΡ‚Π°, ΠΏΡ€ΠΎΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‰ΠΈ ΠΎΡ‚ изтСглянСто Π½Π° пълСн индСкс, Sparse вмСсто Π΄Π° ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ индСкса с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Git, Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ изтСгля ΠΏΡ€Π΅Π· HTTPS само Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π·Π° индСкса, ΠΏΠΎΠΊΡ€ΠΈΠ²Π°ΠΉΠΊΠΈ зависимоститС Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Новата услуга index.crates.io сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° индСксни Π΄Π°Π½Π½ΠΈ. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ новият ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠ»ΠΎΠ½Π° Rust 1.70, Π° ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата β€žCARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparseβ€œ ΠΈΠ»ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° β€žprotocol = към β€ž[registries.crates -io]" Ρ€Π°Π·Π΄Π΅Π» Π½Π° Ρ„Π°ΠΉΠ»Π° .cargo/config.toml "sparse"'.

  • Π”ΠΎΠ±Π°Π²Π΅Π½ макрос "pin!", ΠΊΠΎΠΉΡ‚ΠΎ позволява създаванС Π½Π° Pin<&mut T> структура ΠΎΡ‚ ΠΈΠ·Ρ€Π°Π·Π° "T" с Π»ΠΎΠΊΠ°Π»Π½ΠΎ фиксиранС Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ (Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Box::pin Π½Π΅ разпрСдСля ΠΏΠ°ΠΌΠ΅Ρ‚ Π² ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π°, Π½ΠΎ сС ΡΠ²ΡŠΡ€Π·Π²Π° Π½Π° Π½ΠΈΠ²ΠΎ стСк) .
  • ΠŸΡ€Π΅Π΄Π»Π°Π³Π° сС ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ разпрСдСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° стандартния ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚ само alloc (Π±Π΅Π· std), Π²Π΅Ρ‡Π΅ Ρ‰Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° β€žpanic!β€œ ΠΏΡ€ΠΈ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΈΡ…Π²Π°Π½Π°Ρ‚ΠΎ с β€ž#[panic_handler]β€œ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° std, всС ΠΏΠ°ΠΊ Ρ‰Π΅ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ информация Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² stderr ΠΈ Ρ‰Π΅ сС сринат.
  • Нова част ΠΎΡ‚ API Π΅ прСмСстСна Π² катСгорията Π½Π° стабилни, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° характСристикитС са стабилизирани:
    • {core,std}::pin::pin!
    • impl From Π·Π° {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut Π·Π° PathBuf
  • ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ "const", ΠΊΠΎΠΉΡ‚ΠΎ опрСдСля Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ във всСки контСкст вмСсто константи, сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° във функцията VecDeque::new.
  • ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android Π²Π΅Ρ‡Π΅ изисква ΠΏΠΎΠ½Π΅ NDK r25 (API 19), Ρ‚.Π΅. ΠœΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π° вСрсия Π½Π° Android Π΅ повишСна Π΄ΠΎ 4.4 (KitKat).
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΎ Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° Π±Π°Π·ΠΎΠ²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ Π±ΠΈΠ»Π΄ΠΎΠ²Π΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° способността Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π°.

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

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