Rilis basa pemrograman Rust 2021 (1.56)

Rilis basa pemrograman sistem Rust 1.56, sing diadegake dening proyek Mozilla, nanging saiki dikembangake ing sangisore organisasi nirlaba independen Rust Foundation, wis diterbitake. Saliyane nomer versi biasa, rilis kasebut uga ditetepake Rust 2021 lan menehi tandha stabilisasi owah-owahan sing diusulake sajrone telung taun kepungkur. Rust 2021 uga bakal dadi dhasar kanggo nambah fungsi sajrone telung taun sabanjure, padha karo rilis Rust 2018 dadi dhasar pangembangan basa sajrone telung taun kepungkur.

Kanggo njaga kompatibilitas, pangembang bisa nggunakake label "2015", "2018" lan "2021" ing program, ngidini program bisa disambungake menyang irisan negara basa sing cocog karo edisi Rust sing dipilih. Edisi dikenalake kanggo misahake owah-owahan sing ora kompatibel lan dikonfigurasi ing metadata paket kargo liwat kolom "edisi" ing bagean "[paket]". Contone, edisi "2018" kalebu fungsi sing stabil ing pungkasan taun 2018 lan uga nyakup kabeh owah-owahan liyane sing ora ngrusak kompatibilitas. Edisi 2021 uga kalebu fitur interoperability-breaking sing diusulake ing rilis 1.56 saiki lan disetujoni kanggo implementasine ing mangsa ngarep. Saliyane basane dhewe, panyunting uga nggatekake kahanan piranti lan dokumentasi.

Incompatibilitas utama sing dicathet ing Rust 2021:

  • Jupuk Pisah ing Penutupan - Penutupan saiki bisa njupuk jeneng lapangan individu tinimbang kabeh pengenal. Contone, "|| kapak + 1" mung bakal dijupuk "kapak" tinimbang "a".
  • Sifat IntoIterator kanggo array: array.into_iter () ngijini sampeyan kanggo ngulang liwat unsur Uploaded dening nilai, tinimbang dening referensi.
  • Pangolahan ekspresi "|" wis diganti ing macro_rules (Boolean OR) ing pola - Spesifikator ": pat" ing pertandhingan saiki ngurmati "A | B".
  • Manajer paket kargo kalebu versi kapindho fitur solver kanthi standar, dhukungan sing muncul ing Rust 1.51.
  • Sipat TryFrom, TryInto lan FromIterator wis ditambahake menyang modul perpustakaan standar prelude.
  • Panic!(..) lan negesake!(expr, ..) makro saiki tansah nggunakake format_args!(..) kanggo format strings, padha karo println!().
  • Ekspresi ident#, identΒ»..." lan ident'...' dicawisake ing sintaks basa.
  • Dipindhah bare_trait_objects lan ellipsis_inclusive_range_patterns bebaya kanggo kasalahan.

Anyar ing Rust 1.56:

  • Ing Cargo.toml, ing bagean "[paket]", lapangan versi karat wis ditambahake, sing bisa nemtokake versi minimal sing didhukung Rust kanggo paket peti. Yen versi saiki ora cocog karo parameter sing ditemtokake, Cargo bakal mandheg nggarap pesen kesalahan.
  • Nalika pola cocog nggunakake ekspresi "naleni @ pola", support diwenehake kanggo nemtokake bindings tambahan (contone, "ayo matriks @ Matrix {row_len, ..} = get_matrix ();").
  • Bagean anyar saka API wis dipindhah menyang kategori stabil, kalebu cara lan implementasine sifat wis stabil:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • inti::panik::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec:: shrink_to
    • String:: shrink_to
    • OsString::shrink_to
    • PathBuf:: shrink_to
    • BinaryHeap:: shrink_to
    • VecDeque:: shrink_to
    • HashMap:: shrink_to
    • HashSet:: shrink_to
  • Atribut "const", sing nemtokake kemungkinan nggunakake ing konteks apa wae tinimbang konstanta, digunakake ing fungsi.
    • std::mem::transmute
    • [T]:: pisanan
    • [T]:: pamisah_pisanan
    • [T]:: pungkasan
    • [T]::split_last
  • Compiler wis dialihake nggunakake LLVM versi 13.
  • Dhukungan tingkat kapindho wis ditindakake kanggo platform aarch64-apple-ios-sim lan tingkat katelu kanggo platform powerpc-unknown-freebsd lan riscv32imc-esp-espidf. Tingkat katelu kalebu dhukungan dhasar, nanging tanpa tes otomatis, nerbitake bangunan resmi, utawa mriksa manawa kode kasebut bisa dibangun.

Elinga yen Rust fokus ing safety memori, menehi Manajemen memori otomatis, lan menehi liya kanggo entuk podo dhuwur ing eksekusi proyek tanpa nggunakake 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.

Source: opennet.ru

Add a comment