De release van het posixutils-rs 0.2.1-project is gepubliceerd, gericht op het ontwikkelen in de Rust-taal van een verzameling opdrachtregelhulpprogramma's die worden genoemd in de POSIX-standaard en die voldoen aan de vereisten ervan (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed, enz.). Bij de ontwikkeling wordt waar mogelijk gebruik gemaakt van bestaande kratverpakkingen. De posixutils-rs-code wordt gedistribueerd onder de MIT-licentie.
Het project is primair gericht op het bereiken van overeenstemming met de vereisten van de POSIX.2024-specificatie en is niet van plan compatibiliteit te bieden met GNU-hulpprogramma's, waarvan de functionaliteit door de auteurs als onredelijk opgeblazen wordt ervaren. Posixutils-rs is echter van plan de meest populaire geavanceerde GNU-hulpprogramma-opties te implementeren die in bestaande scripts voorkomen.
Verschillen met het uutils-project, dat de GNU Coreutils-implementatie in Rust ontwikkelt, omvatten een bredere reikwijdte van hulpprogramma's, waaronder onder andere de creatie van POSIX-systeemcomponenten als vi, awk, bc, m4, cron en de c99-compiler, evenals een minimalistische benadering, die inhoudt dat alleen de minimaal vereiste reeks opties wordt geboden die zijn gedefinieerd in de POSIX-specificatie of die problematisch zijn om zonder te doen. De programma's in de posixutils-rs suite worden in eerste instantie geleverd als op zichzelf staande code die in andere projecten kan worden gebruikt.
Momenteel voldoen 55 door het project ontwikkelde nutsvoorzieningen aan POSIX en bevinden zij zich in de testdekkingsfase, 22 nutsvoorzieningen bieden de noodzakelijke functionaliteit (maar de testdekking is nog niet geïmplementeerd), 20 bevinden zich in de conceptfase en de werkzaamheden aan 44 nutsvoorzieningen zijn nog niet voltooid. nog begonnen. Onder de hulpprogramma's met geïmplementeerde functionaliteit: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Onder de hulpprogramma's waaraan nog niet is begonnen: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Veranderingen in de nieuwe release omvatten de toevoeging van implementaties van de hulpprogramma's awk, m4, ps, realpath, join, time, fuser en gencat, evenals initiële ondersteuning voor het werken in omgevingen gebaseerd op de musl C-bibliotheek en het aanbieden van de ftw bibliotheek voor door de staat beschermde directory tree traversal race.
Daarnaast kunnen we de aankondiging noteren van het rav1d-project, dat een krachtige decoder ontwikkelt voor het AV1-videocoderingsformaat, geschreven in de Rust-taal. De ontwikkeling wordt uitgevoerd door de decodercode van de dav1d-bibliotheek, die wordt gekenmerkt door hoge prestaties, over te zetten naar Rust. De voorbereide poort is volledig compatibel met de dav1d-bibliotheek-API. De keuze om een bestaande bibliotheek te porten in plaats van onze eigen versie te schrijven, wordt verklaard door de wens om een reeds bewezen en geteste decoder als basis te gebruiken om mogelijke compatibiliteitsproblemen te voorkomen en rekening te houden met alle fijne kneepjes van het werken met het AV1-formaat.
In zijn huidige vorm loopt de voorbereide implementatie van rav1d 6% achter op dav1d wat betreft prestaties, maar in de toekomst, na het optimaliseren van de code, is het de bedoeling om pariteit in prestaties te bereiken. Om hoge prestaties te bereiken werd een aanpak gebruikt waarbij de basisfuncties voor het decoderen van primitieve waarden in assembler worden geïmplementeerd in de vorm van onveilige blokken (er wordt assemblagecode van dav1d gebruikt), waarin de gegevens worden ontvangen na controle met stream-parsing functies geschreven in Rust (ervaringen uit het verleden met het identificeren van kwetsbaarheden in videodecoders laten zien dat de problemen zich voornamelijk voordoen bij het parseren van code op hoog niveau, en niet bij gegevensbewerkingen op laag niveau).
Bron: opennet.ru
