Compresseur propriétaire en Rust avec format d'archive .mal — DEFLATE, CRC32, CLI moderne avec barres de progression temps réel. Archives créées automatiquement dans compressed/, aucune installation requise après téléchargement.
MAL — MaxAdLe — est né dans le cadre de notre école, EPITA, pour laquelle nous devons effectuer un projet en Rust. L'objectif : implémenter un compresseur multi-archive sans perte avec format propriétaire .mal, de zéro, en Rust.
Le projet réunit Maxime Brague-Héroux, Adrien Cornille et Léos Voisin autour d'un défi technique : comprendre LZ77, Huffman et DEFLATE, puis les encapsuler dans une CLI moderne avec progression temps réel.
Sécurité mémoire sans GC, performances proches du C, gestion d'erreurs explicite via anyhow, et un écosystème riche — flate2, clap, indicatif.
Compression multi-fichiers récursive, vérification CRC32 par fichier, niveaux 0–9 ajustables, affichage formaté des archives et CLI colorée avec barres de progression en temps réel.
Les archives sont créées automatiquement dans compressed/ sans avoir à spécifier -o. Les fichiers décompressés sont extraits dans decompressed/. En cas de conflit de nom : fichier.mal → fichier-1.mal → fichier-2.mal.
Les formats binaires directs peuvent varier selon l'architecture (endianness).
Solution →Chargement intégral des fichiers avant compression causait des pics RAM sur grosses archives.
Solution →Détecter les corruptions de données accidentelles lors du stockage ou du transfert.
Solution →Chemins sources absolus stockés dans l'archive, rendant la décompression non portable.
Solution →Choisir l'algorithme offrant le meilleur compromis pour un usage quotidien.
Solution →Éviter les crashs et les fuites mémoire lors de la manipulation de fichiers binaires.
Solution →LZ77 + Huffman dynamique. Équilibre optimal vitesse/ratio. Bibliothèque Rust flate2 mature et bien documentée.
Dictionnaires jusqu'à 4 GB. Excellent ratio mais 10–20× plus lent que DEFLATE. Trop lourd pour notre usage cible.
Facebook. Performances extrêmes en décompression. Plus moderne, mais complexité d'implémentation très élevée.
Google, optimisé pour le web (HTML/CSS). Dictionnaire statique intégré. Peu adapté aux données binaires arbitraires.
compressed/.