Basa pemrograman Rust 1.66 release

Basa pemrograman tujuan umum Rust 1.66, didegaké déning proyèk Mozilla nanging saiki dikembangaké ing sangisoré organisasi nirlaba independen Rust Foundation, wis dirilis. Basa kasebut fokus ing safety memori lan nyedhiyakake sarana kanggo nggayuh paralelisme proyek sing dhuwur nalika ngindhari panggunaan kolektor sampah lan runtime (runtime dikurangi dadi initialization dhasar lan pangopènan perpustakaan standar).

Cara nangani memori Rust nylametake pangembang saka kesalahan nalika manipulasi penunjuk lan nglindhungi masalah sing muncul amarga penanganan memori tingkat rendah, kayata ngakses area memori sawise dibebasake, null pointer dereferencing, overruns buffer, etc. Kanggo nyebarake perpustakaan, nyedhiyakake mbangun lan ngatur dependensi, proyek kasebut ngembangake manajer paket Cargo. Repositori crates.io didhukung kanggo hosting perpustakaan.

Keamanan memori diwenehake ing Rust ing wektu kompilasi liwat mriksa referensi, nglacak kepemilikan obyek, nglacak umur obyek (skop), lan netepake akurasi akses memori sajrone eksekusi kode. Rust uga menehi pangayoman marang overflows integer, mbutuhake initialization prentah saka nilai variabel sadurunge nggunakake, Ngalahake kasalahan luwih apik ing perpustakaan standar, ditrapake konsep referensi immutable lan variabel minangka standar, nawakake typing statis kuwat kanggo nyilikake kasalahan logis.

Inovasi utama:

  • Ing enumerasi kanthi perwakilan integer (atribut "#[repr(Int)]"), indikasi eksplisit saka diskriminan (nomer varian ing enumerasi) diijini, sanajan enumerasi ngemot kolom. #[repr(u8)] enum Foo { A(u8), # diskriminan 0 B(i8), # diskriminan 1 C(bool) = 42, # diskriminan 42 }
  • Added fungsi inti :: pitunjuk :: black_box kang mung ngasilake nilai ditampa. Wiwit compiler mikir sing fungsi iki nindakake soko, fungsi black_box bisa digunakake kanggo mateni optimizations compiler kanggo puteran nalika nindakake testing kinerja kode utawa nalika mriksa kode mesin kui (supaya compiler ora nimbang kode digunakake lan mbusak). Contone, ing conto ing ngisor iki, black_box (v.as_ptr ()) ngalangi compiler mikir sing vektor v ora digunakake. nggunakake std :: pitunjuk :: black_box; fn push_cap (v: & mut Vec) { kanggo i ing 0..4 { v.push (i); black_box(v.as_ptr()); }}
  • Manajer paket "kargo" nawakake printah "mbusak", sing ngidini sampeyan mbusak dependensi saka manifest Cargo.toml saka baris printah.
  • Bagean anyar saka API wis dipindhah menyang kategori stabil, kalebu cara lan implementasine sifat wis stabil:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{dicenthang_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{dicenthang_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BtreeSet::{kawitan, pungkasan, pop_first, pop_last}
    • BtreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Tambah implementasi AsFd kanggo jinis kunci stdio nalika nggunakake WASI.
    • impl TryFrom > kanggo Box<[T; N]>
    • inti :: pitunjuk:: black_box
    • Duration::try_from_secs_{f32,f64}
    • Pilihan:: unzip
    • std::os::fd
  • Kisaran "..X" lan "..=X" diijini ing cithakan.
  • Nalika mbangun mburi ngarep compiler rustc lan backend LLVM, LTO (Link Time Optimization) lan BOLT (Binar Optimization lan Layout Tool) mode Optimization digunakake kanggo nambah kinerja kode asil lan nyuda konsumsi memori.
  • Dhukungan level 5 dileksanakake kanggo platform armv5te-none-eabi lan thumbvXNUMXte-none-eabi. Tingkat katelu nuduhake dhukungan dhasar, nanging tanpa tes otomatis, penerbitan resmi mbangun lan mriksa kemampuan kanggo mbangun kode kasebut.
  • Dhukungan ditambahake kanggo nyambung menyang Perpustakaan Umum macOS.

Kajaba iku, kita bisa nyathet inklusi ing basis kode GCC saka compiler front-end basa Rust (gccrs). Frontend kalebu ing cabang GCC 13, sing bakal dirilis ing Mei 2023. Miwiti karo GCC 13, toolkit GCC standar bakal bisa digunakake kanggo ngumpulake program Rust tanpa perlu nginstal compiler rustc dibangun nggunakake pembangunan LLVM. Implementasi Rust ing GCC 13 bakal ana ing status beta, ora diaktifake kanthi gawan.

Source: opennet.ru

Add a comment