Utgivelsen av posixutils-rs 0.2.1-prosjektet har blitt publisert, rettet mot å utvikle på Rust-språket en samling kommandolinjeverktøy nevnt i POSIX-standarden og oppfylle kravene (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed, etc.). Under utviklingen, når det er mulig, brukes eksisterende kassepakker. Posixutils-rs-koden distribueres under MIT-lisensen.
Prosjektet er først og fremst fokusert på å oppnå samsvar med kravene i POSIX.2024-spesifikasjonen og planlegger ikke å gi kompatibilitet med GNU-verktøy, hvis funksjonalitet av forfatterne oppfattes som urimelig oppblåst. Imidlertid planlegger posixutils-rs å implementere de mest populære avanserte GNU-verktøyalternativene som finnes i eksisterende skript.
Forskjeller fra uutils-prosjektet, som utvikler GNU Coreutils-implementeringen i Rust, inkluderer et bredere spekter av verktøy, inkludert blant annet opprettelsen av slike POSIX-systemkomponenter som vi, awk, bc, m4, cron og c99-kompilatoren, så vel som en minimalistisk tilnærming , som innebærer å gi kun det minste nødvendige settet med alternativer definert i POSIX-spesifikasjonen eller som er problematiske å klare seg uten. Programmene i posixutils-rs-pakken leveres i utgangspunktet som selvstendig kode som kan brukes i andre prosjekter.
For øyeblikket er 55 verktøy utviklet av prosjektet i samsvar med POSIX og er på testdekningsstadiet, 22 verktøy gir den nødvendige funksjonaliteten (men testdekning er ennå ikke implementert), 20 er på utkaststadiet, og arbeidet med 44 verktøy har ikke ennå begynt. Blant verktøyene med implementert funksjonalitet: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sorter, strenger, tail, tr, tty, wc, uniq. Blant verktøyene, arbeid som ikke har begynt: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Endringer i den nye utgivelsen inkluderer tillegg av implementeringer av awk, m4, ps, realpath, join, time, fuser og gencat-verktøy, samt innledende støtte for arbeid i miljøer basert på musl C-biblioteket og levering av ftw bibliotek for statsbeskyttet katalogtre-traversal race.
I tillegg kan vi merke oss kunngjøringen av rav1d-prosjektet, som utvikler en høyytelsesdekoder for AV1-videokodingsformatet, skrevet på Rust-språket. Utviklingen utføres ved å portere dekoderkoden til dav1d-biblioteket, som er preget av høy ytelse, til Rust. Den forberedte porten er fullt kompatibel med dav1d library API. Valget om å portere et eksisterende bibliotek i stedet for å skrive vår egen versjon er forklart av ønsket om å bruke en allerede utprøvd og testet dekoder som grunnlag for å unngå mulige kompatibilitetsproblemer og ta hensyn til alle vanskelighetene ved å jobbe med AV1-formatet.
I sin nåværende form er den forberedte implementeringen av rav1d 6 % bak dav1d i ytelse, men i fremtiden, etter optimalisering av koden, er det planlagt å oppnå paritet i ytelse. For å oppnå høy ytelse ble det brukt en tilnærming der de grunnleggende funksjonene for dekoding av primitive verdier implementeres i assembler i form av usikre blokker (monteringskode fra dav1d brukes), dataene mottas i etter kontroll med strømparsing funksjoner skrevet i Rust (tidligere erfaring med å identifisere sårbarheter i videodekodere viser at problemene hovedsakelig oppstår i høynivåformat-parsing-koden, snarere enn i lavnivå-dataoperasjoner).
Kilde: opennet.ru
