Programmering

Hva er nytt i Rust 1.48

Den unike tilnærmingen til programmeringsspråket Rust resulterer i bedre kode med færre kompromisser enn C, C ++, Go og de andre språkene du sannsynligvis bruker. Den oppdateres også regelmessig, ofte hver måned.

Hvor laster du ned den nyeste Rust-versjonen

Hvis du allerede har en tidligere versjon av Rust installert via rustup, kan du få tilgang til den nyeste versjonen via følgende kommando:

$ rustup oppdatering stabil

Relatert video: Utvikler tryggere programvare med Rust

Kom raskt i gang med nykommer Rust, designet for å lage rask programvare på systemnivå. Denne to-minutters animerte forklareren viser hvordan Rust omgår de plagsomme programmeringsproblemene med minne og ledelse.

De nye funksjonene i Rust 1.48.0

Rust 1.48.0 ble avduket 19. november 2020 og har enklere lenking i Rustdoc-biblioteksdokumentasjonsverktøyet, med syntaks for å fortelle Rustdoc når utviklere prøver å koble til en type; URL-er genereres. Også i versjon 1.48.0:

  • Utviklere kan spesifisere # {doc (alias = “”)] på elementer for å legge til søkealiaser når du søker gjennom Rustdoc UI.
  • De usikre nøkkelord er nå syntaktisk tillatt på moduler. Selv om det fortsatt er avvist semantisk, kan dette nå analyseres av prosessuelle makroer.
  • I kompilatoren er den -C lenke-selvstendig = kompilatorflagget er stabilisert. Dette forteller rustc om å koble sin egen C-kjøretid og biblioteker eller stole på en ekstern lenker for å finne dem. Dette støttes bare på windows-gnu, linux-musl, og var jeg plattformer.
  • I biblioteket, [T; N]: TryFrom API er nå stabilt. Utviklere kan bruke den til å prøve å gjøre en vektor om til en matrise med en gitt lengde. Fem andre API-er ble også stabilisert i denne utgivelsen: stykke :: as_ptr_range, stykke :: som_mut_ptr_range, VecDeque :: make_contiguous, fremtid :: venter, og fremtid :: klar.
  • Også i biblioteket implementeres nå alle matriser av hvilken som helst lengde TryFrom.

De nye funksjonene i Rust 1.47.0

Annonsert 8. oktober 2020, Rust 1.47.0 har ingen nye språkfunksjoner, men forbedrer standardbiblioteket. Livskvalitet og forbedringer av verktøykjeden, samt stabilisering av biblioteket, er omtalt i utgivelsen. Utgivelsesmerknader er publisert for oppgraderingen.

Spesifikke evner i Rust 1.47.0 inkluderer:

  • En “const generics” -funksjon som påvirker egenskaper på større matriser. Funksjonen må fortsatt stabiliseres. Rust har manglet en måte å være generisk over heltallverdier, noe som har forårsaket problemer med matriser. Denne funksjonen er ment for å løse dette problemet og gjøre matriser mer nyttige.
  • En oppgradering til LLVM 11 kompilatorinfrastruktur, noe som gjør den til standard.
  • Kortere tilbakesporinger, noe som gjør det lettere å finne problemer.
  • rustc støtter nå -C kontroll-strømningsvern, et alternativ som slår på Control Flow Guard-sikkerhetsfunksjonen på Windows. Andre plattformer ignorerer dette flagget.
  • Rustdoc støtter nå Ayu-temaet.
  • Ni API-er i standardbiblioteket ble stabilisert: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Resultat :: as_deref, Resultat :: as_deref_mut, Vec :: lekkasje, peker :: offset_from, f32 :: TAU, og f64 :: TAU.

De nye funksjonene i 1.46.0

