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 fortellerrustc
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
, ogvar 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
, ogfremtid :: 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 la
,kamp
, og flere andre. - EN
# [track_caller]
attributt, designet for å forbedre feilmeldinger nårpakke ut
og relaterte funksjoner får panikk, er nå stabil. - I endring av biblioteket,
std :: mem :: glem
er nå enconst fn
. Også i biblioteket ble to nye API-er stabilisert:Alternativ :: glidelås
ogvec :: 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
, ogSpan :: 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 avtrekk
,impl
, ogekstern
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
, ogiter :: 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 brukmem :: 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 gjennomtype
. Utviklere kan også referere tilenum
varianter medSelv :: Variant
. - De
lasteselger
kommandoen, tidligere en egen kasse, er nå innebygd i språket. Kommandoen henter prosjektavhengigheter, pakker dem ut til leverandøren/ katalogen, 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
ogavvente
å 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: