Serializador MessagePack extremamente rápido para C#, compatível com .NET, .NET Core, Unity e Xamarin, com compressão LZ4 integrada.
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
Instale o pacote NativeCompressions pelo NuGet
dotnet add package NativeCompressions - 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
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.
Continuação não oficial do dnSpy, um debugger e editor de assemblies .NET e Unity que funciona sem o código-fonte.
Uma biblioteca YAML 1.2 de alto desempenho e baixa alocação para C# com foco em .NET e Unity, com serialização gerada pelo source generator.
Framework de plugins e modding que permite a desenvolvedores e jogadores carregar código personalizado em jogos Unity, XNA, FNA e MonoGame.
Solução de scripting que permite desenvolver jogos para Unity e Unreal Engine em TypeScript/JavaScript, com backends de Lua e Python para Unity.