Set von POSIX-Dienstprogrammen und AV1-Dekodierer, geschrieben in Rust

Die Version 0.2.1 des Projekts posixutils-rs wurde veröffentlicht, das sich auf die Entwicklung einer Sammlung von Befehlszeilen-Dienstprogrammen konzentriert, die im POSIX-Standard erwähnt werden und dessen Anforderungen entsprechen (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed usw.). Bei der Entwicklung werden nach Möglichkeit bereits vorhandene crate-Pakete verwendet. Der Code von posixutils-rs wird unter der MIT-Lizenz veröffentlicht.

Das Projekt konzentriert sich hauptsächlich darauf, die Anforderungen der POSIX.2024-Spezifikation zu erfüllen, und plant nicht, die Kompatibilität mit GNU-Dienstprogrammen zu gewährleisten, deren Funktionalität von den Autoren als übertrieben angesehen wird. Dennoch soll in posixutils-rs die beliebtesten erweiterten Optionen von GNU-Dienstprogrammen umgesetzt werden, die in bestehenden Skripten vorkommen.

Im Gegensatz zum uutils-Projekt, das die Implementierung von GNU Coreutils in Rust entwickelt, wird ein breiterer Umfang an Werkzeugen erwähnt, der unter anderem die Erstellung von Systemkomponenten wie vi, awk, bc, m4, cron und dem c99-Compiler umfasst. Zudem wird ein minimalistischer Ansatz verfolgt, der nur das unbedingt notwendige Set an Optionen bereitstellt, die in der POSIX-Spezifikation definiert sind oder ohne die es problematisch wäre. Die Programme im Paket posixutils-rs werden ursprünglich als eigenständiger Code geliefert, der in anderen Projekten verwendet werden kann.

Derzeit entsprechen 55 vom Projekt entwickelten Werkzeuge den POSIX-Standards und befinden sich in der Testabdeckung. Bei 22 Werkzeugen ist die erforderliche Funktionalität gegeben (aber die Testabdeckung ist bislang nicht implementiert), 20 befinden sich im Entwurfsstadium, und die Arbeiten an 44 Werkzeugen haben noch nicht begonnen. Zu den Werkzeugen 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 Werkzeugen, an denen noch nicht gearbeitet wurde, befinden sich: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi.

In der neuen Version werden die Implementierungen der Tools awk, m4, ps, realpath, join, time, fuser und gencat hervorgehoben. Außerdem gibt es erstmalige Unterstützung für Umgebungen, die auf der C-Bibliothek musl basieren, sowie die Bereitstellung der Bibliothek ftw, die für das Durchlaufen von Verzeichnisbäumen mit Schutz gegen Rennen zuständig ist.

Zusätzlich ist das Projekt rav1d angekündigt worden, das einen leistungsstarken Decoder für das Video-Encoding-Format AV1 entwickelt, der in Rust geschrieben ist. Die Entwicklung erfolgt durch die Portierung des Codes des hochleistungsfähigen Decoders der Bibliothek dav1d auf Rust. Der vorbereitete Port ist vollständig mit der API der Bibliothek dav1d kompatibel. Die Entscheidung, eine bestehende Bibliothek zu portieren, anstatt eine eigene zu schreiben, wird durch den Wunsch begründet, einen bereits bewährten und getesteten Decoder als Grundlage zu verwenden, um mögliche Kompatibilitätsprobleme zu vermeiden und alle Nuancen der Arbeit mit dem AV1-Format zu berücksichtigen.

Die aktuelle Implementierung von rav1d liegt in der Leistung 6% hinter dav1d, jedoch ist geplant, nach der Optimierung des Codes eine Leistungsparität zu erreichen. Um eine hohe Leistung zu erzielen, wurde ein Ansatz gewählt, bei dem die grundlegenden Funktionen zur Dekodierung primitiver Werte in Assembler als unsafe-Blöcke implementiert sind (der Assembler-Code stammt von dav1d). Die Daten gelangen dorthin, nachdem sie von in Rust geschriebenen Funktionen zur Stream-Analyse überprüft wurden (frühere Erfahrungen mit der Identifizierung von Schwachstellen in Video-Decodern zeigen, dass Probleme hauptsächlich im hochgradigen Code zur Formatverarbeitung auftreten, nicht in den niedergradigen Datenoperationen).

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster