zlib - zlib

zlib
logo zlib
Première version 1er mai 1995 ( 1995-05-01 )
Version stable
1.2.11 / 15 janvier 2017 ; il y a 4 ans ( 2017-01-15 )
Dépôt Modifiez ceci sur Wikidata
Écrit en C
Système opérateur Multiplateforme
Taper Compression de données
Licence Licence zlib
Site Internet zlib .net

zlib est une bibliothèque logicielle utilisée pour la compression de données . zlib a été écrit par Jean-loup Gailly et Mark Adler et est une abstraction de l' algorithme de compression DEFLATE utilisé dans leur programme de compression de fichiers gzip . zlib est également un composant crucial de nombreuses plates-formes logicielles, notamment Linux , macOS et iOS . Il a également été utilisé dans des consoles de jeux telles que PlayStation 4 , PlayStation 3 , Wii U , Wii , Xbox One et Xbox 360 .

La première version publique de zlib, 0.9, a été publiée le 1er mai 1995 et était à l'origine destinée à être utilisée avec la bibliothèque d'images libpng . Il s'agit d' un logiciel libre , distribué sous la licence zlib .

Capacités

Encapsulation

Les données compressées zlib sont généralement écrites avec un wrapper gzip ou zlib. L'encapsuleur encapsule les données DEFLATE brutes en ajoutant un en-tête et une remorque. Cela fournit une identification de flux et une détection d'erreurs qui ne sont pas fournies par les données DEFLATE brutes.

L'en-tête gzip, utilisé dans le format de fichier omniprésent gzip , est plus grand que l'en-tête zlib, car il stocke un nom de fichier et d'autres informations sur le système de fichiers.

Algorithme

En septembre 2018, zlib ne prend en charge qu'un seul algorithme, appelé DEFLATE , qui utilise une combinaison d'une variation de LZ77 (Lempel-Ziv 1977) et de codage Huffman . Cet algorithme fournit une bonne compression sur une grande variété de données avec une utilisation minimale des ressources système. C'est également l'algorithme utilisé dans le format d'archive Zip . L'en-tête prend en compte d'autres algorithmes, mais aucun n'est actuellement implémenté.

Utilisation des ressources

zlib fournit des fonctionnalités pour le contrôle de l'utilisation du processeur et de la mémoire. Une valeur de niveau de compression peut être fournie qui échange la vitesse contre la compression. Il existe également des fonctionnalités de conservation de la mémoire, utiles dans les environnements à mémoire restreinte, tels que certains systèmes embarqués.

Stratégie

La compression peut être optimisée pour des types de données spécifiques. Si l'on utilise la bibliothèque pour toujours compresser des types de données spécifiques, l'utilisation d'une stratégie spécifique peut améliorer la compression et les performances. Par exemple, si les données contiennent de longues longueurs d'octets répétés, la stratégie de codage de longueur d'exécution (RLE) peut donner de bons résultats à une vitesse plus élevée. Pour les données générales, la stratégie par défaut est préférée.

La gestion des erreurs

Des erreurs dans les données compressées peuvent être détectées et ignorées. De plus, si des points de « vidage complet » sont écrits dans le flux compressé, les données corrompues peuvent être ignorées et la décompression se resynchronisera au point de purge suivant, bien qu'aucune récupération d'erreur des données corrompues ne soit fournie. Les points de vidage complet sont utiles pour les flux de données volumineux sur des canaux peu fiables, où certaines pertes de données sont sans importance, comme dans certaines applications multimédias. Cependant, la création de nombreux points de rinçage peut affecter la vitesse ainsi que la quantité (rapport) de compression.

Longueur des données

Il n'y a pas de limite à la longueur des données qui peuvent être compressées ou décompressées. Des appels répétés à la bibliothèque permettent de traiter un nombre illimité de blocs de données. Certains codes auxiliaires (compteurs) peuvent souffrir d'un débordement pour les longs flux de données, mais cela n'affecte pas la compression ou la décompression réelle.

Lors de la compression d'un flux de données long (ou infini), il est conseillé d'écrire régulièrement des points de vidage complet.

Applications

Aujourd'hui, zlib est en quelque sorte une norme de facto , au point que zlib et DEFLATE sont souvent utilisés de manière interchangeable dans les documents de normes, des milliers d'applications s'appuyant sur elle pour la compression, directement ou indirectement. Ceux-ci inclus:

zlib est également utilisé dans de nombreux appareils embarqués, tels que l' iPhone d' Apple et la PlayStation 3 de Sony , car le code est portable, sous licence libérale et a une empreinte mémoire relativement faible.

Fourches

Une bibliothèque couramment utilisée construite sur une ancienne base de code, zlib est également fréquemment forkée par des tiers qui revendiquent des améliorations à cette bibliothèque :

  • Intel a un fork hautes performances de zlib.
  • CloudFlare maintient une fourchette hautes performances avec des améliorations "massives".
  • Zlib-ng est un fork de remplacement zlib avec des optimisations pour les systèmes de "nouvelle génération".

Voir également

Les références

Liens externes