Basa pemrograman Rust 1.47 release

diterbitake release 1.47 saka basa pemrograman sistem Rust, didegaké déning proyèk Mozilla. Basa fokus ing safety memori, menehi Manajemen memori otomatis, lan menehi liya kanggo entuk podo tugas dhuwur tanpa nggunakake tukang sampah и runtime (runtime boils mudhun 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. Pangatur paket dikembangake kanggo nyebarake perpustakaan, mesthekake perakitan lan ngatur dependensi dening proyek kasebut. Cargo. Repositori didhukung kanggo dadi tuan rumah perpustakaan peti.io.

Utama inovasi:

  • Dilaksanakake dhukungan kanggo jinis susunan ukuran sembarang. Sadurunge, amarga ora bisa nemtokake fungsi umum kanggo kabeh nilai integer, perpustakaan standar nyedhiyakake dhukungan sifat sing dibangun mung kanggo susunan nganti 32 ukuran unsur (sipat saben ukuran ditetepake kanthi statis). Thanks kanggo nggawe fungsi generik konstan ("const generics"), mula bisa kanggo nemtokake fungsi umum kanggo ukuran array, nanging durung kalebu ing fitur basa sing stabil, sanajan wis dileksanakake ing kompiler lan saiki melu ing perpustakaan standar kanggo sipat Uploaded saka sembarang ukuran.

    Contone, konstruksi ing ngisor iki ing Rust 1.47 bakal nyithak isi array, sanajan sadurunge bakal nyebabake kesalahan:

    fn utama() {
    supaya xs = [0; 34];

    println!("{:?}", xs);
    }

  • Nyedhiyakake output jejak sing luwih cendhek (backtrace), output ing kahanan darurat. Unsur sing ora kapentingan ing paling kahanan, nanging clutter output lan disambi manungsa waé saka panyebab utami saka masalah, tilar saka tilak. Kanggo ngasilake tilak lengkap, sampeyan bisa nggunakake variabel lingkungan "RUST_BACKTRACE = lengkap". Contone, kanggo kode

    fn utama() {
    geger!();
    }

    Sadurunge, tilak wis output ing 23 orane tumrap sekolah, nanging saiki bakal suda kanggo
    3 langkah sing ngidini sampeyan langsung ngerti inti:

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

  • Compiler rustc wis dianyari kanggo mbangun nggunakake LLVM 11 (Karat nggunakake LLVM minangka backend kanggo generasi kode). Ing wektu sing padha, kemampuan kanggo mbangun karo LLVM lawas, nganti versi 8, ditahan, nanging kanthi standar (ing karat-lang/llvm-proyek) saiki nggunakake LLVM 11. LLVM 11 samesthine bakal dirilis ing dina sing bakal teka.
  • Ing platform Windows, compiler rustc nyedhiyakake dhukungan kanggo mbisakake mriksa integritas aliran kontrol (Control Flow Guard), diaktifake nggunakake bendera "-C control-flow-guard". Ing platform liyane, gendera iki ora digatekake saiki.
  • Bagean API anyar wis ditransfer menyang kategori stabil, kalebu stabil
    Identitas::new_raw,
    Range::is_kosong,
    RangeInclusive::is_kosong,
    Hasil::as_deref,
    Hasil::as_deref_mut,
    Vec:: bocor,
    pointer::offset_saka,
    f32::TAU
    f64::TAU.

  • Atribut "const", sing nemtokake kemungkinan nggunakake ing konteks apa wae tinimbang konstanta, digunakake ing metode:
    • anyar kanggo kabeh integer liyane saka nul;
    • dicenthang_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub lan saturating_mul kanggo kabeh wilangan bulat;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_huruf cilik, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace lan is_ascii_control kanggo jinis char lan u8.
  • Kanggo FreeBSD melu toolkit saka FreeBSD 11.4 (FreeBSD 10 ora ndhukung LLVM 11).

Source: opennet.ru

Add a comment