Repolode
Cysharp

Cysharp/NativeCompressions

为 .NET 和 Unity 提供 LZ4、Zstandard 与实验性 OpenZL 的原生绑定及高层流式压缩 API。

Star
320
Fork
11
未关闭 Issue
0
最近提交
前天

这是什么?

NativeCompressions 为 .NET 和 Unity 封装了原生的 LZ4 与 Zstandard 库,既提供基于字节数组的简单接口,也提供流式编码器、解码器、Stream 包装,以及基于 PipeReader/PipeWriter 的异步方法。项目直接调用官方原生实现而非纯 C# 移植,便于跟进上游的性能与安全更新。

LZ4 接口采用 frame 格式,可设置压缩级别、块大小、校验和及外部字典等选项;Zstandard 提供相似的接口并支持字典训练。预编译原生库覆盖 Windows、Linux、macOS、Android、iOS 和 Mac Catalyst,文档还介绍了 Blazor WebAssembly 的用法。OpenZL 绑定目前为实验性质,暂无 NuGet 包和高层 API。

包按算法和平台拆分,可只安装所需部分。项目还附有 NuGetForUnity 的 Unity 配置说明。

核心功能

  • 01提供 LZ4 与 Zstandard 的原生绑定,支持字节数组和 Span 接口。
  • 02流式编码器与解码器返回 OperationStatus,接口风格类似 BrotliEncoder。
  • 03基于 Stream、PipeReader 和 PipeWriter 的异步压缩与解压。
  • 04支持字典,包括用 Zstandard 训练字典供 LZ4 使用。
  • 05附带 Windows、Linux、macOS、Android、iOS 等平台的预编译原生库。
  • 06以原生 C API 形式提供实验性的 OpenZL 绑定。

适用场景

  • 在 .NET 服务中压缩网络数据或缓存数据。
  • 为加载压缩资源的 Unity 游戏加入快速的 LZ4 解压。
  • 根据速度与压缩率需求在 LZ4 和 Zstandard 之间做选择。
  • 在 Blazor WebAssembly 应用中按文档方式使用原生压缩库。

快速上手

  1. 1

    从 NuGet 安装 NativeCompressions 包

    dotnet add package NativeCompressions
  2. 2

    在代码中调用 LZ4.Compress 和 LZ4.Decompress,或 Zstandard.Compress 和 Zstandard.Decompress

使用前须知

  • OpenZL 处于实验阶段,只提供原生绑定,没有 NuGet 包。
  • macOS 原生库需要 macOS 15.0 或更高版本。
  • iOS 和 Mac Catalyst 应用需要 .NET 10 或更高版本。
  • 不支持 32 位进程。

收录于专题

标签

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

常见问题

NativeCompressions 是什么?
为 .NET 和 Unity 提供 LZ4、Zstandard 与实验性 OpenZL 的原生绑定及高层流式压缩 API。 NativeCompressions 为 .NET 和 Unity 封装了原生的 LZ4 与 Zstandard 库,既提供基于字节数组的简单接口,也提供流式编码器、解码器、Stream 包装,以及基于 PipeReader/PipeWriter 的异步方法。项目直接调用官方原生实现而非纯 C# 移植,便于跟进上游的性能与安全更新。
NativeCompressions 可以免费使用吗?用的什么许可证?
NativeCompressions 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
NativeCompressions 还在维护吗?
活跃维护中。NativeCompressions 最近一次提交是在 2026年11月5日。
NativeCompressions 适合用来做什么?
在 .NET 服务中压缩网络数据或缓存数据。 为加载压缩资源的 Unity 游戏加入快速的 LZ4 解压。 根据速度与压缩率需求在 LZ4 和 Zstandard 之间做选择。 在 Blazor WebAssembly 应用中按文档方式使用原生压缩库。
NativeCompressions 怎么安装和运行?
从 NuGet 安装 NativeCompressions 包: dotnet add package NativeCompressions 在代码中调用 LZ4.Compress 和 LZ4.Decompress,或 Zstandard.Compress 和 Zstandard.Decompress
在哪里获取 NativeCompressions?
源代码和安装说明在 GitHub 上:https://github.com/Cysharp/NativeCompressions

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目