Utgivningen av Rust 1.88. Operativsystemet Munal och verktyget rsched pÄ Rust

Utgivningen av programsprÄket Rust 1.88 har publicerats. Det utvecklades ursprungligen av Mozilla, men drivs nu av den oberoende ideella organisationen Rust Foundation. SprÄket fokuserar pÄ sÀker minneshantering och erbjuder verktyg för att uppnÄ hög parallellism i uppgifter, utan att behöva anvÀnda en skrÀpförvaltare och runtime (runtime reduceras 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:

  • Möjligheten att ange flera uttryck "let" inom villkorsblocken "if" och "while" har lagts till, med anvĂ€ndning av operatorn "&&" (logiskt och). "Let"-uttryck kan kombineras med booleska villkorsuttryck. Variabler som deklareras i let-uttryck kan anvĂ€ndas i efterföljande villkorsuttryck samt inom blocken "if" och "while". if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88 {
  • Stödet för att skriva "nakna" funktioner, markerade med attributet "#[unsafe(naked)]" och som innehĂ„ller ett enda anrop av "naked_asm!", har lagts till. Funktioner skapade pĂ„ detta sĂ€tt har ingen epilog och prolog som genereras av compilern, vilket gör att utvecklaren helt kan kontrollera den tjĂ€nste-assemblykod som kopplas till funktionen (en "naken" funktion innehĂ„ller endast de assemblyinstruktioner som anges av utvecklaren och inkluderar inga speciella hanterare för argument och returvĂ€rden som lĂ€ggs till av compilern). "Nakna" funktioner betraktas som ett mer praktiskt alternativ till funktioner som definieras i "global_asm!". #[unsafe(naked)] pub unsafe extern "sysv64" fn wrapping_add(a: u64, b: u64) -> u64 { core::arch::naked_asm!( "add rax, rdi, rsi", "ret" ); }
  • PredikatssprĂ„ket som anvĂ€nds i attributen för villkorlig kompilering "cfg" och "cfg_attr" (som möjliggör inkludering eller uteslutning av koddelar beroende pĂ„ angivna villkor) har fĂ„tt stöd för boolska litteraler "true" och "false", som stĂ„r för konfigurationer som alltid Ă€r aktiverade eller alltid avaktiverade. Dessa litteraler kan Ă€ven anvĂ€ndas i makrot "cfg!" och tabellerna "[target]" i manifest och konfigurationer för Cargo. Uttrycken cfg(true) och cfg(false) kan anvĂ€ndas istĂ€llet för cfg(all()) och cfg(any()) för ett mer tydligt uttryck för sina avsikter.
  • I paketadministratören Cargo har automatisk start av skrĂ€prensaren inkluderats för att rensa cachen i anvĂ€ndarens hemmakatalog. Tidigare rensades inte de paket som sparades i cachen med nedladdade beroenden, vilket ledde till en konstant ökning av diskanvĂ€ndningen. Den aktiverade skrĂ€prensningsmekanismen kommer automatiskt att ta bort extern nedladdade crate-filer som inte har anvĂ€nts pĂ„ mer Ă€n 3 mĂ„nader, samt lokalt installerade crate-filer som inte har anvĂ€nts pĂ„ mer Ă€n en mĂ„nad. Cachen rensas inte om Crate-anvĂ€ndning sker med alternativen "—offline" eller "—frozen".
  • En ny uppsĂ€ttning API har blivit stabiliserad, inklusive stabilisering av metoder och implementeringar av traits:
    • Cell::update
    • impl Default for *const T
    • impl Default for *mut T
    • mod ffi::c_str
    • HashMap::extract_if
    • HashSet::extract_if
    • hint::select_unpredictable
    • proc_macro::Span::line
    • proc_macro::Span::column
    • proc_macro::Span::start
    • proc_macro::Span::end
    • proc_macro::Span::file
    • proc_macro::Span::local_file
    • ::as_chunks
    • ::as_rchunks
    • ::as_chunks_unchecked
    • ::as_chunks_mut
    • ::as_rchunks_mut
    • ::as_chunks_unchecked_mut
  • Indikatorn "const" har tillĂ€mpats i funktioner:
    • NonNull::replace
    • ::replace
    • std::ptr::swap_nonoverlapping
    • Cell::replace
    • Cell::get
    • Cell::get_mut
    • Cell::from_mut
    • Cell::as_slice_of_cells
  • Den första nivĂ„n av stöd för mĂ„ljukvaruplattformen i686-pc-windows-gnu har tagits bort.

Man kan Àven nÀmna hÀndelser relaterade till Rust:

  • Projektet Munal OS utvecklar ett experimentellt operativsystem skrivet i Rust och baserat pĂ„ konceptet unikernel. I Munal OS anvĂ€nds ingen preemptiv flerkapacitet, sidmappning och virtuellt adressutrymme (minneslayout frĂ„n UEFI anvĂ€nds). KĂ€rnan och applikationerna körs i samma adressutrymme med en sĂ€kerhetsmodell baserad pĂ„ sandbox-isolering WASM (inkluderar wasmi-motorn för att köra applikationer i WebAssembly bytekod).

    Operativsystemet har ett grafiskt grÀnssnitt och stödjer styrning via tangentbord och mus. För utveckling av grafiska applikationer anvÀnds ett eget toolkit med en widget-bibliotek. För nÀtverkskommunikation erbjuds TCP-stack och drivrutin för nÀtverksenhet. Bland de tillgÀngliga applikationerna för Munal OS finns: en webblÀsare med grundlÀggande stöd för HTML och HTTPS, en textredigerare och en terminal för att utföra kod i Python. Koden Àr öppen under MIT-licensen.

    Utgivningen av Rust 1.88. Operativsystemet Munal och verktyget rsched pÄ Rust
  • KĂ€rnan Asterinas 0.15.2 har slĂ€ppts, skriven i Rust och som tillhandahĂ„ller ett ABI kompatibelt med Linux-kĂ€rnan. KĂ€rnan stöder arkitekturerna x86-64 och RISC-V och implementerar 206 av 368 systemanrop i Linux. 45 utvecklare, frĂ€mst frĂ„n olika kinesiska universitet, deltar i utvecklingen av kĂ€rnan. KĂ€rnan Ă€r byggd med hjĂ€lp av arkitekturen "framekernel", dĂ€r kĂ€rnkomponenterna placeras i ett gemensamt adresseringsutrymme, och sĂ€kerhet uppnĂ„s genom logisk uppdelning av sĂ€ker kod och kod dĂ€r sĂ€kerhetsproblem kan uppstĂ„. Alla systemanrop, filsystem och drivrutiner implementeras pĂ„ OS Services-nivĂ„ och kan inte innehĂ„lla osĂ€kra block. Koden distribueras under licensen MPL 2.0.
  • För Linux-kĂ€rnan har verktyget rsched förberetts, vilket gör det möjligt att analysera statistik om schemalĂ€ggarens arbete. I praktiken gör verktyget det möjligt att utvĂ€rdera schemalĂ€ggningsbeslut relaterade till resursfördelning till processer, samt att spĂ„ra eventuella fördröjningar vid schemalĂ€ggning. För datainsamling i kĂ€rnan anvĂ€nds BPF-subsystemet, och verktygsomrĂ„det för anvĂ€ndarutrymmet Ă€r skrivet i Rust. Utvecklaren av verktyget Ă€r Chris Mason, skaparen och huvudsakliga arkitekten av filsystemet Btrfs.
  • Företaget Collabora har meddelat att en variant av verktyget Coccinelle för sprĂ„k som Rust har utvecklats. Coccinelle Ă€r ursprungligen avsett för att automatisera sökningen och konverteringen av C-kod i Linux-kĂ€rnan. Konverteringarna anges i form av regler som liknar abstrakta patchar, oberoende av specifika positioner i koden.
  • Utvecklarna av GNOME har presenterat ett bibliotek för bildladdning, glycin, skrivet i Rust, som möjliggör avkodning av bilder med hjĂ€lp av sandbox-isolering. Stödet finns för att leverera avkodat innehĂ„ll via gdk::Textures och extrahera metadata. Om bekvĂ€mligheter för anvĂ€ndning av glycin i GTK4 tillhandahĂ„lls, samt en backend för att anvĂ€nda glycin i GdkPixbuf-biblioteket, som anvĂ€nds i GNOME för bildladdning. Glycin anvĂ€nds redan i bildvisaren Loupe, som erbjuds i GNOME som standard. Backend för GdkPixbuf ger möjlighet att anvĂ€nda glycin i GNOME Shell, miniatyrgeneratorer och andra GNOME-applikationer, utan att Ă€ndra dessa program.

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