Pull to refresh

Microsoft выпустила открытую платформу .NET 7

Reading time4 min
Views8.3K

Microsoft презентовала выпуск открытой платформы .NET 7. Её удалось создать благодаря унификации продуктов .NET Framework, .NET Core и Mono. Платформа позволяет выпускать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT-устройств и мобильных платформ с помощью единых библиотек и общего процесса сборки, не зависящего от типа приложения. 

Сборки .NET SDK 7, .NET Runtime 7 и ASP.NET Core Runtime 7 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 6 поставляется только для Windows. Все связанные с проектом наработки распространяются под лицензией MIT. Сопровождение ветки .NET 7 будут осуществляться в течение 18 месяцев до 14 мая 2024 года.

В состав .NET 7 вошли Runtime с JIT-компилятором RyuJIT, спецификации API, библиотеки WPF, Windows Forms, WinUI, Entity Framework, интерфейс командной строки dotnet, а также инструменты для разработки микросервисов, библиотек, серверных, графических и консольных приложений. 

Отдельно вышел стек для разработки web-приложений ASP.NET Core 7.0, ORM-прослойка Entity Framework Core 7.0 (в том числе драйверы для SQLite и PostgreSQL), библиотека WPF 7 (Windows Presentation Foundation), фреймворк Windows Forms 7 для разработки GUI, платформа Orleans 7 для создания приложений Cloud Native, фреймворк MAUI 7 для разработки многоплатформенных интерфейсов пользователя, а также выпуски языков C# 11 и F# 7. Поддержку .NET 7.0 и C# 11 включили в свободный редактор кода Visual Studio Code.

Новый выпуск включает:

  • унификацию базовой библиотеки классов (BCL, Base Class Library) для использования в различных типах приложений. Для разработки можно использовать один общий SDK, Runtime и набор библиотек;

  • возможность привязки приложения к API, соответствующему выпуску .NET 7, через определение целевой платформы "net7.0". Для привязки к специфичным для каких-то платформ API при определении цели можно детализировать тип платформы, например, указав "net7.0-android";

  • улучшенную поддержку архитектуры ARM64. В runtime повышена эффективность использования кэша третьего уровня на системах ARM64. Задействованы инструкции LSE для разграничения доступа к памяти из параллельных потоков, что привело к снижению задержек на 45%. В библиотеке появились обработчики, использующие векторные типы Vector64, Vector128 и Vector256, а также на базе векторных инструкций переписаны функции EncodeToUtf8 и DecodeFromUtf8, что обеспечило увеличение их производительности до 60% (для функций NarrowUtf16ToAscii и GetIndexOfFirstNonAsciiChar прирост производительности достигает 35%). В целом скорость прохождения тестов на платформе ARM64 выросла на 10-60%;

  • улучшенную поддержку платформы Linux. В штатные репозитории Ubuntu 22.04 добавлены пакеты с .NET 6 и предоставлен оптимизированный docker-образ для быстрого развёртывания контейнеров с приложениями на базе .NET;

  • поддержку 64-разрядной архитектуры IBM Power (ppc64le);

  • инструментарий .NET Upgrade Assistant для упрощения перевода старых приложений на ветки .NET 6 или .NET 7. В новой версии расширена поддержка миграции приложений с ASP.NET на ASP.NET Core, добавлены анализаторы и корректировщики кода для WinForms, WPF и библиотеки классов, реализована поддержка анализа исполняемых файлов, добавлена поддержка платформы UWP (Universal Windows Platform);

  • расширенные возможности по созданию приложений для облачных систем (cloud-native) и платформ PaaS (платформа как услуга). Появилась возможность создания приложений, упакованных в изолированные контейнеры, при помощи команды "dotnet publish";

  • новые средства для отслеживания состояния приложений и сбора метрик об их работе. Добавлены новые события и методы для анализа активности и производительности приложения;

  • добавление поддержки необработанных строковых литералов в языке C# 11, которые могут включать спецсимволы без необходимости их экранирования. Предложены обобщённые интерфейсы (generic) для математических функций, появилась возможность определения статических элементов в виртуальных интерфейсах, что позволило применить методы обобщённого программирования для выполнения математических операций без точной информации о типе значений;

  • расширенные возможности стандартной библиотеки. Добавлен API System.Formats.Tar для работы с архивами в формате Tar. В функции работы со временем (TimeStamp, DateTime и т.п.) добавлена поддержка микросекунд и наносекунд. В System.Text.Json реализована возможность управления сериализацией и десериализацией типов .NET;

  • добавление поддержки автодополнения шаблонов типовых проектов через нажатие клавиши Tab в интерфейсе командной строки "dotnet new";

  • возможность ограничения применения поставляемых шаблонов проектов в .NET SDK, например, можно определить, в каких операционных системах допустим шаблон;

  • режим централизованного управления пакетами в NuGet, позволяющего управлять зависимостями сразу для нескольких проектов;

  • повышение производительности JIT-компилятора. Добавлена поддержка механизма OSR (On Stack Replacement) для изменения кода уже выполняемых методов, что позволяет вносить оптимизации в методы, выполнение которых занимает много времени;

  • повышение эффективности оптимизации на основе результатов профилирования кода (PGO - Profile-guided optimization), позволяющей учитывать особенности, определяемые во время выполнения программы;

  • добавление поддержки компиляции в самодостаточные исполняемые файлы (Native AOT), в которых весь проект изначально скомпилирован в машинный код целевой платформы без использования промежуточного кода и без применения JIT.

В 2021 году Microsoft удалила ранее открытый код функции Hot Reload из состава платформы .NET 6 RC1 и открытой утилиты dotnet watch в GitHub. Hot Reload намеревались оставить только в коммерческой версии редактора Visual Studio 2022. С помощью Hot Reload разработчики могут редактировать проекты C++ или .NET во время работы уже запущенных приложений.

Однако после жалоб и своих, и сторонних разработчиков Microsoft вернула функцию в открытую кодовую базу платформы .NET.

Tags:
Hubs:
+9
Comments30

Other news