Π Π΅Π»ΠΈΠ· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET 6

Компания Microsoft прСдставила Π½ΠΎΠ²Ρ‹ΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ выпуск ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET 6, созданной благодаря ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² .NET Framework, .NET Core ΠΈ Mono. На основС .NET 6 ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ прилоТСния для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… систСм, Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола, IoT-устройств ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π΄ΠΈΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ процСсс сборки, Π½Π΅ зависящий ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° прилоТСния. Π‘Π±ΠΎΡ€ΠΊΠΈ .NET SDK 6, .NET Runtime 6 ΠΈ ASP.NET Core Runtime 6 сформированы для Linux, macOS ΠΈ Windows. .NET Desktop Runtime 6 поставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Windows. БвязанныС с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT.

Π’ состав .NET 6 Π²Ρ…ΠΎΠ΄ΠΈΡ‚ runtime CoreCLR с JIT-компилятором RyuJIT, стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ CoreFX, WPF, Windows Forms, WinUI, Entity Framework, интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки dotnet, Π° Ρ‚Π°ΠΊΠΆΠ΅ инструмСнты для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ микросСрвисов, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, сСрвСрных, графичСских ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ стСк для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ASP.NET Core 6.0 ΠΈ ORM-прослойка Entity Framework Core 6.0 (Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ числС для SQLite ΠΈ PostgreSQL), Π° Ρ‚Π°ΠΊΠΆΠ΅ выпуски языков C# 10 ΠΈ F# 6. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° .NET 6.0 ΠΈ C# 10 Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² свободный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Visual Studio Code.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ выпуска:

  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π² Ρ‚ΠΎΠΌ числС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°.
  • Π’ языкС C# 10 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° структур Π² Ρ„ΠΎΡ€ΠΌΠ΅ записСй (record struct), Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ «global using», привязанных ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ пространств ΠΈΠΌΡ‘Π½ ΠΈ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй для лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ компилятор Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ исходного ΠΊΠΎΠ΄Π°.
  • Π’ языкС F# 6 появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° асинхронного выполнСния Π·Π°Π΄Π°Ρ‡ async ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.
  • Доступна функция Hot Reload, которая прСдоставляСт срСдства для рСдактирования ΠΊΠΎΠ΄Π° Π½Π° Π»Π΅Ρ‚Ρƒ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, позволяя Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π±Π΅Π· Ρ€ΡƒΡ‡Π½ΠΎΠΉ остановки выполнСния ΠΈ Π±Π΅Π· прикрСплСния Ρ‚ΠΎΡ‡Π΅ΠΊ останова. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ «dotnet watch», послС Ρ‡Π΅Π³ΠΎ вносимыС Π² ΠΊΠΎΠ΄ измСнСния автоматичСски ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ позволяСт сразу Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° «dotnet monitor» для доступа ΠΊ диагностичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ процСсса dotnet.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° новая систСма динамичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° основС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² профилирования ΠΊΠΎΠ΄Π° (PGO — Profile-guided optimization), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° основС Π°Π½Π°Π»ΠΈΠ·Π° особСнностСй выполнСния. ИспользованиС PGO ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Π° TechEmpower JSON «MVC» Π½Π° 26%.
  • Π’ ASP.NET Core, HttpClient ΠΈ gRPC Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP/3.
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ API, связанный с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ JSON. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° System.Text.Json ΠΈ систСма сСриализации Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.
  • Π’ Blazor, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для создания web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языкС C#, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° отрисовки Razor-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ· JavaScript ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ JavaScript-прилоТСниями.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° компиляции .NET-ΠΊΠΎΠ΄Π° Π² прСдставлСниС Π½Π° WebAssembly.
  • Π’ API File IO Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° символичСских ссылок. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ прСписан FileStream.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenSSL 3 ΠΈ криптографичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ChaCha20/Poly1305.
  • Π’ Runtime Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ W^X (Write XOR Execute, Π·Π°ΠΏΡ€Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ доступа Π½Π° запись ΠΈ исполнСниС) ΠΈ CET (Control-flow Enforcement Technology, Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ выполнСния эксплоитов, построСнных с использованиСм ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° iOS ΠΈ Android Π² качСствС TFM-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (Target Framework Moniker).
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° систСм Arm64. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° устройств Apple Π½Π° Π±Π°Π·Π΅ ARM-Ρ‡ΠΈΠΏΠ° M1 (Apple Silicon).
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ процСсс сборки .NET SDK ΠΈΠ· исходных тСкстов, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² c .NET для дистрибутивов Linux.