Rust 1.46, kunngjort 27. august 2020, inkluderer følgende funksjoner:

  • Flere kjernespråkfunksjoner kan nå brukes i const fn, gjelder også hvis, hvis lakamp, og flere andre.
  • EN # [track_caller] attributt, designet for å forbedre feilmeldinger når pakke ut og relaterte funksjoner får panikk, er nå stabil.
  • I endring av biblioteket, std :: mem :: glem er nå en const fn. Også i biblioteket ble to nye API-er stabilisert: Alternativ :: glidelås og vec :: Avløp :: as_slice.
  • For kompilatoren, citylib mål kan brukes på Apple iOS- og tvOS-plattformer.
  • Rekursiv indeksering i tupler krever ikke lenger parentes.

De nye funksjonene i Rust 1.45.0

Annonsert 16. juli 2020 inkluderer Rust 1.45 følgende tillegg og forbedringer:

  • En løsning tilbys for å reparere noe langvarig usunnhet når du kaster mellom heltall og flyter.
  • Stabilisering tilbys for funksjonslignende prosessuelle makroer i uttrykk, mønstre og utsagn. Utvidelse av bruken av makroer hjelper med bruk av Rocket web framework for Rust.
  • Flere biblioteks-API-er er stabilisert, for eksempel Arc :: as_ptr, BTreeMap :: remove_entry, og Span :: resolved_at. Den komplette listen over API-er finner du i Rust Blog.

De nye funksjonene i Rust 1.43.1

Denne punktutgivelsen ble introdusert 7. mai 2020 for å adressere to regresjoner introdusert i den stabile utgivelsen 1.43.0. Den oppdaterer også OpenSSL-versjonen som brukes av Cargo package manager. Funksjonene inkluderer:

  • Rust 1.27 introduserte støtte for å oppdage x86 CPU-funksjoner i standardbiblioteket, via is_x86_feature_detected makro. På grunn av en intern refactoring forhindret Rust 1.43.0 deteksjon av funksjoner som ikke kan brukes på stabile ennå, selv om det var tillatt å oppdage dem tidligere. Versjon 1.43.1 løser denne regresjonen.
  • En løsning tilbys for ødelagte lastepakke –liste kommando. Rust 1.43 brøt støtte for oppføring av filer som er inkludert i pakker publisert med Cargo, når de kjøres i et arbeidsområde med baneavhengigheter eller upubliserte versjoner.
  • OpenSSL, en lasteavhengighet, har blitt oppdatert til 1.1.1g. OpenSSL hadde gitt ut en sikkerhetsrådgivning, men Rust-teamet var ikke i stand til å inkludere reparasjonen i tide til Rust 1.43.0. Teamet har ingen bevis for at sårbarheten kan skade Cargo-brukernes sikkerhet.

De nye funksjonene i Rust 1.43.0

Annonsert 23. april 2020 ble Rust 1.43.0 ansett som en ganske liten utgivelse, uten noen store funksjoner introdusert. Endringene inkluderer:

  • Utviklere kan bruke punkt fragmenter for å interpolere gjenstander i kroppen av trekk, impl, og ekstern blokker.
  • Typeslutningen rundt primitiver, referanser og binære operasjoner ble forbedret.
  • For å hjelpe integrasjonstesting vil Cargo sette noen nye miljøvariabler for tester for å finne kjørbare filer.
  • I Rust-biblioteket kan utviklere bruke tilknyttede konstanter på flottører og heltall direkte uten å måtte importere modulen. Det er også en ny primitiv modul som eksporterer Rust-primitive typer på nytt, noe som er nyttig når du skriver en makro, og utviklere vil sikre at typene ikke blir skyggelagt.
  • Flere API-er i biblioteket ble stabilisert: En gang :: er_fullført, f32 :: LOG10_2, f32 :: LOG2_10, f32 :: LOG10_2, f64 :: LOG10_2, f64 :: LOG2_10, og iter :: en gang_med.

De nye funksjonene i Rust 1.41

De nye funksjonene i Rust 1.38

