Bir dizi POSIX yardımcı programı ve Rust'ta yazılmış bir AV1 kod çözücü

POSIX standardında belirtilen komut satırı yardımcı programlarının Rust dilinde geliştirilmesini ve gereksinimlerinin (cp, mv, awk, make, vi, find,) karşılanmasını amaçlayan posixutils-rs 0.2.1 projesinin sürümü yayınlandı. sıralama, wc, xargs, sh, m4, sed vb.). Geliştirme sırasında mümkün olduğunca mevcut kasa paketleri kullanılır. posixutils-rs kodu MIT lisansı altında dağıtılmaktadır.

Proje öncelikle POSIX.2024 spesifikasyonunun gerekliliklerine uygunluğu sağlamaya odaklanmıştır ve işlevselliği yazarlar tarafından makul olmayan bir şekilde şişirilmiş olarak algılanan GNU yardımcı programlarıyla uyumluluk sağlamayı planlamamaktadır. Ancak posixutils-rs, mevcut komut dosyalarında bulunan en popüler gelişmiş GNU yardımcı program seçeneklerini uygulamayı planlıyor.

Rust'ta GNU Coreutils uygulamasını geliştiren uutils projesinden farklılıkları arasında, diğer şeylerin yanı sıra vi, awk, bc, m4, cron ve c99 derleyicisi gibi POSIX sistem bileşenlerinin oluşturulması da dahil olmak üzere daha geniş bir yardımcı program kapsamı yer alır. ve yalnızca POSIX spesifikasyonunda tanımlanan veya onsuz yapılması sorunlu olan minimum gerekli seçenek kümesinin sağlanmasını ima eden minimalist bir yaklaşımın yanı sıra. posixutils-rs paketindeki programlar başlangıçta diğer projelerde kullanılabilecek bağımsız kod olarak sağlanır.

Şu anda, proje tarafından geliştirilen 55 yardımcı program POSIX ile uyumludur ve test kapsamı aşamasındadır, 22 yardımcı program gerekli işlevselliği sağlamaktadır (ancak test kapsamı henüz uygulanmamıştır), 20 yardımcı program taslak aşamasındadır ve 44 yardımcı program üzerinde çalışma yapılmamıştır. henüz başladı. Uygulanan işlevlere sahip yardımcı programlar arasında: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Henüz üzerinde çalışılmayan yardımcı programlar arasında: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .

Yeni sürümdeki değişiklikler arasında awk, m4, ps, realpath, join, time, füzer ve gencat yardımcı programlarının uygulamalarının eklenmesinin yanı sıra musl C kütüphanesine dayalı ortamlarda çalışmaya yönelik ilk destek ve ftw'nin sağlanması yer alıyor. durum korumalı dizin ağacı geçiş yarışı için kütüphane.

Ek olarak, AV1 video kodlama formatı için Rust dilinde yazılmış yüksek performanslı bir kod çözücü geliştiren rav1d projesinin duyurusunu da not edebiliriz. Geliştirme, yüksek performansla öne çıkan dav1d kütüphanesinin kod çözücü kodunun Rust'a taşınmasıyla gerçekleştirilir. Hazırlanan port dav1d kütüphane API'si ile tamamen uyumludur. Kendi sürümümüzü yazmak yerine mevcut bir kitaplığı taşıma tercihi, olası uyumluluk sorunlarından kaçınmak ve AV1 formatıyla çalışmanın tüm karmaşıklıklarını hesaba katmak için temel olarak zaten kanıtlanmış ve test edilmiş bir kod çözücüyü kullanma arzusuyla açıklanmaktadır.

Mevcut haliyle rav1d'nin hazırlanan uygulaması performans açısından dav6d'nin %1 gerisindedir, ancak gelecekte kodun optimize edilmesinin ardından performansta eşitlik sağlanması planlanmaktadır. Yüksek performans elde etmek için, ilkel değerlerin kodunu çözmek için temel işlevlerin montajcıda güvenli olmayan bloklar biçiminde uygulandığı (dav1d'den montaj kodu kullanılır), verilerin akış ayrıştırma ile kontrol edildikten sonra alındığı bir yaklaşım kullanıldı. Rust'ta yazılmış işlevler (video kod çözücülerdeki güvenlik açıklarını belirleme konusundaki geçmiş deneyimler, sorunların temel olarak düşük seviyeli veri işlemlerinden ziyade yüksek seviyeli format ayrıştırma kodunda ortaya çıktığını göstermektedir).

Kaynak: opennet.ru

Yorum ekle