Le projet rars a préparé une implémentation libre de RAR avec support pour la création d'archives

Le projet rars a été lancé pour développer une implémentation libre d'outils pour le format RAR, écrite en Rust et prenant en charge non seulement l'extraction, mais aussi la création d'archives RAR. Cet outil prend en charge à la fois les anciens formats RAR 1.3/1.4 avec la signature « RE~^ » et la dernière version RAR 7. Des opérations avancées sont disponibles, telles que le fractionnement en volumes, la protection par mot de passe, le cryptage des en-têtes, l'ajout de commentaires, les filtres RARVM, les index pour une ouverture rapide et les mécanismes de récupération des données corrompues. Le code est distribué sous les licences MIT et Apache-2.0. Sur la base de la bibliothèque PyO3, des liaisons pour Python ont été préparées, implémentant une API de type rarfile pour la visualisation, les tests et l'extraction d'archives, ainsi qu'une API de type RarBuilder pour la création ou la recompression d'archives.

La particularité du projet réside dans le fait qu'il permet de travailler avec le format RAR sans utiliser le code de l'outil unrar, qui est distribué sous une licence non libre interdisant l'utilisation du code unrar pour recréer l'algorithme de compression RAR ou développer un archiveur compatible avec RAR. En raison de cette restriction, la plupart des archiveurs libres se limitaient uniquement aux fonctions d'extraction des fichiers RAR, tandis que la création d'archives RAR nécessitait l'utilisation d'outils propriétaires de RARLAB.

Un dépôt distinct rar-research a été créé, où sont publiées les spécifications pour les formats RAR 1.3/1.4, RAR 1.5-4.x et RAR 5.0/7.0, ainsi que des notes sur les algorithmes, filtres, méthodes de vérification et de restauration de l'intégrité, cryptage, fractionnement en volumes et mécanismes de protection utilisés. Étant donné qu'à l'époque de la création du projet rars, il n'existait pas de spécification officielle complète, la documentation a été reconstituée à partir du code des extracteurs, de anciennes implémentations, d'archives de test et de l'analyse des versions binaires de RAR pour DOS et Windows.

L'implémentation a été réalisée en utilisant des outils d'IA tels que OpenAI Codex 5.5 et Claude Opus 4.7 durant mon temps libre en environ cinq semaines. Dans un premier temps, des modèles ont été appliqués pour systématiser les informations sur le format et combler les lacunes de la description, puis le code a été généré en Rust à partir de la spécification restaurée. Pour affiner la spécification et perfectionner l'implémentation, des tests ont été effectués sur des archives réelles et une comparaison a été faite avec des implémentations de référence.

Il est noté que les outils d'IA ont réussi à traduire la description formelle en code et à mettre en œuvre une grande quantité de fonctionnalités de manière routinière, mais n'ont pas pu assurer le contrôle architectural. Sans supervision stricte, les modèles d'IA avaient tendance à contourner les tests, à compliquer le code et à omettre des problèmes évidents affectant la convivialité. Selon l'auteur, dans un projet de cette envergure, les tests, la documentation et les commentaires sont devenus non seulement des outils de vérification, mais également un moyen d'orienter la génération de code dans la bonne direction.

Le développement a été accéléré après l'introduction du mode « /goal » dans OpenAI Codex, permettant à l'agent IA de travailler longtemps sur une seule tâche, de comprimer le contexte et de continuer après le débordement. Dans ce mode, Codex a réussi à fonctionner pendant plus de 6 heures plusieurs fois, et environ 16 heures une fois, réalisant ainsi une partie significative des fonctionnalités restantes, telles que la récupération de données, le chiffrement et les archives multi-volumes. Compte tenu d'une subvention significative pour les jetons, un montant de 40 livres sterling a été dépensé.

En termes de taux de compression, rars est en moyenne 5 à 10 % inférieur à WinRAR. En termes de vitesse de compression et de décompression, rars est considérablement plus lent que WinRAR en raison du manque d'optimisations complètes. Cependant, le projet dispose déjà d'un mode « --features fast », appliquant des optimisations basées sur les instructions SIMD pour accélérer la compression et la décompression, mais lié à une API expérimentale std::simd, disponible uniquement dans les versions de test de l'outil Rust. Un mode « --features parallel » a également été mis en place, utilisant la bibliothèque Rayon pour paralléliser la compression de fichiers individuels.

Evgeny Roshal, le créateur de RAR, a commenté l'utilisation de l'ingénierie inverse des anciens fichiers binaires RAR lors du développement de rars, ce qui est interdit par l'accord de licence. Selon Evgeny, il n'a pas encore décidé quoi en faire et attend l'avis de la société win.rar GmbH.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster