Basa pemrograman Rust 1.44 release

diterbitake release basa pemrograman sistem Karat 1.44, didegaké déning proyèk Mozilla. Basa kasebut fokus ing safety memori, nyedhiyakake manajemen memori otomatis, lan nyedhiyakake alat kanggo nggayuh paralelisme tugas sing dhuwur tanpa nggunakake pengumpul sampah lan runtime.

Manajemen memori otomatis Rust ngilangake kasalahan nalika manipulasi penunjuk lan nglindhungi saka masalah njedhul saka manipulasi memori tingkat kurang, kayata ngakses wilayah memori sawise wis dibebaske, null pointer dereferences, buffer overruns, etc. Pangatur paket dikembangake kanggo nyebarake perpustakaan, mesthekake perakitan lan ngatur dependensi dening proyek kasebut. Cargo, ngidini sampeyan entuk perpustakaan sing dibutuhake kanggo program ing siji klik. Repositori didhukung kanggo dadi tuan rumah perpustakaan peti.io.

Π’ тСкстС анонса Π½ΠΎΠ²ΠΎΠ³ΠΎ выпуска Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Rust ввязались Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΈ дСмонстративно ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Rust 1.44 Π² Π·Π½Π°ΠΊ солидарности с ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² полицСйского насилия, ΡƒΠΊΠ°Π·Π°Π², Ρ‡Ρ‚ΠΎ этот вопрос Π²Π°ΠΆΠ½Π΅Π΅ ΠΎΠ±ΠΌΠ΅Π½Π° тСхничСскими знаниями. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ inovasi:

  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Cargo ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«cargo treeΒ», выводящая Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ зависимостСй. Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«β€”duplicatesΒ» (Β«cargo tree -dΒ»), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ зависимости Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    β”œβ”€β”€ ammonia v3.0.0
    β”‚ β”œβ”€β”€ html5ever v0.24.0
    β”‚ β”‚ β”œβ”€β”€ log v0.4.8
    β”‚ β”‚ β”‚ └── cfg-if v0.1.9
    β”‚ β”‚ β”œβ”€β”€ mac v0.1.1
    β”‚ β”‚ └── markup5ever v0.9.0
    β”‚ β”‚ β”œβ”€β”€ log v0.4.8 (*)
    β”‚ β”‚ β”œβ”€β”€ phf v0.7.24
    β”‚ β”‚ β”‚ └── phf_shared v0.7.24
    β”‚ β”‚ β”‚ β”œβ”€β”€ siphasher v0.2.3
    β”‚ β”‚ β”‚ └── unicase v1.4.2
    β”‚ β”‚ β”‚ [build-dependencies] β”‚ β”‚ β”‚ └── version_check v0.1.5
    ...

  • Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅ привязанных ΠΊ std (Β«#![no_std]Β»), Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² асинхронного программирования, основанных Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«asyncΒ», Π±Π»ΠΎΠΊΠ΅ async move { … } ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Β«.awaitΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ написаниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… основной ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄.
  • Π’ парсСр Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΠΉ схСмы опрСдСлСния ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ конструкция Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ ошибки, нСсмотря Π½Π° фактичСскоС отсутствиС модуля Β«foo/bar/baz.rsΒ» (сСмантичСски конструкция ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ нСдопустима ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΠΎ измСнСния ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ макросов ΠΈ условной компиляции):

    #[cfg(FALSE)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • Π’ компиляторС rustc Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Ρ„Π»Π°Π³Π° Β«-C codegen-unitsΒ» Π² ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° рСализация catch_unwind, которая Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ влияния Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ссли ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½ процСсс Β«Ρ€Π°Π·ΠΌΠΎΡ‚ΠΊΠΈΒ» (unwinding) ΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos ΠΈ x86_64-apple-tvos. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок.
  • Bagean API anyar wis ditransfer menyang kategori stabil, kalebu stabil
    PathBuf::with_capacity,
    PathBuf::capacity,
    PathBuf::clear,
    PathBuf::reserve,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Layout::align_to,
    Layout::pad_to_align,
    Layout::array ΠΈ
    Layout::extend.

  • Fungsi tambahan saka perpustakaan standar:
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Β«vec![]Β», Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π² Vec::new(), Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«vec![]Β» Π² контСкстС вмСсто констант.
    • Π’ convert::Infallible Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° рСализация (impl) Ρ‚ΠΈΠΏΠ°ΠΆΠ° Hash.
    • Π’ OsString Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡƒΠΌΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ DerefMut ΠΈ IndexMut, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ Β«&mut OsStrΒ».
    • Dhukungan tambahan kanggo Unicode 13.
    • Π’ String Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ From<&mut str>.
    • Π’ IoSlice Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚ΠΈΠΏΠ°ΠΆ Copy.
    • Π’ Vec<T> Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ From<[T; N]>.
    • Π’ proc_macro::LexError Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ fmt::Display ΠΈ Error.
  • ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Β«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.

Source: opennet.ru

Add a comment