UtgÄvan av Rust 1.79. Ett konsortium har bildats för att utveckla högpÄlitliga system med Rust

TillkÀnnagivandet av versionsslÀppet av programmeringssprÄket Rust 1.79, som ursprungligen utvecklades av Mozilla men numera underhÄlls av den oberoende icke-vinstdrivande organisationen Rust Foundation. SprÄket fokuserar pÄ sÀker minneshantering och erbjuder verktyg för att uppnÄ hög parallellism i exekveringen av uppgifter, utan att anvÀnda skrÀpsamling eller runtime (runtime begrÀnsar sig till grundlÀggande initialisering och underhÄll av standardbiblioteket).

Minneshanteringsmetoderna i Rust skyddar utvecklare frÄn att göra fel vid manipulering av pekare och skyddar mot problem som uppstÄr vid lÄg nivÄ minnesarbete, sÄsom att komma Ät minnesomrÄden efter att de har frigjorts, dereferera nullpekare, buffer overflow, etc. För distribution av bibliotek, byggande och hantering av projektberoenden utvecklas paketförvaltaren Cargo. För lagring av 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:

  • Stödet för inline-konstanter har lagts till, vilket gör att man kan ange dem direkt i koden med hjĂ€lp av blocken «const { 
 }», som bearbetas i kontexten av konstanter och gör det möjligt att undvika separata konstansdefinitioner. Koden som anges i blocket «const { 
 }» berĂ€knas vid kompilering och anvĂ€nds som konstant, utan att utföras under programmets körning. Till skillnad frĂ„n att definiera konstanter genom uttrycket «const ITEM: 
 =  », kan man i blocken «const { 
 }» utelĂ€mna typen, eftersom automatisk typutvinning stöds dĂ€r. Till exempel, koden med en separat konstandefinition.

    const EMPTY: Option<Vec> = None;
    let foo = [EMPTY; 100];

    kan ersÀttas med anvÀndning pÄ plats:

    let foo = [const { None }; 100];

  • Syntaxen «T: Trait» för att ange begrĂ€nsningar i positionen för ett associerat typ har stabiliserats, vilket förenklar definitionen av uttryck med inbĂ€ddade typbegrĂ€nsningar som tidigare krĂ€vde angivande av inbĂ€ddad impl Trait eller flera villkor «where».
  • Automatiskt livslĂ€ngdsförlĂ€ngning för temporĂ€ra vĂ€rden som anvĂ€nds i konstruktionerna «match» och «if» har sĂ€kerstĂ€llts.

    let a = if true {
    ..;
    &temp() // livslÀngden kommer att förlÀngas
    } else {
    ..;
    &temp() // livslÀngden kommer att förlÀngas
    };

  • Möjligheten att importera funktionen main frĂ„n andra moduler och crate-paket har stabiliserats.
  • Vid sammansĂ€ttning av standardbiblioteket anvĂ€nds flaggan «-Cforce-frame-pointers=yes» i kompilatorn, vilket lĂ€gger till data för stackĂ„terstĂ€llning under programprofilering.
  • En ny uppsĂ€ttning API har blivit stabiliserad, inklusive stabilisering av metoder och implementeringar av traits:
    • {integer}::unchecked_add
    • {integer}::unchecked_mul
    • {integer}::unchecked_sub
    • ::split_at_unchecked
    • ::split_at_mut_unchecked
    • ::utf8_chunks
    • str::Utf8Chunks
    • str::Utf8Chunk
    • ::is_aligned
    • ::is_aligned
    • NonNull::is_aligned
    • ::len
    • ::len
    • ::is_empty
    • ::is_empty
    • NonNull::::is_empty
    • CStr::count_bytes
    • io::Error::downcast
    • num::NonZero
    • path::absolute
    • proc_macro::Literal::byte_character
    • proc_macro::Literal::c_string
  • Beteckningen «const», som definierar möjligheten att anvĂ€nda det i vilken kontext som helst istĂ€llet för konstanter, anvĂ€nds i funktioner:
    • Atomic*::into_inner
    • io::Cursor::new
    • io::Cursor::get_ref
    • io::Cursor::position
    • io::empty
    • io::repeat
    • io::sink
    • panic::Location::caller
    • panic::Location::file
    • panic::Location::line
    • panic::Location::column
  • Stabiliserad
    en del av funktionerna som kan anvÀndas vid kompilering till det intermediÀra representationsformatet Webassembly (WASM).
  • Den tredje nivĂ„n av stöd för plattformarna aarch64-apple-visionos, aarch64-apple-visionos-sim och riscv32ima-unknown-none-elf har implementerats. Tredje nivĂ„n innebĂ€r grundlĂ€ggande stöd, men utan automatiserad testning, publicering av officiella byggen och verifiering av byggbarheten av koden.
  • Den andra nivĂ„n av stöd för mĂ„lplattformarna aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm och x86_64-pc-windows-gnullvm har implementerats. Den andra nivĂ„n av stöd garanterar byggbarhet.

Dessutom har organisationen Rust Foundation, som övervakar ekosystemet kring programmeringssprÄket Rust, tillkÀnnagett skapandet av konsortiet "Safety-Critical Rust Consortium", som syftar till att anvÀnda Rust i lösningar som krÀver högre tillförlitlighet (Safety-Critical Software), vars fel kan hota mÀnniskors liv, orsaka skada pÄ miljön eller leda till allvarliga skador pÄ utrustning. Företagen ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle och Woven by Toyota har gÄtt med i konsortiet. NÄgra av de uppgifter som konsortiet kommer att hantera inkluderar att skriva riktlinjer och utveckla bibliotek, linters och statiska analyzatorer, samt tillÀmpa metoder för formell verifiering av tillförlitlighet och utveckla delmÀngder av sprÄket för hög-tillförlitliga system.

Bland projekten kopplade till hög-tillförlitliga system kan nĂ€mnas Verus — ett verktyg för att verifiera korrektheten av kod som skrivits med Rust. Verifieringen sker genom att definiera en specifikation som beskriver det tillĂ„tna beteendet hos koden. Under körningen av den exekverbara koden kontrollerar Verus att specifikationen följs för att bekrĂ€fta att funktionen fungerar korrekt.

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