S'ha publicat el llançament del projecte posixutils-rs 0.2.1, destinat a desenvolupar en el llenguatge Rust una col·lecció d'utilitats de línia d'ordres esmentades a l'estàndard POSIX i complir els seus requisits (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed, etc.). Durant el desenvolupament, sempre que sigui possible, s'utilitzen paquets de caixes existents. El codi posixutils-rs es distribueix sota la llicència MIT.
El projecte se centra principalment a aconseguir el compliment dels requisits de l'especificació POSIX.2024 i no té previst oferir compatibilitat amb les utilitats GNU, la funcionalitat de les quals és percebuda pels autors com a exageradament inflada. Tanmateix, posixutils-rs té previst implementar les opcions d'utilitat GNU avançades més populars que es troben als scripts existents.
Les diferències amb el projecte uutils, que desenvolupa la implementació de GNU Coreutils a Rust, inclouen un abast més ampli d'utilitats, incloent, entre altres coses, la creació de components del sistema POSIX com vi, awk, bc, m4, cron i el compilador c99, així com un enfocament minimalista, que implica proporcionar només el conjunt mínim requerit d'opcions definides a l'especificació POSIX o de les quals és problemàtic prescindir-ne. Els programes de la suite posixutils-rs es proporcionen inicialment com a codi autònom que es pot utilitzar en altres projectes.
Actualment, 55 serveis públics desenvolupats pel projecte compleixen amb POSIX i es troben en fase de cobertura de proves, 22 utilitats proporcionen la funcionalitat necessària (però encara no s'ha implementat la cobertura de proves), 20 estan en fase d'esborrany i el treball en 44 serveis públics no s'ha fet. encara començat. Entre les utilitats amb funcionalitat implementada: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Entre les utilitats, treballs que no han començat: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Els canvis a la nova versió inclouen l'addició d'implementacions de les utilitats awk, m4, ps, realpath, join, time, fuser i gencat, així com suport inicial per treballar en entorns basats en la biblioteca musl C i la prestació de ftw. biblioteca per a la cursa de recorregut de l'arbre de directoris protegit per l'estat.
A més, podem destacar l'anunci del projecte rav1d, que està desenvolupant un descodificador d'alt rendiment per al format de codificació de vídeo AV1, escrit en llenguatge Rust. El desenvolupament es porta a terme mitjançant la portació del codi descodificador de la biblioteca dav1d, que es caracteritza per un alt rendiment, a Rust. El port preparat és totalment compatible amb l'API de la biblioteca dav1d. L'elecció de portar una biblioteca existent en lloc d'escriure la nostra pròpia versió s'explica pel desig d'utilitzar un descodificador ja provat i provat com a base per evitar possibles problemes de compatibilitat i tenir en compte totes les complexitats de treballar amb el format AV1.
En la seva forma actual, la implementació preparada de rav1d està un 6% per darrere de dav1d en rendiment, però en el futur, després d'optimitzar el codi, es preveu aconseguir la paritat en el rendiment. Per aconseguir un alt rendiment, es va utilitzar un enfocament en què les funcions bàsiques per a la descodificació de valors primitius s'implementen en l'assemblador en forma de blocs no segurs (s'utilitza codi de muntatge de dav1d), les dades en què es reben després de comprovar amb l'anàlisi de flux. funcions escrites en Rust (l'experiència passada en la identificació de vulnerabilitats en descodificadors de vídeo mostra que els problemes sorgeixen principalment en el codi d'anàlisi de format d'alt nivell, més que en les operacions de dades de baix nivell).
Font: opennet.ru
