Pelepasan basa pamrograman Rust 2021 (1.56)

Pelepasan sistem basa programming Rust 1.56, diadegkeun ku proyék Mozilla, tapi ayeuna dimekarkeun dina naungan organisasi non-profit bebas Rust Foundation, geus diterbitkeun. Salian nomer versi biasa, sékrési ogé ditunjuk Rust 2021 sareng nandaan stabilisasi parobihan anu diusulkeun salami tilu taun katukang. Rust 2021 ogé bakal dijadikeun dadasar pikeun ngaronjatkeun pungsionalitas salila tilu taun ka hareup, sarupa kumaha release Rust 2018 jadi dadasar pikeun ngembangkeun basa dina tilu taun kaliwat.

Pikeun ngajaga kompatibilitas, pamekar tiasa nganggo labél "2015", "2018" sareng "2021" dina programna, anu ngamungkinkeun program pikeun dikaitkeun kana potongan kaayaan basa anu cocog sareng édisi Rust anu dipilih. Édisi diwanohkeun pikeun misahkeun parobahan anu teu cocog sareng dikonpigurasi dina métadata bungkusan kargo ngalangkungan médan "édisi" dina bagian "[pakét]". Salaku conto, édisi "2018" kalebet pungsionalitas anu distabilkeun dugi ka akhir taun 2018 sareng ogé nyertakeun sadaya parobihan salajengna anu henteu ngarobih kasaluyuan. Édisi 2021 ogé kalebet fitur pegatna interoperabilitas anu diusulkeun dina rilis 1.56 ayeuna sareng disatujuan pikeun palaksanaan ka hareup. Salian ti basana sorangan, redaksi ogé merhatikeun kaayaan pakakas jeung dokuméntasi.

Incompatibilities utama kacatet dina Rust 2021:

  • Pisahkeun Capture di Closures - Closures ayeuna bisa néwak ngaran widang individual tinimbang sakabéh identifier. Contona, "|| kampak + 1" ngan bakal nangkep "kampak" tinimbang "a".
  • The IntoIterator tret pikeun arrays: array.into_iter () ngidinan Anjeun pikeun iterate leuwih elemen Asép Sunandar Sunarya ku nilai, tinimbang ku rujukan.
  • Ngolah ekspresi "|" parantos dirobih dina macro_rules (Boolean OR) dina pola - The ": pat" specifier dina patandingan ayeuna ngahormat "A | B".
  • Pangatur pakét kargo kalebet sacara standar versi kadua fitur solver, dukungan anu muncul dina Rust 1.51.
  • The TryFrom, TryInto jeung FromIterator Tret geus ditambahkeun kana prelude modul perpustakaan baku.
  • Panik!(..) jeung negeskeun!(expr, ..) macros ayeuna sok make format_args!(..) pikeun pormat string, sarupa println!().
  • Ekspresi ident#, ident»..." jeung ident'...' ditangtayungan dina sintaksis basa.
  • Dipindahkeun bare_trait_objects sareng ellipsis_inclusive_range_patterns warnings kana kasalahan.

Anyar dina Rust 1.56:

  • Dina Cargo.toml, dina bagian "[pakét]", widang karat-versi geus ditambahkeun, ngaliwatan nu bisa nangtukeun versi minimum dirojong tina Karat pikeun pakét crate. Upami versi ayeuna henteu cocog sareng parameter anu ditangtukeun, Cargo bakal lirén damel sareng pesen kasalahan.
  • Nalika pola cocog ngagunakeun "mengikat @ pola" éksprési, rojongan disadiakeun pikeun nangtukeun bindings tambahan (Contona, "hayu matrix @ Matrix {row_len, ..} = get_matrix ();").
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter:: kana_bagian
    • inti::panik::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec:: shrink_to
    • String:: shrink_to
    • OsString:: shrink_to
    • PathBuf:: shrink_to
    • BinaryHeap:: shrink_to
    • VecDeque:: shrink_to
    • HashMap:: shrink_to
    • HashSet:: shrink_to
  • Atribut "const", anu nangtukeun kamungkinan ngagunakeun dina konteks naon waé tinimbang konstanta, dianggo dina fungsi.
    • std::mem::transmute
    • [T]:: kahiji
    • [T]:: split_first
    • [T]:: tukang
    • [T]:: split_last
  • Kompiler parantos dialihkeun pikeun nganggo LLVM versi 13.
  • Tingkat kadua dukungan parantos dilaksanakeun pikeun platform aarch64-apple-ios-sim sareng tingkat katilu pikeun platform powerpc-unknown-freebsd sareng riscv32imc-esp-espidf. Tingkat katilu ngawengku rojongan dasar, tapi tanpa nguji otomatis, penerbitan resmi ngawangun, atawa mariksa naha kode bisa diwangun.

Ngelingan yen Rust fokus kana kaamanan memori, nyadiakeun manajemén memori otomatis, jeung nyadiakeun sarana pikeun ngahontal paralelisme tinggi di palaksanaan pakasaban tanpa ngagunakeun collector sampah atanapi runtime (runtime diréduksi jadi initialization dasar tur pamaliharaan perpustakaan baku).

Manajemén mémori otomatis Rust ngaleungitkeun kasalahan nalika ngamanipulasi pointer sareng ngajagi tina masalah anu timbul tina manipulasi mémori tingkat rendah, sapertos aksés ka daérah mémori saatos dibébaskeun, dereferensi pointer nol, overruns panyangga, jsb. Pikeun ngadistribusikaeun perpustakaan, mastikeun assembly jeung ngatur kagumantungan, proyék ieu ngamekarkeun manajer pakét Cargo. Repositori crates.io dirojong pikeun perpustakaan hosting.

sumber: opennet.ru

Tambahkeun komentar