Rust 1.58 Programming Language Release

Pelepasan basa pamrograman tujuan umum Rust 1.58, diadegkeun ku proyék Mozilla, tapi ayeuna dikembangkeun dina naungan organisasi nirlaba bebas Rust Foundation, parantos diterbitkeun. Basa museurkeun kana kaamanan memori, nyadiakeun manajemén memori otomatis, jeung nyadiakeun sarana pikeun ngahontal paralelisme tugas tinggi tanpa ngagunakeun collector sampah atanapi runtime (runtime diréduksi jadi initialization dasar tur pamaliharaan perpustakaan baku).

Manajemén mémori otomatis Rust ngaleungitkeun kasalahan nalika ngamanipulasi pointer sareng ngajagi tina masalah anu timbul tina manipulasi mémori tingkat rendah, sapertos aksés ka daérah mémori saatos dibébaskeun, dereferensi pointer nol, overruns panyangga, jsb. Pikeun ngadistribusikaeun perpustakaan, mastikeun assembly jeung ngatur kagumantungan, proyék ieu ngamekarkeun manajer pakét Cargo. Repositori crates.io dirojong pikeun perpustakaan hosting.

Inovasi utama:

  • Dina blok pormat garis, sajaba ti kamampuhan saméméhna sadia pikeun ngagantikeun variabel eksplisit didaptarkeun sanggeus garis ku angka jeung ngaran, kamampuhan pikeun ngaganti identifiers sawenang ku nambahkeun ekspresi "{identifier}" kana garis dilaksanakeun. Contona: // Konstruksi anu dirojong saméméhna: println! ("Halo, {}!", get_person ()); println!("Halo, {0}!", get_person()); println!("Halo, {jalma}!", jalma = get_person()); // ayeuna anjeun tiasa nangtukeun let person = get_person (); println!("Halo, {jalma}!");

    Identifiers ogé bisa dieusian langsung dina pilihan pormat. hayu (lebar, precision) = get_format (); pikeun (ngaran, skor) dina get_scores () {println!("{ngaran}: {skor: rubak $. precision $}"); }

    Substitusi anyar tiasa dianggo dina sadaya makro anu ngadukung definisi format string, kecuali "panik!" dina versi 2015 sareng 2018 tina basa Rust, dimana panik!("{ident}") diperlakukeun salaku string biasa (dina Rust 2021 substitusi jalan).

  • Paripolah std :: prosés :: Struktur paréntah dina platform Windows parantos dirobih ku kituna nalika ngalaksanakeun paréntah, kusabab alesan kaamanan, éta henteu deui milarian file anu tiasa dieksekusi dina diréktori ayeuna. Diréktori ayeuna teu kaasup sabab bisa dipaké pikeun ngaéksekusi kode jahat lamun program dijalankeun dina diréktori teu dipercaya (CVE-2021-3013). Logika deteksi laksana anyar ngalibatkeun milarian diréktori Rust, diréktori aplikasi, diréktori sistem Windows, sareng diréktori anu ditetepkeun dina variabel lingkungan PATH.
  • Perpustakaan standar parantos ngalegaan jumlah fungsi anu ditandaan "#[must_use]" pikeun ngaluarkeun peringatan upami nilai balikna dipaliré, anu ngabantosan ngaidentipikasi kasalahan anu disababkeun ku nganggap hiji fungsi bakal ngarobih nilai tinimbang ngabalikeun nilai énggal.
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • Metadata::is_symlink
    • Path::is_symlink
    • {integer}::saturating_div
    • Pilihan:: unwrap_unchecked
    • Hasil:: unwrap_unchecked
    • Hasil:: unwrap_err_unchecked
  • Atribut "const", anu nangtukeun kamungkinan ngagunakeunana dina konteks naon waé tinimbang konstanta, dianggo dina fungsi:
    • Duration:: anyar
    • Durasi::checked_add
    • Lilana::saturating_add
    • Durasi::checked_sub
    • Durasi::saturating_sub
    • Durasi::checked_mul
    • Duration::saturating_mul
    • Durasi::checked_div
  • Diidinan dereferencing tina "* const T" pointers dina konteks "const".
  • Dina manajer pakét Kargo, widang rust_version geus ditambahkeun kana metadata pakét, sarta pilihan "--message-format" geus ditambahkeun kana paréntah "cargo install".
  • Kompiler ngalaksanakeun dukungan pikeun mékanisme panyalindungan CFI (Control Flow Integrity), anu nambihan cek sateuacan unggal telepon teu langsung pikeun ngadeteksi sababaraha bentuk paripolah anu teu jelas anu berpotensi ngakibatkeun palanggaran tatanan palaksanaan normal (aliran kontrol) salaku hasil tina pamakéan exploits nu ngarobah pointers disimpen dina mémori on fungsi.
  • Kompiler parantos nambihan dukungan pikeun vérsi 5 sareng 6 tina format perbandingan sinyalna LLVM, anu dianggo pikeun ngévaluasi sinyalna kode salami tés.
  • Dina kompiler, sarat pikeun vérsi minimum LLVM diangkat ka LLVM 12.
  • Tingkat katilu pangrojong pikeun x86_64-unknown-euweuh platform geus dilaksanakeun. Tingkat katilu ngawengku rojongan dasar, tapi tanpa nguji otomatis, penerbitan resmi ngawangun, atawa mariksa naha kode bisa diwangun.

Salaku tambahan, urang tiasa nyatet publikasi Microsoft ngeunaan sékrési Rust pikeun perpustakaan Windows 0.30, anu ngamungkinkeun anjeun ngagunakeun basa Rust pikeun ngembangkeun aplikasi pikeun OS Windows. set teh ngawengku dua bungkusan crate (jandela jeung windows-sys), ngaliwatan nu bisa ngakses Win API dina program Rust. Kodeu pikeun rojongan API dihasilkeun dinamis tina metadata ngajéntrékeun API, nu ngidinan Anjeun pikeun nerapkeun rojongan teu ukur keur aya panggero API Win, tapi pikeun panggero anu bakal muncul dina mangsa nu bakal datang. Versi anyar nambihan dukungan pikeun platform target UWP (Universal Windows Platform) sareng ngalaksanakeun jinis Handle and Debug.

sumber: opennet.ru

Tambahkeun komentar