Basa pemrograman Rust 1.58 release

Rilis basa pamrograman umum Rust 1.58, sing diadegake dening proyek Mozilla, nanging saiki dikembangake ing sangisore organisasi nirlaba independen Rust Foundation, wis diterbitake. Basa fokus ing safety memori, menehi Manajemen memori otomatis, lan menehi liya kanggo entuk podo tugas dhuwur tanpa nggunakake kolektor uwuh utawa runtime (runtime suda kanggo initialization dhasar lan pangopènan perpustakaan standar).

Manajemen memori otomatis Rust ngilangake kasalahan nalika manipulasi penunjuk lan nglindhungi saka masalah njedhul saka manipulasi memori tingkat kurang, kayata ngakses wilayah memori sawise wis dibebaske, null pointer dereferences, buffer overruns, etc. Kanggo nyebarake perpustakaan, mesthekake perakitan lan ngatur dependensi, proyek ngembangake manajer paket Cargo. Repositori crates.io didhukung kanggo hosting perpustakaan.

Inovasi utama:

  • Ing blok format baris, saliyane kemampuan sing kasedhiya sadurunge kanggo ngganti variabel sing kadhaptar kanthi jelas sawise baris kanthi nomer lan jeneng, kemampuan kanggo ngganti pengenal sewenang-wenang kanthi nambahake ekspresi "{identifier}" menyang baris dileksanakake. Contone: // Konstruksi sing didhukung sadurunge: println! ("Halo, {}!", get_person ()); println!("Halo, {0}!", get_person()); println!("Halo, {wong}!", wong = njaluk_wong()); // saiki sampeyan bisa nemtokake let person = get_person (); println!("Halo, {wong}!");

    Pengenal uga bisa ditemtokake langsung ing opsi format. let (jembarΓ©, tliti) = get_format (); kanggo (jeneng, skor) ing get_scores () {println!("{jeneng}: {skor: jembarΓ© $. presisi $}"); }

    Substitusi anyar bisa digunakake ing kabeh makro sing ndhukung definisi format string, kajaba makro "gupuh!". ing versi 2015 lan 2018 saka basa Rust, sing gupuh!("{ident}") dianggep minangka string biasa (ing Rust 2021 substitusi dianggo).

  • Prilaku std :: proses :: Struktur perintah ing platform Windows wis diganti supaya nalika nglakokake printah, kanggo alasan keamanan, ora katon maneh file eksekusi ing direktori saiki. Direktori saiki ora kalebu amarga bisa digunakake kanggo nglakokake kode ala yen program mbukak ing direktori sing ora dipercaya (CVE-2021-3013). Logika deteksi eksekusi anyar kalebu nggoleki direktori Rust, direktori aplikasi, direktori sistem Windows, lan direktori sing ditemtokake ing variabel lingkungan PATH.
  • Perpustakaan standar wis nambah jumlah fungsi sing ditandhani "#[must_use]" kanggo ngetokake bebaya yen nilai bali ora digatekake, sing mbantu ngenali kesalahan sing disebabake yen fungsi bakal ngganti nilai tinimbang ngasilake nilai anyar.
  • Bagean anyar saka API wis dipindhah menyang kategori stabil, kalebu cara lan implementasine sifat wis stabil:
    • Metadata::is_symlink
    • Path::is_symlink
    • {integer}::saturating_div
    • Pilihan:: unwrap_unchecked
    • Asil:: unwrap_unchecked
    • Asil:: unwrap_err_unchecked
  • Atribut "const", sing nemtokake kemungkinan nggunakake ing sembarang konteks tinimbang konstanta, digunakake ing fungsi:
    • Duration:: anyar
    • Duration::checked_add
    • Duration::saturating_add
    • Duration::checked_sub
    • Duration::saturating_sub
    • Duration::checked_mul
    • Duration::saturating_mul
    • Duration::checked_div
  • Diijini dereferencing saka "*const T" pointer ing konteks "const".
  • Ing manajer paket Cargo, kolom rust_version wis ditambahake menyang metadata paket, lan pilihan "--message-format" wis ditambahake menyang printah "instal kargo".
  • Compiler nindakake dhukungan kanggo mekanisme proteksi CFI (Control Flow Integrity), sing nambahake mriksa sadurunge saben telpon ora langsung kanggo ndeteksi sawetara wujud prilaku sing ora ditemtokake sing bisa nyebabake nglanggar urutan eksekusi normal (aliran kontrol) minangka asil saka nggunakake eksploitasi sing ngganti penunjuk sing disimpen ing memori ing fungsi.
  • Compiler wis nambahake dhukungan kanggo versi 5 lan 6 saka format perbandingan jangkoan LLVM, digunakake kanggo ngevaluasi jangkoan kode sajrone tes.
  • Ing kompiler, syarat kanggo versi minimal LLVM diunggahake dadi LLVM 12.
  • Dhukungan tingkat katelu kanggo platform x86_64-unknown-none wis dileksanakake. Tingkat katelu kalebu dhukungan dhasar, nanging tanpa tes otomatis, nerbitake bangunan resmi, utawa mriksa manawa kode kasebut bisa dibangun.

Kajaba iku, kita bisa nyathet publikasi Microsoft babagan rilis perpustakaan Rust kanggo Windows 0.30, sing ngidini sampeyan nggunakake basa Rust kanggo ngembangake aplikasi kanggo OS Windows. Set kalebu rong paket peti (windows lan windows-sys), sing bisa ngakses Win API ing program Rust. Kode kanggo support API kui dinamis saka metadata njlèntrèhaké API, sing ngijini sampeyan kanggo ngleksanakake support ora mung kanggo ana telpon Win API, nanging kanggo telpon sing bakal katon ing mangsa. Versi anyar nambah dhukungan kanggo platform target UWP (Universal Windows Platform) lan ngetrapake jinis Handle and Debug.

Source: opennet.ru

Add a comment