Компания 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, фреймворки для разработки клиентских приложений WPF и Windows Forms, а также инструменты для разработки микросервисов, библиотек, серверных, графических и консольных приложений. Отдельно опубликованы стек для разработки 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).