bzip3 ofrece compresión superior a bzip2 y xz para texto y código fuente
La nueva herramienta open source, creada por Kamila Szewczyk, combina BWT con codificación de entropía avanzada y promueve ratios mucho menores que el estándar o Zstandard.
Kamila Szewczyk ha publicado bzip3, un programa de compresión diseñado como sucesor espiritual de bzip2 pero con un motor interno completamente distinto. El objetivo es claro: superar a herramientas consolidadas como LZMA o Zstandard cuando el objetivo es comprimir texto plano o código fuente, esos datos donde la redundancia semántica pesa más que la aleatoriedad.
Bzip3 no es una simple reescritura. Utiliza un codificador de entropía de mezcla de contexto de orden 0 y una transformación Burrows-Wheeler rápida basada en arrays de sufijos. Además, integra un paso de RLE con coincidencia de cadenas estilo LZ77 y modelado de contexto tipo PPM. La combinación permite explotar patrones de larga distancia que otros algoritmos pasan por alto o procesan con mucha más lentitud.
Rendimiento y memoria
Los benchmarks publicados por la autora comparan bzip3 con xz, bzip2 y zstd usando un archivo tar que agrupa todas las versiones realizadas de Perl 5. Los resultados son contundentes. La compresión con bzip3 (usando el bloque de 511) redujo el tamaño a 546.456.978 bytes, frente a los 1.056.645.240 de xz a máxima compresión y los 3.076.143.660 de Zstandard en nivel alto. Incluso bzip2 original apenas lograba 3.441.163.911 bytes.
El coste tiene nombre: memoria RAM. Bzip3 consume hasta 18 gigabytes en los tests de compresión, multiplicando ampliamente la huella de xz. Sin embargo, el tiempo de reloj pared es competitivo: 7 minutos y 10 segundos frente a los 12 minutos de xz. En descompresión, bzip3 tarda 4 minutos y 6 segundos, muy por debajo de los 9 minutos y 22 segundos de bzip2 y comparable a los casi 5 minutos de xz.
La verdadera magia aparece al combinar bzip3 con herramientas de deduplicación de largo alcance como lrzip. El mismo archivo fuente de Perl, primero procesado por lrzip y luego por bzip3, terminó pesando 60.672.608 bytes. Es un tercio del tamaño final que lograba lrzip combinado con lzma. Para pipelines de backup o archivo de repositorios de código, esta combinación puede alterar el cálculo del espacio de almacenamiento necesario.
Licencia y estado del proyecto
El código se licencia bajo LGPLv3. No es dual, ni incluye Apache 2.0 para el proyecto completo, aunque reutiliza librerías de terceros bajo otras licencias como Apache 2.0 para el motor BWT. Esto implica que cualquier aplicación que enlace dinámicamente bzip3 puede mantener su licencia propietaria, siempre que permita la reconstrucción del binario. Para empresas que distribuyen software cerrado, la LGPL es atractiva; para aquellas que prefieren la permisividad absoluta de MIT o BSD, habrá que sopesar el cambio.
El aviso de la autora es directo: el software es nuevo y contiene algoritmos complejos con casos borde probables. Prohibe categóricamente comprimir datos críticos a menos que tengas copias de seguridad independientes. No es una herramienta para producción en caliente a día de hoy, sino un candidato prometedor para pruebas de estrés y futuras integraciones en sistemas de archivado donde el espacio disc es el cuello de botella principal.
La instalación es estándar vía autotools o disponible en Homebrew para macOS. El código fuente está en GitHub y los benchmarks detallados se incluyen en la documentación del repositorio.
