ΠΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Microsoft ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΡΠΊΡΠΈΡΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° .NET 9, ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ .NET Framework, .NET Core ΠΈ Mono. ΠΠ° Π±Π°Π·Π°ΡΠ° Π½Π° .NET 9 ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Π±ΡΠ°ΡΠ·ΡΡΠΈ, ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π½Π°ΡΡΠΎΠ»Π½ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠΈ, IoT ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΎΠ±ΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠΈΡΠ΅ .NET SDK 9, .NET Runtime 9 ΠΈ ASP.NET Core Runtime 9 ΡΠ° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° Linux, macOS ΠΈ Windows. .NET Desktop Runtime 9 ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ°ΠΌΠΎ Π·Π° Windows. Π‘Π²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· MIT.
.NET Π²ΠΊΠ»ΡΡΠ²Π° Runtime Ρ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ RyuJIT, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° API, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ WPF, Windows Forms, WinUI ΠΈ Entity Framework, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ dotnet, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΡΠ²ΡΡΠ½ΠΈ, Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅ΠΊ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ASP.NET Core 9.0, ORM ΡΠ»ΠΎΠΉ Entity Framework Core 9.0 (Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π° SQLite ΠΈ PostgreSQL), Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° WPF 9 (Windows Presentation Foundation), ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Windows Forms 9 Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° GUI, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Aspire 9 Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Cloud Native ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ MAUI 9 Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΡΠΈΡΠ΅ C# 13 ΠΈ F# 9. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° .NET 9.0 ΠΈ C# 13 Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ Visual Studio Code.
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- ΠΠ½Π΅ΡΠ΅Π½ΠΈ ΡΠ° Π½Π°Π΄ Ρ
ΠΈΠ»ΡΠ΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄. ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΡΠ±ΠΎΡΠ½ΠΈΠΊΡΡ Π·Π° ΡΠΈΡΡΠ΅Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π² ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Ρ ΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π° Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΡΠΏΡΡΠΌΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (ΡΠ±ΠΎΡΠ½ΠΈΠΊΡΡ Π·Π° ΡΠΈΡΡΠ΅Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π΅ ΠΎΠ±Π²ΡΡΠ·Π°Π½ Π½Π΅ Ρ Π½Π°Π»ΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, Π° Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ»ΠΊΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ). ΠΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΄ΡΠ°, Π°ΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΠΈΠ»ΠΈ Π°ΠΊΠΎ Π½ΡΠΆΠ΄ΠΈΡΠ΅ ΠΎΡ ΠΏΠ°ΠΌΠ΅Ρ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°.
Π JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ (PGO), ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ Π΅ Π²Π°ΡΠΈΠ°Π½ΡΡΡ Π½Π° ΡΠΈΠΊΠ»ΠΈ, inline ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° Π³ΡΠ°Π½ΠΈΡΠΈ. Π .NET runtime Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Arm64 SVE ΠΈ Intel AVX10. ΠΠΎΠ΄ΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅ ΡΡΠΊΠΎΡΠ΅Π½ Ρ 50%. ΠΠ° ΠΊΠΎΠ΄ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ β(IFoo)myFooβ ΠΈ βmyFoo is IFooβ, Π΅ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π΄ΠΎ 70%. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π² Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ LINQ (Language-Integrated Query), ΠΊΠ°ΡΠΎ Take ΠΈ DefaultIfEmpty, Π΅ Π½Π°ΡΠ°ΡΠ½Π°Π»Π° Π΄ΠΎ 10 ΠΏΡΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠ°Π·Π½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ.
ΠΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° System.Text.Json Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ²ΠΈΡΠ΅Π½Π°. Π ΠΌΠ΅ΡΠΎΠ΄Π° JsonProperty.WriteTo Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° UTF8 Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΠΈΠ·Π»ΠΈΡΠ½ΠΎΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° JsonObject ΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ. ΠΡΠΈ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅ TechEmpower, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ΅Π½ΡΠ²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° JSON Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ .NET 8, Π΅ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Ρ 15% ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Ρ 93%.
- Π Runtime Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½ΠΎΠ²Π° ΠΌΠΎΠ΄Π΅Π» Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈ Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅.
- Π Π΅Π·ΠΈΠΊΠ° C# 13 Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° βparamsβ ΡΠ° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ, ΠΊΠ°ΡΠΎ ΠΎΡΠ²Π΅Π½ ΠΌΠ°ΡΠΈΠ²ΠΈ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ ΠΈ Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ. ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΌΠ°ΡΠΈΠ²ΠΈ Π² ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° β^β Π·Π° ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΎΡ ΠΊΡΠ°Ρ Π½Π° ΠΌΠ°ΡΠΈΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, βbuffer = { [^1] = 0, [^2] = 1,β¦.}β ΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ 0 Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΈ 1 Π² ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ). Π ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈ ref ΠΈ unsafe. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° escape ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ β\eβ. Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ βref structβ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ βref structβ ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π² ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π½ΠΎΠ² ΡΠΈΠΏ Lock Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Lock myLock = new(); void Concat<T>(params List<T> items) { lock (myLock) Console.WriteLine(string.Join(β\e[1mItem: \e[0mβ, items)); }
- Π Π΅Π·ΠΈΠΊΠ° F# 9 ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡ null. Π ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡΠ° ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° β.Is*β (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, person.contact.IsEmail), ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΊΡΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠ°Π·Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»ΡΠ΅ΠΌΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ (βlet xs = seq { }β). Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅, Π·Π°ΠΏΠΎΡΠ²Π°ΡΠΈ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° β#β, Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΡΡΡΠΈΠ½Π³ΠΎΠ²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ #nowarn 0070 Π²ΠΌΠ΅ΡΡΠΎ #nowarn β0070β). Π ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ List, Array ΠΈ Seq ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΈΠ·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΡΠ°Π·Π±ΡΡΠΊΠ²Π°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ. ΠΠ° ΡΠΏΠΈΡΡΡΠΈΡΠ΅ (list ΠΈ set) Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠ΅ΠΊΠ° .NET Aspire, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΈ ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π½ΠΎΠ² Π½Π°Π±ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ C# Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° AI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ AI-ΡΠ΅ΡΠ²ΠΈΠ·ΠΈ. ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ Π½ΠΎΠ² ΡΠΈΠΏ βTensorβ ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡΡΠ° Π·Π° AI ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ System.Numerics.Tensors, Microsoft.Extensions.AI ΠΈ Microsoft.Extensions.VectorData. ΠΠ±Π½ΠΎΠ²Π΅Π½ Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡΡ ML.NET, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Microsoft.ML.Tokenizers Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡ Π² ΡΠΎΠΊΠ΅Π½ΠΈ.
- Π ΡΡΠ΅ΠΊΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ASP.NET Core Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ (ahead-of-time), ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠ°, Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΡΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² API Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ. Π Blazor, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° C#, ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΠΈ ΡΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° MAUI Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠ·Π²ΡΡΡΠ΅Π½Π° Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π£ΠΊΡΠ΅ΠΏΠ΅Π½Π° Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ Π½Π°ΡΡΠΎΠ»Π½ΠΈ ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° TitleBar ΠΈ HybridWebView.
- Π WPF (Windows Presentation Foundation) Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ΅ΠΌΠΈ ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΠΊΡΠ΅Π½ΡΠ½ΠΈ ΡΠ²Π΅ΡΠΎΠ²Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
