stringtranslate.com

libreta de direcciones

zlib ( / ˈziːlɪb / o " zeta -lib", / ˈziːtəˌlɪb / ) [ 2 ] [3] es una biblioteca de software utilizada para la compresión de datos, así como un formato de datos. [ 4] zlib fue escrito por Jean - loup Gailly y Mark Adler y es una abstracción del algoritmo de compresión DEFLATE utilizado en su programa de compresión de archivos gzip . zlib también es un componente crucial de muchas plataformas de software, incluidas Linux , macOS e iOS . También se ha utilizado en consolas de juegos como PlayStation 4 , PlayStation 3 , Wii U , Wii , Xbox One y Xbox 360 .

La primera versión pública de Zlib, 0.9, se publicó el 1 de mayo de 1995 y originalmente estaba destinada a utilizarse con la biblioteca de imágenes libpng . Es software libre , distribuido bajo la licencia zlib .

Capacidades

Encapsulación

Los datos comprimidos DEFLATE sin procesar (RFC 1951) [5] se escriben normalmente con un contenedor zlib o gzip que encapsula los datos, agregando un encabezado y un pie de página. Esto permite la identificación de flujos y la detección de errores que no proporcionan los datos DEFLATE sin procesar.

El contenedor zlib (RFC 1950) [4] es más pequeño que el contenedor gzip (RFC 1952), [6] ya que este último almacena un nombre de archivo y otra información del sistema de archivos.

Algoritmo

A partir de septiembre de 2018 , zlib solo admite un algoritmo, llamado DEFLATE , que utiliza una combinación de una variación de LZ77 (Lempel–Ziv 1977) y la codificación Huffman . [7] Este algoritmo proporciona una buena compresión en una amplia variedad de datos con un uso mínimo de los recursos del sistema. Este es también el algoritmo utilizado en el formato de archivo Zip . El encabezado permite otros algoritmos, pero actualmente no hay ninguno implementado.

Uso de recursos

zlib ofrece funciones para controlar el uso del procesador y la memoria. Se puede proporcionar un valor de nivel de compresión que intercambie velocidad por compresión. También existen funciones para conservar la memoria, lo que resulta útil en entornos de memoria restringida, como algunos sistemas integrados.

Estrategia

La compresión se puede optimizar para tipos específicos de datos. Si se utiliza la biblioteca para comprimir siempre tipos específicos de datos, el uso de una estrategia específica puede mejorar la compresión y el rendimiento. Por ejemplo, si los datos contienen grandes cantidades de bytes repetidos, la estrategia de codificación por longitud de ejecución (RLE) puede dar buenos resultados a mayor velocidad. Para datos generales, se prefiere la estrategia predeterminada.

Manejo de errores

Se pueden detectar y omitir errores en los datos comprimidos. Además, si se escriben puntos de "vaciado completo" en el flujo comprimido, se pueden omitir los datos dañados y la descompresión se volverá a sincronizar en el siguiente punto de vaciado, aunque no se proporciona ninguna recuperación de errores de los datos dañados. Los puntos de vaciado completo son útiles para flujos de datos grandes en canales poco fiables, donde la pérdida de algunos datos no es importante, como en algunas aplicaciones multimedia. Sin embargo, la creación de muchos puntos de vaciado puede afectar a la velocidad, así como a la cantidad (proporción) de compresión.

Longitud de los datos

No existe límite para la longitud de los datos que se pueden comprimir o descomprimir. Las llamadas repetidas a la biblioteca permiten manejar una cantidad ilimitada de bloques de datos. Algunos códigos auxiliares (contadores) pueden sufrir desbordamientos en el caso de flujos de datos largos, pero esto no afecta la compresión o descompresión reales.

Al comprimir un flujo de datos largo (o infinito), es aconsejable escribir puntos de vaciado completo regulares.

Aplicaciones

Hoy en día, zlib es una especie de estándar de facto , hasta el punto de que zlib y DEFLATE se usan a menudo indistintamente en documentos de estándares, y miles de aplicaciones dependen de él para la compresión, ya sea directa o indirectamente. [8] Entre ellas se incluyen:

zlib también se utiliza en muchos dispositivos integrados, como el iPhone de Apple y la PlayStation 3 de Sony , porque el código es portátil, tiene licencia liberal y ocupa una superficie de memoria relativamente pequeña.

Tenedores

zlib es una biblioteca de uso común creada sobre una base de código antigua, que también suele ser bifurcada por terceros que afirman haber realizado mejoras en esta biblioteca:

Véase también

Referencias

  1. ^ Adler, Mark (22 de enero de 2024). «[Zlib-announce] zlib 1.3.1 released» (en inglés) . Consultado el 23 de enero de 2024 .
  2. ^ Stutz, Michael (22 de octubre de 2004). The Linux Cookbook, 2.ª edición: consejos y técnicas para el uso diario. No Starch Press. ISBN 9781593270315. Archivado del original el 25 de enero de 2023 . Consultado el 28 de octubre de 2021 – a través de Google Books.
  3. ^ Loki Software; Hall, John R. (22 de octubre de 2001). Programación de juegos para Linux. No Starch Press. ISBN 9781886411494. Archivado del original el 11 de julio de 2024 . Consultado el 28 de octubre de 2021 – a través de Google Books.
  4. ^ desde RFC 1950. doi : 10.17487/RFC1950 .
  5. ^ RFC 1951. doi : 10.17487/RFC1951 .
  6. ^ RFC 1952. doi : 10.17487/RFC1952 .
  7. ^ RFC 1951. doi : 10.17487/RFC1951 .
  8. ^ Gailly, Jean-loup; Adler, Mark (18 de abril de 2002), zlib Applications, archivado desde el original el 10 de junio de 2019 , consultado el 9 de diciembre de 2007
  9. ^ "c++ - ¿Por qué cURL usa zlib?". Desbordamiento de pila .
  10. ^ "ORCFile en HDP 2: mejor compresión, mejor rendimiento". 6 de septiembre de 2013. Archivado desde el original el 6 de agosto de 2020. Consultado el 16 de mayo de 2020 .
  11. ^ System.IO.Compression.DeflateStream Archivado el 6 de febrero de 2016 en Wayback Machine . Biblioteca MSDN.
  12. ^ zlib-flate(1)  –  Manual de comandos generales de Debian
  13. ^ "qpdf". Archivado desde el original el 11 de julio de 2024. Consultado el 28 de marzo de 2021 .
  14. ^ "MySQL :: Manual de referencia de MySQL 8.0 :: 15.9.1.5 Cómo funciona la compresión para tablas InnoDB". dev.mysql.com . Archivado desde el original el 2021-08-01 . Consultado el 2021-07-14 .
  15. ^ "github Intel ZLIB". github . 25 de enero de 2024. Archivado desde el original el 25 de enero de 2024 . Consultado el 25 de enero de 2024 .
  16. ^ "La lucha contra el cáncer: el beneficio inesperado de publicar nuestro código en código abierto". El blog de Cloudflare . 8 de julio de 2015. Archivado desde el original el 21 de septiembre de 2019. Consultado el 18 de enero de 2020 .
  17. ^ Rosbach, HK (24 de febrero de 2023). «zlib-ng/zlib-ng: reemplazo de zlib con optimizaciones para sistemas de "próxima generación"». GitHub . zlib-ng. Archivado desde el original el 20 de abril de 2020 . Consultado el 18 de enero de 2020 .

Enlaces externos