Высокопроизводительный сериализатор MessagePack для C# с поддержкой .NET, .NET Core, Unity и Xamarin и встроенным сжатием LZ4.
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
Установите пакет NativeCompressions из NuGet
dotnet add package NativeCompressions - 2
Вызовите в коде LZ4.Compress и LZ4.Decompress либо Zstandard.Compress и Zstandard.Decompress
Что важно знать
- OpenZL — экспериментальный проект, доступный только через нативные привязки; пакета NuGet нет.
- Для нативных библиотек macOS требуется macOS 15.0 или новее.
- Для приложений iOS и Mac Catalyst требуется .NET 10 или новее.
- 32-разрядные процессы не поддерживаются.
В подборках
Темы
Частые вопросы
- Что такое 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 с быстрым декодером и настраиваемым балансом скорости и степени сжатия.
Неофициальное продолжение dnSpy — отладчика и редактора сборок .NET и Unity, работающего без исходного кода.
Высокопроизводительная библиотека YAML 1.2 для C# с низким числом аллокаций, поддержкой .NET и Unity и сериализацией на основе генерации исходного кода.
Плагинный фреймворк для моддинга, который позволяет загружать пользовательский код в игры на Unity, XNA, FNA и MonoGame.
Решение для написания игровой логики Unity и Unreal Engine на TypeScript/JavaScript, с поддержкой Lua и Python в Unity.