È stato presentato il progetto rars, che sviluppa una versione open-source degli strumenti per il formato RAR, scritta in Rust e che supporta non solo l'estrazione, ma anche la creazione di archivi RAR. L'insieme di strumenti supporta sia i formati RAR 1.3/1.4 con la firma «RE~^», sia l'ultima versione RAR 7. Sono disponibili operazioni avanzate come suddivisione in volumi, protezione con password, crittografia delle intestazioni, allegato di commenti, filtri RARVM, indici per un'apertura rapida e meccanismi di recupero dei dati danneggiati. Il codice è distribuito sotto le licenze MIT e Apache-2.0. Sono state preparate delle interfacce per il linguaggio Python basate sulla libreria PyO3, che implementano un'API in stile rarfile per visualizzare, testare ed estrarre archivi, così come un'API in stile RarBuilder per creare o ricompattare archivi.
La caratteristica del progetto è che implementa il supporto per il formato RAR senza utilizzare il codice della utility unrar, distribuito sotto una licenza non libera, che vieta l'uso del codice unrar per ricreare l'algoritmo di compressione RAR o per sviluppare un archiviatore compatibile con RAR. A causa di questa limitazione, la maggior parte degli archivatori liberi si è limitata solo alle funzioni di estrazione dei file RAR, e per creare archivi RAR era necessario utilizzare strumenti proprietari di RARLAB.
È stato creato un repository separato chiamato rar-research dove sono pubblicate le specifiche per i formati RAR 1.3/1.4, RAR 1.5-4.x e RAR 5.0/7.0, insieme a note sugli algoritmi utilizzati, sui filtri, sui metodi di verifica e di ripristino dell'integrità, sulla crittografia, sulla suddivisione in volumi e sui meccanismi di protezione. Poiché al momento della creazione del progetto non esisteva una specifica ufficiale completa per RAR, la documentazione è stata ricreata analizzando il codice degli estrattori, le vecchie implementazioni, gli archivi di test e l'analisi delle versioni binarie di RAR per DOS e Windows.
L'implementazione è stata realizzata utilizzando gli strumenti AI OpenAI Codex 5.5 e Claude Opus 4.7 nel tempo libero in circa cinque settimane. Nella prima fase, i modelli sono stati applicati per sistematizzare le informazioni sul formato e colmare le lacune nella descrizione, dopo di che è stato generato il codice in Rust sulla base della specifica ripristinata. Per affinare la specifica e perfezionare l'implementazione, è stato utilizzato un controllo su archivi reali e un confronto con implementazioni di riferimento.
Si segnala che gli strumenti AI hanno gestito bene il trasferimento della descrizione formale in codice e l'implementazione di un ampio volume di funzionalità, ma non sono riusciti a garantire il controllo architettonico. Senza un rigoroso monitoraggio, i modelli AI tendevano ad aggirare i test, complicare il codice e trascurare evidenti problemi che influenzavano l'usabilità. Secondo la valutazione dell'autore, in un progetto di tale portata, i test, la documentazione e i commenti sono diventati non solo strumenti di verifica, ma anche un modo per guidare la generazione del codice nella direzione giusta.
Lo sviluppo è stato accelerato dopo l'introduzione della modalità «/goal» in OpenAI Codex, che consente all'agente AI di lavorare a lungo su un'unica attività, riducendo il contesto e continuando l'esecuzione dopo un'eventuale saturazione. In questa modalità, Codex ha operato più volte per oltre 6 ore e una volta per circa 16 ore, completando gran parte delle funzionalità rimanenti, come il recupero dati, la crittografia e gli archivi multi-volume. Considerando il sostanziale sussidio per i token, sono stati spesi 40 sterline.
In termini di compressione, Rars è mediamente inferiore di un 5-10% rispetto a WinRAR. Per quanto riguarda la velocità di compressione e decompressione, Rars è notevolmente più lento di WinRAR a causa della mancanza di ottimizzazioni complete. Tuttavia, il progetto include già la modalità «—features fast», che applica ottimizzazioni basate su istruzioni SIMD per accelerare la compressione e decompressione, ma strettamente legata a un'API sperimentale std::simd, disponibile solo nelle versioni di test dell'ambiente di sviluppo Rust. È stata anche implementata la modalità «—features parallel», che utilizza la libreria Rayon per parallelizzare la compressione di singoli file.
Eugeny Roshal, creatore di RAR, ha commentato l'uso del reverse engineering dei vecchi file binari RAR nello sviluppo di rars, cosa che è vietata dall'accordo di licenza. Secondo Eugeny, non ha ancora deciso cosa fare a riguardo e intende aspettare il parere della win.rar GmbH.
Fonte: opennet.ru
