Lingua di prugrammazione Rust versione 1.34

hè accadutu liberazione di lingua di prugrammazione di u sistema Ruggine 1.34, sviluppatu da u prughjettu Mozilla. A lingua fucalizza nantu à a sicurità di a memoria, furnisce una gestione automatica di memoria, è furnisce un mezzu per ottene un altu parallelismu di u travagliu senza usà un cullettore di basura o runtime.

A gestione automatica di a memoria di Rust libera u sviluppatore da a manipulazione di u puntatore è prutegge da i prublemi derivanti da a manipulazione di a memoria di livellu bassu, cum'è l'accessu à a memoria dopu, i dereferences di puntatori nulli, i buffer overruns, è simili. Un gestore di pacchetti hè sviluppatu per distribuisce biblioteche, assicurà l'assemblea è gestisce e dipendenze da u prugettu. Cargo, chì permette di ottene e librerie necessarie per u prugramma in un clic. Un repository hè supportatu per ospitare biblioteche crates.io.

menu innovazioni:

  • U gestore di pacchetti Cargo hà aghjustatu arnesi per travaglià cù registri di pacchetti alternativi chì ponu coexiste cù u registru publicu crates.io. Per esempiu, i sviluppatori di l'applicazioni pruprietariu ponu avà usà u so propiu registru privatu, chì pò esse usatu quandu elencu dipendenze in Cargo.toml, è applicà un mudellu di versioning simili à crates.io per i so prudutti, è ancu riferite dipendenze à i dui crati. io è à u vostru propiu registru.

    Per aghjunghje registri esterni à .cargo/config (situatu in $HOME o in u cartulare di u pacchettu)
    furnitu sezione "[registri]", è per utilizà un registru esternu, l'opzione "registru" hè apparsu in a descrizzione di ogni dependenza in Cargo.toml. Per cunnette à un registru supplementu, simpricimenti mette u token di autentificazione in u ~/.cargo/credentials file è eseguite u cumandimu.
    "cargo login --registry=my-registry" è per publicà un pacchettu -
    "cargo publish -registry=my-registry";

  • Hè aghjuntu un supportu tutale per l'usu di l'operatore "?". in testi doctests, chì vi permette di utilizà un codice esempiu da a documentazione cum'è testi. Operatore prima
    "?" puderia esse usatu per trattà l'errori durante l'esekzione di a prova solu in presenza di a funzione "fn main()" o in e funzioni "#[test]";

  • In attributi persunalizati definiti cù macros procedurali assicuratu l'abilità di utilizà insemi arbitrarii di tokens ("#[attr($tokens)]", "#[attr[$tokens]] è #[attr{$tokens}]"). Nanzu, l'elementi puderanu esse specificati solu in un arbre / forma recursiva usendu letterali di stringa, per esempiu "#[foo(bar, baz(quux, foo = "bar")]", ma avà hè pussibule aduprà enumerazioni (' #[range(0. .10)]') è custruzzioni cum'è "#[bound(T: MyTrait)]";
  • Tipi stabilizzati (caratteru) Pruvate da и Pruvate Into, chì permette cunversione di tipu cù a gestione di l'errore. Per esempiu, metudi cum'è from_be_bytes cù tipi interi utilizanu arrays cum'è input, ma i dati spessu venenu in un tipu Slice, è a cunversione trà arrays è fette hè problematicu per fà manualmente. Cù l'aiutu di novi tratti, l'operazione specificata pò esse realizatu nantu à a mosca attraversu una chjama à .try_into(), per esempiu, "let num = u32::from_be_bytes(slice.try_into()?)". Per e cunversione chì sempre riescenu (per esempiu, da u tipu u8 à u32), un tipu d'errore hè statu aghjuntu Infallible, chì permette un usu trasparente
    TryFrom per tutte l'implementazioni esistenti di "From";

  • A funzione hè stata deprecata CommandExt::before_exec, chì hà permessu di eseguisce un gestore prima di eseguisce exec, chì hè stata eseguita in u cuntestu di un prucessu di u zitellu forked dopu a chjama di fork (). In tali cundizioni, certi risorsi di u prucessu parentale, cum'è i descrittori di fugliali è i zoni di memoria mappati, puderanu esse duplicati, chì puderanu purtà à un cumpurtamentu indefinitu è ​​un funziunamentu incorrectu di biblioteche.
    Hè ricumandemu di utilizà una funzione micca sicura invece di before_exec CommandExt::pre_exec.

  • Tipi interi atomici stabilizzati firmati è senza firmati chì varienu in grandezza da 8 à 64 bit (per esempiu, AtomicU8), è ancu i tipi firmati NonZeroI[8|16|32|64|128].
  • Una nova parte di l'API hè stata spustata in a categuria stabile, cumprese Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] è i ​​metudi SystemTime sò stati stabilizati ::checked_[add|sub]. E funzioni iter::from_fn è iter::successori sò stati stabilizati;
  • Per tutti i tipi interi, i metudi checked_pow, saturating_pow, wrapping_pow è overflowing_pow sò implementati;
  • Aggiunta l'abilità di attivà ottimisazioni in u stadiu di ligame specificendu l'opzione di creazione "-C linker-plugin-lto".

Source: opennet.ru

Add a comment