Aggiornamento a GNU Coreutils, riscritto in Rust

Viene presentato il rilascio del toolkit uutils coreutils 0.0.12, all'interno del quale è in fase di sviluppo un analogo del pacchetto GNU Coreutils, riscritto nel linguaggio Rust. Coreutils viene fornito con oltre un centinaio di utilità, tra cui sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln e ls. Allo stesso tempo, è stato rilasciato il pacchetto uutils findutils 0.3.0 con un'implementazione in Rust delle utilità del set GNU Findutils (find, individua, aggiornatob e xargs).

Il motivo per cui è stato creato il progetto e utilizzato il linguaggio Rust è il desiderio di creare un'implementazione alternativa multipiattaforma di Coreutils e Findutils, in grado di funzionare su piattaforme Windows, Redox e Fuchsia, tra le altre. Un'altra importante differenza tra uutils è che è distribuito sotto la licenza permissiva MIT, invece che con la licenza copyleft GPL.

Attualmente, l'implementazione di 88 utilità è stata completamente portata alla parità con GNU Coreutils. Vengono rilevati difetti individuali in 18 utilità, tra cui cp, dd, date, df, install, ls, more, sort, split, tail e test. Solo l'utilità stty rimane non implementata. Quando si supera la suite di test del progetto GNU Coreutils, vengono eseguiti con successo 214 test, ma l'analogo di Rust non supera ancora 313 test. Allo stesso tempo, l'intensità dello sviluppo del progetto è notevolmente aumentata: vengono aggiunte 400-470 patch al mese da 20-50 sviluppatori invece delle 30-60 da 3-8 sviluppatori un anno fa.

Aggiornamento a GNU Coreutils, riscritto in Rust

Tra gli ultimi risultati si nota l'ottimizzazione delle prestazioni: allo stato attuale, molte utilità, come head e cut, hanno prestazioni significativamente superiori rispetto alle opzioni di GNU Coreutils. La copertura della suite di test è stata ampliata dal 55% al ​​75% di tutto il codice (l'80% è un obiettivo sufficiente). Il codice è stato rifattorizzato per semplificare la manutenzione, ad esempio, la gestione degli errori è stata unificata in diversi programmi e il codice per lavorare con i diritti di accesso è stato combinato in chgrp e chown. Sono state aggiunte numerose modifiche per migliorare la compatibilità con GNU Coreutils.

I piani per il futuro includono l'implementazione dell'utilità stty, il lavoro continuo per migliorare la compatibilità con GNU Coreutils, l'aggiunta di ottimizzazioni per ridurre la dimensione dei file eseguibili, nonché continui esperimenti sull'utilizzo delle utilità uutils in Debian e Ubuntu invece di GNU Coreutils e GNU Findutils (uno dei principali sviluppatori di uutils ha lavorato in precedenza su un progetto per creare Debian GNU/Linux utilizzando il compilatore Clang). Inoltre, vengono segnalati la preparazione del pacchetto uutils-coreutils per macOS, gli esperimenti con la sostituzione di GNU Coreutils con uutils coreutils in NixOS, l'intenzione di utilizzare uutils coreutils per impostazione predefinita nella distribuzione Apertis e l'adattamento del set di uutils per il sistema operativo Redox.

Fonte: opennet.ru

Aggiungi un commento