Programmering

Hvad er nyt i Rust 1.48

Den unikke tilgang til programmeringssproget Rust resulterer i bedre kode med færre kompromiser end C, C ++, Go og de andre sprog, du sandsynligvis bruger. Det opdateres også regelmæssigt, ofte hver måned.

Hvor downloades den nyeste Rust-version

Hvis du allerede har installeret en tidligere version af Rust via rustup, kan du få adgang til den nyeste version via følgende kommando:

$ rustup opdatering stabil

Relateret video: Udvikling af sikrere software med Rust

Kom hurtigt i gang med nybegynder Rust, der er designet til at oprette hurtig software på systemniveau. Denne animerede forklarer på to minutter viser, hvordan Rust omgår de irriterende programmeringsproblemer med hukommelse og styring.

De nye funktioner i Rust 1.48.0

Rust 1.48.0, der blev afsløret den 19. november 2020, indeholder lettere sammenkædning i Rustdoc-biblioteksdokumentationsværktøjet med syntaks for at lade Rustdoc vide, hvornår udviklere prøver at linke til en type; URL'er genereres. Også i version 1.48.0:

  • Udviklere kan specificere # {doc (alias = “”)] på emner for at tilføje søgealiaser, når du søger gennem Rustdoc UI.
  • Det usikre nøgleord er nu syntaktisk tilladt på moduler. Selvom det stadig afvises semantisk, kan dette nu analyseres af proceduremakroer.
  • I kompilatoren er den -C link-selvstændig = compiler flag er stabiliseret. Dette fortæller rustc om at linke sin egen C-runtime og biblioteker eller stole på en ekstern linker for at finde dem. Dette understøttes kun den windows-gnu, linux-muslog var jeg platforme.
  • I biblioteket er den [T; N]: TryFrom API er nu stabil. Udviklere kan bruge den til at forsøge at gøre en vektor til en matrix med en given længde. Fem andre API'er var også stabiliseret i denne udgivelse: udsnit :: as_ptr_range, udsnit :: som_mut_ptr_range, VecDeque :: make_contiguous, fremtid :: afventendeog fremtid :: klar.
  • Også i biblioteket implementeres alle arrays af enhver længde nu TryFrom.

De nye funktioner i Rust 1.47.0

Annonceret 8. oktober 2020 har Rust 1.47.0 ingen nye sprogfunktioner, men forbedrer standardbiblioteket. Livskvalitet og forbedringer af værktøjskæder samt biblioteksstabiliseringer fremgår af udgivelsen. Udgivelsesnoter er offentliggjort til opgraderingen.

Specifikke muligheder i Rust 1.47.0 inkluderer:

  • En "const generics" -funktion, der påvirker træk ved større arrays. Funktionen skal stadig stabiliseres. Rust har manglet en måde at være generisk på over hele tal, hvilket har forårsaget problemer med arrays. Denne funktion er beregnet til at løse dette problem og gøre arrays mere nyttige.
  • En opgradering til LLVM 11-kompilatorinfrastruktur, hvilket gør den til standard.
  • Kortere backtraces, hvilket gør det lettere at finde problemer.
  • rustc understøtter nu -C kontrol-flow-afskærmning, en mulighed, der tænder Control Flow Guard-sikkerhedsfunktionen på Windows. Andre platforme ignorerer dette flag.
  • Rustdoc understøtter nu Ayu-temaet.
  • Ni API'er i standardbiblioteket blev stabiliseret: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from, f32 :: TAU, and f64 :: TAU.

De nye funktioner i 1.46.0

