For noen dager siden ble det annonsert utgivelse av den nye versjonen av det populære programmeringsspråket «Rust 1.72», versjon hvor nye funksjoner er lagt til, samt forbedringer, feilrettinger og ulike endringer som fokuserer på å gjøre kodeopprettingsprosessen enklere og mer flytende.
For de som ikke er klar over dette programmeringsspråket, bør de vite det fokuserer på minnesikkerhet og gir midler for å oppnå høy parallellitet av jobber samtidig som man unngår bruk av en søppeloppsamler og kjøretid (kjøretiden reduseres til grunnleggende initialisering og standard bibliotekvedlikehold).
Rusts minnehåndteringsmetoder de sparer utvikleren fra feil ved manipulering av pekere og beskytter mot problemer som oppstår på grunn av minnehåndtering på lavt nivå, for eksempel tilgang til et minneområde etter at det har blitt frigjort, frareferanse til null-pekere, bufferoverløp osv. For å distribuere biblioteker, tilby builds og administrere avhengigheter, utvikler prosjektet Cargo-pakkebehandleren.
De viktigste nye funksjonene i Rust 1.72
I denne nye versjonen som presenteres av Rust 1.72 versjon en av mest innovative funksjoner er forbedringen i nytten av elementer deaktivert ved å bruke "cfg"-attributter betinget sammenstilling, som lar deg aktivere utførelsen av Rust-koden avhengig av om visse funksjoner i boksen støttes eller kjøres på bestemte plattformer.
Tidligere var ikke elementer deaktivert via cfg synlige for kompilatoren, men nå endres det siden kompilatoren bevarer nå viktig informasjon, inkludert elementnavn og cfg-betingelser. Dette lar kompilatoren gi interessant tilbakemelding, for eksempel å fremheve utilgjengeligheten til en funksjon på grunn av behovet for å aktivere en spesifikk boksfunksjon. Dette gir utviklere klarere veiledning og legger til rette for en mer effektiv kodeopplevelse. For eksempel lar den deg forstå at noen funksjoner ikke er tilgjengelige på grunn av deaktivering av visse funksjonsegenskaper på boksen.
En annen endring som skiller seg ut i denne nye versjonen av Rust 1.72 er det restriksjoner på evalueringstiden for konstante uttrykk ble fjernet, Siden tidligere, for å unngå kompileringstidsløkker, begrenset Rust det maksimale antallet uttrykk som kunne utføres under konstant evaluering.
Denne funksjonen forårsaket feil ved kompilering av kode som ikke samsvarte til restriksjonene, så i den nye versjonen det ble besluttet å erstatte strenge restriksjoner med en advarselsskjerm som rapporterer langsiktige konstante beregninger. Const_eval_long_running lo-kontrollen brukes også som standard for å oppdage løkker.
I tillegg til dette bemerkes det også at Clippy lister ble forbedret, siden en rekke Clippy-sjekker ble flyttet til Rustc-kompilatoren:
- undropped_manually_drops: endret til med avvisningsnivå. Når det gjelder ManuallyDrop, fjernes ikke den interne verdien automatisk. Å påkalle std::mem::drop har ingen effekt. I stedet foreslår denne loen nå å bruke ManuallyDrop::into_inner som hovedalternativet.
- invalid_utf8_in_unchecked: omdøpt til avvisningsnivå og advarselsnivå; invalid_from_utf8_unchecked invalid_from_utf8. Identifiserer tilfeller der std::str::from_utf8_unchecked og std::str::from_utf8_unchecked_mut brukes med ugyldige UTF-8-literaler. Denne bruken bryter dine sikkerhetsforutsetninger og resulterer i udefinert atferd. Dette loet er nå kategorisk forbudt.
- invalid_nan_comparisons: identifiserer sammenligninger som involverer f32::NAN eller f64::NAN som operander. Siden NaN mangler meningsfulle sammenligninger
- invalid_reference_casting: fremhever tilfeller der &T blir &mut T uten å utnytte mutabiliteten innenfor. Slike handlinger resulterer i umiddelbar, udefinert atferd, uavhengig av om referansen brukes eller ikke.
Av andre endringer som skiller seg ut av den nye versjonen:
- En ny del av API-en er flyttet til stabil-kategorien, inkludert metoder og egenskapsimplementeringer som er stabilisert.
- "const"-attributtet, som bestemmer muligheten for å bruke konstanter i enhver sammenheng, brukes i funksjoner:
- Implementert støtte på tredje nivå for loongarch64-unknown-none*-plattformer. Det tredje nivået innebærer grunnleggende støtte, men uten automatisert testing, publisering av offisielle bygg og verifisering av muligheten til å kompilere koden.
- I en fremtidig versjon av Rust 1.76 er det planlagt å droppe støtte for Windows 7, 8 og 8.1 plattformer og gjøre Windows 10 til minimumsversjonen for både kompilatoren og kompileringsformål.
Lur interessert i å vite mer om det, kan du sjekke detaljene i følgende lenke.
Til slutt, for de som er det Interessert i å oppgradere fra en tidligere versjon av Rust installert via rustup, kan du få den nye versjonen av Rust 1.72.0 med:
rustup update stable