LZ4 압축을 기본 지원하며 .NET, .NET Core, Unity, Xamarin에서 사용할 수 있는 초고속 C#용 MessagePack 직렬화 라이브러리입니다.
Cysharp/NativeCompressions
.NET과 Unity용 LZ4, Zstandard 및 실험적인 OpenZL의 C# 네이티브 바인딩과 고수준 스트리밍 API입니다.
- 스타
- 320
- 포크
- 11
- 열린 이슈
- 0
- 마지막 커밋
- 그저께
어떤 프로젝트인가요?
NativeCompressions는 .NET과 Unity에서 네이티브 LZ4 및 Zstandard 라이브러리를 사용할 수 있게 해 주며, 간단한 byte array API뿐 아니라 스트리밍 인코더와 디코더, Stream 래퍼, PipeReader/PipeWriter 기반 비동기 메서드도 제공합니다. 이 프로젝트는 순수 C# 포트 대신 공식 네이티브 구현을 사용해 업스트림의 성능 및 보안 업데이트를 반영합니다.
LZ4 API는 프레임 형식을 사용하며 압축 수준, 블록 크기, 체크섬, 외부 사전 등의 옵션을 지원합니다. Zstandard도 사전 학습 기능을 포함해 유사한 API를 제공합니다. Windows, Linux, macOS, Android, iOS, Mac Catalyst용 사전 빌드 네이티브 라이브러리가 제공되며, Blazor용 WebAssembly 경로도 문서화되어 있습니다. OpenZL 바인딩은 실험 단계로 포함되어 있으며, 아직 NuGet 패키지나 고수준 API는 없습니다.
필요한 알고리즘이나 플랫폼 런타임만 설치할 수 있도록 패키지가 분리되어 있으며, Unity 설정 가이드에서는 NuGetForUnity 구성 방법을 다룹니다.
핵심 기능
- 01byte array 및 span 기반 API를 제공하는 네이티브 LZ4 및 Zstandard 바인딩.
- 02BrotliEncoder와 유사하게 OperationStatus를 반환하는 스트리밍 인코더와 디코더.
- 03Stream, PipeReader, PipeWriter를 통한 비동기 압축.
- 04Zstandard 사전 학습을 비롯한 사전 지원.
- 05주요 데스크톱, 모바일 및 Apple 플랫폼용 사전 빌드 네이티브 라이브러리.
- 06로우레벨 C API를 통해 제공되는 실험적 OpenZL 바인딩.
활용 사례
- .NET 서비스에서 네트워크 페이로드나 캐시 데이터를 압축하기.
- 압축된 에셋을 로드하는 Unity 게임에 빠른 LZ4 압축 해제를 추가하기.
- 속도와 압축률의 서로 다른 절충점을 고려해 LZ4와 Zstandard 중 선택하기.
- 문서화된 네이티브 빌드를 사용해 Blazor WebAssembly 앱에서 데이터를 압축하기.
빠른 시작
- 1
NuGet에서 NativeCompressions 패키지를 설치합니다
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은(는) 무엇인가요?
- .NET과 Unity용 LZ4, Zstandard 및 실험적인 OpenZL의 C# 네이티브 바인딩과 고수준 스트리밍 API입니다. NativeCompressions는 .NET과 Unity에서 네이티브 LZ4 및 Zstandard 라이브러리를 사용할 수 있게 해 주며, 간단한 byte array API뿐 아니라 스트리밍 인코더와 디코더, 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
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
매우 빠른 디코더와 속도·압축률 조절 기능을 갖춘 C 기반 초고속 무손실 압축 알고리즘입니다.
소스 코드 없이 .NET 및 Unity 어셈블리를 디버깅하고 편집할 수 있는 dnSpy의 비공식 후속 프로젝트입니다.
소스 생성 직렬화를 제공하는, .NET과 Unity용 고성능·저할당 C# YAML 1.2 라이브러리입니다.
Unity, XNA, FNA, MonoGame 게임에 사용자 지정 코드를 로드할 수 있는 플러그인 및 모딩 프레임워크입니다.
Unity와 Unreal Engine 게임을 TypeScript/JavaScript로 개발할 수 있고, Unity에서는 Lua와 Python 백엔드도 지원하는 스크립팅 솔루션입니다.