مجموعة من أدوات POSIX المساعدة ووحدة فك ترميز AV1 مكتوبة بلغة Rust

تم نشر إصدار مشروع posixutils-rs 0.2.1، والذي يهدف إلى تطوير مجموعة من أدوات سطر الأوامر المساعدة المذكورة في معيار POSIX بلغة Rust وتلبية متطلباتها (cp، mv، awk، make، vi، find، فرز، مرحاض، xargs، sh، m4، sed، الخ). أثناء التطوير، كلما أمكن ذلك، يتم استخدام حزم الصناديق الموجودة. يتم توزيع كود posixutils-rs بموجب ترخيص MIT.

يركز المشروع في المقام الأول على تحقيق الامتثال لمتطلبات مواصفات POSIX.2024 ولا يخطط لتوفير التوافق مع أدوات GNU المساعدة، والتي ينظر المؤلفون إلى وظائفها على أنها متضخمة بشكل غير معقول. ومع ذلك، تخطط posixutils-rs لتطبيق خيارات أدوات GNU المتقدمة الأكثر شيوعًا والموجودة في البرامج النصية الموجودة.

تتضمن الاختلافات عن مشروع uutils، الذي يطور تطبيق GNU Coreutils في Rust، نطاقًا أوسع من الأدوات المساعدة، بما في ذلك، من بين أمور أخرى، إنشاء مكونات نظام POSIX مثل vi وawk وbc وm4 وcron والمترجم 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. المنفذ المجهز متوافق تمامًا مع واجهة برمجة تطبيقات مكتبة dav1d. يتم تفسير اختيار نقل مكتبة موجودة بدلاً من كتابة نسختنا الخاصة من خلال الرغبة في استخدام وحدة فك ترميز مثبتة ومختبرة بالفعل كأساس لتجنب مشاكل التوافق المحتملة ومراعاة جميع تعقيدات العمل بتنسيق AV1.

في شكله الحالي، يكون التنفيذ المُجهز لـ rav1d متأخرًا بنسبة 6٪ عن dav1d في الأداء، ولكن في المستقبل، بعد تحسين الكود، من المخطط تحقيق التكافؤ في الأداء. لتحقيق الأداء العالي، تم استخدام نهج يتم من خلاله تنفيذ الوظائف الأساسية لفك تشفير القيم البدائية في المجمع في شكل كتل غير آمنة (يتم استخدام رمز التجميع من dav1d)، حيث يتم تلقي البيانات بعد التحقق من تحليل الدفق الوظائف المكتوبة بلغة Rust (تُظهر الخبرة السابقة في تحديد الثغرات الأمنية في أجهزة فك تشفير الفيديو أن المشكلات تنشأ بشكل أساسي في كود تحليل التنسيق عالي المستوى، وليس في عمليات البيانات ذات المستوى المنخفض).

المصدر: opennet.ru

إضافة تعليق