Sada nástrojov POSIX a dekodér AV1 napísaný v jazyku Rust

Bolo zverejnené vydanie projektu posixutils-rs 0.2.1, ktorého cieľom je vyvinúť v jazyku Rust zbierku nástrojov príkazového riadku uvedených v štandarde POSIX a splniť jeho požiadavky (cp, mv, awk, make, vi, find, triediť, wc, xargs, sh, m4, sed atď.). Počas vývoja sa vždy, keď je to možné, používajú existujúce obaly prepraviek. Kód posixutils-rs je distribuovaný pod licenciou MIT.

Projekt je zameraný predovšetkým na dosiahnutie súladu s požiadavkami špecifikácie POSIX.2024 a neplánuje zabezpečiť kompatibilitu s GNU utilitami, ktorých funkcionalita je autormi vnímaná ako neprimerane nafúknutá. Posixutils-rs však plánuje implementovať najpopulárnejšie pokročilé možnosti GNU utility, ktoré sa nachádzajú v existujúcich skriptoch.

Rozdiely od projektu uutils, ktorý vyvíja implementáciu GNU Coreutils v Ruste, zahŕňajú širší rozsah nástrojov, vrátane, okrem iného, ​​vytvorenia takých komponentov systému POSIX, ako sú vi, awk, bc, m4, cron a kompilátor c99, ako aj minimalistický prístup, ktorý znamená poskytovanie len minimálnej požadovanej množiny možností definovaných v špecifikácii POSIX alebo bez ktorých je problematické sa zaobísť. Programy v balíku posixutils-rs sú pôvodne dodávané ako samostatný kód, ktorý možno použiť v iných projektoch.

V súčasnosti je 55 utilít vyvinutých v rámci projektu v súlade s POSIX a sú v štádiu testovacieho pokrytia, 22 utilít poskytuje potrebnú funkčnosť (ale testovacie pokrytie ešte nebolo implementované), 20 je v štádiu návrhu a práce na 44 utilitách ešte nie sú ešte začaté. Medzi nástroje s implementovanou funkcionalitou: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Medzi nástroje, na ktorých sa ešte nezačalo pracovať: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .

Zmeny v novom vydaní zahŕňajú pridanie implementácií nástrojov awk, m4, ps, realpath, join, time, fuser a gencat, ako aj počiatočnú podporu pre prácu v prostrediach založených na knižnici musl C a poskytovanie ftw knižnica pre štátom chránený závod na prechod cez strom adresára.

Okrem toho si môžeme všimnúť oznámenie projektu rav1d, ktorý vyvíja vysoko výkonný dekodér pre formát kódovania videa AV1 napísaný v jazyku Rust. Vývoj prebieha portovaním dekódovacieho kódu knižnice dav1d, ktorá sa vyznačuje vysokým výkonom, na Rust. Pripravený port je plne kompatibilný s API knižnice dav1d. Voľba portovať existujúcu knižnicu namiesto písania vlastnej verzie je vysvetlená túžbou použiť ako základ už osvedčený a testovaný dekodér, aby sme sa vyhli možným problémom s kompatibilitou a zohľadnili všetky zložitosti práce s formátom AV1.

V súčasnej podobe je pripravovaná implementácia rav1d vo výkone 6% za dav1d, no v budúcnosti sa po optimalizácii kódu plánuje dosiahnuť paritu vo výkone. Na dosiahnutie vysokého výkonu bol použitý prístup, v ktorom sú základné funkcie na dekódovanie primitívnych hodnôt implementované v assembleri vo forme nebezpečných blokov (používa sa montážny kód z dav1d), do ktorých sú dáta prijímané po kontrole pomocou parsovania streamu. funkcie napísané v jazyku Rust (minulé skúsenosti s identifikáciou zraniteľností vo video dekodéroch ukazujú, že problémy vznikajú najmä v kóde syntaktického analyzovania na vysokej úrovni, a nie v operáciách s údajmi na nízkej úrovni).

Zdroj: opennet.ru

Pridať komentár