π Zero allocation LINQ π
Π£ΡΠΎΠ²Π΅Π½Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°: π’ #news
ΠΠ΅ ΡΠ΅ΠΊΡΠ΅Ρ, ΡΡΠΎ LINQ Π² .NET ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΈΠ»ΠΈ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅. Π Π΅Π±ΡΡΡΡΠΊΠΈ ΠΈΠ· Cysharp, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΠΎ UniTask ΠΈ R3, 2 Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ZLinq β ΡΡΠΎ ΠΈΡ
NonAlloc struct-based ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Linq.
π¨βπ» ΠΠ°ΠΊΠ΅Ρ ΡΠΆΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ .NET 9, .NET 10, Unity (ΠΎΡ 2022.3.12f1) ΠΈ Godot (ΠΎΡ 4.0.0).
Π Unity ΠΈ Godot ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ GameObject, Transform ΠΈ Node2D. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΈ Π΄Π»Ρ Json, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ/ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ³ΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ .
π₯ Π£Π·Π½Π°Π» ΠΏΡΠΎ ZLinq ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΊΠ°Π½Π°Π»Π° git-amend. Π’Π°ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π² Unity. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³Π»ΡΠ΄Π΅ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
π‘ ΠΠ½Π΅ Π½ΡΠ°Π²ΡΡΡΡ ΠΈ UniTask, ΠΈ R3. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠΊΠ° Π΄Π»Ρ ΠΌΠ΅Π½Ρ ZLinq, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π½Π° ΡΠ΅Ρ ΠΆΠ΅ ΠΈΠ΄Π΅ΡΡ , Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ LINQ-Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ½ΠΈΠ·ΠΈΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° GC ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π΅ΡΠ΅Π²ΡΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
β ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠΊΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠ°Π΄ΠΈΠΈ preview, Π½ΠΎ Π² Π½Π΅-ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΠΎΠΉ ΡΡΠ΅Π΄Π΅ Ρ ΡΠΆΠ΅ Π½Π°ΡΠ½Ρ Ρ Π½Π΅ΠΉ Π·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ.
ββββββββββββ