Avaldatud on posixutils-rs 0.2.1 projekti väljalase, mille eesmärk on arendada Rust keeles POSIX standardis mainitud käsurea utiliitide kogu, mis vastab selle nõuetele (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed jne). Arendamise käigus kasutatakse võimalusel olemasolevaid kastipakette. Posixutils-rs koodi levitatakse MIT litsentsi all.
Projekt on keskendunud eelkõige POSIX.2024 spetsifikatsiooni nõuetele vastavuse saavutamisele ning ei plaani pakkuda ühilduvust GNU utiliitidega, mille funktsionaalsust autorid tajuvad põhjendamatult ülespuhutuna. Siiski plaanib posixutils-rs rakendada olemasolevates skriptides leiduvaid populaarsemaid täiustatud GNU utiliidi valikuid.
Erinevused projektist uutils, mis arendab GNU Coreutilsi juurutamist Rustis, hõlmavad laiemat utiliitide ulatust, sealhulgas muuhulgas selliste POSIX-i süsteemikomponentide loomist nagu vi, awk, bc, m4, cron ja c99 kompilaator, samuti minimalistlik lähenemine , mis eeldab ainult minimaalse nõutava suvandite komplekti pakkumist, mis on määratletud POSIX-i spetsifikatsioonis või milleta on problemaatiline. Posixutils-rs komplekti programmid tarnitakse algselt iseseisva koodina, mida saab kasutada teistes projektides.
Hetkel vastavad projekti raames välja töötatud 55 utiliiti POSIX-ile ja on testkatte staadiumis, 22 utiliiti pakuvad vajalikku funktsionaalsust (kuid testkatvus pole veel juurutatud), 20 on eelnõu staadiumis ja töö 44 utiliitiga pole veel tehtud. veel alanud. Rakendatud funktsionaalsusega utiliitide hulgas: awk, baasnimi, bc, cp, lõika, chown, kuupäev, diff, fail, otsi, grep, ls, kena, ps, sort, strings, tail, tr, tty, wc, uniq. Utiliidid, mille kallal tööd pole alanud: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Uue versiooni muudatused hõlmavad utiliitide awk, m4, ps, realpath, join, time, fuser ja gencat rakenduste lisamist, samuti esialgset tuge töötamiseks keskkondades, mis põhinevad teegil musl C ja ftw pakkumist. raamatukogu riiklikult kaitstud kataloogipuu läbimise võistluse jaoks.
Lisaks võime märkida teadet projekti rav1d kohta, mis arendab suure jõudlusega dekoodrit AV1 video kodeerimisvormingu jaoks, mis on kirjutatud Rust keeles. Arendus viiakse läbi suure jõudlusega teegi dav1d dekoodri koodi portimisega Rusti. Ettevalmistatud port ühildub täielikult dav1d teegi API-ga. Oma versiooni kirjutamise asemel olemasoleva raamatukogu portimise valikut selgitab soov võtta aluseks juba tõestatud ja testitud dekooder, et vältida võimalikke ühilduvusprobleeme ja võtta arvesse kõiki AV1-vorminguga töötamise keerukust.
Praegusel kujul on rav1d ettevalmistatud juurutus jõudluses dav6d-st 1% maas, kuid edaspidi on peale koodi optimeerimist plaanis jõudluses pariteeti saavutada. Kõrge jõudluse saavutamiseks kasutati lähenemisviisi, milles primitiivsete väärtuste dekodeerimise põhifunktsioonid rakendatakse assembleris ebaturvaliste plokkide kujul (kasutatakse dav1d koostekoodi), millesse andmed võetakse vastu pärast kontrollimist voo parsimisega. funktsioonid, mis on kirjutatud Rustis (varasemad kogemused videodekoodrite haavatavuste tuvastamisel näitavad, et probleemid tekivad peamiselt kõrgetasemelise vormingu parsimiskoodiga, mitte madala taseme andmetoimingutes).
Allikas: opennet.ru
