Projektet posixutils-rs 0.2.1 er blevet udgivet. Det har til formål at udvikle en samling af kommandolinjeværktøjer i Rust, der er nævnt i POSIX-standarden og opfylder dens krav (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed osv.). Når det er muligt, anvendes eksisterende crate-pakker under udviklingen. Posixutils-rs-koden distribueres under MIT-licensen.
Projektet er primært fokuseret på at opnå overholdelse af kravene i POSIX.2024-specifikationen og planlægger ikke at give kompatibilitet med GNU-værktøjer, hvis funktionalitet af forfatterne opfattes som urimeligt oppustet. Imidlertid planlægger posixutils-rs at implementere de mest populære avancerede GNU-værktøjsmuligheder, der findes i eksisterende scripts.
Blandt forskellene fra uutils-projektet, som udvikler GNU Coreutils-implementeringen i Rust, er det bredere omfang af værktøjer, herunder blandt andet oprettelsen af POSIX-refererede systemkomponenter som vi, awk, bc, m4, cron og c99-compileren, samt en minimalistisk tilgang, som indebærer kun at levere det minimalt nødvendige sæt af indstillinger, der er defineret i POSIX-specifikationen, eller som er problematiske at undvære. Programmerne i posixutils-rs-pakken leveres i første omgang som selvstændig kode, der kan bruges i andre projekter.
I øjeblikket overholder 55 forsyningsvirksomheder, der er udviklet af projektet, POSIX og er i testdækningsfasen, 22 forsyningsvirksomheder leverer den nødvendige funktionalitet (men har endnu ikke implementeret testdækning), 20 er i udkastfasen, og arbejdet med 44 forsyningsvirksomheder er endnu ikke påbegyndt. Blandt værktøjerne med implementeret funktionalitet: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Blandt de værktøjer, der endnu ikke er blevet arbejdet på, er: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi.
Ændringer i den nye udgivelse inkluderer tilføjelsen af implementeringer af værktøjerne awk, m4, ps, realpath, join, time, fuser og gencat, samt indledende understøttelse af at arbejde i miljøer baseret på musl C-biblioteket og tilvejebringelsen af ftw-biblioteket til gennemgang af mappetræer med race-safety.
Derudover kan vi bemærke annonceringen af rav1d-projektet, som udvikler en højtydende dekoder til AV1-videokodningsformatet, skrevet i Rust-sproget. Udviklingen udføres ved at portere dekoderkoden fra dav1d-biblioteket, som udmærker sig ved sin høje ydeevne, til Rust. Den forberedte port er fuldt kompatibel med dav1d-bibliotekets API. Valget om at portere et eksisterende bibliotek i stedet for at skrive vores egen version forklares med ønsket om at bruge en allerede gennemprøvet og testet dekoder som grundlag for at undgå mulige kompatibilitetsproblemer og tage højde for alle de indviklede detaljer ved at arbejde med AV1-formatet.
I sin nuværende form er den forberedte implementering af rav1d 6% bagud i forhold til dav1d i ydeevne, men i fremtiden, efter kodeoptimering, er det planen at opnå paritet i ydeevne. For at opnå høj ydeevne blev der anvendt en tilgang, hvor de grundlæggende funktioner til afkodning af primitive værdier implementeres i assembleren i form af usikre blokke (assemblerkode fra dav1d anvendes), hvori data modtages efter verifikation ved hjælp af stream-parsingfunktioner skrevet i Rust (tidligere erfaringer med at identificere sårbarheder i videodekodere viser, at problemer primært opstår i parsingkode på højt niveau og ikke i dataoperationer på lavt niveau).
Kilde: opennet.ru
