Rust 1.65 programspråk release

Utgivningen av Rust 1.65 allmänt programmeringsspråk, grundat av Mozilla-projektet, men nu utvecklat under överinseende av den oberoende ideella organisationen Rust Foundation, har publicerats. Språket fokuserar på minnessäkerhet och ger möjlighet att uppnå hög jobbparallellism samtidigt som man undviker användningen av en skräpsamlare och körtid (körtiden reduceras till grundläggande initiering och underhåll av standardbiblioteket).

Rusts minneshanteringsmetoder räddar utvecklaren från fel vid manipulering av pekare och skyddar mot problem som uppstår på grund av minneshantering på låg nivå, som att komma åt ett minnesområde efter att det har frigjorts, avläsning av nollpekare, buffertöverskridningar, etc. För att distribuera bibliotek, tillhandahålla builds och hantera beroenden utvecklar projektet Cargo package manager. Crates.io-förvaret stöds för värdbibliotek.

Minnessäkerhet tillhandahålls i Rust vid kompilering genom referenskontroll, hålla reda på objektägande, hålla reda på objektlivslängder (scopes) och bedöma riktigheten av minnesåtkomst under kodexekvering. Rust ger också skydd mot heltalsspill, kräver obligatorisk initiering av variabelvärden innan användning, hanterar fel bättre i standardbiblioteket, tillämpar konceptet med oföränderliga referenser och variabler som standard, erbjuder stark statisk typning för att minimera logiska fel.

Huvudsakliga innovationer:

  • Tillagt stöd för generiska associerade typer (GAT, Generic Associated Types), som gör det möjligt att skapa typalias associerade med en annan typ och låter dig associera typkonstruktörer med egenskaper. egenskap Foo { typ Bar<'x>; }
  • Uttrycket "let ... else" har implementerats, vilket gör att du kan kontrollera mönstermatchningsvillkoret direkt inuti "let"-uttrycket och exekvera godtycklig kod om mönstret inte matchar. låt Ok(count) = u64::from_str(count_str) else { panic!("Kan inte tolka heltal: '{count_str}'"); };
  • Tillåt användning av en break-sats för att avsluta namngivna block i förtid, använd blocknamnet (etiketten) för att identifiera blocket som ska avslutas. låt result = 'blockera: { do_thing(); if condition_not_met() { break 'block 1; } gör_nästa_sak(); if condition_not_met() { break 'block 2; } do_last_thing(); 3};
  • För Linux har möjligheten att separat spara felsökningsinformation (split-debuginfo), tidigare endast tillgänglig för macOS-plattformen, lagts till. När du anger alternativet "-Csplit-debuginfo=unpacked" kommer debuginfo-data i DWARF-format att sparas i flera separata objektfiler med tillägget ".dwo". Genom att specificera "-Csplit-debuginfo=packed" skapas ett enda paket i ".dwp"-format som inkluderar all debuginfo-data för projektet. För att integrera debuginfo direkt i .debug_*-sektionen av ELF-objekt kan du använda alternativet "-Csplit-debuginfo=off".
  • En ny del av API:t har flyttats till kategorin stabil, inklusive metoder och implementeringar av egenskaper har stabiliserats:
    • std::backtrace::Backtrace
    • Inbunden::as_ref
    • std::io::läs_till_sträng
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Attributet "const", som bestämmer möjligheten att använda det i alla sammanhang istället för konstanter, används i funktionerna <*const T&>::offset_from och <*mut T>::offset_from
  • Som en del av det sista steget av att överföra implementeringen av LSP (Language Server Protocol)-protokollet till rust-analyzer, ersattes den föråldrade implementeringen av Rust Language Server (RLS) med en stubserver som utfärdar en varning med ett förslag att byta till med hjälp av rostanalysator.
  • Under kompileringen är stöd för inline-distribution av MIR-mellankod aktiverat, vilket påskyndar kompileringen av typiska lådapaket med 3-10 %.
  • För att påskynda schemalagda byggnationer tillhandahåller Cargo-pakethanteraren sortering av jobb som väntar på exekvering i kön.

Dessutom kan du notera intervjun om användningen av språket Rust på Volvo för att utveckla komponenter i fordonsinformationssystem. Det finns inga planer på att skriva om befintlig och testad kod i Rust, men för ny kod är Rust ett av de föredragna alternativen för att förbättra kvaliteten till lägre kostnader. Arbetsgrupper relaterade till användningen av språket Rust har också skapats i fordonsföreningarna AUTOSAR (AUTomotive Open System ARchitecture) och SAE (Society of Automotive Engineers).

Dessutom talade David Kleidermacher, Googles vice VD för teknik, om översättningen av koden som används i Android-plattformen för att hantera krypteringsnycklar till Rust, samt användningen av Rust i implementeringen av DNS över HTTPS-protokollet i stacken för UWB-chips (Ultra-Wideband) och i virtualiseringsramverket (Android Virtualization Framework) associerat med Tensor G2-chippet. Nya stackar för Bluetooth och Wi-Fi, omskrivna i Rust, utvecklas också för Android. Den allmänna strategin är att gradvis stärka säkerheten, först genom att konvertera de mest sårbara och vitala programvarukomponenterna till Rust, och sedan expandera till andra relaterade delsystem. Förra året ingick Rust-språket i listan över tillåtna språk för att utveckla Android-plattformen.

Källa: opennet.ru

Lägg en kommentar