POSIX утилиталарынын топтому жана Rust тилинде жазылган AV1 декодери

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 утилиталарынын өнүккөн варианттарын ишке ашырууну пландаштырууда.

Rustто GNU Coreutils ишке ашырууну иштеп чыгуучу uutils долбоорунан айырмачылыктар утилиталардын кеңири чөйрөсүн камтыйт, анын ичинде vi, awk, bc, m4, cron жана c99 компилятору сыяктуу POSIX тутумунун компоненттерин түзүү, ошондой эле 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 менен камсыздоону камтыйт. мамлекет тарабынан корголгон каталог дарак өтүү жарышы үчүн китепкана.

Кошумчалай кетсек, Rust тилинде жазылган AV1 видео коддоо форматы үчүн жогорку өндүрүмдүүлүктөгү декодерди иштеп чыгуучу rav1d долбоорунун жарыясын белгилей кетсек болот. Иштеп чыгуу жогорку өндүрүмдүүлүгү менен мүнөздөлгөн dav1d китепканасынын декодер кодун Rustка көчүрүү аркылуу ишке ашырылат. Даярдалган порт Dav1d китепкана API менен толук шайкеш келет. Өзүбүздүн версиябызды жазуунун ордуна иштеп жаткан китепкананы портко которууну тандоо шайкештиктин мүмкүн болгон көйгөйлөрүн болтурбоо жана AV1 форматы менен иштөөнүн бардык татаалдыктарын эске алуу үчүн буга чейин далилденген жана сыналган декодерди негиз катары колдонуу каалоосу менен түшүндүрүлөт.

Учурдагы формада rav1d даярдалган ишке ашыруу аткаруу боюнча dav6dден 1% артта, бирок келечекте кодду оптималдаштыруудан кийин аткарууда паритетке жетишүү пландаштырылууда. Жогорку өндүрүмдүүлүккө жетүү үчүн примитивдик маанилерди декоддоо үчүн негизги функциялар ассемблерде кооптуу блоктор түрүндө ишке ашырылган ыкма колдонулган (dav1d монтаж коду колдонулат), ага маалыматтар агымдык талдоо менен текшерилгенден кийин кабыл алынат. Rust менен жазылган функциялар (видео декодерлердеги кемчиликтерди аныктоодогу мурунку тажрыйба көрсөткөндөй, көйгөйлөр негизинен төмөнкү деңгээлдеги маалымат операцияларында эмес, жогорку деңгээлдеги формат талдоо кодунда пайда болот).

Source: opennet.ru

Комментарий кошуу