Die Veröffentlichung des Projekts posixutils-rs 0.2.1 wurde veröffentlicht, das darauf abzielt, in der Rust-Sprache eine Sammlung von Befehlszeilendienstprogrammen zu entwickeln, die im POSIX-Standard erwähnt werden und dessen Anforderungen erfüllen (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed usw.). Während der Entwicklung werden, wann immer möglich, vorhandene Crate-Pakete verwendet. Der Code posixutils-rs wird unter der MIT-Lizenz vertrieben.
Das Projekt konzentriert sich in erster Linie auf die Einhaltung der Anforderungen der POSIX.2024-Spezifikation und plant nicht, Kompatibilität mit GNU-Dienstprogrammen bereitzustellen, deren Funktionalität von den Autoren als unangemessen aufgebläht empfunden wird. Posixutils-rs plant jedoch die Implementierung der beliebtesten erweiterten GNU-Dienstprogrammoptionen, die in vorhandenen Skripten zu finden sind.
Zu den Unterschieden zum uutils-Projekt, das die GNU Coreutils-Implementierung in Rust entwickelt, gehört ein breiterer Umfang an Dienstprogrammen, darunter unter anderem die Erstellung von POSIX-Systemkomponenten wie vi, awk, bc, m4, cron und dem c99-Compiler. sowie ein minimalistischer Ansatz, der impliziert, dass nur die minimal erforderlichen Optionen bereitgestellt werden, die in der POSIX-Spezifikation definiert sind oder auf die man nur schwer verzichten kann. Die Programme in der posixutils-rs-Suite werden zunächst als eigenständiger Code bereitgestellt, der in anderen Projekten verwendet werden kann.
Derzeit entsprechen 55 im Rahmen des Projekts entwickelte Dienstprogramme POSIX und befinden sich in der Testabdeckungsphase, 22 Dienstprogramme bieten die erforderliche Funktionalität (die Testabdeckung wurde jedoch noch nicht implementiert), 20 befinden sich in der Entwurfsphase und die Arbeit an 44 Dienstprogrammen noch nicht noch begonnen. Zu den Dienstprogrammen mit implementierter Funktionalität gehören: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Unter den Dienstprogrammen, mit denen noch nicht begonnen wurde: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Zu den Änderungen in der neuen Version gehören das Hinzufügen von Implementierungen der Dienstprogramme AWK, M4, PS, RealPath, Join, Time, Fuser und GenCat sowie anfängliche Unterstützung für das Arbeiten in Umgebungen, die auf der Musl-C-Bibliothek und der Bereitstellung des FTW basieren Bibliothek für den staatlich geschützten Verzeichnisbaum-Traversal-Wettlauf.
Darüber hinaus können wir die Ankündigung des Projekts rav1d zur Kenntnis nehmen, das einen Hochleistungsdecoder für das AV1-Videokodierungsformat entwickelt, der in der Sprache Rust geschrieben ist. Die Entwicklung erfolgt durch Portierung des Decoder-Codes der dav1d-Bibliothek, der sich durch hohe Leistung auszeichnet, nach Rust. Der vorbereitete Port ist vollständig kompatibel mit der dav1d-Bibliotheks-API. Die Entscheidung, eine vorhandene Bibliothek zu portieren, anstatt eine eigene Version zu schreiben, erklärt sich aus dem Wunsch, einen bereits bewährten und getesteten Decoder als Basis zu verwenden, um mögliche Kompatibilitätsprobleme zu vermeiden und alle Feinheiten der Arbeit mit dem AV1-Format zu berücksichtigen.
In ihrer aktuellen Form liegt die vorbereitete Implementierung von rav1d in der Leistung 6 % hinter dav1d, aber in Zukunft ist nach der Optimierung des Codes geplant, eine gleichwertige Leistung zu erreichen. Um eine hohe Leistung zu erreichen, wurde ein Ansatz verwendet, bei dem die Grundfunktionen zum Dekodieren primitiver Werte im Assembler in Form von unsicheren Blöcken implementiert werden (Assembly-Code von dav1d wird verwendet), deren Daten nach Überprüfung mit Stream-Parsing empfangen werden In Rust geschriebene Funktionen (die Erfahrungen aus der Vergangenheit bei der Identifizierung von Schwachstellen in Videodecodern zeigen, dass die Probleme hauptsächlich im High-Level-Format-Parsing-Code und nicht in den Low-Level-Datenoperationen auftreten).
Source: opennet.ru
