BZip3 : blocs jusqu a 511 MiB et compression en parallele, tout ouvert
Résumé
BZip3 compresse sans perte textes et codes source, porte le plafond de bloc de 1 MiB a 511 MiB, ajoute un predicteur Lempel-Ziv avant la transformation, remplace le codage entropique par un melange de contextes et livre six outils en ligne de commande.
Recommander- Nom
- BZip3
- Version
- 1.5.4
- Tarif
- Gratuit
- Open source
- Open source
- Système
- WindowsmacOSLinux
- Mis à jour
- 2026-10-17 16:04
La structure des compresseurs a tri par blocs n a presque pas bouge en trente ans. Un bloc s arretait a quelques centaines de kilooctets, un tour n utilisait qu un fil, et les longueurs de code devaient tenir sur des octets entiers. BZip3 ouvre tout cela d un coup : les blocs montent a 511 MiB, la chaine de traitement est neuve, et le parallelisme arrive presque gratuitement.
Desserrer la frontiere des blocs
La compression sans perte a toujours ete un echange ouvert. Une sortie plus petite coute en general du temps et de la memoire. BZip3 est un compresseur en ligne de commande tourne vers le texte et le code source, avec une bibliotheque ecrite en C a cote. Son premier reglage est la distance a laquelle le programme peut regarder d un coup : la taille de bloc va de 1 MiB a 511 MiB, avec 16 MiB par defaut. Un bloc plus grand donne aux repetitions lointaines une meilleure chance d etre saisies, et le taux suit. Le prix est ecrit noir sur blanc. Compression et decompression demandent une memoire d environ six fois la taille de bloc, et la quantite necessaire a la decompression est fixee au moment meme de la compression, donc il faut verifier la machine cible avant de toucher au reglage.
Une chaine batie sur trois etages
La chaine compte trois etages. L entree est le pretraitement, ou le codage de series et un predicteur Lempel-Ziv passent chacun une fois. Le premier range les octets repetes, le second trouve par appariement de chaines a la LZ77 des fragments identiques eloignes, puis estime l octet suivant par modelisation de contexte a la PPM. Ce travail fait avant la transformation retire les longues repetitions, et plus la matiere est redondante, plus le gain est net. Le milieu est la transformation par tri de blocs, batie sur un tableau de suffixes, qui rassemble les contextes proches en positions voisines, si bien que le simple predicteur d ordre bas place plus loin profite aussi de statistiques d ordre eleve. La sortie est le codage entropique : codage arithmetique avec melange de contextes d ordre zero, qui combine plusieurs estimations de probabilite par contexte et efface la perte due aux longueurs de code en octets entiers.

Le plafond de bloc est le point ou les trois etages s equilibrent. Le meme corpus passe par des tailles differentes donne des taux nettement differents, et la recommandation officielle est de pousser le bloc aussi haut que la memoire le permet, car la vitesse de decompression ne depend presque pas de la taille de bloc.
Memoire et parallelisme laissees a l utilisateur
Les blocs ne dependent pas les uns des autres, donc le parallelisme est vraiment presque gratuit. La ligne de commande prend un nombre de travailleurs, chaque travailleur tient un bloc, la valeur par defaut est un seul et le plafond est de 64. Quatre a huit travailleurs dans un script de sauvegarde nocturne divisent le temps de compression par plusieurs. L integrite n est pas negligee. Chaque bloc porte une somme CRC32 et la decompression verifie le resultat octet par octet. Le cout fixe du format est de 9 octets par fichier et de 9 a 17 octets par bloc, et le projet note que des donnees aleatoires gonflent en general de moins de 0.8 pour cent, donc une entree incompressible ne prend guere de volume.
Les chiffres du banc officiel
Le projet publie une liste de mesures qui fait passer des matieres tres differentes. Le chiffre parlant est le rapport entre taille compressee et taille d origine. L archive source fournie passe de 501,760 octets a 72,320 octets, soit environ un septieme. Un long texte chinois arrive a environ un sixieme. Les donnees audio n atteignent qu environ un tiers, et une image de disque de machine virtuelle s arrete vers la moitie. Ce n est pas un outil universel, et le projet le dit clairement : il excelle sur le texte et le code source.
Corpus | Taille d origine | Taille compressee | Part |
|---|---|---|---|
Archive source du projet | 501,760 octets | 72,320 octets | 14.4% |
Long texte chinois | 79,912,971 octets | 12,753,530 octets | 16.0% |
Theatre anglais, texte integral | 5,458,199 octets | 1,229,840 octets | 22.5% |
Corpus mixte Silesia | 211,968,000 octets | 47,227,855 octets | 22.3% |
Corpus mixte Calgary | 3,265,536 octets | 807,959 octets | 24.7% |
Donnees audio | 115,742,720 octets | 41,187,299 octets | 35.6% |
Image de disque de machine virtuelle | 804,192,256 octets | 406,343,457 octets | 50.5% |

Licence, plateformes et commandes jointes
La licence est LGPLv3, le droit d auteur sur le code d execution appartient a Kamila Szewczyk. La bibliotheque d execution embarque aussi des composants sous Apache 2.0 et sous la licence BSD a deux clauses, les scripts de construction suivent GPL trois avec une exception Autoconf, et le projet decrit l ensemble comme sous licence unique LGPLv3 plutot que double. La couverture des plateformes est plus large que prevu. Ont ete essayes x86, x86_64, armv6, armv7, aarch64, ppc64le, mips, mips64, sparc et s390x, les fichiers publies comprennent des executables Windows 32 et 64 bits plus un binaire Linux 64 bits, et sur macOS il s installe depuis un gestionnaire de paquets. Les options copient volontairement les compresseurs Unix classiques : l action par defaut compresse, -b regle la taille de bloc, -j le nombre de travailleurs, -d decompresse, -t verifie seulement, et -B traite un lot. Six commandes accompagnent les sources : bunzip3 pour la decompression, bz3cat ecrit sur la sortie standard, bz3grep cherche du texte directement dans l archive compressee, et bz3less avec bz3more et bz3most envoient le resultat dans un paginateur. La version 1.5.4 est parue le 7 septembre 2026, et le depot est alimente sans interruption depuis mai 2022.
BZip3 ne promet pas de miracle sur le taux de compression. Il desserre d un coup plusieurs limites avec lesquelles les gens vivaient depuis longtemps : les blocs montent a 511 MiB, le pretraitement gagne un predicteur, le codage entropique devient un melange de contextes, et le parallelisme revient a l utilisateur. Son terrain est tout aussi clair : code source, journaux et longs textes, des matieres tres repetitives qui ne peuvent pas perdre un caractere.