프로젝트 소개

ZLinq는 .NET 플랫폼(netstandard2.0, 2.1, net8, net9)과 Unity, Godot 같은 게임 엔진을 위한 고성능 무할당 LINQ 라이브러리입니다. 구조체 기반 `ValueEnumerable<T>`를 제공하여 메서드 체인에서 할당을 제거하고 표준 LINQ보다 뛰어난 성능을 달성합니다. 주요 기능은 다음과 같습니다: - **99% 호환성**: .NET 10의 LINQ와 호환되며 `Shuffle`, `RightJoin`, `LeftJoin`, `Sequence`, `InfiniteSequence` 같은 새로운 연산자를 포함합니다. - **LINQ to Span**: .NET 9/C# 13의 `allows ref struct`를 사용하여 `Span<T>` 연산을 완벽하게 지원합니다. - **LINQ to SIMD**: 지원되는 숫자 형식(예: `int`, `float`, `double`)에 대해 자동 SIMD 가속을 제공하며, 최대 성능을 위해 `SumUnchecked`를 사용합니다. - **LINQ to Tree**: FileSystem, JSON, GameObject 같은 트리 구조를 기본 지원하여 계층적 데이터에 대한 LINQ 쿼리를 가능하게 합니다. - **드롭인 대체**: 선택적 소스 생성기(`ZLinq.DropInGenerator`)를 통해 코드 변경 없이 모든 LINQ 메서드를 자동으로 가속화할 수 있습니다. 사용법은 간단합니다. 기존 컬렉션에 `AsValueEnumerable()`을 추가하여 ZLinq 메서드 체인을 시작하면 됩니다. 이 라이브러리는 dotnet/runtime의 System.Linq.Tests에서 9000개 이상의 테스트를 통과하여 신뢰성을 보장합니다. 또한 무할당 구체화를 위한 `ToArrayPool`과 컬렉션 할당을 피하기 위한 `CopyTo` 같은 유틸리티도 포함합니다. 메서드 체인이 서로 다른 형식을 반환하여 재할당을 방지하지만, 실제로는 거의 문제가 되지 않습니다. ZLinq는 무할당 LINQ가 중요한 게임과 같은 성능 중심 애플리케이션에 이상적입니다.