bzip3: el sucesor de bzip2 que comprime hasta 6x más

¿Qué es bzip3 y por qué vuelve a hablar el mundo de la compresión?

bzip3 es una herramienta de compresión de código abierto publicada por Kamila Szewczyk en GitHub, descrita por su autora como un sucesor «espiritual» de bzip2. No es un fork: es una reescritura completa que combina un codificador entrópico de mezcla de contextos de orden 0, una transformada de Burrows-Wheeler acelerada con suffix arrays (vía la biblioteca libsais de Ilya Grebnov) y un pase RLE con Lempel-Ziv + Predicción (LZP) inspirado en LZ77 y modelado de contexto PPM.

Su promesa central es doble: mayor ratio de compresión y mayor velocidad que su ancestro, especialmente sobre texto y código fuente, que es justo el material con el que lidia cualquier startup todos los días (logs, dumps de bases de datos, código en repos, backups).

¿Cómo se compara bzip3 con xz, zstd y bzip2?

La autora publica un benchmark propio comprimiendo 262 tarballs de todas las versiones de Perl 5 en un solo archivo all.tar. Los números, extraídos del README del repositorio, son los siguientes:

👥 ¿Quieres ir más allá de la noticia?

En nuestra comunidad discutimos las tendencias, compartimos oportunidades y nos ayudamos entre emprendedores. Sin humo, solo acción.

👥 Unirme a la comunidad
Método Tamaño comprimido
LZMA (xz) 2.056.645.240 bytes
bzip2 3.441.163.911 bytes
bzip3 -b 256 1.001.957.587 bytes
bzip3 -b 511 546.456.978 bytes
Zstandard 3.076.143.660 bytes

En el mejor modo (-b 511), bzip3 logra un archivo aproximadamente 6,3 veces más chico que bzip2 y 3,8 veces más chico que zstd sobre ese corpus, con un tiempo de compresión total de 7:08 (xz tarda 12:09 en el mismo hardware). En descompresión, según la misma tabla del repositorio, bzip3 corre en 4min 06s frente a los 9min 22s de bzip2 y apenas por detrás de los 3min 51s de zstd.

Hay un detalle honesto que la propia Szewczyk subraya en el README: el rendimiento depende fuertemente del compilador. Builds de x64 Linux con clang13 rondan los 17 MiB/s de compresión y 23 MiB/s de descompresión por hilo; los binarios de Windows y de 32 bits pueden ser «considerablemente más lentos».

¿Qué lo hace técnicamente distinto?

Para founders e ingenieros que vienen de tratar la compresión como una caja negra, vale la pena entender las tres decisiones de diseño que separan a bzip3 de sus primos:

  • Burrows-Wheeler con suffix arrays vía libsais. BWT es la pieza que reorganiza los datos para que secuencias repetitivas queden juntas, y los suffix arrays permiten construir esa transformación mucho más rápido que las versiones históricas. La biblioteca libsais, de Ilya Grebnov, está licenciada Apache 2.0 e incluida como submódulo.
  • LZP (Lempel-Ziv + Predicción). Es un pre-procesado estilo LZ77 con modelado PPM que elimina redundancias de largo alcance antes de pasarle la pelota a la BWT. Por eso brilla con código y texto, donde hay patrones que se repiten a kilobytes o megabytes de distancia.
  • Codificador entrópico de orden 0 con mezcla de contextos. Sustituye el clásico Huffman/multinomial de bzip2 por un mezclador más moderno que, según los benchmarks de la autora, exprime más bits por byte sin pagar tanto en CPU.

¿Dónde encaja en tu stack hoy?

El caso de uso inmediato no es reemplazar gzip en tu CDN ni zstd en el bus de eventos. bzip3 es una herramienta de nicho para compresión de archivos de larga vida: snapshots de bases de datos, repos comprimidos, distribuciones de datasets, logs archivados y, sobre todo, código fuente y backups fríos.

