À propos du projet

ZLinq est une bibliothèque LINQ hautes performances et sans allocation pour les plateformes .NET (netstandard2.0, 2.1, net8, net9) et les moteurs de jeu comme Unity et Godot. Elle fournit un `ValueEnumerable<T>` basé sur des structures qui élimine les allocations dans les chaînes de méthodes, atteignant de meilleures performances que le LINQ standard. Les caractéristiques clés incluent : - **Compatibilité à 99%** avec le LINQ de .NET 10, y compris les nouveaux opérateurs comme `Shuffle`, `RightJoin`, `LeftJoin`, `Sequence` et `InfiniteSequence`. - **LINQ vers Span** : Prise en charge complète des opérations `Span<T>` utilisant `allows ref struct` de .NET 9/C# 13. - **LINQ vers SIMD** : Accélération SIMD automatique pour les types numériques pris en charge (par exemple, `int`, `float`, `double`) avec `SumUnchecked` pour des performances maximales. - **LINQ vers arbres** : Prise en charge intégrée des structures arborescentes comme FileSystem, JSON et GameObject, permettant des requêtes LINQ sur des données hiérarchiques. - **Remplacement direct** : Générateur de source optionnel (`ZLinq.DropInGenerator`) pour accélérer automatiquement toutes les méthodes LINQ sans modification de code. L'utilisation est simple : ajoutez `AsValueEnumerable()` aux collections existantes pour commencer à enchaîner les méthodes ZLinq. La bibliothèque réussit plus de 9000 tests issus de System.Linq.Tests de dotnet/runtime, garantissant sa fiabilité. Elle inclut également des utilitaires comme `ToArrayPool` pour une matérialisation sans allocation et `CopyTo` pour éviter les allocations de collections. Bien que les chaînes de méthodes retournent différents types (empêchant la réaffectation), cela est rarement un problème en pratique. ZLinq est idéal pour les applications critiques en performances comme les jeux, où un LINQ sans allocation est crucial.