Что там в .NET?
523 subscribers
37 photos
79 links
Рассказываем, что происходит в мире .NET.

С вопросами можно пинать @nevoroman
Download Telegram
Кстати об адвентах — сегодня начался Advent of Code и мы будем каждый день публиковать видео с разбором сегодняшней задачи. Первое вот только что вышло.

https://youtu.be/6i7jm8W0Aic
Нашел еще один классный дайджест по .NET, который называется .NET R&D Digest. В нем достаточно много хороших материалов и по .NET, и по разработке ПО в целом. Что классно, это не анонсы, а именно хорошие R&D статьи. Советую!

https://olegkarasik.wordpress.com/2021/12/01/net-rd-digest-november-2021/
Одна из основных перфомансных фич нового .NET это Dynamic PGO, Profile-guided optimization. Они позволяют существенно ускорить ваше приложение за счет сбора дополнительной информации.

Егор Богатов, один из разработчиков .NET, написал разбор возможностей PGO — с деталями и бенчмарками.

https://gist.github.com/EgorBo/dc181796683da3d905a5295bfd3dd95b
Кстати, в этом же разборе нашел ссылку на целую кучу бенчмарков по .NET.

Выглядит странно и хаотично, но пользоваться этим можно примерно так. В самом низу экрана написан номер страницы. Нажимаете на него — получаете список категорий бенчмарков. Выбираете интересную (например, Blazor WASM) — получаете возможность наблюдать, как с разнообразными изменениями улучшался перфоманс той или иной фичи.

Где-то изменений совсем не видно, где-то они незначительные, но в некоторых местах можно посмотреть на красивые-впечатляющие циферки.

https://msit.powerbi.com/view?r=eyJrIjoiYTZjMTk3YjEtMzQ3Yi00NTI5LTg5ZDItNmUyMGRlOTkwMGRlIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9
На YouTube начали заливать записи с прошедших DotNext, так что я буду иногда кидаться в вас самыми интересными из этих докладов.

Начнем с одного из самых уникальных выступлений прошедших конференций. Два Дмитрия, Иванов и Мордвинов, рассказали нам о символьном исполнении в .NET. Доклад получился практическим, исследовательским и мозговзрывающим одновременно.

Раз — тесты можно не писать, тесты можно генерить. Для этого в .NET есть IntelliTest. Объяснять, почему генерация тестов это приятно вроде бы не нужно — их и писать лень, и ошибиться в этом процессе легко. Но как гарантировать, что тесты корректно проверяют валидность вашего кода?

Два — под всем этим лежит солидная теоретическая база, в основе которой SMT-солверы. Мощнейший инструмент, позволяющий решать очень разнообразные проблемы — и Дмитрии кое-что нам об этом расскажут.

Три — такой подход может изменить то, как мы вообще программируем. И об этом, разумеется, докладчики тоже поговорят.

Короче, очень любопытный контент получился, не жаль потратить час времени.

https://youtu.be/csbuDEEWXHw
Еще немного интересного — увидел на днях в Твиттере гайд по поиску дедлоков. Причем не просто гайд, а игру-тренажер с огромным количеством практических заданий. Кажется, это самое полное и наглядное руководство по дедлокам, которое можно найти в интернете.

http://deadlockempire.github.io/
Нашел в CODE Magazine неплохую статью, посвященную .NET Upgrade Assistant — новому инструменту от Microsoft, который позволяет существенно упростить миграцию со старых версий .NET.

https://www.codemag.com/article/2111032
Зарелизились новые версии ReSharper и Rider!

Из самого заметного — полная поддержка всех фич .NET 6 и переработанный интерфейс.

Здесь можно почитать об изменениях в Rider, здесь — о ReSharper.
Вышел ежемесячный сборник новостей о .NET от JetBrains!

Из интересного, помимо очевидных релизов, там есть гайд по .NET разработке на новых M1 маках, ответ на вопрос «как работать с DI в Minimal API», а также интересная статья о том, как Source Generators могут сделать ваш код более уязвимым для атак. Советую пройтись, подборка получилась хорошая.

https://blog.jetbrains.com/dotnet/2021/12/09/net-annotated-monthly-december-2021/
В .NET сообществе очередная драма: все обсуждают предлагаемый в C# 11 оператор !!

Идея простая: оператор добавляется к сигнатуре параметра функции и означает запрет null. То есть если параметр, отмеченный таким оператором, будет равен null — вы получите исключение.

Вопросов у людей много. Зачем нужен оператор, который просто заменяет NullReferenceExceptions на ArgumentNullExceptions? Не странно ли это сочетается с nullable типами, зачем добавлять такую механику «сбоку»? Почему, в конце концов, два восклицательных знака?

Следить за дискуссией вы можете в этом issue в репозитории dotnet.
А вот простая инфографика, объясняющая предлагаемый оператор
Совсем забыл написать: на прошлой неделе вышел .NET 7 Preview 1.

Если кратко пробежаться по анонсу, то основной фокус сделан на приближающемся релизе MAUI, улучшениях для облачных приложений и упрощении миграции со старых версий.

Но это только на поверхности. В анонсах ASP.NET, Entity Framework и в отдельных issue на GitHub можно найти много интересных деталей. Так что ждите отдельных постов о самых интересных изменениях на этой неделе.
А пока можете почитать недавно вышедший выпуск .NET Annotated Monthly.

В этом месяце там много интересных туториалов: например, гайд по разработке игры с помощью MAUI или статья от Стива Фентона, помогающая лучше понять LINQ.
Простой пример полезности PGO от Бартоша Адамчевски.

Если кто-то забыл, Profile Guided Optimisations это одна из основных фич .NET 6. Подробнее о ней можно почитать в статье Егора Богатова.
Графика с историей версий .NET к двадцатилетию платформы

https://nietras.com/2022/02/13/dotnet-and-csharp-versions/
И еще немного интересностей. В эту пятницу пройдет митап со Стасом Сидристым, на котором он расскажет о потоках и пуле потоков в .NET. С хардкором и реализацией собственного пула, все как положено.

Регистрация вот тут, 25 февраля, 17:00 по Москве
Что там с релизом MAUI?

Неделю назад вышло уже тринадцатое превью MAUI и многим интересно — много ли еще осталось реализовать и когда будет релиз?

Если кратко — релиз скоро, а реализована большая часть вещей, которые Microsoft планируют сделать до релиза. Отслеживать текущий статус MAUI можно на соответствующей странице в репозитории проекта.

Пока самые большие сомнения вызывает решение Microsoft отдать поддержку Linux на откуп сообществу. На текущий момент за ее реализацией можно наблюдать в этом форке, но отсутствие официальной поддержки огорчает.
К слову о MAUI. Недавно прошла конференция .NET Frontend Day, привлекающаяся к себе внимание как минимум названием.

Очевидно, ее основной темой были доклады, посвященные разным UIным технологиям — Blazor, Xamarin и MAUI. Так вот, наткнулся в Твиттере на приличный обзор докладов с конференции, советую обратить внимание.

https://blog.taranissoftware.com/net-frontend-day-2022-xamarin-and-maui-recap