zlib - zlib

zlib
logotipo da zlib
lançamento inicial 1 de maio de 1995 ( 01-05-1995 )
Versão estável
1.2.11 / 15 de janeiro de 2017 ; 4 anos atras ( 2016-01-15 )
Repositório Edite isso no Wikidata
Escrito em C
Sistema operacional Plataforma cruzada
Modelo Compressão de dados
Licença Licença zlib
Local na rede Internet zlib .net

zlib é uma biblioteca de software usada para compressão de dados . zlib foi escrito por Jean-loup Gailly e Mark Adler e é uma abstração do algoritmo de compressão DEFLATE usado em seu programa de compressão de arquivo gzip . zlib também é um componente crucial de muitas plataformas de software, incluindo Linux , macOS e iOS . Também tem sido usado em consoles de jogos como PlayStation 4 , PlayStation 3 , Wii U , Wii , Xbox One e Xbox 360 .

A primeira versão pública do zlib, 0.9, foi lançada em 1 de maio de 1995 e foi originalmente planejada para uso com a biblioteca de imagens libpng . É um software livre , distribuído sob a licença zlib .

Capacidades

Encapsulamento

Os dados compactados do zlib são normalmente escritos com um gzip ou um wrapper zlib. O wrapper encapsula os dados DEFLATE brutos adicionando um cabeçalho e um trailer. Isso fornece identificação de fluxo e detecção de erros que não são fornecidas pelos dados DEFLATE brutos.

O cabeçalho gzip, usado no formato de arquivo gzip onipresente , é maior do que o cabeçalho zlib, pois armazena um nome de arquivo e outras informações do sistema de arquivos.

Algoritmo

Em setembro de 2018, zlib oferece suporte a apenas um algoritmo, chamado DEFLATE , que usa uma combinação de uma variação de LZ77 (Lempel – Ziv 1977) e codificação de Huffman . Este algoritmo fornece boa compactação em uma ampla variedade de dados com uso mínimo de recursos do sistema. Este também é o algoritmo usado no formato de arquivo Zip . O cabeçalho permite outros algoritmos, mas nenhum está implementado atualmente.

Uso de recursos

O zlib fornece recursos para controle do uso do processador e da memória. Um valor de nível de compressão pode ser fornecido para trocar velocidade por compressão. Também existem recursos para conservar memória, úteis em ambientes de memória restrita, como alguns sistemas embarcados.

Estratégia

A compactação pode ser otimizada para tipos específicos de dados. Se alguém estiver usando a biblioteca para sempre compactar tipos específicos de dados, o uso de uma estratégia específica pode melhorar a compactação e o desempenho. Por exemplo, se os dados contêm comprimentos longos de bytes repetidos, a estratégia de codificação de comprimento de execução (RLE) pode dar bons resultados em velocidade mais alta. Para dados gerais, a estratégia padrão é preferida.

Manipulação de erros

Erros em dados compactados podem ser detectados e ignorados. Além disso, se os pontos de "liberação total" forem gravados no fluxo compactado, os dados corrompidos podem ser ignorados e a descompressão será sincronizada novamente no próximo ponto de liberação - embora nenhuma recuperação de erro dos dados corrompidos seja fornecida. Os pontos de descarga total são úteis para grandes fluxos de dados em canais não confiáveis, onde alguma perda de dados não é importante, como em alguns aplicativos de multimídia. No entanto, a criação de muitos pontos de descarga pode afetar a velocidade e também a quantidade (proporção) de compactação.

Comprimento de dados

Não há limite para o comprimento dos dados que podem ser compactados ou descompactados. Chamadas repetidas para a biblioteca permitem que um número ilimitado de blocos de dados sejam tratados. Alguns códigos auxiliares (contadores) podem sofrer estouro para fluxos de dados longos, mas isso não afeta a compactação ou descompactação real.

Ao compactar um fluxo de dados longo (ou infinito), é aconselhável gravar pontos de liberação total regulares.

Formulários

Hoje, o zlib é quase um padrão de fato , a ponto de zlib e DEFLATE serem usados ​​alternadamente em documentos de padrões, com milhares de aplicativos contando com ele para compactação, direta ou indiretamente. Esses incluem:

O zlib também é usado em muitos dispositivos embarcados, como o Apple iPhone e o Sony PlayStation 3 , porque o código é portátil, amplamente licenciado e tem uma pegada de memória relativamente pequena.

Forks

Uma biblioteca comumente usada construída em uma base de código antiga, zlib também é frequentemente bifurcada por terceiros que reivindicam melhorias para esta biblioteca:

  • A Intel tem um fork do zlib de alto desempenho.
  • CloudFlare mantém uma bifurcação de alto desempenho com melhorias "massivas".
  • Zlib-ng é uma bifurcação de substituição do zlib com otimizações para sistemas de "próxima geração".

Veja também

Referências

links externos