Rust 1.47 Programming Language Release

Ngaleupaskeun 1.47 tina basa programming Sistim Rust, diadegkeun ku proyék Mozilla, geus 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 ngaksés daérah mémori saatos dibébaskeun, dereferences pointer null, 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:

  • Dilaksanakeun rojongan pikeun Tret pikeun arrays tina ukuran sawenang. Saméméhna, alatan henteu mampuh pikeun nangtukeun fungsi generik pikeun sakabéh nilai integer, perpustakaan baku nyadiakeun diwangun-di rojongan tret ngan pikeun arrays nepi ka 32 elemen dina ukuranana (Tret pikeun tiap ukuran anu statically tangtu). Hatur nuhun kana kreasi pungsionalitas const generics, janten mungkin keur ngartikeun fungsi generik pikeun sagala ukuran Asép Sunandar Sunarya, tapi maranéhna teu acan kaasup kana fitur stabil tina basa, sanajan aranjeunna dilaksanakeun dina compiler tur ayeuna dipaké dina perpustakaan baku. pikeun jenis Asép Sunandar Sunarya ukuran naon.
    Salaku conto, konstruksi di handap ieu dina Rust 1.47 bakal nyitak eusi array, sanaos sateuacana bakal nyababkeun kasalahan:

fn utama() {
hayu xs = [0; 34];
println!("{:?}", xs);
}

  • Disadiakeun kaluaran tina ngambah pondok (backtrace), kaluaran dina kaayaan darurat. Unsur anu teu dipikaresep dina kalolobaan kaayaan, tapi clutter kaluaran jeung ngaganggu perhatian ti ngabalukarkeun primér masalah, anu kaasup ti renik. Pikeun mulangkeun jejak pinuh, anjeun tiasa nganggo variabel lingkungan "RUST_BACKTRACE = pinuh". Contona, pikeun kode

fn utama() {
panik!();
}

Saméméhna, renik kaluaran dina 23 tahap, tapi ayeuna bakal diréduksi jadi 3 tahap, ngamungkinkeun anjeun langsung nangkep hakekat:

thread 'utama' panik di 'panik eksplisit', src/main.rs:2:5
tumpukan backtrace:
0: std:: panik:: begin_panic
di /rustc/d…d75a/library/std/src/panicking.rs:497
1: tempat kaulinan:: utama
di ./src/main.rs:2
2: inti :: ops :: fungsi :: FnOnce :: call_once
di /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Kompiler rustc parantos diropéa pikeun ngawangun nganggo LLVM 11 (Rust nganggo LLVM salaku backend pikeun generasi kode). Dina waktu nu sarua, kamampuhan pikeun ngawangun kalawan LLVM heubeul, nepi ka versi 8, dipikagaduh, tapi sacara standar (dina karat-lang / llvm-proyék) ayeuna dipaké LLVM 11. Pelepasan LLVM 11 diperkirakeun datang. poé.
  • Dina platform Windows, kompiler rustc nyayogikeun dukungan pikeun ngaktipkeun cék integritas aliran kontrol (Control Flow Guard), diaktipkeun nganggo bandéra "-C control-flow-guard". Dina platform anu sanés, bandéra ieu teu dipaliré ayeuna.
  • Bagian anyar API geus dialihkeun ka kategori stabil, kaasup stabilized Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from , f32:: TAU jeung f64::TAU.
  • Atribut "const", anu nangtukeun kamungkinan ngagunakeunana dina konteks naon waé tinimbang konstanta, dianggo dina metode:
    • anyar pikeun sakabéh integer lian ti enol;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub na saturating_mul pikeun sakabéh integer;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace and is_ascii_control pikeun tipe char jeung u8.
  • Pikeun FreeBSD, toolkit ti FreeBSD 11.4 dianggo (FreeBSD 10 henteu ngadukung LLVM 11).

Dicokot ti opennet.ru

sumber: linux.org.ru

Tambahkeun komentar