UtgÄvan Rust 1.99.0. Microsoft har gjort Rust till ett av de primÀra sprÄken.

Rust 1.99, som ursprungligen utvecklades av Mozilla men numera vidareutvecklas av den oberoende ideella organisationen Rust Foundation, har slÀppts. SprÄket fokuserar pÄ sÀker minneshantering och erbjuder verktyg för hög parallell utförande av uppgifter, utan att anvÀnda skrÀphanterare och runtime (runtime reduceras till grundlÀggande initiering och hantering av standardbiblioteket).

Minneshanteringsmetoderna i Rust syftar till att eliminera fel vid hantering av pekare och skydda mot problem som uppstÄr frÄn lÄg nivÄ minneshantering, sÄsom att referera till minnesomrÄden efter att de har frigjorts, dereferensiering av nullpekare, buffertöverskridningar, etc. För spridning av bibliotek, byggnation och hantering av beroenden utvecklas paketchefen Cargo. För att lagra bibliotek stöds ett repository pÄ crates.io.

SÀker minneshantering sÀkerstÀlls i Rust under kompilering genom att kontrollera referenser, spÄra Àgandeskap över objekt, ta hÀnsyn till livslÀngden av objekt (synlighet) och utvÀrdera korrekt minnesÄtkomst under körning av koden. Rust erbjuder ocksÄ verktyg för att skydda mot heltalsöverflöden, krÀver obligatorisk initialisering av variabelvÀrden innan de anvÀnds, hanterar fel bÀttre i standardbiblioteket, tillÀmpar konceptet av oförÀnderliga (immutable) referenser och variabler som standard och erbjuder stark statisk typning för att minimera logiska fel.

Huvudsakliga nyheter:

  • Möjligheten att skapa funktioner med variabelt antal argument (variadic) i Rust, som kan exporteras för Ă„kning frĂ„n C-projekt (C ABI), har introducerats. Som det sista elementet i parameternas lista kan konstruktionen '...' anges, vilket hanteras i Rust genom en speciell typ VaList, som fungerar analogt med va_list i C. unsafe extern «C» fn sum(mut args: ...) -> i32 { let a = unsafe { args.next_arg::() }; let b = unsafe { args.next_arg::() }; a + b } fn foo() -> i32 { unsafe { sum(0i32, 2i32) } }
  • Funktionerna Layout::for_value_raw, mem::size_of_val_raw och mem::align_of_val_raw har stabiliserats, vilket gör det möjligt att sĂ€kert bestĂ€mma storlek och justering av rĂ„a pekare (raw pointers), inklusive anvĂ€ndning av typer med dynamisk storlek, som skivor, utan att behöva skapa referenser till data.
  • Dokumentationen har uppdaterats med en rekommendation att undvika att frigöra minne som har fĂ„tt en statisk referens med obestĂ€md livslĂ€ngd (&’static) via anrop pĂ„ Box::leak (round-trip unleaking), eftersom detta kan leda till problem med potentiell inkompatibilitet med framtida kompilatoroptimeringar och bibliotek för minnesallokering. IstĂ€llet för att skapa en statisk referens för temporĂ€r överlĂ„telse av Ă€garskap rekommenderas det att anvĂ€nda rĂ„a pekare, till exempel genom att anropa Box::into_non_null.
  • En ny uppsĂ€ttning API har blivit stabiliserad, inklusive stabilisering av metoder och implementeringar av traits:
    • IntoIterator för Box
    • IntoIterator för &Box
    • IntoIterator för &mut Box
    • VecDeque::retain_back
    • core::ffi::VaList
    • Box::into_non_null
    • Box::from_non_null
    • Vec::into_parts
    • Vec::from_parts
    • core::mem::size_of_val_raw
    • core::mem::align_of_val_raw
    • core::alloc::Layout::for_value_raw
    • String::from_utf8_lossy_owned
    • string::FromUtf8Error::into_utf8_lossy
    • FusedIterator för StepBy
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • I paketmanagern cargo har en ny inbyggd profil "debug" implementerats, som Ă€r liknande profilen "dev" (framtida möjligheter för felsökning och utveckling planeras att delas upp). Vid kompilering i CI Ă€r inkrementell kompilering som standard inaktiverad.
  • Plattformen riscv64-unknown-linux-musl har överförts till andra nivĂ„ns support, vilket innebĂ€r garantier för kompilering men inget garanti för genomgĂ„ngen av testuppsĂ€ttningen.

Man kan Àven nÀmna nyligen tillkÀnnagivna projekt och hÀndelser relaterade till Rust:

  • Microsoft har uppgraderat Rust till ett förstahands-sprĂ„k och kommer att ge det fullstĂ€ndigt stöd under hela utvecklingsprocessen inom företaget. Tidigare erbjöds förstahandsstöd inom företaget för sprĂ„ken C++, C# och TypeScript. Det noteras att Rust redan anvĂ€nds i mer Ă€n 100 Microsoft-repositorier. Bland annat anvĂ€nds komponenter skrivna i Rust redan i produkter som Microsoft 365 och Copilot, och en separat backend rustc_codegen_utc för Rust har förberetts för MSVC-kompilatorn, baserat pĂ„ kompilatorn rustc.

    Som huvudsyfte för anvÀndning av Rust i Microsoft nÀmns förstÀrkning av kodens sÀkerhet, vilken Àr kritisk ur sÀkerhetssynpunkt. Enligt Microsoft Azures tekniska direktör orsakar cirka 70% av alla sÄrbarheter i Windows problem relaterade till minnet, vilket kan undvikas genom att anvÀnda Rust.

  • Google har tagit bort den gamla implementationen av mekanismen för interprocesskommunikation Binder, som var skriven i C, frĂ„n Linux-kĂ€rnan, till förmĂ„n för den nya Binder IPC-drivrutinen, som har skrivits om i Rust. Det noteras att den gamla drivrutinen, som funnits i 15 Ă„r, har ackumulerat betydande teknisk skuld och en mĂ€ngd komplikationer som har försvĂ„rat felsökning, underhĂ„ll och tillĂ€gg av nya funktioner. Binder IPC-drivrutinen i Rust har erkĂ€nts som den primĂ€ra drivrutinen och presenteras inte lĂ€ngre som en experimentell utveckling.
  • Version 2.7.0 av Arti, implementeringen av Tor-verktygen skrivna i Rust, har publicerats. NĂ€r Arti-koden nĂ„r en nivĂ„ som helt kan ersĂ€tta C-versionen avsiktar Tor-utvecklarna att ge Arti status som den primĂ€ra implementationen av Tor och gradvis avsluta underhĂ„llet av C-versionen. I den nya versionen har funktionaliteten för relay blivit utvecklad. servrar katalog (Directory Authority) kopplad till dokumentparsing, stöd för spegling av katalogservrar och hantering av DNS-trafik. RPC-implementering för att Ă€ndra och kontrollera konfigurationen har lagts till. Flera sĂ„rbarheter har Ă„tgĂ€rdats — administratörer av onion-tjĂ€nster rekommenderas att omedelbart uppdatera sina system.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster