close

Zlib

Aller à la navigation Aller à la recherche


zlib
Composant Info-ZIP
logo-zlib
Informations générales
type de programme Compression des données
développeur
  • Marc Adler
  • Jean-Loup Gailly
Première version 01 mai 1995
Licence Licence Zlib
Information technique
Prévu dans C
Versions
Dernière version stable 1.2.12 (27 mars 2022)
Liens

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

La première version publique de zlib, 0.9, est sortie le 1er mai 1995 et était à l'origine destinée à être utilisée avec la  bibliothèque libpng . C'est un logiciel libre distribué sous la  licence Zlib .

Capacités

Encapsulation

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

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

Algorithme

Depuis septembre 2018, zlib ne prend en charge qu'un seul algorithme, appelé  DEFLATE , qui est une variante de l'algorithme LZ77 (Lempel–Ziv 1977). Cet algorithme fournit une bonne compression sur une grande variété de données avec une utilisation minimale des ressources système. C'est aussi l'algorithme utilisé dans le  format d'archive ZIP .

L'en-tête permet d'autres algorithmes, mais actuellement aucun n'est implémenté.

Utilisation des ressources

Zlib fournit des fonctionnalités de surveillance de l'utilisation du processeur et de la mémoire. Vous pouvez spécifier un paramètre pour augmenter la vitesse au détriment de la compression. L'utilisation de la mémoire peut également être limitée.

Stratégie

La compression peut être optimisée pour certaines données. Si vous utilisez des données qui conservent toujours une certaine structure, l'utilisation d'une stratégie spécifique peut améliorer le taux de compression et les performances. Par exemple, si les données contiennent de grandes longueurs d'octets répétés, la stratégie RLE ( encodage RLE ) peut donner de bons résultats de vitesse. Pour les données générales, les paramètres par défaut sont préférés.


Gestion des erreurs

Les erreurs dans les données compressées peuvent être détectées et ignorées. De plus, si des points de purge complète sont écrits dans le flux compressé, les données corrompues peuvent être ignorées et la décompression sera resynchronisée au prochain point de purge complète, bien qu'aucun mécanisme de récupération d'erreur de données ne soit fourni. Ces types de points sont utiles pour les grands flux de données sur des canaux non fiables, où certaines pertes de données ne sont pas importantes, comme dans certaines applications multimédias. Cependant, la création d'un trop grand nombre de ces "points de rinçage" peut affecter la vitesse et le taux 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 autorisent un nombre illimité de blocs de données. Certains compteurs peuvent souffrir d'un débordement de tampon, mais cela n'affecte pas la compression ou la décompression.

Lorsque le jeu de données est très grand (ou infini) il est régulièrement recommandé d'écrire des points "full-flush".

Candidatures

Aujourd'hui, zlib est un standard de facto , au point que zlib et DEFLATE sont souvent utilisés de manière interchangeable dans les documents, avec des milliers d'applications s'appuyant sur sa compression, directement ou indirectement. [ 1 ] Cela comprend :

  • Au noyau Linux , où zlib est utilisé pour les protocoles réseau, les systèmes de fichiers  et pour décompresser le noyau lors du démarrage du système d'exploitation.
  • GNU Binutils et le débogueur GNU (GDB)
  • libpng , l' implémentation de référence pour le format d'image PNG, qui spécifie DEFLATE comme compression pour ses données bitmap .
  • libwww, une API pour les applications Web telles que les  navigateurs Web .
  • Le serveur HTTP Apache , qui utilise zlib pour implémenter HTTP/1.1.
  • Le client et le serveur OpenSSH , qui utilisent la compression offerte par le protocole Secure Shell dans zlib.
  • Les projets OpenSSL et GnuTLS , qui peuvent tous deux utiliser zlib pour compresser les connexions TLS.
  • La médiathèque  FFmpeg , qui utilise zlib pour lire et écrire des données dans DEFLATE, comme Matroska .
  • Le synchroniseur de fichiers à distance rsync, qui utilise zlib pour compresser les données.
  • Les gestionnaires de packages dpkg et RPM , qui utilisent zlib pour décompresser les fichiers des packages logiciels compressés.
  • Les systèmes de contrôle de version  Subversion et CVS , qui utilisent tous deux zlib pour compresser le trafic vers et depuis les référentiels distants.
  • Le système de contrôle de version Git utilise zlib pour stocker le contenu de ses objets de données (blobs, arbres, commits et balises).
  • Le SGBDR PostgreSQL utilise zlib comme format d'exportation (pg_dump -Fc) pour les sauvegardes de base de données.
  • La classe .IO.Compression.DeflateStream du framework Microsoft .NET 2.0 ou supérieur. [ 2 ]
  • L'utilitaire "deflate" de TORNADO dans le cadre de VxWorks , le système d'exploitation créé par Wind River Systems , utilise zlib pour compresser l'image de la ROM de démarrage.

zlib est également utilisé dans de nombreux appareils intégrés, tels que l'iPhone d'Apple et la  PlayStation 3 de Sony , car le code est portable, sous licence libre et utilise peu de mémoire.

Voir aussi

Références

  1. Gailly, Jean Loup ; Adler, Mark (18 avril 2002), Applications zlib  .
  2. System.IO.Compression.DeflateStream . Bibliothèque MSDN.

Liens externes

  • site officiel
  • 1950—ZLIB ] Format de données compressées
  • 1951 - Format de données compressées DEFLATE
  • 1952— Format de fichier GZIP
  • miniz.c , une implémentation open source à fichier source unique de l'API zlib pour les systèmes embarqués et l'utilisation limitée de la mémoire