Rust 1.38, utgitt i september 2019, inneholder følgende nye funksjoner og forbedringer:

  • Lastepakkeansvarlig vil utnytte pipelined-kompilering automatisk med Rust 1.38. Med rørledningskompilering trenger ikke kompilatoren avhengigheter fullstendig bygget når du kompilerer en kasse. Alt som trengs er metadataene deres, for eksempel listen over typer avhengigheter. Metadata produseres tidlig i kompileringsprosessen. Noen tester har vist at kompileringshastigheten øker med 10 til 20 prosent for optimaliserte, rene konstruksjoner av noen kasse grafer.
  • Linting av feil bruk av mem :: {unitialized, zeroed}. Med denne utgivelsen vil rustc-kompilatoren gi en lo for en smal klasse av feil initialiseringer ved bruk mem :: uninitialized eller mem :: nullstilt.
  • Utvidelse av # [utfaset] attributt til makroer. Dette attributtet har tillatt kasseforfattere å varsle brukere om at et element i kassen deres skal avvikles og fjernes i en fremtidig utgivelse.
  • Utviklere kan bruke std :: any :: type_name for å få navnet på en type.
  • Stabilisering av en rekke funksjoner inkludert :: rollebesetning og :: rollebesetning.

De nye funksjonene i Rust 1.37

Rust 1.37, utgitt i august 2019, har følgende nye funksjoner og forbedringer:

  • En evne til å referere til enum varianter gjennom type. Utviklere kan også referere til enum varianter med Selv :: Variant.
  • De lasteselger kommandoen, tidligere en egen kasse, er nå innebygd i språket. Kommandoen henter prosjektavhengigheter, pakker dem ut til leverandørenkatalogen, og viser konfigurasjonskodebiten som er nødvendig for å bruke den leverte koden under byggingen.
  • De rustc compiler støtter profilstyrt optimalisering, en optimaliseringsteknikk for kompilatorer på forhånd, via-C-profilgenerer og -C profilbruk.
  • Utviklere kan lage navnløse konst gjenstander.

De nye funksjonene i Rust 1.36

Versjon 1.36 av Rust systems programmeringsspråk ble utgitt i juli 2019. Rust 1.36 inkluderer følgende nye funksjoner og forbedringer:

  • Fremtidens trekk, som brukes til å erklære asynkront arbeid, er nå stabil. Asynkrone operasjoner i Rust har kommet sammen i biter og deler i flere versjoner nå, med asynkronisering og avvente å være de siste viktige gjenværende brikkene.
  • Allokeringsboksen, som brukes til å administrere minne, er nå stabil. Denne kassen samler alle delene av Rusts standardbibliotek som er avhengig av en global minnetildelingsmekanisme, for eksempel Vec. På denne måten kan kasser som ikke bruker standardbiblioteket, fortsatt bruke fordeleren ved å importere tildelingen separat - nyttig for miljøer der du vil at koden skal være så tynn som mulig.
  • En ny type, Kanskje Uninit, lar deg definere objekter som kan bestå av uinitialisert minne, for eksempel en lat tildelt matrise. Rusts forrige mekanisme for å gjøre dette var en funksjon, mem :: ikke-initialisert, som utgjorde mange farer ved uformell bruk. Kanskje Uninit gir en tryggere måte å gjøre dette på, som bruker begrensningene i Rusts typesystem.
  • Ikke-leksikale levetider, en funksjon for nylige utgaver av Rust, har blitt backported til tidligere utgaver. Ikke-leksikale levetider gjør Rusts lånekontrollmekanisme mindre vanskelig å jobbe med (i det vesentlige, slik at du kan skrive et bredere utvalg av programmer som fremdeles er gyldig Rust), og bedre i stand til å fange problemer som lånekontrolleren savnet.

Andre forbedringer:

  • En ny implementering for HashMap type som går raskere og bruker mindre minne.
  • Last kan nå kjøres helt frakoblet hvis nødvendig.

De nye funksjonene i Rust 1.35

Versjon 1.35, utgitt i mai 2019, tilbyr følgende:

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