Microsoft опубликовал открытую платформу .NET 11
- Выпущены .NET SDK 11, Runtime 11 и ASP.NET Core Runtime 11 для Linux, macOS и Windows; Desktop Runtime доступен только для Windows.
- В C# 15 появились типы union и модификатор closed для классов; они позволяют компилятору проверять обработку всех вариантов в switch.
- В SDK добавлены шаблон MCP-сервера и утилита dotnetup для установки и обновления SDK и runtime.
Почему это важно: Платформа позволяет создавать приложения для браузеров, облачных систем, настольных компьютеров, IoT и мобильных устройств с общими библиотеками и процессом сборки.
Компания Microsoft представила выпуск открытой платформы .NET 11, созданной благодаря унификации продуктов .NET Framework, .NET Core и Mono. На основе .NET 11 можно создавать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT-устройств и мобильных платформ, используя единые библиотеки и общий процесс сборки, не зависящий от типа приложения. Сборки .NET SDK 11, .NET Runtime 11 и ASP.NET Core Runtime 11 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 11 поставляется только для Windows. Связанные с проектом наработки распространяются под лицензией MIT.
В состав .NET входит Runtime с JIT-компилятором RyuJIT, спецификации API, библиотеки WPF, Windows Forms, WinUI и Entity Framework, интерфейс командной строки dotnet, а также инструменты для разработки микросервисов, библиотек, серверных, графических и консольных приложений. Отдельно поставляются стек для разработки web-приложений ASP.NET Core 11.0, ORM-прослойка Entity Framework Core 11.0 (драйверы имеются, в том числе, для SQLite и PostgreSQL), библиотека WPF 11 (Windows Presentation Foundation), фреймворк Windows Forms 11 для разработки GUI, платформа Aspire 11 для создания приложений Cloud Native, фреймворк MAUI 11 для разработки многоплатформенных интерфейсов пользователя, а также выпуски языков C# 15 и F# 11. Поддержка .NET 11.0 и C# 15 включена в свободный редактор кода Visual Studio Code.
Особенности нового выпуска:
В языке C# 15 добавлено ключевое слово union для объявления типа, значение которого может быть только одним из заранее перечисленных типов-вариантов. Переменной union-типа можно присваивать значения любого из разрешённых типов, а при попытке присвоить значение типа, не указанного при объявлении, компилятор выдаст ошибку.
public record class Cat(string Name); public record class Dog(string Name); public record class Bird(string Name); public union Pet(Cat, Dog, Bird);
Для классов предложен модификатор «closed», при помощи которого можно создавать закрытые иерархии (closed hierarchy), в которых наследование от базового класса с модификатором closed допускается только внутри той сборки, где он объявлен и на этапе компиляции известен полный набор прямых потомков. Union-типы и закрытые иерархии гарантируют, что в конструкции switch обработаны все возможные варианты, что позволяет обойтись без ветки «default» и переменной »_».
В новой версии C# также добавлена поддержка перехода из выражений «break» и «continue» на выставленные метки и расширены экспериментальные возможности по изоляции в unsafe-блоках кода, напрямую работающего с памятью (добавлена возможность применения unsafe для отдельных выражений).
В языке F# 11 сокращено потребление памяти компилятором и уменьшено число операций выделения памяти при работе с коллекциями FSharp.Core. Добавлена возможность ограничения параллельно выполняемых асинхронных работ для предотвращения перегрузки. Добавлена предварительная поддержка Runtime Async.
В SDK по умолчанию включены сервер MSBuild и предкомпилированный (NativeAOT) вариант CLI-инструментария dotnet. Сокращён размер инсталляторов SDK для Linux и macOS за счёт дедупликации сборок.
Проведена оптимизация JIT-компилятора, удалены избыточные проверки границ и ветвлений, улучшена девиртуализация и расширено сворачивание операций в константы. В AOT-компиляторе задействован общий обработчик вызовов, позволивший сократить объём кода и повысить пропускную способность при интенсивном обращении к интерфейсам. Для Linux и macOS реализовано сохранение при сбоях трассировки стека и информации о модулях.
Добавлен экспериментальный механизм Runtime Async для замены генерируемого компилятором кода обработки async-операций на реализацию, управляющую приостановкой и возобновлением асинхронных операций на уровне runtime.
В SDK добавлен шаблон сервера MCP для интеграции с AI-инструментами и сервисами. Для приложений, использующих AI-сервисы, добавлен набор абстракций Microsoft.Extensions.AI (MEAI). На базе этих абстракций сформирован Microsoft Agent Framework (MAF), который можно использовать для создания AI-агентов.
- В API Process расширены возможности запуска процессов с перехватом их вывода и кодов завершения работы, а также контроля над наследуемыми дескрипторами.
- В API System.IO.Compression добавлена поддержка алгоритма сжатия Zstandard.
Добавлены новые адаптеры потоков ReadOnlyMemoryStream, WritableMemoryStream, ReadOnlySequenceStream и StringStream.
Добавлена утилита dotnetup для установки и обновления SDK и runtime.
Источник: http://www.opennet.ru/opennews/art.shtml? num=66666
© OpenNet
