Rust 1.68 Programming Language Release

Pelepasan bahasa pemrograman tujuan umum Rust 1.68, diadegkeun ku proyék Mozilla, tapi ayeuna dikembangkeun dina naungan organisasi nirlaba bebas Rust Foundation, parantos diterbitkeun. basa museurkeun kana kaamanan memori jeung nyadiakeun sarana pikeun ngahontal paralelisme pakasaban tinggi bari Ngahindarkeun pamakéan a collector sampah na runtime (runtime diréduksi jadi initialization dasar tur pamaliharaan perpustakaan baku).

Métode penanganan memori Rust nyalametkeun pamekar tina kasalahan nalika ngamanipulasi pointer sareng ngajagi tina masalah anu timbul kusabab panangan mémori tingkat rendah, sapertos aksés ka daérah mémori saatos dibébaskeun, dereferencing pointer null, overruns panyangga, jsb. Pikeun ngadistribusikaeun perpustakaan, nyadiakeun ngawangun jeung ngatur kagumantungan, proyék ngamekarkeun manajer pakét Cargo. Repositori crates.io dirojong pikeun perpustakaan hosting.

Kasalametan memori disayogikeun dina Rust dina waktos kompilasi ngaliwatan pamariksaan rujukan, ngalacak kapamilikan obyék, ngalacak umur obyék (skop), sareng ngira-ngira kabeneran aksés mémori nalika palaksanaan kode. Karat ogé nyadiakeun panyalindungan ngalawan overflows integer, merlukeun initialization wajib nilai variabel saméméh pamakéan, handles kasalahan hadé dina perpustakaan baku, nerapkeun konsép rujukan immutable sarta variabel sacara standar, nawarkeun ketak statik kuat pikeun ngaleutikan kasalahan logis.

Inovasi utama:

  • Rojongan pikeun protokol Sparse geus stabilized dina manajer pakét kargo jeung gudang crates.io, nu ngahartikeun cara anyar pikeun digawekeun ku indéks nu ngagambarkeun versi sadia sadaya bungkusan nu aya dina gudang. Protokol anyar ngamungkinkeun anjeun sacara signifikan ningkatkeun kagancangan damel sareng crates.io sareng ngarengsekeun masalah sareng skala kalayan paningkatan salajengna dina jumlah bungkusan dina gudang.

    Pikeun ngirangan telat anu disababkeun ku ngaunduh indéks pinuh, Sparse sanés ngaksés indéks nganggo Git, langsung diunduh ngalangkungan HTTPS ngan ukur data indéks anu diperyogikeun, kalebet katergantungan tina proyék khusus. Ladenan index.crates.io anyar dianggo pikeun ngabalikeun data indéks. Sacara standar, protokol anyar direncanakeun pikeun dianggo dina cabang Rust 1.70, sareng sateuacan éta, pikeun ngaktifkeunana, anjeun tiasa nyetél variabel lingkungan "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" atanapi tambahkeun parameter 'protocol = kana "[registries.crates". -io]" bagian tina file .cargo/config.toml "sparse"'.

  • Ditambahkeun makro "pin!", anu ngamungkinkeun anjeun nyiptakeun struktur Pin<&mut T> tina ekspresi "T" kalayan pinning lokal kaayaanana (teu sapertos Box:: pin henteu nyayogikeun mémori dina tumpukan, tapi ngabeungkeut dina tingkat tumpukan) .
  • A panangan kasalahan alokasi memori standar diusulkeun, anu dianggo nalika nganggo pakét alloc standar. Aplikasi anu ngan ukur ngaktifkeun alloc (tanpa std) ayeuna bakal nyauran "panik!" Handler dina gagal alokasi memori, anu sacara opsional tiasa dicegat ku "#[panic_handler]". Program anu nganggo perpustakaan std masih bakal nyitak inpormasi kasalahan pikeun stderr sareng kacilakaan.
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • {inti, std}::pin::pin!
    • impl Ti pikeun {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut pikeun PathBuf
  • Atribut "const", nu nangtukeun kamungkinan ngagunakeun eta dina sagala konteks tinimbang konstanta, dipaké dina VecDeque :: fungsi anyar.
  • platform Android ayeuna merlukeun sahenteuna NDK r25 (API 19), i.e. Versi Android anu dirojong minimum parantos ningkat kana 4.4 (KitKat).
  • Tingkat katilu pangrojong pikeun platform Sony PlayStation Vita parantos dilaksanakeun (armv7-sony-vita-newlibeabihf). Tingkat katilu nunjukkeun dukungan dasar, tapi tanpa uji otomatis, penerbitan resmi ngawangun sareng mariksa kamampuan ngawangun kode.

sumber: opennet.ru

Tambahkeun komentar