Joukko POSIX-apuohjelmia ja ruosteella kirjoitettu AV1-dekooderi

Posixutils-rs 0.2.1 -projektin julkaisu on julkaistu, tavoitteena kehittää Rust-kielellä POSIX-standardissa mainittu ja sen vaatimukset täyttävä kokoelma komentoriviohjelmia (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed jne.). Kehityksen aikana käytetään mahdollisuuksien mukaan olemassa olevia laatikkopaketteja. Posixutils-rs-koodia jaetaan MIT-lisenssillä.

Projekti keskittyy ensisijaisesti POSIX.2024-spesifikaation vaatimusten täyttämiseen, eikä se suunnittele yhteensopivuutta GNU-apuohjelmien kanssa, joiden toimivuus on kirjoittajien mielestä kohtuuttoman turvonnut. Posixutils-rs aikoo kuitenkin ottaa käyttöön suosituimmat kehittyneet GNU-apuohjelmavaihtoehdot, jotka löytyvät olemassa olevista skripteistä.

Erot uutils-projektiin, joka kehittää GNU Coreutils -toteutusta Rustissa, ovat laajempi apuohjelmien valikoima, mukaan lukien muun muassa sellaisten POSIX-järjestelmäkomponenttien luominen, kuten vi, awk, bc, m4, cron ja c99-kääntäjä, sekä minimalistinen lähestymistapa , joka tarkoittaa vain vähimmäisvaatimusten tarjoamista POSIX-spesifikaatioissa tai joita on ongelmallista ilman. Posixutils-rs-sarjan ohjelmat toimitetaan aluksi itsenäisenä koodina, jota voidaan käyttää muissa projekteissa.

Tällä hetkellä 55 projektin kehittämää apuohjelmaa on POSIXin mukaisia ​​ja testipeittovaiheessa, 22 apuohjelmaa tarjoaa tarvittavat toiminnot (mutta testikattavuutta ei ole vielä otettu käyttöön), 20 on luonnosvaiheessa ja 44 apuohjelmaa ei ole vielä tehty. vielä alkanut. Toteutetuilla toiminnoilla varustettujen apuohjelmien joukossa: awk, perusnimi, bc, cp, leikkaus, chown, päivämäärä, diff, tiedosto, etsi, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Apuohjelmia, joiden käsittely ei ole alkanut: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .

Uuden julkaisun muutoksia ovat mm. awk-, m4-, ps-, realpath-, join-, time-, fuser- ja gencat-apuohjelmien lisäys, sekä alustava tuki työskentelyyn musl C -kirjastoon perustuvissa ympäristöissä ja ftw:n tarjoaminen. kirjasto valtion suojattua hakemistopuun läpikulkukilpailua varten.

Lisäksi voimme huomioida rav1d-projektin ilmoituksen, joka kehittää korkean suorituskyvyn dekooderia AV1-videokoodausformaatille, joka on kirjoitettu Rust-kielellä. Kehitys suoritetaan siirtämällä dav1d-kirjaston dekooderikoodi, jolle on ominaista korkea suorituskyky, Rustiin. Valmistettu portti on täysin yhteensopiva dav1d-kirjaston API:n kanssa. Valinta siirtää olemassa oleva kirjasto oman version kirjoittamisen sijaan selittyy halulla käyttää pohjana jo todistettua ja testattua dekooderia, jotta vältetään mahdolliset yhteensopivuusongelmat ja otetaan huomioon kaikki AV1-formaatin kanssa työskentelyn monimutkaisuudet.

Nykyisessä muodossaan valmisteltu rav1d-toteutus on suorituskyvyltään 6% jäljessä dav1d:stä, mutta jatkossa koodin optimoinnin jälkeen on tarkoitus saavuttaa suorituskyvyn pariteetti. Korkean suorituskyvyn saavuttamiseksi käytettiin lähestymistapaa, jossa primitiivisten arvojen dekoodauksen perustoiminnot toteutetaan assemblerissä vaarallisten lohkojen muodossa (käytetään dav1d:n kokoonpanokoodia), joihin tiedot vastaanotetaan virran jäsennyksellä tarkistetun jälkeen. Rustilla kirjoitetut toiminnot (aiempi kokemus videodekooderien haavoittuvuuksien tunnistamisesta osoittaa, että ongelmat ilmenevät pääasiassa korkean tason jäsennyskoodissa, ei matalan tason datatoiminnoissa).

Lähde: opennet.ru

Lisää kommentti