Udgivelse af Rust 1.94. Eksperimenter med Rust i FreeBSD-kernen. Databasen Turso og CAD-systemet vcad på Rust.

Der er udgivet en ny version af programmeringssproget Rust 1.94, som er baseret på et projekt fra Mozilla, men nu udvikles under ledelse af den uafhængige non-profit organisation Rust Foundation. Sproget fokuserer på sikkerhed i hukommelsen og tilbyder værktøjer til at opnå høj parallelisme i opgaveudførelse, alt imens det undgår brug af en garbage collector og runtime (runtime begrænser sig til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Metoderne til hukommelseshåndtering i Rust har til formål at eliminere fejl i forbindelse med manipulation af pegepunkter og beskytte mod problemer der opstår ved lavniveau hukommelseshåndtering, såsom adgang til hukommelse efter den er frigivet, de-referering af nulpegepunkter, overskridelse af buffergrænser osv. For distribution af biblioteker, sikring af bygning og håndtering af projektafhængigheder, udvikles pakkehåndteringssystemet Cargo. For placering af biblioteker understøttes et repository på 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:

  • Typen slice har fået metoden array_windows, som opretter en iterator til at gennemløbe slices i 'vinduer' af fast størrelse, der flytter sig ét element ad gangen. I modsætning til den tidligere tilgængelige metode windows, opererer metoden array_windows med en konstant vinduesstørrelse og returnerer ved hver iteration en reference til et array i fast størrelse (&[T; N]) i stedet for et slice af ubestemt størrelse (&[T]). Da arrayets størrelse oprindeligt er kendt af compileren, kan grænsekontrol for arrayet undgås i hver iterationsfase for at forbedre ydeevnen. let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
  • I konfigurationsfilerne for package manageren Cargo (.cargo/config.toml) er der implementeret direktivet 'include', der giver mulighed for at indsætte indhold fra andre filer. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
  • Der er tilføjet support for den nye version af markup-sproget TOML 1.1 i manifest- og konfigurationsfiler, hvor der nu er støtte for flerskrevne indbyggede tabeller, escape-sekvenser '\xHH' til indsættelse af den hexadecimale repræsentation af bytes og '\e' til erstatning af '\u001B', samt muligheden for at efterlade et komma efter det sidste element og undlade angivelse af sekunder i tidsværdier. serde = { version = "1.0", features = ["derive"] } kan nu ændres til serde = { version = "1.0", features = ["derive"], }
  • En ny batch af API'er er blevet klassificeret som stabile, herunder stabilisering af metoder og implementeringer af traits:
    • ::array_windows
    • ::element_offset
    • LazyCell::get
    • LazyCell::get_mut
    • LazyCell::force_mut
    • LazyLock::get
    • LazyLock::get_mut
    • LazyLock::force_mut
    • impl TryFrom for usize
    • std::iter::Peekable::next_if_map
    • std::iter::Peekable::next_if_map_mut
    • Indbyggede funktioner til x86-instruktionerne avx512fp16
    • Indbyggede funktioner til AArch64-instruktionerne NEON fp16
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::GOLDEN_RATIO
    • f64::consts::GOLDEN_RATIO
  • Flagget «const» anvendt i funktionerne:
    • f32::mul_add
    • f64::mul_add
  • Platformen riscv64im-unknown-none-elf er nu oversat til det tredje supportniveau. Det tredje niveau dækker grundlæggende support, men uden automatiseret test, offentliggørelse af officielle builds og kontrol af koden for bygning.

Der kan desuden nævnes nyligt annoncerede projekter og begivenheder relateret til Rust:

  • Ayrton Muñoz, som tidligere implementerede support til Sony PlayStation 1-platformen i Rust-kompilatoren og arbejdede med porteringen af FreeBSD til computere med Apple Silicon-chips, har implementeret muligheden for at oprette kernekomponenter og enhedsdrivere på Rust-sprog til FreeBSD. For test formål er der foreslået et sæt af KPI-wrapper (Kernel Programming Interface), som muliggør brug af Rust-kode i FreeBSD-kernen, samt en lyddriver virtio (virtio_snd), HID-driver DockChannel til tastatur på M2 MacBook og flere lavniveau-drivere til Mac-computersubsystemer med Apple Silicon-chips.

    Det bemærkes, at arbejdet med Rust-wrapperne har været i gang siden slutningen af 2024. I wrapperne er kun en del af C-KPI implementeret, og de positioneres som ustabile, men i takt med tiden planlægger de at bringe stabilitetsniveauet op på niveau med interface til C-sprog. Den foreslåede virtio_snd-driver er egnet til musikafspilning i QEMU. Det forventes, at Rust-wrapperne vil være tilstrækkeligt stabiliserede i 2026, så interesserede udviklere kan begynde at bruge dem til at skrive kode.

  • Benny Siegert, der deltager i udviklingen af NetBSD, har forsøgt at begrunde årsagerne til, at support til Rust-sprog ikke vil blive tilgængelig i NetBSD-kernen: NetBSD understøtter arkitekturer, hvor Rust ikke er tilgængelig; vedligeholdelse af eksisterende Rust-værktøjer i pkgsrc kræver store anstrengelser og har kun få udviklere tilknyttet; Rust-support i kernen kræver at Rust-kompilatoren inkluderes i det grundlæggende system; ved bootstrapping af Rust i NetBSD anvendes en tidligere version af den binære pakke, hvilket er uacceptabelt for selvforsynende distributioner distribueret i kildekode; releasecyklusserne for Rust er inkompatible med udviklingscyklussen for NetBSD og understøttelse af tidligere versioner (for eksempel fortsætter understøttelsen af NetBSD 9, der blev udgivet i 2020, i disse forhold ville det kræve leveringen og støttet af en seks år gammel Rust-kompilator).
  • Udgivet er version 0.5 af den indbyggede DBMS Turso, skrevet i Rust og kompatibel med SQLite på SQL-dialekt, databasefilformater og C API niveau. Blandt de udvidede funktioner er CDC-mekanismen (Change data capture) til realtids overvågning af databasen, brugen af io_uring til asynkron I/O i Linux, støtte til vektorsøgning, tilstedeværelsen af ALTER-udtryk til ændring af databaseskemaer, muligheden for at kryptere data i databasen, i tilfælde af inkrementelle beregninger, og konstruktionen "BEGIN CONCURRENT".
  • Projekt til at give mulighed for anvendelse af Rust-standardbiblioteket i programmer, der kører på GPU-siden.
  • Emuko – en RISC-V emulator, skrevet i Rust, der kan indlæse Linux, understøtter JIT-kompilering og kan gemme samt genskabe tilstandssnapshots.
  • RustConn (flatpak) – en grafisk grænseflade til at administrere eksterne netværk forbindelser til andre værter, der understøtter SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust og SFTP. Koden er skrevet i Rust med brug af GTK4 og Wayland.
  • En ny gren af projektet zlib-rs 0.6 er blevet præsenteret, markeret som den første stabile version, der er fuldt kompatibel med zlib C API og egnet til problemfri udskiftning af zlib. Projektet sigter mod at skabe et sikkert alternativ til datakomprimeringsbiblioteket zlib. Udviklingen sker med fokus på projektet zlib-ng, der udvikler den højtydende version af zlib.
  • Projektet vcad er blevet introduceret, der udvikler et parametrebaseret system til automatisk design (CAD), skrevet i Rust og integreret med AI-agenter via MCP-protokollen. Der understøttes 3D-modellering, simulering, arbejde med 2D-skitser, komponentmontering, import i STEP-format og eksport i STL/GLB/STEP/DXF-formater.
  • Et talesgenkendelsessystem er blevet offentliggjort, skrevet i Rust og som bruger AI-modellen Mistral Voxtral Mini 4B Realtime og machine learning-rammen Burn. Projektet er rettet mod overførsel af tale i realtid til dannelse af transkription under livestreaming.
  • Udgivelsen af værktøjet c2rust 0.22, der er designet til at oversætte C-kode (C99) til en unsafe-repræsentation i Rust, der er tæt struktureret på den oprindelige C-kode. Den resulterende arbejdsgang kan derefter bruges til gradvist at oversætte til idiomatisk Rust og eliminere unsafe-blokke.

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