Microsoft опубликовал открытую платформу .NET 8
Компания Microsoft представила выпуск открытой платформы .NET 8, созданной благодаря унификации продуктов .NET Framework, .NET Core и Mono. На основе .NET 8 можно создавать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT-устройств и мобильных платформ, используя единые библиотеки и общий процесс сборки, не зависящий от типа приложения. Сборки .NET SDK 8, .NET Runtime 8 и ASP.NET Core Runtime 8 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 8 поставляется только для Windows. Связанные с проектом наработки распространяются под лицензией MIT. Ветка .NET 8 отнесена к категории LTS и будет сопровождаться в течение трёх лет до ноября 2026 года.
В состав .NET 8 входит Runtime с JIT-компилятором RyuJIT, спецификации API, библиотеки WPF, Windows Forms, WinUI, Entity Framework, интерфейс командной строки dotnet, а также инструменты для разработки микросервисов, библиотек, серверных, графических и консольных приложений. Отдельно опубликованы стек для разработки web-приложений ASP.NET Core 8.0, ORM-прослойка Entity Framework Core 8.0 (драйверы имеются, в том числе, для SQLite и PostgreSQL), библиотека WPF 8 (Windows Presentation Foundation), фреймворк Windows Forms 8 для разработки GUI, платформа Aspire 8 для создания приложений Cloud Native, фреймворк MAUI 8 для разработки многоплатформенных интерфейсов пользователя, а также выпуски языков C# 12 и F# 8. Поддержка .NET 8.0 и C# 12 включена в свободный редактор кода Visual Studio Code.
Особенности нового выпуска:
Проведена большая оптимизация производительности. Включён по умолчанию новый генератор кода, поддерживающий динамическую оптимизацию на основе профилирования выполнения кода (Dynamic Profile-Guided Optimization). Использование нового генератора кода обеспечивает прирост производительности приложений до 20%. Кроме того, в новой версии добавлена поддержка инструкций AVX-512, позволяющих повысить производительность параллельных операций над векторными данными. Для примитивных типов реализован новый интерфейс, позволяющий напрямую без перекодирования разбирать и форматировать данные в формате UTF-8. В тестах TechEmpower производительность работы с JSON API увеличилась на 18%, а с Fortunes на 24%.
Добавлен новый стек .NET Aspire, предназначенный для разработки облачных приложений (cloud-native), используя технологии .NET. В .NET Aspire предоставляется большой набор компонентов, которые могут потребоваться при создании приложений, запускаемых в облачных окружения, включая средства для сбора телеметрии, настройки, проверки работоспособности и обеспечения отказоустойчивости.
Расширены инструменты для упаковки приложений в изолированные контейнеры. По умолчанию обеспечена публикация образов контейнеров без Dockerfile и без пользователя root. Сокращён размер базового образа контейнера с компонентами платформы .NET. Добавлен минималистичный вариант образа для запуска приложений, скомпилированных в исполняемый файлы (Native AOT). Добавлен более защищённый вариант образов на базе Chiseled Ubuntu.
Повышена эффективность компиляции в самодостаточные исполняемый файлы (Native AOT), в которых весь проект изначально скомпилирован в машинный код целевой платформы без использования промежуточного кода и без применения JIT.
- Расширены возможности программных интерфейсов, которые можно использовать в системах машинного обучения. Например, в библиотеке System.Numerics повышена совместимость с генеративными AI-системами. Добавлены примеры для сознания чат-ботов, генерации контента и обращения к сервисам Azure AI.
В Blazor, платформе для создания web-приложений на языке C#, сокращено время загрузки страниц, повышена масштабируемость, разрешено использование в одном приложении Blazor Server и Blazor WebAssembly для создания программ, сочетающих функции сервера и клиента. Добавлен Jiterpreter, новый более быстрый WebAssembly runtimе, позволивший ускорить отрисовку интерфейса на 20%. Расширены возможности аутентификации, авторизации и идентификации.
Расширен фреймворк MAUI для разработки многоплатформенных интерфейсов пользователя, в котором предоставлена возможность использования одной кодовой базы для сборки интерфейсов для Windows, macOS, iOS и Android. Добавлена экспериментальная поддержка компиляции (Native AOT). Добавлена поддержка платформ Xcode 15 и Android API 34. Модернизированы графические элементы и кнопки, улучшена обработка щелчков мышью и событий от клавиатуры.
В языке C# 12 добавлена поддержка упрощённого синтаксиса для создания первичных конструкторов в любых классах и структурах, а также для создания массивов, span и других типов коллекций. Предоставлены средства для задания значений по умолчанию для параметров лямбда-выражений. Упрощена обработка необязательных аргументов. Добавлена возможность создания псевдонимов любых типов при помощи директивы alias.
// Создание списка List‹int› a = [1, 2, 3, 4, 5, 6, 7, 8]; // Создание span-массивов Span‹char› b = ['a', 'b', 'c', 'd', 'e', 'f', 'h', 'i']; // Use the spread operator to concatenate int[] array1 = [1, 2, 3]; int[] array2 = [4, 5, 6]; int[] array3 = [7, 8, 9]; int[] fullArray = [..array1, ..array2, ..array3]; // содержимое будет [1, 2, 3, 4, 5, 6, 7, 8, 9]
В ASP.NET Core для одностраничных (SPA, single-page application) и web-приложений (Blazor) реализована поддержка аутентификации на основе Cookie и токенов. Предложен новый интерфейс пользователя для прохождения аутентификации. Усилена защита от атак XSRF/CSRF.
- В Entity Framework Core предоставлены новые сложные типы, которые можно использовать как объекты. Добавлена поддержка иерархических данных в SQL Server.
- В пакетном менеджере NuGet упрощён аудит пакетов в проектах и обеспечено информирование о наличии известных уязвимостей.
В .NET Runtime добавлен режим упреждающей компиляции (AOT) для платформ WebAssembly (WASM) и Android.
- WPF добавлен диалог открытия каталога (OpenFolderDialog) и включена поддержка аппаратного ускорения в RDP.
- Значительно улучшена поддержка архитектуры ARM64 и повышено качество кода для ARM.
В отладчике обеспечен показ сводных отладочных данных и реализована упрощённые отладочные прослойки для обычно используемых типов .NET.
Источник: http://www.opennet.ru/opennews/art.shtml? num=60112
© OpenNet