Basa pemrograman Rust 1.47 release

Rilis 1.47 saka basa pemrograman sistem Rust, sing diadegake dening proyek Mozilla, 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:

  • Dhukungan sing diimplementasikake kanggo sipat kanggo susunan ukuran sing kasepakatan. Sadurunge, amarga ora bisa nemtokake fungsi umum kanggo kabeh nilai integer, perpustakaan standar nyedhiyakake dhukungan sifat sing dibangun mung kanggo array nganti 32 ukuran unsur (sipat saben ukuran ditetepake kanthi statis). Thanks kanggo nggawe fungsi generik const, dadi bisa kanggo nemtokake fungsi umum kanggo ukuran array, nanging durung kalebu ing fitur stabil saka basa, sanajan lagi dipun ginakaken ing compiler lan saiki digunakake ing perpustakaan standar. kanggo jinis array saka ukuran apa wae.
    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, jejak kasebut diluncurake ing 23 tahap, nanging saiki bakal dikurangi dadi 3 tahap, supaya sampeyan bisa langsung ngerteni 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 (Rust nggunakake LLVM minangka backend kanggo generasi kode). Ing wektu sing padha, kemampuan kanggo mbangun karo LLVM lawas, nganti versi 8, ditahan, nanging kanthi gawan (ing rust-lang/llvm-project) saiki digunakake LLVM 11. Rilis LLVM 11 samesthine bakal teka. dina.
  • 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.
  • Bagian anyar saka API wis ditransfer menyang kategori stabil, kalebu stabil Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from , f32:: TAU lan f64::TAU.
  • Atribut "const", sing nemtokake kemungkinan nggunakake ing konteks apa wae tinimbang konstanta, digunakake ing metode:
    • anyar kanggo kabeh integer liyane saka nul;
    • checked_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, toolkit saka FreeBSD 11.4 digunakake (FreeBSD 10 ora ndhukung LLVM 11).

Dijupuk saka opennet.ru

Source: linux.org.ru

Add a comment