La eldono de la projekto posixutils-rs 0.2.1 estis publikigita, celanta evoluigi en la Rust-lingvo kolekton de komandliniaj utilecoj menciitaj en la POSIX-normo kaj plenumi ĝiajn postulojn (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed, ktp.). Dum evoluo, kiam ajn eblas, ekzistantaj kestaj pakoj estas uzataj. La posixutils-rs-kodo estas distribuita sub la MIT-licenco.
La projekto fokusiĝas ĉefe al la plenumado de la postuloj de la specifo POSIX.2024 kaj ne planas disponigi kongruon kun GNU-servaĵoj, kies funkcieco estas perceptita de la aŭtoroj kiel neracie ŝvelinta. Tamen posixutils-rs planas efektivigi la plej popularajn altnivelajn GNU-utilajn opciojn trovitajn en ekzistantaj skriptoj.
Diferencoj de la projekto uutils, kiu disvolvas la efektivigon de GNU Coreutils en Rust, inkluzivas pli larĝan amplekson de utilecoj, inkluzive de, interalie, la kreadon de tiaj POSIX-sistemkomponentoj kiel vi, awk, bc, m4, cron kaj la c99-kompililo, same kiel minimumisma aliro , kiu implicas provizi nur la minimuman postulatan aron de opcioj difinitaj en la POSIX-specifo aŭ kiuj estas problemaj por malhavi. La programoj en la posixutils-rs suite estas komence liveritaj kiel memstara kodo, kiu povas esti uzata en aliaj projektoj.
Nuntempe, 55 servaĵoj evoluigitaj de la projekto konformas al POSIX kaj estas en la prova priraportado, 22 servaĵoj disponigas la necesan funkciecon (sed testa kovrado ankoraŭ ne estis efektivigita), 20 estas en la skiza stadio, kaj laboro pri 44 servaĵoj ne estas efektivigita. tamen komencita. Inter la utilecoj kun efektivigita funkcieco: awk, baznomo, bc, cp, cut, chown, dato, diff, dosiero, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Inter la utilecoj, laboro pri kiu ne komenciĝis: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Ŝanĝoj en la nova eldono inkluzivas la aldonon de efektivigoj de la awk, m4, ps, realpath, join, time, fuser kaj gencat-servaĵoj, same kiel komenca subteno por labori en medioj bazitaj sur la musl C-biblioteko kaj la provizo de la ftw. biblioteko por ŝtatprotektita dosierujo-traversa kuro.
Aldone, ni povas noti la anoncon de la projekto rav1d, kiu disvolvas alt-efikan malĉifrilon por la videokodiga formato AV1, skribita en la Rust-lingvo. Disvolviĝo estas efektivigita per portado de la malĉifrila kodo de la dav1d-biblioteko, kiu estas karakterizita per alta rendimento, al Rust. La preta haveno estas plene kongrua kun la dav1d-biblioteko API. La elekto por porti ekzistantan bibliotekon anstataŭ verki nian propran version estas klarigita per la deziro uzi jam provitan kaj provitan malĉifrilon kiel bazon por eviti eblajn kongruecajn problemojn kaj konsideri ĉiujn komplikaĵojn de laboro kun la formato AV1.
En ĝia nuna formo, la preta efektivigo de rav1d estas 6% malantaŭ dav1d en rendimento, sed estonte, post optimumigado de la kodo, ĝi estas planita atingi egalecon en rendimento. Por atingi altan rendimenton, oni uzis aliron, en kiu la bazaj funkcioj por malkodi primitivajn valorojn estas efektivigitaj en asemblero en formo de nesekuraj blokoj (kunigkodo de dav1d estas uzata), la datumoj en kiuj estas ricevitaj post kontrolado per flua analizado. funkcioj skribitaj en Rust (pasinta sperto en identigado de vundeblecoj en videomalĉifriloj montras ke la problemoj ĉefe ekestas en la altnivela formata analiza kodo, prefere ol en la malaltnivelaj datumoperacioj).
fonto: opennet.ru
