Što je novo u Rustu 1.48

Jedinstveni pristup programskog jezika Rust rezultira boljim kodom s manje kompromisa od C, C ++, Go i ostalih jezika koje vjerojatno koristite. Također se redovito ažurira, često svakog mjeseca.

Gdje preuzeti najnoviju verziju Rusta

Ako već imate instaliranu prethodnu verziju Rust-a rustup, najnovijoj verziji možete pristupiti putem sljedeće naredbe:

$ rustup ažuriranje stabilno

Povezani video: Razvoj sigurnijeg softvera s Rustom

Brzo ubrzajte na novoj Rust, dizajniranoj za stvaranje brzog softvera na razini sustava. Ovaj dvominutni animirani objašnjavač pokazuje kako Rust zaobilazi zabrinjavajuća programska pitanja memorije i upravljanja.

Nove značajke u Rustu 1.48.0

Predstavljen 19. studenoga 2020., Rust 1.48.0 sadrži lakše povezivanje u alatu za dokumentaciju Rustdoc biblioteke, sa sintaksom kako bi Rustdoc znao kada se programeri pokušavaju povezati s nekom vrstom; Generirat će se URL-ovi. Također u verziji 1.48.0:

  • Programeri mogu odrediti #{doc(alias = “”) ]stavke za dodavanje pseudonima pretraživanja prilikom pretraživanja putem korisničkog sučelja Rustdoc.
  • unsafeKljučna riječ je sada sintaktički dopušteni na modulima. Iako je i dalje semantički odbijeno, ovo se sada može raščlaniti pomoću proceduralnih makronaredbi.
  • U kompajleru je -C link-self-contained=zastavica kompajlera stabilizirana. To govori rustctreba li povezati vlastito vrijeme izvođenja C i knjižnice ili se oslanjati na vanjski povezivač da ih pronađe. To je podržano samo na windows-gnu, linux-musli wasiplatforme.
  • U knjižnici je API sada stabilan. Programeri ga mogu koristiti za pokušaj pretvaranja vektora u niz zadane duljine. Također stabiliziralo u ovom izdanju su još pet API: , , , , i .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • Također se u knjižnici sada implementiraju svi nizovi bilo koje duljine .TryFrom

Nove značajke u Rustu 1.47.0

Najavljen 8. listopada 2020., Rust 1.47.0 nema novih jezičnih značajki, ali poboljšava standardnu ​​knjižnicu. U izdanju su predstavljena poboljšanja kvalitete života i lanca alata, kao i stabilizacija knjižnice. Za nadogradnju su objavljene napomene o izdanju.

Specifične mogućnosti Rusta 1.47.0 uključuju:

  • Značajka "const generički" koja utječe na osobine na većim nizovima. Značajku još treba stabilizirati. Rustu je nedostajao način da bude generički nad cijelim vrijednostima, što je uzrokovalo probleme s nizovima. Namjera je ove mogućnosti riješiti ovaj problem i učiniti nizove korisnijima.
  • Nadogradnja infrastrukture kompajlera LLVM 11, što je čini zadanom.
  • Kraće povratne kopije, što olakšava pronalaženje problema.
  • rustcsada podržava -C control-flow-guard, opcija koja će uključiti sigurnosnu sposobnost Control Flow Guard u sustavu Windows. Ostale platforme ignoriraju ovu zastavu.
  • Rustdoc sada podržava temu Ayu.
  • Stabilizirano je devet API-ja u standardnoj knjižnici: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from, f32 :: TAU, i f64 :: TAU. 

Nove značajke u 1.46.0

Rust 1.46, najavljen 27. kolovoza 2020., uključuje sljedeće mogućnosti:

  • Nekoliko značajki jezgra jezika sada se može koristiti u const fn, uključujući if, if letmatch, i nekoliko drugih.
  • #[track_caller]Atribut, osmišljen kako bi poboljšali poruka o pogrešci kada unwrapi srodne funkcije paniku, sada je stabilno.
  • Kao promjena u knjižnici, std::mem::forgetsada je const fn. Također u knjižnici su stabilizirana dva nova API-ja: Option::zipi vec::Drain::as_slice.
  • Za kompajler, citylibcilj se može koristiti na Apple iOS i tvOS platformama.
  • Rekurzivno indeksiranje u korijene više ne zahtijeva zagrade.

Nove značajke u Rustu 1.45.0

Najavljen 16. srpnja 2020., Rust 1.45 uključuje sljedeće dodatke i poboljšanja:

  • Ponuđen je popravak da se ispravi neka dugotrajna nerazumnost prilikom lijevanja između cjelobrojnih i plutajućih brojeva.
  • Stabilizacija se nudi za proceduralne makronaredbe nalik funkcijama u izrazima, uzorcima i iskazima. Proširenje upotrebe makronaredbi pomaže korištenjem Rocket web okvira za Rust.
  • Nekoliko knjižnica API-ja su stabilizirane, kao što su Arc::as_ptr, BTreeMap::remove_entryi Span::resolved_at. Cjelovit popis API-ja možete pronaći na blogu Rust.

Nove značajke u Rustu 1.43.1

