Rust 1.66 Programming Language Release

Pelepasan bahasa pemrograman tujuan umum Rust 1.66, 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:

  • Dina enumerations kalawan ngagambarkeun integer (atribut "#[repr (Int)]"), indikasi eksplisit tina diskriminan (angka varian dina enumeration nu) diwenangkeun, sanajan enumeration ngandung widang. #[repr(u8)] enum Foo { A(u8), # diskriminan 0 B(i8), # diskriminan 1 C(bool) = 42, # diskriminan 42 }
  • Ditambahkeun fungsi inti :: pitunjuk :: black_box nu saukur mulih nilai narima. Kusabab kompiler nyangka yén fungsi ieu ngalakukeun hiji hal, fungsi black_box tiasa dianggo pikeun nganonaktipkeun optimasi kompiler pikeun puteran nalika ngalakukeun tés kinerja kode atanapi nalika mariksa kode mesin anu dihasilkeun (supaya kompiler henteu nganggap kodeu henteu dianggo sareng ngahapus). Contona, dina conto di handap, black_box (v.as_ptr ()) nyegah compiler mikir yén vektor v teu dipaké. ngagunakeun std :: pitunjuk :: black_box; fn push_cap (v: & mut Vec) {pikeun i di 0..4 {v.push (i); black_box(v.as_ptr()); }}
  • Manajer pakét "kargo" nawiskeun paréntah "ngahapus", anu ngamungkinkeun anjeun ngahapus dependensi tina manifest Cargo.toml tina garis paréntah.
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BtreeSet::{mimiti, panungtung, pop_mimiti, pop_pamungkas}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Tambahkeun palaksanaan AsFd pikeun jinis konci stdio nalika nganggo WASI.
    • impl TryFrom > pikeun Box<[T; N]>
    • inti :: pitunjuk :: black_box
    • Durasi::coba_ti_detik_{f32,f64}
    • Pilihan:: unzip
    • std::os::fd
  • Kisaran "..X" sareng "..=X" diidinan dina citakan.
  • Nalika ngawangun tungtung hareup kompiler rustc sarta backend LLVM, LTO (Patalina Time Optimasi) sarta bolt (Binary Optimasi sarta Alat Layout) modus optimasi dipaké pikeun ngaronjatkeun kinerja kode anu dihasilkeun sarta ngurangan konsumsi memori.
  • Pangrojong tingkat 5 dilaksanakeun pikeun platform armv5te-none-eabi sareng thumbvXNUMXte-none-eabi. Tingkat katilu nunjukkeun dukungan dasar, tapi tanpa uji otomatis, penerbitan resmi ngawangun sareng mariksa kamampuan pikeun ngawangun kodeu.
  • Ditambahkeun dukungan pikeun ngaitkeun ka Perpustakaan Generik macOS.

Salaku tambahan, urang tiasa nyatet citakan dina basis kode GCC tina kompiler hareup-tungtung basa Rust (gccrs). Frontend kalebet dina cabang GCC 13, anu bakal dileupaskeun dina Méi 2023. Dimimitian ku GCC 13, toolkit GCC standar bakal tiasa dianggo pikeun nyusun program Rust tanpa kedah masang kompiler rustc anu diwangun nganggo pamekaran LLVM. Palaksanaan Rust di GCC 13 bakal dina status béta, teu diaktipkeun sacara standar.

sumber: opennet.ru

Tambahkeun komentar