Basa pemrograman Rust 1.34 release

dumadi release basa pemrograman sistem Karat 1.34, dikembangake dening proyek Mozilla. Basa fokus ing safety memori, menehi Manajemen memori otomatis, lan menehi liya kanggo entuk podo tugas dhuwur tanpa nggunakake kolektor uwuh utawa runtime.

Manajemen memori otomatis Rust mbebasake pangembang saka manipulasi pointer lan nglindhungi saka masalah sing muncul saka manipulasi memori tingkat rendah, kayata akses memori sawise-free, dereferensi null pointer, overruns buffer, lan liya-liyane. Pangatur paket dikembangake kanggo nyebarake perpustakaan, mesthekake perakitan lan ngatur dependensi dening proyek kasebut. Cargo, ngidini sampeyan entuk perpustakaan sing dibutuhake kanggo program ing siji klik. Repositori didhukung kanggo dadi tuan rumah perpustakaan peti.io.

Utama inovasi:

  • Manajer paket Cargo wis nambahake alat kanggo nggarap registri paket alternatif sing bisa urip bebarengan karo registri umum crates.io. Contone, pangembang aplikasi kepemilikan saiki bisa nggunakake registri pribadi dhewe, sing bisa digunakake nalika nyathet dependensi ing Cargo.toml, lan nggunakake model versi sing padha karo crates.io kanggo produke, uga ngrujuk dependensi menyang peti kasebut. io lan menyang registri sampeyan dhewe.

    Kanggo nambah registri eksternal menyang .cargo/config (dumunung ing $HOME utawa ing direktori paket)
    diwenehake bagean "[registries]", lan nggunakake pendaptaran external, wis katon pilihan "registri" ing gambaran saka saben dependensi ing Cargo.toml. Kanggo nyambung menyang registri tambahan, mung nyelehake token otentikasi ing file ~/.cargo/credentials banjur jalanake perintah kasebut.
    "login kargo --registry=my-registry" lan nerbitake paket -
    "cargo publish -registry=my-registry";

  • Ditambahake dhukungan lengkap kanggo nggunakake operator "?". ing tes doctests, ngidini sampeyan nggunakake conto kode saka dokumentasi minangka tes. Operator sadurunge
    "?" bisa digunakake kanggo nangani kasalahan sak eksekusi test mung ing ngarsane "fn utama ()" fungsi utawa ing "# [test]" fungsi;

  • Ing atribut khusus sing ditetepake nggunakake makro prosedural dijamin kemampuan kanggo nggunakake set sembarang token (β€œ#[attr($token)]”, β€œ#[attr[$token]] lan #[attr{$token}]”). Sadurunge, unsur mung bisa ditemtokake ing wangun wit / rekursif nggunakake string literals, contone "#[foo(bar, baz(quux, foo = "bar"))]", nanging saiki bisa nggunakake enumerasi (' #[range(0. .10)]') lan konstruksi kaya β€œ#[bound(T: MyTrait)]”;
  • Tipe stabil (sifat) Coba Saka ΠΈ Coba Into, ngidini konversi jinis kanthi penanganan kesalahan. Contone, cara kaya from_be_bytes karo jinis integer nggunakake larik minangka input, nanging data asring teka ing jinis Slice, lan Ngonversi antarane larik lan irisan masalah kanggo nindakake kanthi manual. Kanthi bantuan saka sipat anyar, operasi kasebut bisa dileksanakake ing fly liwat telpon kanggo .try_into (), Contone, "ayo num = u32 :: from_be_bytes (slice.try_into ()?)". Kanggo konversi sing tansah sukses (contone, saka jinis u8 kanggo u32), jinis kesalahan wis ditambahake Kasedhiya, ngidini panggunaan transparan
    TryFrom kanggo kabeh implementasine "Saka" sing wis ana;

  • Fungsi wis ora digunakake CommandExt::before_exec, sing diijini handler dileksanakake sadurunge mlaku exec, kang kaleksanan ing konteks proses anak forked sawise garpu () telpon. Ing kahanan kasebut, sawetara sumber daya proses induk, kayata deskriptor file lan area memori sing dipetakan, bisa diduplikasi, sing bisa nyebabake prilaku sing ora ditemtokake lan operasi perpustakaan sing ora bener.
    Disaranake nggunakake fungsi sing ora aman tinimbang before_exec CommandExt:: pre_exec.

  • Jinis integer atom sing ditandatangani lan sing ora ditandatangani kanthi ukuran saka 8 nganti 64 bit (contone, AtomU8), uga jinis sing ditandatangani NonZeroI[8|16|32|64|128].
  • Bagean API anyar wis dipindhah menyang kategori stabil, kalebu Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] lan metode SystemTime wis distabilake ::checked_[add|sub]. Fungsi iter :: from_fn lan iter :: penerus wis stabil;
  • Kanggo kabeh jinis integer, cara checked_pow, saturating_pow, wrapping_pow lan overflowing_pow;
  • Nambahake kemampuan kanggo ngaktifake optimasi ing tahap ngubungake kanthi nemtokake opsi mbangun "-C linker-plugin-lto".

Source: opennet.ru

Add a comment