Projektet rars er blevet præsenteret, som udvikler en fri implementering af værktøjer til RAR-formatet, skrevet i Rust, og som understøtter både udpakning og oprettelse af RAR-arkiver. Værktøjet understøtter både de tidlige RAR 1.3/1.4-formater med signaturen "RE~^" og den seneste version RAR 7. Der er tilgængelige udvidede operationer, såsom opdeling i volumener, beskyttelse med adgangskode, kryptering af overskrifter, vedhæftning af kommentarer, RARVM-filtre, indekser til hurtig åbning og mekanismer til genopretning af beskadigede data. Koden distribueres under MIT- og Apache-2.0-licenserne. På baggrund af PyO3-biblioteket er der forberedt bindinger til Python, som implementerer et API i stil med rarfile til visning, test og udpakning af arkiver, samt et API i stil med RarBuilder til oprettelse eller repackaging af arkiver.
Projektets særlige træk er, at det håndterer RAR-formatet uden brug af koden fra unrar-værktøjet, der distribueres under en ikke-fri licens, som forbyder brug af unrar-koden til at genskabe RAR-komprimeringsalgoritmen eller udvikle en RAR-kompatibel arkiverer. På grund af denne begrænsning har de fleste frie arkiverere kun været begrænset til funktionerne for udpakning af RAR-filer, og for at oprette RAR-arkiver har man været nødt til at bruge proprietære værktøjer fra RARLAB.
Der er oprettet et separat repository kaldet rar-research, hvor specifikationerne for RAR 1.3/1.4, RAR 1.5-4.x og RAR 5.0/7.0 er offentliggjort, samt noter om de anvendte algoritmer, filtre, metoder til kontrol og genopretning af integritet, kryptering, opdeling i volumener og beskyttelsesmekanismer. Da der på tidspunktet for oprettelsen af projektet rars ikke fandtes nogen officiel fuldstændig specifikation, blev dokumentationen genskabt ud fra koden fra udpakkerne, gamle implementeringer, testarkiver og analyse af binære versioner af RAR til DOS og Windows.
Implementeringen blev udført ved hjælp af AI-værktøjer OpenAI Codex 5.5 og Claude Opus 4.7 i fritiden over cirka fem uger. I den første fase blev modellerne anvendt til at systematisere information om formatet og udfylde huller i beskrivelsen, hvorefter der blev genereret kode i Rust-baseret på den genskabte specifikation. For at præcisere specifikationen og finjustere implementeringen blev der udført tests på reelle arkiver og sammenlignet med referenceimplementeringer.
Det er blevet bemærket, at AI-værktøjer har klaret sig godt med at overføre den formelle beskrivelse til kode og med rutinemæssig implementering af et stort volumen funktionalitet, men har ikke været i stand til at sikre arkitektonisk kontrol. Uden stram overvågning var AI-modellerne tilbøjelige til at omgå tests, komplicere koden og overse åbenlyse problemer, der påvirker brugervenligheden. Ifølge forfatterens vurdering er tests, dokumentation og kommentarer i et projekt af denne størrelse ikke kun blevet værktøjer til validering, men også en måde at styre kodegenereringen i den rigtige retning.
Udviklingen blev accelereret efter at OpenAI Codex introducerede "\/goal"-tilstand, der tillader AI-agenten at arbejde på en opgave over længere tid, komprimere konteksten og fortsætte udførelsen efter overbelastning. I denne tilstand har Codex arbejdet mere end 6 timer flere gange og en gang omkring 16 timer for at implementere en betydelig del af den resterende funktionalitet, såsom data recovering, kryptering og multi-volume arkiver. Med en betydelig subsidiering af tokens blev der brugt 40 britiske pund.
Når det gælder kompressionsniveauet, ligger rars i gennemsnit 5-10% efter WinRAR. I forhold til komprimerings- og dekomprimeringshastighed er rars betydeligt langsommere end WinRAR på grund af manglen på fuldgyldige optimeringer. Der er dog allerede implementeret en tilstand "—features fast", der anvender optimeringer baseret på SIMD-instruktioner for at øge hastigheden af kompression og dekompression, men som er knyttet til et eksperimentelt API std::simd, som kun er tilgængeligt i testversioner af Rust-værktøjet. Der er også implementeret en tilstand "—features parallel", der bruger Rayon-biblioteket til at parallelisere kompressionen af individuelle filer.
Evgeny Roshal, skaber af RAR, kommenterede brugen af omvendt engineering af gamle RAR-binære filer ved udviklingen af rars, hvilket er forbudt i henhold til licensaftalen. Ifølge Evgeny har han endnu ikke besluttet, hvad han vil gøre med dette, og han agter at vente på virksomhedens mening win.rar GmbH.
Kilde: opennet.ru
