Projektet posixutils-rs 0.2.1 har släppts. Det syftar till att utveckla en samling kommandoradsverktyg i Rust som nämns i POSIX-standarden och uppfyller dess krav (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed, etc.). När det är möjligt används befintliga crate-paket under utvecklingen. Posixutils-rs-koden distribueras under MIT-licensen.
Projektet är främst fokuserat på att uppnå överensstämmelse med kraven i POSIX.2024-specifikationen och planerar inte att tillhandahålla kompatibilitet med GNU-verktyg, vars funktionalitet av författarna uppfattas som orimligt uppsvälld. Posixutils-rs planerar dock att implementera de mest populära avancerade GNU-verktygsalternativen som finns i befintliga skript.
Bland skillnaderna från uutils-projektet, som utvecklar GNU Coreutils-implementeringen i Rust, finns det bredare omfånget av verktyg, inklusive skapandet av POSIX-refererade systemkomponenter som vi, awk, bc, m4, cron och c99-kompilatorn, samt ett minimalistiskt tillvägagångssätt, vilket innebär att endast tillhandahålla den minsta nödvändiga uppsättningen alternativ som definieras i POSIX-specifikationen eller som är problematiska att klara sig utan. Programmen i posixutils-rs-sviten tillhandahålls initialt som fristående kod som kan användas i andra projekt.
För närvarande följer 55 verktyg som utvecklats av projektet POSIX och befinner sig i testfasen, 22 verktyg tillhandahåller nödvändig funktionalitet (men har ännu inte implementerat testfasen), 20 befinner sig i utkastfasen och arbetet med 44 verktyg har ännu inte påbörjats. Bland verktygen med implementerad funktionalitet: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Bland de verktyg som ännu inte har arbetats med finns: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi.
Ändringarna i den nya utgåvan inkluderar tillägg av implementeringar av verktygen awk, m4, ps, realpath, join, time, fuser och gencat, samt initialt stöd för att arbeta i miljöer baserade på musl C-biblioteket och tillhandahållandet av ftw-biblioteket för katalogträdstraversering med race-safety.
Dessutom kan vi notera tillkännagivandet av rav1d-projektet, som utvecklar en högpresterande avkodare för AV1-videokodningsformatet, skriven i Rust-språket. Utvecklingen genomförs genom att portera avkodarkoden för dav1d-biblioteket, som utmärker sig genom sin höga prestanda, till Rust. Den förberedda porten är helt kompatibel med dav1d-bibliotekets API. Valet att porta ett befintligt bibliotek istället för att skriva vår egen version förklaras av önskan att använda en redan beprövad och testad avkodare som grund för att undvika eventuella kompatibilitetsproblem och ta hänsyn till alla komplikationer med att arbeta med AV1-formatet.
I sin nuvarande form ligger den förberedda implementeringen av rav1d 6 % efter dav1d i prestanda, men i framtiden, efter kodoptimering, planeras det att uppnå paritet i prestanda. För att uppnå hög prestanda användes en metod där de grundläggande funktionerna för avkodning av primitiva värden implementeras i assemblern i form av osäkra block (assemblerkod från dav1d används), till vilka data tas emot efter verifiering med strömparsningsfunktioner skrivna i Rust (tidigare erfarenheter av att identifiera sårbarheter i videoavkodare visar att problem huvudsakligen uppstår i parsningskod på hög nivå och inte i dataoperationer på låg nivå).
Källa: opennet.ru
