Projekt rars je bezplatná implementace nástrojů RAR napsaných v Rustu, která podporuje rozbalování i vytváření archivů RAR. Nástroje podporují jak starší formáty RAR 1.3/1.4 s signaturou „RE~^“, tak i nejnovější verzi RAR 7. K dispozici jsou pokročilé operace, včetně rozdělení na svazky, ochrany heslem, šifrování hlaviček, připojování komentářů, filtrů RARVM, indexů pro rychlé otevírání a mechanismů pro opravu poškozených dat. Kód je distribuován pod licencemi MIT a Apache-2.0. Vazby Pythonu jsou postaveny na knihovně PyO3 a implementují API ve stylu rarfile pro prohlížení, testování a rozbalování archivů, stejně jako API ve stylu RarBuilder pro vytváření nebo opětovné balení archivů.
Unikátní vlastností projektu je, že implementuje formát RAR bez použití kódu nástroje unrar, který je distribuován pod proprietární licencí. Tato licence zakazuje použití kódu unrar k opětovnému vytvoření kompresního algoritmu RAR nebo k vývoji archivátoru kompatibilního s RAR. Kvůli tomuto omezení se většina bezplatných archivátorů omezovala na rozbalování souborů RAR a vytváření archivů RAR vyžadovalo použití proprietárních nástrojů od RARLABu.
Byl vytvořen samostatný repozitář s názvem rar-research, který obsahuje specifikace pro formáty RAR 1.3/1.4, RAR 1.5-4.x a RAR 5.0/7.0, a také poznámky k použitým algoritmům, filtrům, metodám ověřování integrity a obnovy, šifrování, rozdělení svazků a ochranným mechanismům. Vzhledem k tomu, že v době vzniku projektu rars neexistovala žádná oficiální a komplexní specifikace, byla dokumentace znovu vytvořena s použitím kódu rozbalovače, starých implementací, testovacích archivů a analýzy binárních verzí RARu pro DOS a... Windows.
Implementace byla vytvořena s využitím nástrojů OpenAI Codex 5.5 a Claude Opus 4.7 pro umělou inteligenci v mém volném čase po dobu přibližně pěti týdnů. V první fázi byly použity modely k systematizaci informací o formátu a doplnění mezer v popisu, načež byl na základě rekonstruované specifikace vygenerován kód Rust. Pro zpřesnění specifikace a vylepšení implementace bylo provedeno testování na reálných archivech a porovnání s referenčními implementacemi.
Je třeba poznamenat, že nástroje umělé inteligence si vedly dobře při převodu formálních popisů do kódu a rutinní implementaci velkého množství funkcí, ale nedokázaly zajistit architektonickou kontrolu. Bez přísného dohledu měly modely umělé inteligence tendenci obcházet testy, komplikovat kód a přehlížet zjevné problémy ovlivňující použitelnost. Podle autora se v projektu tohoto rozsahu testy, dokumentace a komentáře staly nejen ověřovacími nástroji, ale také způsobem, jak vést generování kódu.
Vývoj se urychlil po zavedení režimu „/goal“ v OpenAI Codex, který umožňuje agentovi umělé inteligence pracovat na jednom úkolu po delší dobu, komprimovat kontext a pokračovat v provádění i po jeho přetečení. V tomto režimu Codex běžel několikrát déle než šest hodin a jednou přibližně 16 hodin, přičemž implementoval významnou část zbývajících funkcí, jako je obnova dat, šifrování a vícesvazkové archivy. Včetně značné dotace tokenů bylo na projekt vynaloženo 40 liber.
Co se týče komprese, RARS zaostává za WinRARem v průměru o 5-10 %. Co se týče rychlosti komprese a dekomprese, je RARS výrazně pomalejší než WinRAR kvůli nedostatku komplexních optimalizací. Projekt však již obsahuje režim „--features fast“, který využívá optimalizace založené na SIMD k urychlení komprese a dekomprese, ale spoléhá na experimentální API std::simd, které je dostupné pouze v testovacích sestaveních sady nástrojů Rust. Implementován byl také režim „--features parallel“, který využívá knihovnu Rayon k paralelizaci komprese jednotlivých souborů.
Jevgenij Roshal, tvůrce souboru RAR, se vyjádřil k použití reverzního inženýrství starých binárních souborů RAR při vývoji souborů .rar, což je zakázáno licenční smlouvou. Podle Jevgenije se zatím nerozhodl, co s tím udělá, a hodlá počkat na stanovisko společnosti win.rar GmbH.
Zdroj: opennet.ru
