Rustda yozilgan POSIX yordam dasturlari va AV1 dekoderi

Posixutils-rs 0.2.1 loyihasining relizi nashr etildi, u Rust tilida POSIX standartida qayd etilgan va uning talablariga javob beradigan buyruq qatori yordamchi dasturlarini ishlab chiqishga qaratilgan (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed va boshqalar). Rivojlanish jarayonida, iloji bo'lsa, mavjud sandiq paketlaridan foydalaniladi. Posixutils-rs kodi MIT litsenziyasi ostida tarqatiladi.

Loyiha birinchi navbatda POSIX.2024 spetsifikatsiyasi talablariga muvofiqlikni ta'minlashga qaratilgan va GNU utilitlari bilan moslikni ta'minlashni rejalashtirmaydi, ularning funksionalligi mualliflar tomonidan asossiz ravishda shishirilgan deb qabul qilinadi. Biroq, posixutils-rs mavjud skriptlarda topilgan eng mashhur ilg'or GNU yordam dasturlarini amalga oshirishni rejalashtirmoqda.

Rust-da GNU Coreutils ilovasini ishlab chiqadigan uutils loyihasidan farqlari kommunal xizmatlarning keng qamrovini o'z ichiga oladi, jumladan, vi, awk, bc, m4, cron va c99 kompilyatori kabi POSIX tizim komponentlarini yaratish, shuningdek, POSIX spetsifikatsiyasida belgilangan minimal talab qilinadigan variantlar to'plamini taqdim etishni nazarda tutuvchi minimalistik yondashuv yoki ularsiz bajarish muammoli. Posixutils-rs to'plamidagi dasturlar dastlab boshqa loyihalarda ishlatilishi mumkin bo'lgan mustaqil kod sifatida taqdim etiladi.

Hozirda loyiha tomonidan ishlab chiqilgan 55 ta kommunal xizmatlar POSIX ga mos keladi va sinovdan o‘tish bosqichida, 22 ta yordamchi dastur zarur funksionallikni ta’minlamoqda (lekin test qamrovi hali joriy etilmagan), 20 tasi loyiha bosqichida, 44 ta kommunal xizmat ko‘rsatilmagan. hali boshlangan. Amalga oshirilgan funksiyalarga ega yordamchi dasturlardan: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Ishlari boshlanmagan yordamchi dasturlardan: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .

Yangi versiyadagi o'zgarishlar awk, m4, ps, realpath, join, time, fuser va gencat yordamchi dasturlarini qo'shishni, shuningdek, musl C kutubxonasiga asoslangan muhitda ishlashni dastlabki qo'llab-quvvatlashni va ftw bilan ta'minlashni o'z ichiga oladi. davlat tomonidan himoyalangan katalog daraxti poygasi uchun kutubxona.

Bundan tashqari, Rust tilida yozilgan AV1 video kodlash formati uchun yuqori unumli dekoderni ishlab chiqayotgan rav1d loyihasining e'lonini ham qayd etishimiz mumkin. Ishlab chiqish yuqori unumdorligi bilan ajralib turadigan dav1d kutubxonasining dekoder kodini Rust-ga ko'chirish orqali amalga oshiriladi. Tayyorlangan port dav1d kutubxonasi API bilan to'liq mos keladi. O'z versiyamizni yozish o'rniga mavjud kutubxonani portga o'tkazishni tanlash, mumkin bo'lgan muvofiqlik muammolarini oldini olish va AV1 formati bilan ishlashning barcha nozik tomonlarini hisobga olish uchun allaqachon tasdiqlangan va sinovdan o'tgan dekoderdan foydalanish istagi bilan izohlanadi.

Hozirgi shaklda rav1d ning tayyorlangan tatbiq etilishi ishlash bo'yicha dav6d dan 1% ortda qolmoqda, ammo kelajakda kodni optimallashtirishdan so'ng ishlashda paritetga erishish rejalashtirilgan. Yuqori samaradorlikka erishish uchun ibtidoiy qiymatlarni dekodlashning asosiy funktsiyalari assemblerda xavfli bloklar ko'rinishida amalga oshiriladigan yondashuv qo'llanildi (dav1d dan yig'ish kodi ishlatiladi), ma'lumotlar oqimlarni tahlil qilish bilan tekshirilgandan keyin olinadi. Rust-da yozilgan funksiyalar (video dekoderlarida zaifliklarni aniqlash bo'yicha o'tgan tajriba shuni ko'rsatadiki, muammolar asosan past darajadagi ma'lumotlar operatsiyalarida emas, balki yuqori darajadagi formatni tahlil qilish kodida paydo bo'ladi).

Manba: opennet.ru

a Izoh qo'shish