Paskelbtas posixutils-rs 0.2.1 projekto leidimas, skirtas Rust kalba sukurti POSIX standarte minimų komandų eilutės paslaugų rinkinį, atitinkantį jo reikalavimus (cp, mv, awk, make, vi, find, Rūšiuoti, wc, xargs, sh, m4, sed ir kt.). Kuriant, kai tik įmanoma, naudojami esami dėžių paketai. Posixutils-rs kodas platinamas pagal MIT licenciją.
Projektas visų pirma orientuotas į atitiktį POSIX.2024 specifikacijos reikalavimams ir neplanuoja užtikrinti suderinamumo su GNU komunalinėmis paslaugomis, kurių funkcionalumą autoriai vertina kaip nepagrįstai išpūstą. Tačiau posixutils-rs planuoja įdiegti populiariausias pažangias GNU paslaugų parinktis, esančias esamuose scenarijuose.
Skirtumai nuo uutils projekto, kuris plėtoja GNU Coreutils diegimą Rust, apima platesnę paslaugų sritį, įskaitant, be kita ko, tokių POSIX sistemos komponentų kaip vi, awk, bc, m4, cron ir c99 kompiliatoriaus kūrimą, taip pat minimalistinis požiūris, kuris reiškia, kad reikia pateikti tik minimalų reikalingą parinkčių rinkinį, apibrėžtą POSIX specifikacijoje arba be kurių sunku išsiversti. Posixutils-rs rinkinio programos iš pradžių pateikiamos kaip savarankiškas kodas, kurį galima naudoti kituose projektuose.
Šiuo metu 55 projekto sukurtos komunalinės paslaugos atitinka POSIX ir yra bandomosios aprėpties stadijoje, 22 komunalinės paslaugos suteikia reikiamą funkcionalumą (tačiau bandomoji aprėptis dar neįdiegta), 20 yra projektavimo stadijoje, o 44 komunalinės paslaugos dar nedirbamos. dar prasidėjo. Tarp paslaugų su įdiegtomis funkcijomis: awk, basename, bc, cp, cut, chown, data, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Tarp paslaugų, kurių darbas dar nepradėtas: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Naujos leidimo pakeitimai apima awk, m4, ps, realpath, join, time, fuser ir gencat paslaugų diegimo pridėjimą, taip pat pradinį palaikymą darbui aplinkoje, pagrįstoje musl C biblioteka ir ftw teikimą. biblioteka, skirta valstybės saugomų katalogų medžio traversal lenktynėms.
Be to, galime atkreipti dėmesį į rav1d projekto, kuriame kuriamas didelio našumo dekoderis AV1 vaizdo kodavimo formatui, parašytas Rust kalba, anonsą. Kūrimas vykdomas perkeliant dav1d bibliotekos, kuri pasižymi dideliu našumu, dekoderio kodą į Rust. Paruoštas prievadas yra visiškai suderinamas su dav1d bibliotekos API. Pasirinkimas perkelti esamą biblioteką, o ne rašyti savo versiją, paaiškinamas noru naudoti jau patikrintą ir patikrintą dekoderį, kad būtų išvengta galimų suderinamumo problemų ir būtų atsižvelgta į visas darbo su AV1 formatu subtilybes.
Dabartiniu pavidalu parengtas rav1d diegimas našumu atsilieka nuo dav6d 1%, tačiau ateityje, optimizavus kodą, planuojama pasiekti našumo paritetą. Norint pasiekti aukštą našumą, buvo naudojamas metodas, kai pagrindinės primityviųjų reikšmių dekodavimo funkcijos yra įdiegtos asamblieryje nesaugių blokų pavidalu (naudojamas surinkimo kodas iš dav1d), į kuriuos duomenys gaunami patikrinus srauto analizę. funkcijos, parašytos Rust (ankstesnė patirtis nustatant vaizdo dekoderių pažeidžiamumą rodo, kad problemos daugiausia kyla dėl aukšto lygio formato analizės kodo, o ne atliekant žemo lygio duomenų operacijas).
Šaltinis: opennet.ru
