Het project rars is gepresenteerd, dat een vrije implementatie van tools voor het RAR-formaat ontwikkelt, geschreven in de programmeertaal Rust en dat niet alleen deextractie ondersteunt, maar ook het maken van RAR-archieven. De tool ondersteunt zowel de eerdere RAR-formaten 1.3/1.4 met de handtekening 'RE~^' als de nieuwste versie RAR 7. Beschikbaar zijn geavanceerde bewerkingen zoals volumeverdeling, wachtwoordbeveiliging, encryptie van headers, het toevoegen van opmerkingen, RARVM-filters, indexen voor snelle toegang en mechanismen voor het herstel van beschadigde gegevens. De code wordt verspreid onder de MIT- en Apache-2.0-licenties. Op basis van de PyO3-bibliotheek zijn er wrappers voor de programmeertaal Python gemaakt, die een API in de stijl van rarfile voor het bekijken, testen en extraheren van archieven implementeren, evenals een API in de stijl van RarBuilder voor het maken of opnieuw verpakkend van archieven.
Een kenmerk van het project is dat het werkt met het RAR-formaat zonder gebruik te maken van de code van de unrar-tool, die wordt verspreid onder een niet-vrije licentie, die verbiedt om unrar-code te gebruiken voor het reconstrueren van het compressie-algoritme van RAR of voor het ontwikkelen van een RAR-compatibele archiveringssoftware. Vanwege deze beperking waren de meeste vrije archiveringsprogramma's beperkt tot alleen deextractie van RAR-bestanden, terwijl voor het maken van RAR-archieven gebruik moest worden gemaakt van de propriƫtaire tools van RARLAB.
Er is een aparte repository rar-research aangemaakt waarin specificaties voor de formaten RAR 1.3/1.4, RAR 1.5-4.x en RAR 5.0/7.0 zijn gepubliceerd, evenals notities over de gebruikte algoritmes, filters, methoden voor controle en herstel van integriteit, encryptie, volumeverdeling en beschermingsmechanismen. Aangezien er op het moment van de creatie van het project rars geen officiƫle volledige specificatie bestond, is de documentatie gereconstrueerd op basis van de code van deextractors, oude implementaties, testarchieven en analyse van binaire versies van RAR voor DOS en Windows.
De implementatie is gemaakt met behulp van AI-tools OpenAI Codex 5.5 en Claude Opus 4.7 in de vrijetijd zo'n vijf weken. In de eerste fase werden de modellen gebruikt om informatie over het formaat te systematiseren en leemtes in de beschrijving op te vullen, waarna op basis van de herstelde specificatie de code in de programmeertaal Rust werd gegenereerd. Voor het verfijnen van de specificatie en het perfectioneren van de implementatie werden tests met echte archieven en vergelijking met referentie-implementaties gebruikt.
Het wordt opgemerkt dat AI-tools goed waren in het omzetten van formele beschrijvingen naar code en het routinematig implementeren van grote hoeveelheden functionaliteit, maar niet in staat waren om architectonische controle te waarborgen. Zonder strikte supervisie neigden AI-modellen ernaar om tests te omzeilen, de code te complexeren en voor de hand liggende problemen te missen die de bruikbaarheid beĆÆnvloeden. Volgens de auteur zijn tests, documentatie en opmerkingen in een project van deze omvang niet alleen controle-instrumenten, maar ook manieren om de codegeneratie de juiste richting op te sturen.
De ontwikkeling kon worden versneld na de introductie van de 'goal' modus in OpenAI Codex, waarmee de AI-agent lange tijd aan ƩƩn taak kon werken, de context samendrukte en de uitvoering na overbelasting voortzette. In deze modus werkte Codex meerdere keren meer dan 6 uur en ƩƩn keer ongeveer 16 uur, waarbij een aanzienlijk deel van de resterende functionaliteit werd gerealiseerd, zoals gegevensherstel, encryptie en meerdaagse archieven. Met aanzienlijke subsidie op tokens werd 40 Britse pond uitgegeven.
Qua compressieniveau blijft rars gemiddeld 5-10% achter bij WinRAR. Wat betreft compressiesnelheid en decompressor is rars aanzienlijk trager dan WinRAR door het gebrek aan volwaardige optimalisaties. Er is echter al een '-features fast' modus die optimalisaties op basis van SIMD-instructies toepast om de compressie en decompressie te versnellen, maar deze is afhankelijk van de experimentele API std::simd, die alleen beschikbaar is in testversies van de Rust-toolchain. Daarnaast is er een '-features parallel' modus geĆÆmplementeerd, die de Rayon-bibliotheek gebruikt voor het parallel verwerken van compressie van afzonderlijke bestanden.
Evgeny Roshal, de maker van RAR, heeft commentaar gegeven op het gebruik van reverse engineering van oude binaire RAR-bestanden bij de ontwikkeling van rars, wat verboden is volgens de licentieovereenkomst. Volgens Evgeny heeft hij nog niet besloten wat hij hiermee moet doen en is hij van plan te wachten op het standpunt van het bedrijf win.rar GmbH.
Bron: opennet.ru
