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