Repolode
Cysharp

Cysharp/NativeCompressions

Нативные биндинги C# и высокоуровневые потоковые API для LZ4, Zstandard и экспериментального OpenZL в .NET и Unity.

Звёзды
320
Форки
11
Открытые issues
0
Последний коммит
позавчера

Что это?

NativeCompressions предоставляет обёртки над нативными библиотеками LZ4 и Zstandard для .NET и Unity: от простых API для массивов байтов до потоковых кодировщиков и декодеров, обёрток Stream и асинхронных методов на основе PipeReader/PipeWriter. Проект использует официальные нативные реализации, а не порты на чистом C#, поэтому получает обновления производительности и безопасности вслед за upstream.

API LZ4 использует формат frame и поддерживает такие параметры, как уровень сжатия, размер блока, контрольные суммы и внешние словари. Zstandard предлагает похожий API с обучением словарей. Предварительно собранные нативные библиотеки доступны для Windows, Linux, macOS, Android, iOS и Mac Catalyst; для Blazor также описан вариант с WebAssembly. Биндинги OpenZL включены в экспериментальном статусе — пока без NuGet-пакета и высокоуровневого API.

Пакеты разделены так, чтобы можно было установить только нужные алгоритмы и платформенные среды выполнения. В руководстве по настройке Unity описана конфигурация NuGetForUnity.

Ключевые возможности

  • 01Нативные биндинги LZ4 и Zstandard с API для массивов байтов и span.
  • 02Потоковые кодировщики и декодеры, возвращающие OperationStatus, как BrotliEncoder.
  • 03Асинхронное сжатие через Stream, PipeReader и PipeWriter.
  • 04Поддержка словарей, включая обучение словарей Zstandard для LZ4.
  • 05Предварительно собранные нативные библиотеки для основных настольных, мобильных платформ и платформ Apple.
  • 06Экспериментальные биндинги OpenZL, доступные через низкоуровневый C API.

Сценарии использования

  • Сжатие сетевых данных или кэшированных данных в сервисе на .NET.
  • Добавление быстрого распаковывания LZ4 в игры на Unity, загружающие сжатые ресурсы.
  • Выбор между LZ4 и Zstandard с учётом компромисса между скоростью и степенью сжатия.
  • Сжатие данных в приложениях Blazor WebAssembly с помощью описанной нативной сборки.

Быстрый старт

  1. 1

    Установите пакет NativeCompressions из NuGet

    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?
Нативные биндинги C# и высокоуровневые потоковые API для LZ4, Zstandard и экспериментального OpenZL в .NET и Unity. NativeCompressions предоставляет обёртки над нативными библиотеками LZ4 и Zstandard для .NET и Unity: от простых API для массивов байтов до потоковых кодировщиков и декодеров, обёрток Stream и асинхронных методов на основе PipeReader/PipeWriter. Проект использует официальные нативные реализации, а не порты на чистом C#, поэтому получает обновления производительности и безопасности вслед за upstream.
NativeCompressions можно использовать бесплатно? Какая у него лицензия?
NativeCompressions распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
NativeCompressions всё ещё поддерживается?
Активно поддерживается. Последний коммит в NativeCompressions — 5 нояб. 2026 г..
Для чего можно использовать NativeCompressions?
Сжатие сетевых данных или кэшированных данных в сервисе на .NET. Добавление быстрого распаковывания LZ4 в игры на Unity, загружающие сжатые ресурсы. Выбор между LZ4 и Zstandard с учётом компромисса между скоростью и степенью сжатия. Сжатие данных в приложениях Blazor WebAssembly с помощью описанной нативной сборки.
Как установить NativeCompressions?
Установите пакет NativeCompressions из NuGet: dotnet add package NativeCompressions Вызовите в коде LZ4.Compress и LZ4.Decompress либо Zstandard.Compress и Zstandard.Decompress
Где скачать NativeCompressions?
Исходный код и инструкции по установке — на GitHub: https://github.com/Cysharp/NativeCompressions

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Очень быстрый алгоритм сжатия без потерь на C с быстрым декодером и настраиваемым балансом скорости и степени сжатия.

12,7 тыс.+376 за неделю1,6 тыс.COtherАктивно поддерживаетсяОбновлён 24 часа назад