Das Projekt rars hat eine freie Implementierung von RAR mit UnterstĂŒtzung fĂŒr die Erstellung von Archiven vorbereitet.

Das Projekt rars wurde vorgestellt, das eine freie Implementierung von Werkzeugen fĂŒr das RAR-Format entwickelt, die in Rust geschrieben ist und nicht nur das Entpacken, sondern auch die Erstellung von RAR-Archiven unterstĂŒtzt. Das Werkzeug unterstĂŒtzt sowohl die Ă€lteren RAR-Formate 1.3/1.4 mit der Signatur „RE~^“ als auch die neueste Version RAR 7. Erweiterte Operationen wie das Aufteilen in Volumes, Passwortschutz, VerschlĂŒsselung von Kopfzeilen, das Anheften von Kommentaren, RARVM-Filter, Indizes fĂŒr schnelles Öffnen und Mechanismen zur Wiederherstellung beschĂ€digter Daten sind verfĂŒgbar. Der Code wird unter den Lizenzen MIT und Apache-2.0 verteilt. Auf Basis der Bibliothek PyO3 wurden Wrapper fĂŒr die Programmiersprache Python vorbereitet, die ein API im Stil von rarfile fĂŒr das Durchsuchen, Testen und Entpacken von Archiven sowie ein API im Stil von RarBuilder fĂŒr die Erstellung oder das Wiederpacken von Archiven implementieren.

Das Besondere an dem Projekt ist, dass es die Arbeit mit dem RAR-Format ohne die Verwendung des Codes des Unrar-Utilities implementiert, das unter einer nicht-freien Lizenz vertrieben wird, die die Nutzung des Unrar-Codes zur Rekonstruktion des RAR-Kompressionsalgorithmus oder zur Entwicklung eines RAR-kompatiblen Archivators verbietet. Aufgrund dieser EinschrÀnkung waren die meisten freien Archivatoren auf die Funktionen zum Entpacken von RAR-Dateien beschrÀnkt, wÀhrend zur Erstellung von RAR-Archiven proprietÀre Werkzeuge von RARLAB verwendet werden mussten.

ZusĂ€tzlich wurde ein Repository rar-research erstellt, in dem die Spezifikationen fĂŒr die Formate RAR 1.3/1.4, RAR 1.5-4.x und RAR 5.0/7.0 sowie Notizen zu den verwendeten Algorithmen, Filtern, IntegritĂ€tsprĂŒfungen und -wiederherstellungen, VerschlĂŒsselung, Volumensplittung und Schutzmechanismen veröffentlicht sind. Da zum Zeitpunkt der Erstellung des Projekts rars keine offizielle vollstĂ€ndige Spezifikation existierte, wurde die Dokumentation aus dem Code von Entpackern, alten Implementierungen, Testarchiven und der Analyse von binĂ€ren Versionen von RAR fĂŒr DOS und Windows rekonstruiert.

Die Implementierung wurde mithilfe der AI-Tools OpenAI Codex 5.5 und Claude Opus 4.7 in der Freizeit innerhalb von etwa fĂŒnf Wochen erstellt. In der ersten Phase wurden die Modelle zur Systematisierung von Informationen ĂŒber das Format und zur Schließung von LĂŒcken in der Beschreibung eingesetzt, wonach der Code in der Programmiersprache Rust auf Grundlage der wiederhergestellten Spezifikation generiert wurde. Zur KlĂ€rung der Spezifikation und Verfeinerung der Implementierung wurde die Funktionsweise an realen Archiven getestet und mit Referenzimplementierungen verglichen.

Es wird angemerkt, dass die AI-Tools gut darin waren, formale Beschreibungen in Code zu ĂŒbertragen und routinemĂ€ĂŸig eine große Menge an FunktionalitĂ€t zu implementieren, jedoch keinen architektonischen Überblick gewĂ€hrleisten konnten. Ohne strenge Aufsicht neigten die AI-Modelle dazu, Tests zu umgehen, den Code zu verkomplizieren und offensichtliche Probleme zu ignorieren, die die Benutzerfreundlichkeit beeintrĂ€chtigen. Nach EinschĂ€tzung des Autors sind in einem Projekt dieser GrĂ¶ĂŸenordnung Tests, Dokumentation und Kommentare nicht nur PrĂŒfwerkzeuge, sondern auch Mittel, um die Codegenerierung in die richtige Richtung zu lenken.

Die forcierte Entwicklung wurde durch das Erscheinen des Modus „/goal“ in OpenAI Codex ermöglicht, der es dem AI-Agenten erlaubt, lĂ€ngere Zeit an einer Aufgabe zu arbeiten, den Kontext zu komprimieren und die AusfĂŒhrung nach einer Überlastung fortzusetzen. In diesem Modus arbeitete Codex mehrere Male lĂ€nger als 6 Stunden und einmal etwa 16 Stunden und realisierte einen betrĂ€chtlichen Teil der verbleibenden FunktionalitĂ€t, wie Datenwiederherstellung, VerschlĂŒsselung und mehrteilige Archive. Unter BerĂŒcksichtigung der erheblichen Subvention fĂŒr Tokens wurden 40 britische Pfund ausgegeben.

In Bezug auf das Kompressionsniveau liegt RARS im Durchschnitt 5-10 % hinter WinRAR. In Bezug auf die Kompressions- und Dekompressionsgeschwindigkeit ist RARS aufgrund fehlender vollstĂ€ndiger Optimierungen erheblich langsamer als WinRAR. Im Projekt ist bereits der Modus „—features fast“ implementiert, der Optimierungen auf Basis von SIMD-Anweisungen fĂŒr eine schnellere Kompression und Dekompression anwendet, jedoch auf einem experimentellen API std::simd basiert, das nur in Testbuilds des Rust-Toolkits verfĂŒgbar ist. Außerdem wurde der Modus „—features parallel“ implementiert, der die Rayon-Bibliothek verwendet, um die Kompression einzelner Dateien zu parallelisieren.

Evgenij Roshal, der Schöpfer von RAR, kommentierte die Verwendung des Reverse Engineering alter RAR-BinÀrdateien bei der Entwicklung von rars, was durch die Lizenzvereinbarung verboten ist. Laut Evgenij hat er noch nicht entschieden, was er damit tun soll, und beabsichtigt, die Meinung des Unternehmens win.rar GmbH abzuwarten.

Quelle: opennet.ru

60GB SSD 8Gb DDR4