Rust 1.34 Programming Language Release

lumangsung release basa programming sistem Karat 1.34dikembangkeun ku proyék Mozilla. basa museurkeun kana manajemén memori aman, nyadiakeun manajemén memori otomatis, jeung nyadiakeun sarana pikeun ngahontal paralelisme pakasaban tinggi bari Ngahindarkeun pamakéan a collector sampah na runtime.

Manajemén mémori otomatis Rust ngahémat pamekar tina ngamanipulasi pointer sareng ngajagi tina masalah anu timbul tina manipulasi mémori tingkat rendah, sapertos ngaksés daérah mémori saatos dibébaskeun, ngémutan pointer nol, overruns panyangga, jsb. Pikeun ngadistribusikaeun perpustakaan, mastikeun assembly jeung ngatur kagumantungan, proyék ngamekarkeun manajer pakét kargo, anu ngamungkinkeun anjeun kéngingkeun perpustakaan anu anjeun peryogikeun pikeun program dina hiji klik. Repository dirojong pikeun host perpustakaan crates.io.

utama inovasi:

  • Nambahkeun alat ka manajer pakét kargo pikeun damel sareng pendaptaran pakét alternatif anu tiasa hirup babarengan sareng pendaptaran umum crates.io. Salaku conto, pamekar aplikasi swasta ayeuna tiasa nganggo pendaptaran pribadi sorangan anu tiasa dianggo nalika daptar katergantungan dina Cargo.toml sareng nganggo modél vérsi sapertos crates.io pikeun produkna, ogé ngarujuk kana crates.io sareng crates.io. dina dependensi. ka pendaptaran anjeun sorangan.

    Pikeun nambahkeun pendaptaran éksternal kana .cargo/config (lokasina di $HOME atawa diréktori pakét)
    disadiakeun "[registries]" bagian, sarta ngagunakeun hiji pendaptaran éksternal, pilihan "pendaptaran" mucunghul dina pedaran unggal kagumantungan dina Cargo.toml. Pikeun nyambung ka pendaptaran tambahan, ngan nempatkeun token auténtikasi dina file ~/.cargo/credentials tur ngajalankeun paréntah
    "login kargo --registry=my-registry", sareng nyebarkeun pakét -
    "cargo publish --registry=my-registry";

  • Ditambahkeun dukungan pinuh pikeun ngagunakeun "?" dina tés doctests, ngamungkinkeun anjeun ngagunakeun kodeu conto tina dokuméntasi salaku tés. operator saméméhna
    "?" bisa dipaké pikeun nanganan kasalahan salila palaksanaan test ngan lamun aya "fn main ()" fungsi atawa dina "# [test]" fungsi;

  • Dina atribut custom diartikeun ku macros prosedural diamankeun kamampuhan pikeun ngagunakeun susunan sawenang-wenang tina tokens ("#[attr ($token)]", "#[attr[$token]] jeung #[attr{$token}]"). Saméméhna, elemen ngan bisa dieusian dina bentuk tangkal / recursive ngagunakeun string literals, kayaning "#[foo(bar, baz(quux, foo = "bar"))]", tapi ayeuna kasebut nyaéta dimungkinkeun pikeun ngagunakeun enums ('# [rentang (0. .10)]') sarta constructions kawas "# [kabeungkeut (T: MyTrait)]";
  • Sifat stabil (sifat) TryFrom и nyobian, nu ngidinan Anjeun pikeun ngalakukeun konversi tipe kalawan penanganan kasalahan. Contona, métode kawas from_be_bytes kalawan tipe integer ngagunakeun arrays salaku input, tapi data mindeng tipe Slice, sarta ngarobah antara arrays jeung keureut masalah mun ngalakukeun sacara manual. Kalawan Tret anyar, operasi ieu bisa dipigawé dina laleur ku nelepon .try_into (), Contona, "hayu num = u32 :: from_be_bytes (slice.try_into ()?)". Jenis kasalahan ditambahkeun pikeun konvérsi anu salawasna sukses (misalna ti tipe u8 nepi ka u32) Teu kéngingkeun, ngamungkinkeun anjeun nganggo transparan
    TryFrom pikeun sakabéh palaksanaan "Ti" aya;

  • Fungsi deprecated CommandExt :: before_exec, nu diwenangkeun Handler a dieksekusi saméméh ngajalankeun hiji exec nu lumpat dina konteks prosés anak forked sanggeus garpu () panggero. Dina kaayaan sapertos kitu, sababaraha sumber tina prosés indungna, sapertos deskriptor file sareng daérah mémori anu dipetakeun, tiasa diduplikasi, anu tiasa nyababkeun paripolah anu teu ditangtukeun sareng karya perpustakaan anu teu leres.
    Disarankeun nganggo fungsi anu teu aman tibatan before_exec CommandExt:: pre_exec.

  • Jenis integer atom anu ditandatanganan sareng anu henteu ditandaan ti 8 dugi ka 64 bit distabilkeun (contona, AtomicU8), ogé jenis anu ditandatanganan NonZeroI[8|16|32|64|128].
  • Bagian anyar API geus dipindahkeun kana kategori stabil, kaasup métode Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[tambahkeun |sub] sareng SystemTime distabilkeun ::checked_[add|sub]. The iter :: from_fn na iter :: fungsi panerusna geus stabilized;
  • Pikeun sakabéh jenis integer, metode checked_pow, saturating_pow, wrapping_pow, sarta overflowing_pow;
  • Ditambahkeun kamampuhan pikeun ngaktipkeun optimasi dina tahap linking ku nangtukeun pilihan ngawangun "-C linker-plugin-lto".

sumber: opennet.ru

Tambahkeun komentar