Basa pemrograman Rust 1.67 release

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

  • Kanggo fungsi async karo Future:: Output, saiki bisa nemtokake anotasi "#[must_use]" sing kalebu peringatan yen nilai bali ora digatekake, sing mbantu ngenali kesalahan sing disebabake asumsi yen fungsi kasebut bakal ngganti nilai kasebut. tinimbang ngasilake nilai anyar. #[must_use] async fn bar() -> u32 {0} async fn panelpon() {bar().await; } bebaya: output sing ora digunakake ing mangsa ngarep sing bali dening `bar` sing kudu digunakake —> src/lib.rs:5:5 | 5 | bar().ngenteni; | ^^^^^^^^^^^^^ | = note: `#[warn(unused_must_use)]` on default
  • Implementasine FIFO queues std :: sink :: mpsc (multi-produser single-konsumen) wis dianyari, kang wis diuripake kanggo nggunakake modul crossbeam-saluran nalika njaga API sadurungé. Implementasi anyar dibedakake kanthi ngrampungake sawetara masalah, kinerja sing luwih dhuwur lan pangopènan kode sing disederhanakaké.
  • Bagean anyar saka API wis dipindhah menyang kategori stabil, kalebu cara lan implementasine sifat wis stabil:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Atribut "const", sing nemtokake kemungkinan nggunakake ing sembarang konteks tinimbang konstanta, digunakake ing fungsi:
    • char::saka_u32
    • char:: saka_digit
    • char::to_digit
    • inti::char::from_u32
    • inti::char::saka_digit
  • Dhukungan tingkat katelu wis ditindakake kanggo nggunakake Rust ing kernel Linux (linuxkernel), uga kanggo Sony PlayStation 1 (mipsel-sony-psx), PowerPC karo AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platform qnx710, x86_64-pc-nto-qnx710). Tingkat katelu kalebu dhukungan dhasar, nanging tanpa tes otomatis, publikasi bangunan resmi, lan verifikasi kemampuan kode.

Kajaba iku, kita bisa nyathet publikasi patch ARM sing ngidini panggunaan basa Rust kanggo ngembangake driver lan modul kernel Linux sing dipasang kanggo sistem adhedhasar arsitektur AArch64.

Source: opennet.ru

Add a comment