Set di utility POSIX e decodificatore AV1, scritti in Rust

È stata pubblicata la versione 0.2.1 del progetto posixutils-rs, mirato allo sviluppo in Rust di una collezione di utility da linea di comando menzionate nello standard POSIX e conformi ai suoi requisiti (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed, ecc.). Durante lo sviluppo, si utilizzano, quando possibile, pacchetti crate già esistenti. Il codice di posixutils-rs è distribuito con licenza MIT.

Il progetto si concentra principalmente sull'adeguamento ai requisiti della specifica POSIX.2024 e non prevede di garantire compatibilità con le utility GNU, la cui funzionalità è considerata dagli autori come eccessivamente gonfiata. Tuttavia, in posixutils-rs è prevista l'implementazione delle opzioni estese più comuni delle utility GNU, presenti negli script esistenti.

Rispetto al progetto uutils, che sviluppa l'implementazione delle GNU Coreutils in Rust, si segnala una gamma più ampia di utilità, comprendente, tra l'altro, la creazione di componenti di sistema menzionati in POSIX, come vi, awk, bc, m4, cron e il compilatore c99, oltre a un approccio minimalista che implica la fornitura solo del set minimo di opzioni definite dalla specifica POSIX o senza le quali è difficile procedere. I programmi nel pacchetto posixutils-rs vengono originariamente forniti come codice autonomo, utilizzabile in altri progetti.

Attualmente, 55 utilità sono sviluppate dal progetto e sono conformi a POSIX, con test copertura in corso su di esse; 22 utilità hanno la funzionalità necessaria (ma non hanno ancora copertura di test), 20 sono in fase di bozza e il lavoro su 44 utilità non è ancora iniziato. Tra le utilità con funzionalità implementata: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Tra le utilità su cui non è stato avviato alcun lavoro: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi.

Tra le novità di questo rilascio, si segnala l'aggiunta delle implementazioni delle utility awk, m4, ps, realpath, join, time, fuser e gencat, nonché il supporto iniziale per l'esecuzione in ambienti basati sulla libreria C musl e la fornitura della libreria ftw per la navigazione nell'albero delle directory con protezione contro le condizioni di gara.

Inoltre, si segnala l'annuncio del progetto rav1d, che sviluppa un decodificatore ad alte prestazioni per il formato di codifica video AV1, scritto in Rust. Lo sviluppo avviene attraverso il портирования del codice del decodificatore della libreria dav1d, nota per la sua alta efficienza. Il porting preparato è completamente compatibile con l'API della libreria dav1d. La scelta di portare una libreria esistente invece di scriverne una nuova è motivata dal desiderio di utilizzare come base un decodificatore già collaudato, per evitare possibili problemi di compatibilità e considerare tutte le complessità del formato AV1.

Nell'attuale forma, l'implementazione di rav1d ha una performance inferiore del 6% rispetto a dav1d, ma in futuro, con l'ottimizzazione del codice, si prevede di raggiungere la parità nelle performance. Per ottenere elevate prestazioni, è stato adottato un approccio in cui le funzioni di decodifica di base dei valori primitivi sono implementate in assembly all'interno di blocchi unsafe (è utilizzato il codice assembly di dav1d), con dati che vengono passati dopo essere stati verificati da funzioni di parsing scritte in Rust (l'esperienza passata nell'individuazione di vulnerabilità nei decodificatori video mostra che i problemi sorgono principalmente nel codice di parsing di alto livello, e non nelle operazioni a basso livello sui dati).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster