Është publikuar publikimi i projektit posixutils-rs 0.2.1, i cili synon zhvillimin në gjuhën Rust të një koleksioni të shërbimeve të linjës komanduese të përmendura në standardin POSIX dhe përmbushjen e kërkesave të tij (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed etj.). Gjatë zhvillimit, sa herë që është e mundur, përdoren paketat ekzistuese të arkës. Kodi posixutils-rs shpërndahet nën licencën MIT.
Projekti është fokusuar kryesisht në arritjen e përputhshmërisë me kërkesat e specifikimit POSIX.2024 dhe nuk planifikon të sigurojë përputhshmëri me shërbimet GNU, funksionaliteti i të cilave nga autorët perceptohet si i fryrë në mënyrë të paarsyeshme. Megjithatë, posixutils-rs planifikon të zbatojë opsionet më të njohura të avancuara të shërbimeve GNU që gjenden në skriptet ekzistuese.
Dallimet nga projekti uutils, i cili zhvillon zbatimin e GNU Coreutils në Rust, përfshijnë një fushë më të gjerë shërbimesh, duke përfshirë, ndër të tjera, krijimin e komponentëve të tillë të sistemit POSIX si vi, awk, bc, m4, cron dhe përpiluesi c99, si dhe një qasje minimaliste, e cila nënkupton ofrimin e vetëm grupit minimal të kërkuar të opsioneve të përcaktuara në specifikimin POSIX ose që janë problematike për t'u bërë pa të. Programet në paketën posixutils-rs ofrohen fillimisht si kod i pavarur që mund të përdoret në projekte të tjera.
Aktualisht, 55 shoqëri të zhvilluara nga projekti përputhen me POSIX dhe janë në fazën e mbulimit të testimit, 22 shoqëri ofrojnë funksionalitetin e nevojshëm (por mbulimi i testimit ende nuk është zbatuar), 20 janë në fazën e draftit dhe puna në 44 shoqëri nuk është zbatuar. ende filluar. Ndër shërbimet me funksionalitet të implementuar: awk, emri bazë, bc, cp, cut, chown, data, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Ndër shërbimet, puna për të cilën nuk ka filluar: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Ndryshimet në versionin e ri përfshijnë shtimin e zbatimeve të shërbimeve awk, m4, ps, realpath, join, time, fuser dhe gencat, si dhe mbështetjen fillestare për të punuar në mjedise të bazuara në bibliotekën musl C dhe ofrimin e ftw bibliotekë për garën e kalimit të pemës së drejtorive të mbrojtura nga shteti.
Për më tepër, mund të vërejmë njoftimin e projektit rav1d, i cili po zhvillon një dekoder me performancë të lartë për formatin e kodimit të videos AV1, të shkruar në gjuhën Rust. Zhvillimi kryhet duke bartur kodin e dekoderit të bibliotekës dav1d, i cili karakterizohet nga performanca e lartë, në Rust. Porti i përgatitur është plotësisht i pajtueshëm me API-në e bibliotekës dav1d. Zgjedhja për të portuar një bibliotekë ekzistuese në vend të shkrimit të versionit tonë shpjegohet me dëshirën për të përdorur një dekoder tashmë të provuar dhe të testuar si bazë për të shmangur problemet e mundshme të përputhshmërisë dhe për të marrë parasysh të gjitha ndërlikimet e punës me formatin AV1.
Në formën e tij aktuale, zbatimi i përgatitur i rav1d është 6% prapa dav1d në performancë, por në të ardhmen, pas optimizimit të kodit, është planifikuar të arrihet barazi në performancë. Për të arritur performancë të lartë, u përdor një qasje në të cilën funksionet themelore për dekodimin e vlerave primitive zbatohen në assembler në formën e blloqeve të pasigurta (përdoret kodi i montimit nga dav1d), të dhënat në të cilat merren pas kontrollit me analizimin e rrjedhës funksionet e shkruara në Rust (përvoja e kaluar në identifikimin e dobësive në dekoderat e videove tregon se problemet lindin kryesisht në kodin e analizimit të formatit të nivelit të lartë, sesa në operacionet e të dhënave të nivelit të ulët).
Burimi: opennet.ru
