このプロジェクトについて

ZLinqは、.NETプラットフォーム(netstandard2.0、2.1、net8、net9)およびUnityやGodotなどのゲームエンジン向けの、高性能でゼロアロケーションのLINQライブラリです。構造体ベースの`ValueEnumerable<T>`を提供し、メソッドチェーンでのアロケーションを排除して、標準のLINQよりも優れたパフォーマンスを実現します。主な機能は以下の通りです。 - **.NET 10のLINQとの99%互換性**:`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が重要となるパフォーマンスが重視されるアプリケーションに最適です。