Proiectul rars a fost prezentat, dezvoltând o implementare liberă a instrumentelor pentru formatul RAR, scris în limbajul Rust și care susține nu doar dezarhivarea, ci și crearea arhivelor RAR. Instrumentele suportă atât formatele vechi RAR 1.3/1.4 cu semnătura „RE~^”, cât și cea mai recentă versiune RAR 7. Sunt disponibile operații avansate precum împărțirea în volume, protecția prin parolă, criptarea antetelor, adăugarea comentariilor, filtrele RARVM, indexuri pentru deschiderea rapidă și mecanisme de recuperare a datelor deteriorate. Codul este distribuit sub licențele MIT și Apache-2.0. Pe baza bibliotecii PyO3 au fost pregătite legături pentru limbajul Python, care implementează API-ul în stil rarfile pentru vizualizarea, testarea și extragerea arhivelor, precum și API-ul în stil RarBuilder pentru crearea sau reambalarea arhivelor.
Particularitatea proiectului este că acesta realizează lucrul cu formatul RAR fără a utiliza codul utilitarului unrar, distribuit sub o licență neagră, care interzice utilizarea codului unrar pentru a recrea algoritmul de compresie RAR sau a dezvolta un arhivator compatibil RAR. Din cauza acestei restricții, majoritatea arhivatoarelor libere s-au limitat doar la funcționalitățile de dezarhivare a fișierelor RAR, iar pentru crearea arhivelor RAR a fost necesar să se folosească instrumente proprietare de la RARLAB.
A fost creat un repository separat rar-research în care sunt publicate specificațiile pentru formatele RAR 1.3/1.4, RAR 1.5-4.x și RAR 5.0/7.0, precum și note despre algoritmii folosiți, filtre, metode de verificare și recuperare a integrității, criptare, împărțire în volume și mecanisme de protecție. Deoarece la momentul creării proiectului rars nu exista o specificație oficială completă, documentația a fost recreată pe baza codului dezarhivatoarelor, implementărilor vechi, arhivelor de testare și analizei versiunilor binare RAR pentru DOS și Windows.
Implementarea a fost realizată cu ajutorul instrumentelor AI OpenAI Codex 5.5 și Claude Opus 4.7, în timpul liber, într-o perioadă de aproximativ cinci săptămâni. În prima etapă, modelele au fost utilizate pentru a sistematiza informațiile despre format și pentru a completa lacunele din descriere, după care, conform specificației restaurate, a fost generat cod în limbajul Rust. Pentru a clarifica specificația și a rafina implementarea, s-au folosit teste pe arhive reale și comparații cu implementările de referință.
Se observă că instrumentele AI au gestionat bine transferul descrierii formale în cod și realizarea de rutină a unui volum mare de funcționalitate, dar nu au reușit să asigure un control arhitectural. Fără o supraveghere strictă, modelele AI au fost predispuse să evite teste, să complice codul și să ignore probleme evidente care afectau usabilitatea. Conform evaluării autorului, în cadrul unui proiect de această amploare, testele, documentația și comentariile au devenit nu doar unelte de verificare, ci și o modalitate de a direcționa generarea de cod în direcția dorită.
Dezvoltarea a fost accelerată după ce OpenAI Codex a introdus modul „/goal”, care permite agentului AI să lucreze pe o singură sarcină pentru o perioadă îndelungată, comprimând contextul și continuând executarea după depășirea acestuia. În acest mod, Codex a lucrat de mai multe ori mai mult de 6 ore și o dată aproximativ 16 ore, implementând o parte semnificativă din funcționalitatea rămasă, cum ar fi recuperarea datelor, criptarea și arhivele pe mai multe volume. Având în vedere subvenția semnificativă pentru tokenuri, au fost cheltuite 40 de lire sterline.
Nivelul de comprimare al rars este, în medie, cu 5-10% mai slab decât cel al WinRAR. În ceea ce privește viteza de comprimare și de decompresie, rars este semnificativ mai lent decât WinRAR din cauza lipsei optimizeazărilor complete. Cu toate acestea, proiectul include deja modul „—features fast”, care aplică optimizări bazate pe instrucțiuni SIMD pentru a accelera comprimarea și decompresia, dar care depinde de API-ul experimental std::simd, disponibil doar în versiunile de test ale instrumentarului Rust. De asemenea, a fost implementat modul „—features parallel”, care utilizează biblioteca Rayon pentru a paraleliza comprimarea fișierelor individuale.
Evgheni Roșal, creatorul RAR, a comentat utilizarea ingineriei inverse a vechilor fișiere binare RAR în dezvoltarea rars, ceea ce este interzis de acordul de licență. Potrivit lui Evgheni, el nu s-a decis încă ce să facă în legătură cu aceasta și intenționează să aștepte opinia companiei win.rar GmbH.
Sursa: opennet.ro
