Udgivelse af Rust 1.88. Operativsystemet Munal og rsched-værktøjet i Rust

Udgivet er version 1.88 af programmeringssproget Rust, der blev skabt af Mozilla, men nu udvikles under beskyttelse af den uafhængige nonprofitorganisation Rust Foundation. Sproget fokuserer på sikker håndtering af hukommelse og tilbyder midler til at opnå høj parallel udførelse af opgaver, mens det undgår brugen af en garbage collector og runtime (runtime reduceres til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Metoder til hukommelsesarbejde i Rust befrier udviklere fra fejl ved manipulation af pekere og beskytter mod problemer, der opstår ved lavniveau håndtering af hukommelse, såsom adgang til hukommelsesområder efter frigivelse, dereferering af nulpekere, buffer-overløb osv. For distribution af biblioteker, byggeprocesser og afhængighedsstyring udvikles pakkehåndteringssystemet Cargo. For opbevaring af biblioteker understøttes repository'et crates.io.

Sikker håndtering af hukommelse sikres i Rust under kompilering ved referencekontrol, sporing af ejerskab af objekter, hensyntagen til livstid af objekter (synlighed) og vurdering af korrekt adgang til hukommelse under kodeudførelse. Rust tilbyder også midler til beskyttelse mod heltals-overløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige (immutable) referencer og variabler som standard og tilbyder stærk statisk typisering for at minimere logiske fejl.

Hovednyhederne:

  • Muligheden for at angive flere «let»-udtryk inden for betingede blokke «if» og «while» er blevet tilføjet ved at anvende operatoren «&&» (logisk OG) til deres kombination. «Let»-udtryk kan kombineres med boolske betingelsesudtryk. Variabler, der er erklæret i let-udtryk, kan bruges i efterfølgende betingelsesudtryk samt inden for blokke «if» og «while». if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88 {
  • Understøttelse af skrivning af «bare» funktioner, der er markeret med attributten «#[unsafe(naked)]» og indeholder et enkelt kald til «naked_asm!», er blevet tilføjet. De funktioner, der er oprettet på denne måde, mangler slut- og startkode genereret af compileren, hvilket giver udvikleren fuld kontrol over den assemblerkode, der knyttes til funktionen («bare» funktioner indeholder kun de assemblerinstruktioner, som udvikleren har angivet, og inkluderer ikke specialhåndteringsrutiner for argumenter og returværdier, som tilføjes af compileren). «Bare» funktioner betragtes som et mere praktisk alternativ til funktioner, der defineres i blokken «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» ); }
  • I prækreativet, der anvendes i attributterne for betinget kompilering «cfg» og «cfg_attr» (som gør det muligt at inkludere eller udelukke dele af koden afhængigt af angivne betingelser), er der blevet tilføjet understøttelse af boolske litteraler «true» og «false», der identificeres med konfigurationer, der altid er aktive eller altid er inaktive. Disse litteraler kan også anvendes i makroen «cfg!» og tabellerne «[target]» i manifestet og konfigurationerne for Cargo. Udtryk cfg(true) og cfg(false) kan anvendes i stedet for cfg(all()) og cfg(any()) for mere eksplicit at udtrykke sine intentioner.
  • I pakkemanagersystemet Cargo er der inkluderet en automatisk affaldsindsamler til at rydde cachen i brugerens hjemmemappe. Tidligere blev pakker med afhængigheder, der blev gemt i cachen, ikke ryddet op, hvilket førte til en konstant vækst i diskpladsforbrug. Den aktiverede affaldsindsamler fjerner automatisk crate-filer, som ikke er blevet tilgået i mere end 3 måneder, samt lokalt installerede crate-filer, der ikke har været tilgået i mere end en måned. Rydning af cachen aktiveres ikke, når der bruges indstillingerne «—offline» eller «—frozen» i Cargo.
  • En ny batch af API'er er blevet klassificeret som stabile, herunder stabilisering af metoder og implementeringer af 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
  • Flagget «const» anvendt i funktionerne:
    • NonNull::replace
    • ::replace
    • std::ptr::swap_nonoverlapping
    • Cell::replace
    • Cell::get
    • Cell::get_mut
    • Cell::from_mut
    • Cell::as_slice_of_cells
  • Den første niveau af support for målplatformen i686-pc-windows-gnu er blevet fjernet.

Desuden kan der nævnes rust-relaterede begivenheder:

  • Projektet Munal OS udvikler et eksperimentelt operativsystem skrevet i Rust og baseret på unikernel-konceptet. I Munal OS anvendes der ikke preemptiv multitasking, side-mapping af hukommelse og virtuel adresseplads (der bruges hukommelsens layout fra UEFI). Kernen og applikationerne kører i samme adresseplads ved hjælp af et sikkerhedsmodel baseret på sandbox-isolering af WASM (som inkluderer wasmi-motoren til at køre applikationer i WebAssembly-bytecode).

    Operativsystemet leveres med et grafisk brugergrænseflade og understøtter kontrol via tastatur og mus. Der anvendes et eget toolkit med widget-bibliotek til udvikling af grafiske applikationer. Til netværksinteraktion tilbydes en TCP-stak og driver til netværksudstyr. Blandt de tilgængelige applikationer for Munal OS er en webbrowser med grundlæggende HTML- og HTTPS-understøttelse, en teksteditor og en terminal til at køre kode i Python. Koden er åben under MIT-licensen.

    Udgivelse af Rust 1.88. Operativsystemet Munal og rsched-værktøjet i Rust
  • Asterinas-kernen 0.15.2 er blevet udgivet, skrevet i Rust og leverer en ABI, der er kompatibel med Linux-kernen. Kernen understøtter arkitekturerne x86-64 og RISC-V, og implementerer 206 ud af 368 systemopkald i Linux. 45 udviklere deltager i udviklingen af kernen, hovedsageligt fra forskellige kinesiske universiteter. Kernen er bygget med en 'framekernel'-arkitektur, hvor kernelkomponenterne placeres i et fælles adresseområde, og sikkerheden opnås gennem logisk adskillelse af sikker kode og kode, hvor der kan opstå sikkerhedsproblemer. Alle systemopkald, filsystemer og drivere implementeres på OS Services-niveau og kan ikke inkludere usikre blokke. Koden distribueres under MPL 2.0-licensen.
  • Der er udviklet et værktøj, rsched, til Linux-kernen, som gør det muligt at analysere statistik om opgavestyringssystemet. I praksis gør værktøjet det muligt at vurdere opgavestyrerens beslutninger vedrørende ressourceallokering til processer samt at spore forsinkelser opstået under planlægning. Data indsamles i kernen via BPF-understøttelsen, og det brugerrumsværktøj, der arbejder med det, er skrevet i Rust. Værktøjet er udviklet af Chris Mason, skaberen og hovedarkitekten af Btrfs-filsystemet.
  • Collabora har meldt om udviklingen af en version af Coccinelle-værktøjet til Rust-sproget. Coccinelle er oprindeligt designet til at automatisere søgning og omdannelse af C-kode i Linux-kernen. Omformuleringer defineres i form af regler, der minder om abstrakte patches, som ikke er bundet til en specifik position i koden.
  • GNOME-udviklerne har præsenteret biblioteket glycin til billedindlæsning, skrevet i Rust og muliggør dekodning af billeder med brug af sandbox-isolering. Der understøttes levering af dekodet indhold via gdk::Textures og udtrækning af metadata. Der leveres bindings for at bruge glycin i GTK4 samt en backend til at integrere glycin i GdkPixbuf-biblioteket, der anvendes i GNOME til billedindlæsning. Glycin er allerede integreret i billedfremviseren Loupe, som er standard i GNOME. Backend'en til GdkPixbuf giver mulighed for at bruge glycin i GNOME Shell, miniaturegeneratorer og vilkårlige GNOME-applikationer, uden at der skal ændres i disse programmer.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster