12 ноября 2024 года Microsoft выпустила открытую платформу .NET 9 с тысячами улучшений. Проект создан благодаря унификации продуктов .NET Framework, .NET Core и Mono. На основе решения .NET 9 можно создавать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT-устройств и мобильных платформ, используя единые библиотеки и общий процесс сборки, не зависящий от типа приложения. Связанные с проектом наработки, включая .NET Runtime и SDK опубликованы на GitHub под лицензией MIT.
Сборки .NET SDK 9, .NET Runtime 9 и ASP.NET Core Runtime 9 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 9 поставляется только для Windows.
По информации OpenNET, в состав .NET 9 входит 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.
Основные изменения и дополнения в .NET 9:
внесено более тысячи изменений, связанных с оптимизацией производительности и повышением качества генерируемого кода. Модернизирован сборщик мусора, в котором реализован и задействован по умолчанию механизм динамической адаптации к размеру приложения (сборщик мусора привязывается не к наличию доступных в системе ресурсов, а к тому, сколько памяти требуется приложению). Новый режим позволяет повысить эффективность работы на системах с большим числом процессорных ядер, если приложение использует относительно мало памяти или если потребность в памяти существенно меняется во время работы.
в 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, в котором помимо массивов разрешено указание коллекций. Добавлена новая escape-последовательность «e». При инициализации массивов в значении индекса разрешено использование оператора «^» для отчёта индекса с конца массива (например, «buffer = { [^1] = 0,….}» запишет 0 в последний элемент). В итераторах и async-методах разрешено использование выражений ref и unsafe. Разрешено определение интерфейсов для типов «ref struct» и использования типов «ref struct» в качестве аргументов в обобщённых функциях. Предложен новый тип Lock для установки блокировок в многопоточных приложениях.
в языке 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 для кодирования и декодирования текста в токены.
в стеке для разработки web-приложений ASP.NET Core расширена поддержка упреждающей компиляции (ahead-of-time), расширены возможности мониторинга и трассировки, сокращено время запуска и снижено потребление памяти, оптимизирована работа со статическими файлами. Добавлен новый API для аутентификации и авторизации. В Blazor, платформе для создания web-приложений на языке C#, реализованы новые шаблоны для гибридных и веб-приложений.
расширены возможности фреймворка MAUI для разработки многоплатформенных интерфейсов пользователя. Проведена оптимизация производительности. Усилена интеграция с настольными и мобильными приложениями. Добавлены новые элементы интерфейса TitleBar и HybridWebView.
в WPF (Windows Presentation Foundation) расширена поддержка тем оформления и добавлена поддержка акцентных цветов.
Microsoft прекратила поддержку версии инструмента разработки с открытым исходным кодом .NET 7 после 14 мая 2024 года. Её выпустили в ноябре 2022 года и поддерживали как нечётную полтора года.
Источник: habr.com