Ovo je puštanje uvedeno 7. svibnja 2020. radi rješavanja dvije regresije uvedene u stabilnom izdanju 1.43.0. Također ažurira verziju OpenSSL koju koristi upravitelj paketa Cargo. Značajke uključuju:

  • Rust 1.27 uveo je podršku za otkrivanje x86 CPU značajki u standardnoj knjižnici, putem is_x86_feature_detected makronaredbe. Zbog internog refaktoriranja, Rust 1.43.0 spriječio je otkrivanje značajki koje se još ne mogu koristiti na stabilnom, iako je prethodno bilo dopušteno njihovo otkrivanje. Verzija 1.43.1 popravlja ovu regresiju.
  • Ponuđen je popravak za slomljenu cargo package –list naredbu. Rust 1.43 prekinuo je podršku za popis datoteka uključenih u pakete objavljene u Cargou, kada se izvršava u radnom prostoru s ovisnostima o putanji ili neobjavljenim verzijama.
  • OpenSSL, ovisnost o Cargou, ažuriran je na 1.1.1g. OpenSSL je objavio sigurnosni savjet, ali Rust tim nije uspio na vrijeme uključiti popravak za Rust 1.43.0. Tim nema dokaza da bi ranjivost mogla ugroziti sigurnost korisnika tereta.

Nove značajke u Rustu 1.43.0

Najavljen 23. travnja 2020., Rust 1.43.0 smatran je prilično malim izdanjem, bez uvođenja većih značajki. Promjene uključuju:

  • Programeri mogu koristiti itemfragmente interpolirati predmeta u tijelo trait, impli externblokova.
  • Poboljšano je zaključivanje tipa oko primitiva, referenci i binarnih operacija.
  • Da bi pomogao integracijskom testiranju, Cargo će postaviti neke nove varijable okruženja za testove kako bi pronašao izvršne datoteke.
  • U biblioteci Rust programeri mogu izravno koristiti pridružene konstante na plutajućim i cijelim brojevima bez potrebe za uvozom modula. Također, postoji novi primitivemodul koji ponovno izvozi primitivne tipove Rust, što je korisno pri pisanju makronaredbe, a programeri žele osigurati da tipovi nisu zasjenjeni.
  • Nekoliko API u knjižnici stabilizirani su: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, i iter::once_with.

Nove značajke u Rustu 1,41

Nove značajke u Rustu 1,38

Rust 1.38, objavljen u rujnu 2019., sadrži sljedeće nove značajke i poboljšanja:

  • Upravitelj paketnog tereta iskoristit će prednost kompiliranja cjevovoda automatski s Rustom 1,38. S cjevovodnom kompilacijom, prevoditelju nisu potrebne potpuno izgrađene ovisnosti prilikom sastavljanja sanduka. Sve što su potrebni su njihovi metapodaci, poput popisa vrsta ovisnosti. Metapodaci se proizvode rano u procesu sastavljanja. Neki su testovi pokazali povećanje brzine sastavljanja za 10 do 20 posto za optimizirane, čiste izrade nekih grafova sanduka. 
  • Linting of some incorrect uses of mem::{unitialized, zeroed}. With this release, the rustc compiler will provide a lint for a narrow class of incorrect initializations using mem::uninitialized or mem::zeroed.
  • Extension of the #[deprecated] attribute to macros. This attribute has allowed crate authors to notify users that an item of their crate is to be deprecated and removed in a future release.
  • Developers can use std::any::type_name to get the name of a type.
  • Stabilization of a number of functions including ::cast and ::cast.

The new features in Rust 1.37

Rust 1.37, released in August 2019, has the following new features and improvements:

  • An ability to refer to enum variants through type. Developers also can refer to enum variants with Self::Variant.
  • The cargo vendor command, previously a separate crate, is now built in to the language. The command fetches project dependencies, unpacks them into the vendordirectory, and displays the configuration snippet needed to use the vendored code during builds.
  • The rustc compiler supports profile-guided optimization, an optimizing technique for ahead-of-time compilers, via -C profile-generate and -C profile-use.
  • Developers can create unnamed const items.

The new features in Rust 1.36

Version 1.36 of the Rust systems programming language was released in July 2019. Rust 1.36 includes the following new features and enhancements:

  • The Future trait, used for declaring asynchronous work, is now stable. Asynchronous operations in Rust have been coming together in bits and pieces for several versions now, with async and await being the last important remaining pieces.
  • The alloc crate, used for managing memory, is now stable. This crate collects all of the pieces of Rust’s standard library that depend on a global memory allocation mechanism, such as Vec. This way, crates that don’t use the standard library can still make use of the allocator by importing alloc separately—useful for environments where you want code sizes to be as lean as possible.
  • A new type, MaybeUninit, allows you to define objects that may consist of uninitialized memory, such as a lazily allocated array. Rust’s previous mechanism for doing this was a function, mem::uninitialized, that posed many hazards in casual use. MaybeUninit provides a safer way to do this that uses the constraints of Rust’s type system.
  • Non-lexical lifetimes, a feature for recent editions of Rust, has been backported to earlier editions. Non-lexical lifetimes make Rust’s borrow-checking mechanism less difficult to work with (in essence, letting you write a broader range of programs that are still valid Rust), and better able to catch problems that the borrow checker missed.

Other improvements:

  • A new implementation for the HashMap type that runs faster and uses less memory.
  • Cargo can now run entirely offline if needed.

Nove značajke u Rustu 1.35

Verzija 1.35, objavljena u svibnju 2019. godine, nudi sljedeće: