Rust 1.60 Programming Language Release

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

  • The rustc compiler boga sistem basis LLVM stabilized pikeun generating data sinyalna dipaké pikeun evaluate sinyalna kode salila nguji. Pikeun ngaktipkeun data sinyalna salila assembly, anjeun kudu make "-Cinstrument-sinyalna" bandéra, Contona, dimimitian assembly kalawan paréntah "RUSTFLAGS =" -C instrumen-liputan "kargo ngawangun". Saatos ngajalankeun file executable disusun ku cara ieu, file default.profraw bakal disimpen dina diréktori ayeuna, pikeun ngolah nu bisa Anjeun pake llvm-profdata utiliti ti komponén llvm-tools-preview. Kaluaran anu diolah ku llvm-profdata teras tiasa dialihkeun ka llvm-cov pikeun ngahasilkeun laporan sinyalna kode annotated. Émbaran ngeunaan tumbu ka kode sumber dicokot tina file laksana keur nalungtik, nu ngawengku data diperlukeun ngeunaan sambungan antara counters sinyalna jeung kode. 1| 1|fn utama() { 2| 1| println!("Halo, dunya!"); 3| 1|}
  • Dina manajer pakét kargo, pangrojong pikeun bendera "-timings" geus stabilized, nu ngawengku generasi laporan lengkep ngeunaan kamajuan ngawangun jeung waktu palaksanaan unggal hambalan. Laporan bisa jadi mangpaat pikeun ngaoptimalkeun kinerja prosés assembly.
  • Pangatur pakét kargo nawiskeun sintaksis énggal pikeun mékanisme kompilasi kondisional sareng pilihan dependensi opsional, dikonpigurasi dina file Cargo.toml ku daptar daptar sipat anu dingaranan dina bagian [fitur] sareng diaktipkeun ku ngaktifkeun sipat salami ngawangun pakét. ngagunakeun bandéra "--features". Versi anyar nambihan dukungan pikeun katergantungan dina ruang ngaran anu misah sareng katergantungan anu lemah.

    Dina kasus anu pertama, anjeun tiasa nganggo unsur-unsur kalayan awalan "dep:" di jero bagian "[fitur]" pikeun sacara eksplisit numbu ka kagumantungan pilihan tanpa sacara implisit ngagambarkeun kagumantungan ieu salaku fitur. Dina kasus kadua, dukungan pikeun nyirian sareng tanda "?" parantos ditambahkeun. ("pakét-ngaran?/fitur-ngaran") kagumantungan pilihan anu ngan kudu kaasup lamun sababaraha sipat séjén kaasup gumantungna pilihan. Contona, dina conto di handap, ngaktipkeun sipat serde bakal ngaktifkeun kagumantungan "serde", kitu ogé sipat "serde" pikeun kagumantungan "rgb", tapi ngan lamun kagumantungan "rgb" diaktipkeun di tempat séjén: [dependencies] serde = {versi = "1.0.133", pilihan = leres} rgb = {versi = "0.8.25", pilihan = leres} [fitur] serde = ["dep: serde", "rgb?/serde"]

  • Rojongan pikeun kompilasi incremental, nu ditumpurkeun dina release panungtungan, geus balik. Bug kompiler anu nyababkeun fitur ditumpurkeun parantos direngsekeun.
  • Ngarengsekeun sababaraha masalah sareng nyayogikeun Timer Instan kalayan jaminan waktos monotonic, anu ngémutan waktos anu dianggo ku sistem dina mode sare. Saméméhna, OS API dipaké sabisana pikeun beroperasi timer, nu teu tumut kana akun kaayaan masalah nu megatkeun monotony waktu, kayaning masalah hardware, pamakéan virtualization, atawa kasalahan dina sistem operasi.
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • Arc::new_cyclic
    • Rc::new_cyclic
    • keureutan :: EscapeAscii
    • <[u8]>::escape_ascii
    • u8:: escape_ascii
    • Vec:: cadang_kapasitas_mut
    • MaybeUninit:: assume_init_drop
    • MaybeUninit:: assume_init_read
    • i8::abs_diff
    • i16::abs_diff
    • i32::abs_diff
    • i64::abs_diff
    • i128::abs_diff
    • ukuran::abs_diff
    • u8::abs_diff
    • u16::abs_diff
    • u32::abs_diff
    • u64::abs_diff
    • u128::abs_diff
    • make::abs_diff
    • Pintonan pikeun io :: ErrorKind
    • Ti pikeun ExitCode
    • Henteu pikeun! (ketik "henteu pernah")
    • _Op_Assign<$t>
    • arch:: is_aarch64_feature_detected!
  • Tingkat katilu pangrojong parantos dilaksanakeun pikeun platform mips64-openwrt-linux-musl* sareng armv7-unknown-linux-uclibceabi (softfloat). Tingkat katilu ngawengku rojongan dasar, tapi tanpa nguji otomatis, penerbitan resmi ngawangun, atawa mariksa naha kode bisa diwangun.
  • Kompiler parantos dialihkeun pikeun nganggo LLVM 14.

Salaku tambahan, anjeun tiasa catetan:

  • Ditambahkeun rojongan pikeun bootstrapping kompiler rustc maké rustc_codegen_gcc backend, nu ngidinan Anjeun pikeun ngagunakeun perpustakaan libgccjit ti proyék GCC salaku generator kode di rustc, nu ngidinan rustc nyadiakeun rojongan pikeun arsitéktur sarta optimizations sadia di GCC. Promosi kompiler hartosna kamampuan ngagunakeun generator kode basis GCC di rustc pikeun ngawangun kompiler rustc sorangan. Dina sisi praktis, fitur ieu ngamungkinkeun anjeun pikeun ngawangun program karat pikeun arsitéktur anu saacanna henteu didukung dina rustc.
  • Pelepasan uutils coreutils 0.0.13 toolkit sayogi, dimana aya analog tina pakét GNU Coreutils, ditulis ulang dina basa Rust, dikembangkeun. Coreutils hadir kalawan leuwih saratus utilitas, kaasup sortir, ucing, chmod, chown, chroot, cp, tanggal, dd, gema, hostname, id, ln, sarta ls. Tujuan proyék nya éta nyieun hiji cross-platform alternatif palaksanaan Coreutils, sanggup ngajalankeun on Windows, Redox na Fuchsia platform, kitu ogé distribusi dina lisénsi MIT permisif, tinimbang lisénsi copyleft GPL.

    Versi anyar geus ningkat palaksanaan loba Utiliti, kaasup kasaluyuan nyata ningkat tina cp, dd, df, pamisah jeung TR Utiliti kalawan counterparts maranéhanana ti proyék GNU. Dokuméntasi online disayogikeun. The clap parser dipaké pikeun parse argumen baris paréntah, nu geus ningkat kaluaran pikeun bendera "--help" jeung rojongan tambahan pikeun singketan paréntah panjang (contona, Anjeun bisa nangtukeun "ls -col" tinimbang "ls -color". ”).

sumber: opennet.ru

Tambahkeun komentar