Маҷмӯи утилитаҳои POSIX ва декодери AV1, ки дар Rust навишта шудаанд

Нашри лоиҳаи posixutils-rs 0.2.1 нашр шудааст, ки ба таҳияи маҷмӯаи утилитаҳои сатри фармонӣ дар забони Rust нигаронида шудааст, ки дар стандарти POSIX зикр шудааст ва ба талаботи он ҷавобгӯ аст (cp, mv, awk, make, vi, find, навъ, wc, xargs, sh, m4, sed ва ғайра). Ҳангоми таҳия, то ҳадди имкон, бастаҳои мавҷудаи қуттиҳо истифода мешаванд. Рамзи posixutils-rs тибқи иҷозатномаи MIT паҳн карда мешавад.

Лоиҳа пеш аз ҳама ба ноил шудан ба риояи талаботи мушаххасоти POSIX.2024 нигаронида шудааст ва таъмини мутобиқат бо утилитаҳои GNU-ро ба нақша нагирифтааст, ки функсионалии он аз ҷониби муаллифон беасос дабдабанок ҳисобида мешавад. Бо вуҷуди ин, posixutils-rs нақша дорад, ки имконоти пешрафтаи GNU-ро дар скриптҳои мавҷуда амалӣ созад.

Фарқиятҳо аз лоиҳаи uutils, ки татбиқи GNU Coreutils дар Rust-ро таҳия мекунад, доираи васеи хидматрасониро дар бар мегирад, аз ҷумла, дар байни чизҳои дигар, эҷоди чунин ҷузъҳои системаи POSIX ба монанди vi, awk, bc, m4, cron ва compiler c99, инчунин равиши минималистӣ, ки пешниҳоди танҳо маҷмӯи ҳадди ақали зарурии имконоти дар мушаххасоти POSIX муайяншударо дар назар дорад ва ё бидуни онҳо кор кардан мушкил аст. Барномаҳо дар пакети posixutils-rs дар аввал ҳамчун рамзи мустақил дода мешаванд, ки метавонанд дар дигар лоиҳаҳо истифода шаванд.

Дар ҳоли ҳозир 55 утилитаҳои аз ҷониби лоиҳа таҳияшуда ба POSIX мувофиқат мекунанд ва дар марҳилаи фарогирии санҷиш қарор доранд, 22 утилитаҳо функсияҳои заруриро таъмин мекунанд (аммо фарогирии санҷиш то ҳол амалӣ карда нашудааст), 20-тоаш дар марҳилаи лоиҳакашӣ қарор доранд ва дар 44 утилита кор нагирифтааст. ҳанӯз оғоз. Дар байни утилитаҳои дорои функсияҳои амалӣ: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Дар байни утилитаҳо, ки корашон оғоз нашудааст: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .

Тағирот дар версияи нав иловаи татбиқи awk, m4, ps, realpath, join, time, fuser ва gencat, инчунин дастгирии ибтидоӣ барои кор дар муҳити бар асоси китобхонаи musl C ва таъмини ftw иборат аст. китобхона барои гузариши дарахти директорияи аз ҷониби давлат ҳифзшаванда.

Илова бар ин, мо метавонем эълони лоиҳаи rav1d-ро қайд кунем, ки декодери баландсифат барои формати рамзгузории видеои AV1, ки бо забони Rust навишта шудааст, таҳия мекунад. Таҳия тавассути интиқол додани коди декодери китобхонаи dav1d, ки бо иҷрои баланд хос аст, ба Rust анҷом дода мешавад. Порти омодашуда бо API китобхонаи dav1d комилан мувофиқ аст. Интихоби интиқоли китобхонаи мавҷуда ба ҷои навиштани версияи худи мо бо хоҳиши истифода бурдани декодери аллакай исботшуда ва озмудашуда ҳамчун асос барои пешгирӣ кардани мушкилоти эҳтимолии мутобиқат ва ба назар гирифтани тамоми нозукиҳои кор бо формати AV1 шарҳ дода мешавад.

Дар шакли ҳозираи худ, татбиқи омодашудаи rav1d дар иҷроиш аз dav6d 1% ақиб мондааст, аммо дар оянда, пас аз оптимизатсияи код, ноил шудан ба паритет дар иҷроиш ба нақша гирифта шудааст. Барои ноил шудан ба иҷрои баланд, равише истифода шуд, ки дар он функсияҳои асосии рамзкушоӣ кардани арзишҳои ибтидоӣ дар ассемблер дар шакли блокҳои хатарнок амалӣ карда мешаванд (коди васлкунӣ аз dav1d истифода мешавад), ки маълумот пас аз тафтиш бо таҳлили ҷараён гирифта мешавад. функсияҳои дар Rust навишташуда (таҷрибаи гузаштаи муайян кардани осебпазирӣ дар декодерҳои видео нишон медиҳад, ки мушкилот асосан дар коди таҳлили формати сатҳи баланд ба вуҷуд меоянд, на дар амалиёти сатҳи пасти додаҳо).

Манбаъ: opennet.ru

Илова Эзоҳ