Basa pemrograman Rust 1.60 release

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

  • Compiler rustc nduweni sistem basis LLVM sing stabil kanggo ngasilake data jangkoan sing digunakake kanggo ngevaluasi jangkoan kode sajrone tes. Kanggo ngaktifake data jangkoan sak Déwan, sampeyan kudu nggunakake flag "-Cinstrument-jangkoan", Contone, miwiti perakitan karo printah "RUSTFLAGS =" -C instrument-jangkoan "kargo". Sawise mbukak file eksekusi sing dikompilasi kanthi cara iki, file default.profraw bakal disimpen ing direktori saiki, kanggo proses sing sampeyan bisa nggunakake sarana llvm-profdata saka komponen llvm-tools-preview. Output sing diproses dening llvm-profdata banjur bisa dikirim menyang llvm-cov kanggo ngasilake laporan jangkoan kode anotasi. Informasi babagan link menyang kode sumber dijupuk saka file eksekusi sing diteliti, sing kalebu data sing dibutuhake babagan sambungan antarane counter jangkoan lan kode kasebut. 1 | 1|fn utama() { 2| 1 | println!("Halo, jagad!"); 3| 1|}
  • Ing manager paket kargo, support kanggo flag "-timings" wis stabil, kang kalebu generasi laporan rinci babagan kemajuan mbangun lan wektu eksekusi saben langkah. Laporan kasebut bisa uga migunani kanggo ngoptimalake kinerja proses perakitan.
  • Manajer paket kargo nawakake sintaks anyar kanggo mekanisme kompilasi kondisional lan pilihan dependensi opsional, dikonfigurasi ing file Cargo.toml kanthi nyathet dhaptar properti sing dijenengi ing bagean [fitur] lan diaktifake kanthi ngaktifake properti sajrone mbangun paket. nggunakake gendera "--features". Versi anyar nambahake dhukungan kanggo dependensi ing ruang jeneng sing kapisah lan dependensi sing lemah.

    Ing kasus sing sepisanan, sampeyan bisa nggunakake unsur kanthi awalan "dep:" ing bagean "[fitur]" kanggo ngubungake kanthi jelas menyang dependensi opsional tanpa sacara implisit makili dependensi iki minangka fitur. Ing kasus kapindho, dhukungan kanggo menehi tandha kanthi tandha "?" wis ditambahake. ("package-name?/feature-name") dependensi opsional sing mung kudu dilebokake yen sawetara properti liyane kalebu dependensi opsional sing diwenehake. Contone, ing conto ing ngisor iki, ngaktifake properti serde bakal ngaktifake dependensi "serde", uga properti "serde" kanggo dependensi "rgb", nanging mung yen dependensi "rgb" diaktifake ing papan liya: [dependensi] serde = {versi = "1.0.133", opsional = bener} rgb = {versi = "0.8.25", opsional = bener} [fitur] serde = ["dep:serde", "rgb?/serde"]

  • Dhukungan kanggo kompilasi tambahan, sing dipateni ing rilis pungkasan, wis bali. Bug compiler sing nyebabake fitur dipateni wis ditanggulangi.
  • Ditanggulangi sawetara masalah karo nyediakake Timer cepet karo njamin wektu monotoni, kang njupuk menyang akun wektu ngginakaken sistem ing mode turu. Sadurunge, OS API digunakake sabisa-bisa kanggo operate timer, kang ora njupuk menyang akun kahanan masalah sing break monotoni wektu, kayata masalah hardware, nggunakake virtualization, utawa kasalahan ing sistem operasi.
  • Bagean anyar saka API wis dipindhah menyang kategori stabil, kalebu cara lan implementasine sifat wis stabil:
    • Arc::new_cyclic
    • Rc::new_cyclic
    • irisan :: EscapeAscii
    • <[u8]>::uwal_ascii
    • u8::uwal_ascii
    • Vec::spare_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
    • gunakake::abs_diff
    • Tampilan kanggo io :: ErrorKind
    • Saka kanggo ExitCode
    • Ora kanggo! (tipe "ora tau")
    • _Op_Tugas<$t>
    • arch:: is_aarch64_feature_detected!
  • Dhukungan tingkat katelu wis dileksanakake kanggo platform mips64-openwrt-linux-musl* lan armv7-unknown-linux-uclibceabi (softfloat). Tingkat katelu kalebu dhukungan dhasar, nanging tanpa tes otomatis, nerbitake bangunan resmi, utawa mriksa manawa kode kasebut bisa dibangun.
  • Compiler wis dialihake nggunakake LLVM 14.

Kajaba iku, sampeyan bisa nyathet:

  • Added support kanggo bootstrapping compiler rustc nggunakake backend rustc_codegen_gcc, sing ngijini sampeyan kanggo nggunakake perpustakaan libgccjit saka project GCC minangka generator kode ing rustc, sing ngidini rustc support kanggo arsitektur lan optimizations kasedhiya ing GCC. Promosi Compiler tegese kemampuan kanggo nggunakake generator kode basis GCC ing rustc kanggo mbangun compiler rustc dhewe. Ing sisih praktis, fitur iki ngidini sampeyan mbangun program karat kanggo arsitektur sing sadurunge ora didhukung ing rustc.
  • Rilis toolkit uutils coreutils 0.0.13 kasedhiya, ing ngendi ana analog saka paket GNU Coreutils, ditulis maneh ing basa Rust, dikembangake. Coreutils dilengkapi luwih saka satus utilitas, kalebu sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, lan ls. Tujuan proyek kasebut yaiku nggawe implementasi alternatif lintas-platform Coreutils, sing bisa mlaku ing platform Windows, Redox lan Fuchsia, uga distribusi miturut lisensi MIT sing idin, tinimbang lisensi copyleft GPL.

    Versi anyar wis nambah implementasine saka akeh keperluan, kalebu kompatibilitas Ngartekno apik saka cp, dd, df, pamisah lan tr keperluan karo mitra saka project GNU. Dokumentasi online kasedhiya. Parser clap digunakake kanggo ngurai argumen baris perintah, sing wis nambah output kanggo gendera "--help" lan nambah dhukungan kanggo singkatan saka printah dawa (contone, sampeyan bisa nemtokake "ls -col" tinimbang "ls -color". ”).

Source: opennet.ru

Add a comment