Publicouse a versión do proxecto posixutils-rs 0.2.1, destinado a desenvolver na linguaxe Rust unha colección de utilidades de liña de comandos mencionadas no estándar POSIX e cumprir os seus requisitos (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed, etc.). Durante o desenvolvemento, sempre que sexa posible, utilízanse os paquetes de caixas existentes. O código posixutils-rs distribúese baixo a licenza MIT.
O proxecto céntrase principalmente en lograr o cumprimento dos requisitos da especificación POSIX.2024 e non prevé proporcionar compatibilidade coas utilidades GNU, cuxa funcionalidade é percibida polos autores como excesivamente inflada. Non obstante, posixutils-rs planea implementar as opcións de utilidade GNU avanzadas máis populares que se atopan nos scripts existentes.
As diferenzas co proxecto uutils, que desenvolve a implementación de GNU Coreutils en Rust, inclúen unha gama máis ampla de utilidades, incluíndo, entre outras cousas, a creación de compoñentes do sistema POSIX como vi, awk, bc, m4, cron e o compilador c99, así como un enfoque minimalista , que implica proporcionar só o conxunto mínimo de opcións requiridas definidas na especificación POSIX ou das que resulta problemático prescindir. Os programas da suite posixutils-rs ofrécense inicialmente como código autónomo que se pode usar noutros proxectos.
Actualmente, 55 utilidades desenvolvidas polo proxecto cumpren co POSIX e están en fase de cobertura de proba, 22 utilidades proporcionan a funcionalidade necesaria (pero aínda non se implementou a cobertura de proba), 20 están en fase de borrador e o traballo en 44 utilidades non se realizou. aínda comezado. Entre as utilidades con funcións implementadas: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Entre as utilidades, traballo no que non comezou: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Os cambios na nova versión inclúen a adición de implementacións das utilidades awk, m4, ps, realpath, join, time, fuser e gencat, así como soporte inicial para traballar en ambientes baseados na biblioteca C musl e a provisión do ftw. biblioteca para a carreira de cruzamento da árbore de directorios protexida polo estado.
Ademais, podemos notar o anuncio do proxecto rav1d, que está a desenvolver un descodificador de alto rendemento para o formato de codificación de vídeo AV1, escrito na linguaxe Rust. O desenvolvemento realízase portando o código decodificador da biblioteca dav1d, que se caracteriza por un alto rendemento, a Rust. O porto preparado é totalmente compatible coa API da biblioteca dav1d. A elección de portar unha biblioteca existente en lugar de escribir a nosa propia versión explícase polo desexo de utilizar un descodificador xa probado e probado como base para evitar posibles problemas de compatibilidade e ter en conta todas as complexidades de traballar co formato AV1.
Na súa forma actual, a implementación preparada de rav1d está un 6% por detrás de dav1d en rendemento, pero no futuro, despois de optimizar o código, prevese acadar a paridade no rendemento. Para acadar un alto rendemento, utilizouse un enfoque no que as funcións básicas para decodificar valores primitivos se implementan no ensamblador en forma de bloques inseguros (utilízase o código de montaxe de dav1d), cuxos datos se reciben despois da comprobación coa análise de fluxos. funcións escritas en Rust (a experiencia pasada na identificación de vulnerabilidades en decodificadores de vídeo mostra que os problemas xorden principalmente no código de análise de formato de alto nivel, máis que en operacións de datos de baixo nivel).
Fonte: opennet.ru
