Repolode
Cysharp

Cysharp/NativeCompressions

Bindings nativos em C# e APIs de streaming de alto nível para LZ4, Zstandard e OpenZL experimental, no .NET e no Unity.

Estrelas
320
Forks
11
Issues abertas
0
Último commit
anteontem

O que é?

NativeCompressions encapsula as bibliotecas nativas LZ4 e Zstandard para .NET e Unity, oferecendo APIs simples com arrays de bytes, além de encoders e decoders de streaming, wrappers de Stream e métodos assíncronos baseados em PipeReader/PipeWriter. O projeto usa as implementações nativas oficiais, em vez de versões em C# puro, para acompanhar as atualizações de desempenho e segurança dos projetos upstream.

A API de LZ4 usa o formato frame e oferece opções como nível de compressão, tamanho do bloco, checksums e dicionários externos. O Zstandard oferece uma API semelhante, com treinamento de dicionários. Há bibliotecas nativas pré-compiladas para Windows, Linux, macOS, Android, iOS e Mac Catalyst, e a documentação explica como usar WebAssembly com Blazor. Os bindings de OpenZL estão incluídos como experimentais, sem pacote NuGet ou API de alto nível por enquanto.

Os pacotes são separados para você instalar apenas os algoritmos ou runtimes de plataforma de que precisa, e o guia de configuração para Unity aborda o NuGetForUnity.

Recursos principais

  • 01Bindings nativos de LZ4 e Zstandard com APIs baseadas em arrays de bytes e spans.
  • 02Encoders e decoders de streaming que retornam OperationStatus, de forma semelhante a BrotliEncoder.
  • 03Compressão assíncrona com Stream, PipeReader e PipeWriter.
  • 04Suporte a dicionários, incluindo treinamento de dicionários do Zstandard para LZ4.
  • 05Bibliotecas nativas pré-compiladas para as principais plataformas desktop, mobile e da Apple.
  • 06Bindings experimentais de OpenZL expostos pela API C de baixo nível.

Casos de uso

  • Comprimir payloads de rede ou dados em cache em um serviço .NET.
  • Adicionar descompressão rápida de LZ4 a jogos Unity que carregam assets compactados.
  • Escolher entre LZ4 e Zstandard conforme as diferentes compensações entre velocidade e taxa de compressão.
  • Comprimir dados em apps Blazor WebAssembly usando a compilação nativa documentada.

Início rápido

  1. 1

    Instale o pacote NativeCompressions pelo NuGet

    dotnet add package NativeCompressions
  2. 2

    Chame LZ4.Compress e LZ4.Decompress, ou Zstandard.Compress e Zstandard.Decompress, no seu código

Antes de usar

  • OpenZL é experimental, oferece apenas bindings nativos e não tem um pacote NuGet.
  • As bibliotecas nativas do macOS exigem macOS 15.0 ou posterior.
  • Apps para iOS e Mac Catalyst precisam do .NET 10 ou posterior.
  • Processos de 32 bits não são compatíveis.

Em coleções

Tópicos

#compression#lz4#zstandard#dotnet#csharp#unity#native-bindings#streaming

Perguntas frequentes

O que é NativeCompressions?
Bindings nativos em C# e APIs de streaming de alto nível para LZ4, Zstandard e OpenZL experimental, no .NET e no Unity. NativeCompressions encapsula as bibliotecas nativas LZ4 e Zstandard para .NET e Unity, oferecendo APIs simples com arrays de bytes, além de encoders e decoders de streaming, wrappers de Stream e métodos assíncronos baseados em PipeReader/PipeWriter. O projeto usa as implementações nativas oficiais, em vez de versões em C# puro, para acompanhar as atualizações de desempenho e segurança dos projetos upstream.
NativeCompressions é gratuito? Qual é a licença?
NativeCompressions é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
NativeCompressions ainda é mantido?
Manutenção ativa. O último commit de NativeCompressions foi em 5 de nov. de 2026.
Para que posso usar NativeCompressions?
Comprimir payloads de rede ou dados em cache em um serviço .NET. Adicionar descompressão rápida de LZ4 a jogos Unity que carregam assets compactados. Escolher entre LZ4 e Zstandard conforme as diferentes compensações entre velocidade e taxa de compressão. Comprimir dados em apps Blazor WebAssembly usando a compilação nativa documentada.
Como instalar NativeCompressions?
Instale o pacote NativeCompressions pelo NuGet: dotnet add package NativeCompressions Chame LZ4.Compress e LZ4.Decompress, ou Zstandard.Compress e Zstandard.Decompress, no seu código
Onde consigo NativeCompressions?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/Cysharp/NativeCompressions

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados

Algoritmo de compressão sem perdas extremamente rápido, escrito em C, com decodificação muito rápida e um equilíbrio ajustável entre velocidade e taxa de compressão.

12,7 mil+376 esta semana1,6 milCOtherBem mantidoAtualizado há 22 horas