Δημοσιεύτηκε η κυκλοφορία του έργου posixutils-rs 0.2.1, με στόχο την ανάπτυξη στη γλώσσα Rust μιας συλλογής βοηθητικών προγραμμάτων γραμμής εντολών που αναφέρονται στο πρότυπο POSIX και την ικανοποίηση των απαιτήσεών του (cp, mv, awk, make, vi, find, sort, wc, 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. Η προετοιμασμένη θύρα είναι πλήρως συμβατή με το API βιβλιοθήκης dav1d. Η επιλογή μεταφοράς μιας υπάρχουσας βιβλιοθήκης αντί να γράψουμε τη δική μας έκδοση εξηγείται από την επιθυμία να χρησιμοποιήσουμε έναν ήδη δοκιμασμένο και δοκιμασμένο αποκωδικοποιητή ως βάση, προκειμένου να αποφευχθούν πιθανά προβλήματα συμβατότητας και να ληφθούν υπόψη όλες οι περιπλοκές της εργασίας με τη μορφή AV1.
Στην τρέχουσα μορφή της, η προετοιμασμένη υλοποίηση του rav1d είναι 6% πίσω από το dav1d σε απόδοση, αλλά στο μέλλον, μετά τη βελτιστοποίηση του κώδικα, σχεδιάζεται να επιτευχθεί ισοτιμία στην απόδοση. Για την επίτευξη υψηλών επιδόσεων, χρησιμοποιήθηκε μια προσέγγιση στην οποία οι βασικές λειτουργίες για την αποκωδικοποίηση αρχέγονων τιμών υλοποιούνται στο assembler με τη μορφή μη ασφαλών μπλοκ (χρησιμοποιείται ο κωδικός συναρμολόγησης από το dav1d), τα δεδομένα στα οποία λαμβάνονται μετά από έλεγχο με ανάλυση ροής συναρτήσεις γραμμένες σε Rust (η προηγούμενη εμπειρία στον εντοπισμό τρωτών σημείων σε αποκωδικοποιητές βίντεο δείχνει ότι τα προβλήματα προκύπτουν κυρίως στον κώδικα ανάλυσης μορφής υψηλού επιπέδου και όχι στις λειτουργίες δεδομένων χαμηλού επιπέδου).
Πηγή: opennet.ru
