Rust 1.99.0 slÀppt. Microsoft gjorde Rust till ett primÀrt sprÄk

ProgrammeringssprÄket Rust 1.99, grundat av Mozilla-projektet men nu utvecklat under beskydd av den oberoende ideella organisationen Rust Foundation, har slÀppts. SprÄket fokuserar pÄ minnessÀkerhet och tillhandahÄller verktyg för att uppnÄ hög parallellitet i uppgiftskörningen, samtidigt som man slipper anvÀnda en garbage collector och runtime (körtiden reduceras till grundlÀggande initialisering och underhÄll av standardbiblioteket).

Rusts minneshanteringsmetoder Àr utformade för att eliminera fel i pekarmanipulation och skydda mot problem som uppstÄr vid minneshantering pÄ lÄg nivÄ, sÄsom Ätkomst till minne efter att det har frigjorts, avreferensering av nullpekare, buffertöverskridningar och sÄ vidare. Projektet utvecklar pakethanteraren Cargo för att distribuera bibliotek, underlÀtta byggen och hantera beroenden. crates.io-arkivet underhÄlls för att vara vÀrd för bibliotek.

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:

  • Rust lĂ„ter dig nu skapa variadiska funktioner som exporteras för anrop frĂ„n C-projekt (C ABI). Det sista elementet i parameterlistan i sĂ„dana funktioner kan vara "..."-konstruktionen, som hanteras i Rust med en speciell typ, VaList, som fungerar pĂ„ liknande sĂ€tt som va_list i C. unsafe extern "C" fn sum(mut args: ...) -> i32 { let a = unsafe { args.next_arg:: () }; lĂ„t b = osĂ€ker { args.next_arg:: () }; a + b } fn foo() -> i32 { osĂ€ker { summa(0i32, 2i32) } }
  • Funktionerna Layout::for_value_raw, mem::size_of_val_raw och mem::align_of_val_raw har stabiliserats för att möjliggöra sĂ€ker storleksjustering och justering av rĂ„pekare, inklusive nĂ€r dynamiskt storleksanpassade typer som skivor anvĂ€nds, utan att behöva skapa datareferenser.
  • Dokumentationen rekommenderar nu att man undviker att frigöra minne som refererats statiskt med en obestĂ€md livslĂ€ngd (&'static) via ett anrop till Box::leak (rundtursavlĂ€ckning), eftersom denna Ă„tgĂ€rd potentiellt kan leda till problem pĂ„ grund av inkompatibilitet med framtida kompilatoroptimeringar och inpluggbara minnesallokeringsmekanismer. IstĂ€llet för att skapa en statisk referens för tillfĂ€lliga Ă€garöverföringar rekommenderas det att anvĂ€nda rĂ„a pekare, till exempel via ett anrop till Box::into_non_null.
  • En ny del av API:t har flyttats till kategorin stabil, inklusive metoder och implementeringar av egenskaper har stabiliserats:
    • IntoIterator för Box<[T; N]>
    • IntoIterator för &Box<[T; N]>
    • IntoIterator för &mut Box<[T; N]>
    • 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
    • strĂ€ng::FromUtf8Error::into_utf8_lossy
    • FusedIterator för StepBy
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • Pakethanteraren Cargo har nu en ny inbyggd "debug"-profil, liknande "dev"-profilen (felsöknings- och utvecklingsfunktioner planeras att separeras i framtiden). Stegvis kompilering Ă€r inaktiverat som standard vid byggande i CI.
  • MĂ„lplattformen riscv64-unknown-linux-musl har flyttats till stödnivĂ„ 2, vilket ger en bygggaranti men ingen garanti för att testsviten klaras.

Dessutom vill vi lyfta fram nyligen tillkÀnnagivna projekt och evenemang relaterade till Rust:

  • Microsoft har uppgraderat Rust till ett Tier 1-sprĂ„k och kommer att ge fullt stöd för det i alla utvecklingsstadier inom företaget. Tidigare tillhandahölls Tier 1-stöd för C++, C# och TypeScript. Rust anvĂ€nds redan i över 100 Microsoft-repositories. Bland annat anvĂ€nds Rust-komponenter redan i produkter som Microsoft 365 och Copilot, och en dedikerad backend för Rust, rustc_codegen_utc, baserad pĂ„ rustc-kompilatorn, har utvecklats för MSVC-kompilatorn.

    Microsoft anger att det primÀra mÄlet med att anvÀnda Rust Àr att stÀrka sÀkerhetskritisk kod. Enligt Microsoft Azures tekniska chef Àr cirka 70 % av alla sÄrbarheter i Windows orsakas av minneshanteringsproblem som kan undvikas genom att anvÀnda Rust.

  • Google har tagit bort den frĂ„n kĂ€rnan. Linux Den gamla Binder IPC-implementeringen, skriven i C, har förĂ„ldrats till förmĂ„n för en ny Binder IPC-drivrutin omskriven i Rust. Det bör noteras att den gamla drivrutinen under de 15 Ă„r den existerat har ackumulerat betydande teknisk skuld och ett flertal komplikationer, vilket har hindrat buggdetektering, underhĂ„ll och tillĂ€gg av nya funktioner. Binder IPC-drivrutinen i Rust har utsetts till huvuddrivrutin och presenteras inte lĂ€ngre som en experimentell utveckling.
  • Arti 2.7.0, en Rust-implementering av Tor-verktygslĂ„dan, har slĂ€ppts. NĂ€r Artis kodbas nĂ„r en nivĂ„ som helt kan ersĂ€tta C-implementeringen, avser Tor-utvecklarna att göra Arti till den primĂ€ra Tor-implementeringen och gradvis fasa ut underhĂ„llet av C-implementeringen. Den nya versionen inkluderar funktionsutveckling för relĂ€er och servrar Funktionalitet för katalogauktoritet (DA) relaterad till dokumentparsning, stöd för spegling av katalogserver och DNS-trafikbehandling. En RPC-implementering för konfigurationsĂ€ndringar och kontroller har lagts till. Flera sĂ„rbarheter har Ă„tgĂ€rdats – administratörer av Onion-tjĂ€nsten rekommenderas att snarast uppdatera sina system.

KĂ€lla: opennet.ru

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