U publikua versioni 0.2.1 të projektit posixutils-rs, i orientuar drejt zhvillimit në gjuhën Rust të një koleksioni të mjeteve të komandës, të përmendura në standardin POSIX dhe që plotësojnë kërkesat e tij (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed etj.). Gjatë zhvillimit, përdoren sa më shumë që të jetë e mundur paketat ekzistuese crate. Kodi i posixutils-rs shpërndahet nën licencën MIT.
Projekti përqendrohet kryesisht në përmbushjen e kërkesave të specifikimit POSIX.2024 dhe nuk planifikon të ofrojë kompatibilitet me mjetet GNU, funksionaliteti i të cilave përjetohet nga autorët si i ekzagjeruar. Megjithatë, në posixutils-rs planifikohet implementimi i opsioneve të avancuara më të njohura të mjeteve GNU, të cilat shfaqen në skriptet aktuale.
Nga dallimet me projektin uutils, që zhvillon implementimin e GNU Coreutils në Rust, përmendet një mbulim më i gjerë i mjeteve, duke përfshirë, midis të tjerash, krijimin e komponenteve të sistemit të përmendura në POSIX, si vi, awk, bc, m4, cron dhe kompajlerin c99, si dhe një qasje minimalistike që parashikon ofrimin vetëm të setit minimal të opsioneve, të përcaktuara në specifikimin POSIX ose pa të cilat është e vështirë të kalosh. Programet në setin posixutils-rs ofrohen fillimisht si kod i plotë, i cili mund të përdoret në projekte të tjera.
Aktualisht, 55 mjete të zhvilluara nga projekti janë në përputhje me POSIX dhe janë në fazën e mbulimit me teste, 22 mjete kanë funksionalitetin e nevojshëm (por ende nuk ka mbulim me teste), 20 janë në fazën e skicës, dhe puna mbi 44 mjeteve ende nuk ka filluar. Midis mjeteve me funksionalitet të zbatuar: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Ndër mjetet mbi të cilat nuk ka filluar puna: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi.
Nga ndryshimet në versionin e ri, përmendet shtimi i implementimeve të mjeteve awk, m4, ps, realpath, join, time, fuser dhe gencat, si dhe mbështetje fillestare për funksionimin në ambientet e bazuara në bibliotekën C musl dhe ofrimi i bibliotekës ftw për kalimin e pemës së katalogëve me mbrojtje ndaj gjendjeve konkurruese.
Për më tepër, mund të përmendet njoftimi i projektit rav1d, që zhvillon një dekoder me performancë të lartë për formatin e kodimit të videove AV1, e shkruar në gjuhën Rust. Zhvillimi po kryhet përmes portimit në Rust të kodit të dekoderit të bibliotekës dav1d, i njohur për performancën e tij të lartë. Porti i përgatitur është plotësisht kompatibil me API-në e bibliotekës dav1d. Zgjedhja për portimin e bibliotekës ekzistuese në vend të shkruarjes së një versioni të vet është shpjeguar me dëshirën për të përdorur si bazë një dekoder të provuar dhe të testuar, për të shmangur problemet e mundshme me kompatibilitetin dhe për të marrë parasysh të gjitha nuancat e punës me formatin AV1.
Në formën aktuale, implementimi i përgatitur i rav1d ka një moskonsistencë prej 6% në performancë krahasuar me dav1d, por në të ardhmen, pas optimizimit të kodit, është planifikuar të arrihet barazimi i performancës. Për të arritur performancë të lartë, është përdorur një qasje ku funksionet themelore të dekodimit të vlerave primitive janë implementuar në assembler në formën e blloqeve të pasigurta (përdorimi i kodit assembler nga dav1d), të dhënat në të cilat vijnë pas verifikimit nga funksionet e shkruara në Rust të analizës së rrjedhës (eksperienca e kaluar në identifikimin e dobësive në dekoderët e videove tregon se problemet ndodhin kryesisht në kodin e nivelit të lartë të analizës së formatit, e jo në operacionet e nivelit të ulët me të dhënat).
Burimi: opennet.ru
