Zlib
| zlib | ||
|---|---|---|
| Composant Info-ZIP | ||
|
| ||
| Informations générales | ||
| type de programme | Compression des données | |
| développeur |
| |
| 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
- DÉGONFLER
- gzip
- LZ77
- zip (format de fichier)
- Licence zlib
Références
- ↑ Gailly, Jean Loup ; Adler, Mark (18 avril 2002), Applications zlib .
- ↑ 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