Si combinas bzip3 con lrzip (que hace deduplicación de largo alcance antes de comprimir), el README reporta una reducción a 60.072.608 bytes sobre el corpus de Perl, frente a 64.774.202 bytes de lrzip + lzma y 75.685.065 bytes de `lrzip + bzip2**. Es decir: *bzip3 + lrzip gana a la combinación clásica con lzma* en este corpus de referencia.

Instalación en 60 segundos

# Desde el código fuente
git clone https://github.com/iczelia/bzip3
cd bzip3
./bootstrap.sh && ./configure && make && sudo make install

# O vía Homebrew en macOS
brew install bzip3

El repositorio principal tiene 1,3k estrellas, 19 watchers y 61 forks según la página del proyecto, y ya está empaquetado en varias distribuciones Linux (el estado de empaquetado se puede consultar en Repology). El proyecto se licencia LGPLv3, lo que obliga a cualquier modificación de la propia biblioteca bzip3/libbz3 a publicarse de la misma forma, pero permite enlazado dinámico desde software propietario.

¿Qué significa esto para tu startup?

Tres implicaciones prácticas si tu equipo maneja infraestructura o datos a escala:

  • Backups más baratos. Si hoy comprimes tus snapshots con bzip2 o xz, bzip3 puede reducir el almacenamiento en frío entre 2x y 6x sobre cargas dominadas por texto y código, que es exactamente lo que suelen contener los dumps de logs y repos internos. En AWS S3 Glacier o en cualquier almacenamiento por gigabyte, eso se traduce directamente en factura.
  • Releases y datasets más ligeros. Si distribuyes un SDK, un modelo o un dataset público, bzip3 con -b 511 te da ratios cercanos a lzma con tiempos cercanos a zstd. Es viable para CI/CD donde antes elegías entre ratio y velocidad.
  • Riesgo real y documentado. El disclaimer del repositorio es inhabitualmente explícito: «NO COMPRIMAS DATOS CON ESTE PROGRAMA A MENOS QUE ESTÉS PREPARADO PARA ACEPTAR LA POSIBILIDAD, POR MÍNIMA QUE SEA, DE QUE LOS DATOS NO SEAN RECUPERABLES». Para datos críticos, mantén una segunda copia con xz o zstd hasta que el proyecto madure; no es una advertencia ritual, es una decisión de arquitectura.

Limitaciones a tener en cuenta

  • No es un reemplazo drop-in de bzip2. El formato es incompatible: archivos .bz2 no se abren con bunzip3 y viceversa.
  • Memoria. Con -b 511 el benchmark reporta picos de ~12 GB de RAM. Para servidores pequeños o workers de CI con cuotas de memoria ajustadas, hay que ajustar el block size.
  • Ecosistema joven. No hay aún un equivalente oficial de pigz o pbzip2 plenamente estabilizado por la autora, y aunque forks como bzip-three-for-you-and-me ya empiezan a aparecer en GitHub, el grueso del tooling de pipelines (Fluent Bit, Logrotate, BorgBackup) todavía no integra bzip3 como codec de primera clase.
  • Riesgo de distribución troyana. Servicios de inteligencia de amenazas como ThreatInfo reportan detecciones de archivos firmados como bzip3.exe distribuidos como Trojan.Agent. Always descarga desde el repositorio oficial o desde el gestor de paquetes de tu distribución; nunca desde binarios sueltos.

Conclusión

bzip3 no va a mover a zstd del trono en pipelines de baja latencia ni a xz en distribuciones Linux, pero sí abre una opción interesante para founders que necesitan comprimir archivos grandes de texto y código y están dispuestos a mirar más allá de la dupla bzip2/xz. Si tu cuello de botella es el costo de almacenamiento frío o el ancho de banda de distribución de datasets, vale la pena probarlo en un entorno de staging y comparar bytes y dólares, no solo ratios.

Fuentes

¿te gustó o sirvió lo que leíste?, Por favor, comparte.

👥 ¿Quieres ir más allá de la noticia?

En nuestra comunidad discutimos las tendencias, compartimos oportunidades y nos ayudamos entre emprendedores. Sin humo, solo acción.

👥 Unirme a la comunidad

Daily Shot: Tu ventaja táctica

Lo que pasó en las últimas 24 horas, resumido para que tú no tengas que filtrarlo.

Suscríbete para recibir cada mañana la curaduría definitiva del ecosistema startup e inversionista. Sin ruido ni rodeos, solo la información estratégica que necesitas para avanzar:

  • Venture Capital & Inversiones: Rondas, fondos y movimientos de capital.
  • IA & Tecnología: Tendencias, Web3 y herramientas de automatización.
  • Modelos de Negocio: Actualidad en SaaS, Fintech y Cripto.
  • Propósito: Erradicar el estancamiento informativo dándote claridad desde tu primer café.

📡 El Daily Shot Startupero

Noticias del ecosistema startup en 2 minutos. Gratis, todos los días.

Share to...