Rust 1.46, der blev annonceret 27. august 2020, inkluderer følgende muligheder:

  • Flere kerne sprogfunktioner kan nu bruges i const fn, inklusive hvis, hvis ladmatchog flere andre.
  • EN # [track_caller] attribut, designet til at forbedre fejlmeddelelser, når pakke ud og relaterede funktioner panik, er nu stabil.
  • I en ændring af biblioteket std :: mem :: glem er nu en const fn. Også i biblioteket blev to nye API'er stabiliseret: Mulighed :: lynlås og vec :: Afløb :: as_slice.
  • For compileren er bylib mål kan bruges på Apple iOS- og tvOS-platforme.
  • Rekursiv indeksering i tupler kræver ikke længere parenteser.

De nye funktioner i Rust 1.45.0

Annonceret 16. juli 2020 inkluderer Rust 1.45 følgende tilføjelser og forbedringer:

  • En løsning tilbydes for at reparere noget langvarig usundhed, når der kastes mellem heltal og flyder.
  • Stabilisering tilbydes til funktionslignende proceduremakroer i udtryk, mønstre og udsagn. Udvidelse af brugen af ​​makroer hjælper med brugen af ​​Rocket web framework til Rust.
  • Flere API-biblioteker er blevet stabiliseret, f.eks Bue :: as_ptr, BTreeMap :: remove_entryog Span :: resolved_at. Den fulde liste over API'er kan findes i Rust Blog.

De nye funktioner i Rust 1.43.1

Denne punktudgivelse blev introduceret 7. maj 2020 for at adressere to regressioner, der blev introduceret i den 1.43.0 stabile udgivelse. Den opdaterer også OpenSSL-versionen, der bruges af Cargo-pakkehåndteringen. Funktioner inkluderer:

  • Rust 1.27 introducerede understøttelse til detektering af x86 CPU-funktioner i standardbiblioteket via is_x86_feature_detected makro. På grund af en intern refactoring forhindrede Rust 1.43.0 detektion af funktioner, der endnu ikke kan bruges på stabil, selvom det tidligere var tilladt at detektere dem. Version 1.43.1 løser denne regression.
  • En løsning tilbydes til brudte fragtpakke - liste kommando. Rust 1.43 brød understøttelse af listefiler inkluderet i pakker, der blev offentliggjort med Cargo, når de blev udført i et arbejdsområde med stiafhængigheder eller upublicerede versioner.
  • OpenSSL, en ladeafhængighed, er blevet opdateret til 1.1.1g. OpenSSL havde frigivet en sikkerhedsrådgivning, men Rust-teamet kunne ikke medtage rettelsen i tide til Rust 1.43.0. Holdet har ingen beviser for, at sårbarheden kan bringe Cargo-brugernes sikkerhed i fare.

De nye funktioner i Rust 1.43.0

Annonceret 23. april 2020 blev Rust 1.43.0 betragtet som en ret mindre udgivelse uden større funktioner introduceret. Ændringer inkluderer:

  • Udviklere kan bruge vare fragmenter til at interpolere genstande i kroppen af egenskab, implog ekstern blokke.
  • Typeafledelsen omkring primitiver, referencer og binære operationer blev forbedret.
  • For at hjælpe med integrationstest vil Cargo indstille nogle nye miljøvariabler til tests for at finde eksekverbare filer.
  • I Rust-biblioteket kan udviklere bruge tilknyttede konstanter på floats og heltal direkte uden at skulle importere modulet. Der er også en ny primitiv modul, der reeksporterer Rust-primitive typer, hvilket er nyttigt, når man skriver en makro, og udviklere ønsker at sikre, at typer ikke skygges.
  • Flere API'er i biblioteket blev stabiliseret: Once :: er_afsluttet, f32 :: LOG10_2, f32 :: LOG2_10, f32 :: LOG10_2, f64 :: LOG10_2, f64 :: LOG2_10og iter :: once_with.

De nye funktioner i Rust 1.41

De nye funktioner i Rust 1.38

Rust 1.38, udgivet i september 2019, indeholder følgende nye funktioner og forbedringer:

  • Cargo-pakkehåndtereren udnytter automatisk pipelined-kompilering med Rust 1.38. Med pipelined kompilering har compileren ikke brug for afhængigheder, der er fuldt bygget, når man kompilerer en kasse. Alt, hvad der er brug for, er deres metadata, såsom listen over typer afhængigheder. Metadata produceres tidligt i kompileringsprocessen. Nogle tests har vist kompilationshastighedsforøgelser på 10 til 20 procent for optimerede, rene konstruktioner af nogle kasser.
  • Fnug af nogle forkerte anvendelser af mem :: {unitialized, zeroed}. Med denne udgivelse vil rustc-kompilatoren give en fnug til en smal klasse af forkerte initialiseringer ved hjælp af mem :: ikke-initialiseret eller mem :: nulstillet.
  • Udvidelse af # [udfaset] attribut til makroer. Denne attribut har tilladt kasseophavsmænd at underrette brugerne om, at et element i deres kasse skal udfases og fjernes i en fremtidig frigivelse.
  • Udviklere kan bruge std :: any :: type_name for at få navnet på en type.
  • Stabilisering af en række funktioner inklusive :: rollebesætning og :: rollebesætning.

De nye funktioner i Rust 1.37

Rust 1.37, der blev udgivet i august 2019, har følgende nye funktioner og forbedringer:

  • En evne til at henvise til enum varianter igennem type. Udviklere kan også henvise til enum varianter med Selv :: Variant.
  • Det fragtleverandør kommando, tidligere en separat kasse, er nu indbygget i sproget. Kommandoen henter projektafhængigheder og pakker dem ud i leverandørenbibliotek og viser det konfigurationsuddrag, der er nødvendigt for at bruge den leverede kode under builds.
  • Det rustc compiler understøtter profilstyret optimering, en optimeringsteknik til kompilatorer, der forud for tiden, via-C profil-generere og -C profil-brug.
  • Udviklere kan oprette unavngivne konst genstande.

De nye funktioner i Rust 1.36

Version 1.36 af Rust systems programmeringssprog blev frigivet i juli 2019. Rust 1.36 indeholder følgende nye funktioner og forbedringer:

  • Fremtidens træk, der bruges til at erklære asynkront arbejde, er nu stabil. Asynkrone operationer i Rust har været samlet i bits og stykker i flere versioner nu med asynkronisering og vente er de sidste vigtige resterende stykker.
  • Tildelingskassen, der bruges til at styre hukommelsen, er nu stabil. Denne kasse samler alle de dele af Rusts standardbibliotek, der er afhængige af en global hukommelsesallokeringsmekanisme, f.eks Vec. På denne måde kan kasser, der ikke bruger standardbiblioteket, stadig bruge fordeleren ved at importere tildelingen separat - nyttigt i miljøer, hvor du vil have kodestørrelser til at være så slanke som muligt.
  • En ny type, Måske Enhed, giver dig mulighed for at definere objekter, der kan bestå af ikke-initialiseret hukommelse, såsom et dovent tildelt array. Rusts tidligere mekanisme til at gøre dette var en funktion, mem :: ikke-initialiseret, der udgjorde mange farer ved afslappet brug. Måske Enhed giver en sikrere måde at gøre dette på, der bruger begrænsningerne i Rust's typesystem.
  • Ikke-leksikale levetider, en funktion til de seneste udgaver af Rust, er blevet bakportet til tidligere udgaver. Ikke-leksikale levetider gør Rust's lånekontrolmekanisme mindre vanskelig at arbejde med (i det væsentlige giver dig mulighed for at skrive en bredere vifte af programmer, der stadig er gyldige Rust) og bedre i stand til at fange problemer, som lånekontrollen savnede.

Andre forbedringer:

  • En ny implementering til HashMap type, der kører hurtigere og bruger mindre hukommelse.
  • Cargo kan nu køre helt offline, hvis det er nødvendigt.

De nye funktioner i Rust 1.35

Version 1.35, udgivet i maj 2019, tilbyder følgende:

$config[zx-auto] not found$config[zx-overlay] not found