Лямбда использует значение из окружающей области:
let sumWithOffset k xs =
List.fold
(fun total value -> total + value + k)
0
xs
Такие захваты могут требовать создания замыкания. В FSharp.Core из .NET 11 RC2 больше функций обхода List и Array умеют встраивать переданные лямбды, убирая часть этих выделений памяти.
В измерениях автора изменений для отдельных вызовов List.fold, List.exists, Array.fold и Array.fold2 с захватывающими лямбдами расход снизился с 24 байт до нуля по сравнению с FSharp.Core 9.0.100.
Это не обещание, что теперь любой fold или произвольная обработка коллекции ничего не выделяет. Влияют форма вызова, возможность встраивания и работа внутри самой функции.
Практический вывод: перед ручной заменой функционального кода на цикл проверьте горячий участок на новой версии. Часть расходов уже может убрать компилятор и библиотека.
.NET 11 пока в RC; измерения лучше повторить на своём сценарии.
#il_люминатор
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
core/release-notes/11.0/preview/rc2/fsharp.md at main · dotnet/core
.NET news, announcements, release notes, and more! - dotnet/core
👍1
Пробуете .NET 11 и написали свой форматтер ошибок валидации? При переходе с предыдущих preview на RC2 стоит проверить этот участок.
Интерфейс IValidationMessageFormatter, появившийся в предварительных версиях .NET 11, удалён. Для собственных атрибутов валидации теперь предлагается переопределять метод базового ValidationAttribute:
FormatMessage(string format, string name)
Через него можно передать в локализованное сообщение дополнительные аргументы, специфичные для атрибута. Начиная с RC2, этот метод использует и механизм Microsoft.Extensions.Validation.
Прежде всего тем, кто уже экспериментирует с preview .NET 11 и расширял форматирование сообщений. Если у вас стабильный проект на .NET 10, удалённый preview-интерфейс мог вообще не попасть в код.
При обновлении проверьте сборку собственных атрибутов и тесты точного текста ошибок. Проходящая проверка данных ещё не гарантирует, что пользователь увидит сообщение с нужными подстановками.
Это изменение RC2, а не отдельный стабильный релиз ASP.NET Core.
#sharp_view
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
core/release-notes/11.0/preview/rc2/aspnetcore.md at main · dotnet/core
.NET news, announcements, release notes, and more! - dotnet/core
❤2
Microsoft выпустила внеплановое обновление .NET, которое закрывает переполнение буфера при распаковке Brotli. Ошибка позволяет читать или повреждать память процесса при обработке специально подготовленных данных.
Проверьте приложения, которые используют
BrotliStream, распаковку входящих запросов ASP.NET Core или автоматическую распаковку ответов HttpClient.Исправления вышли в .NET 8.0.33, 9.0.22, 10.0.14 и 11 RC3. Установленные среды выполнения можно посмотреть командой:
dotnet --list-runtimes
Дальше обновите приложение с учётом способа развёртывания: для framework-dependent установите новый runtime и перезапустите процесс, для self-contained пересоберите и опубликуйте приложение. Контейнеры пересоберите на обновлённых образах .NET.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что можно освоить?
⏬ ИИ для разработчиков — применение ИИ на разных этапах разработки: от работы с кодом до тестирования, ревью и организации рабочего процесса.⏬ Разработка ИИ-агентов — создание собственных агентов с памятью, интеграциями и доступом к внешним инструментам.
Научитесь не просто работать с нейросетями, а создавать решения, которые помогают автоматизировать реальные задачи
Можно выбрать эту пару или сочетать любые другие курсы из каталога — под свои интересы и цели.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Microsoft представила dotnetup — менеджер SDK и сред выполнения .NET. Он хранит установки в папке пользователя, поддерживает несколько версий и учитывает закреплённый в проекте SDK через
global.json.После установки инструмента доступны три основные команды:
dotnetup init
dotnetup list
dotnetup update
Первая настраивает окружение и устанавливает актуальный стабильный SDK. Вторая показывает установленные компоненты. Третья обновляет версии в отслеживаемых каналах; точно закреплённые версии остаются на месте.
Инструмент пригодится, если вы ведёте несколько проектов с разными версиями .NET или регулярно проверяете предварительные сборки. Сейчас dotnetup доступен в public preview. Начать удобно с локального окружения macOS или Linux.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤🔥1
При оптимизации кода ReSharper класс с массивом заменили на структуру со встроенным
fixed-буфером. После этого расчёты начали давать неверный результат. Причиной оказался неинициализированный буфер.Компилятор исключает
fixed-буферы из проверки обязательного присваивания полям. У локальной структуры с пользовательским конструктором такой буфер может содержать данные, оставшиеся в памяти.Если ваш код рассчитывает на нули, очистите буфер в конструкторе:
fixed (uint* p = data)
{
new Span<uint>(p, maxLength).Clear();
}
Проверьте это при работе с
unsafe, нативными библиотеками и собственными структурами для вычислений. На современных целевых платформах также можно рассмотреть InlineArray.Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👏1
Можно совместить два направления и прокачать навыки сразу в нескольких областях:
Первый курс поможет встроить ИИ в привычный процесс разработки, второй — перейти к созданию собственных интеллектуальных инструментов.
Осталось совсем немного времени — акция заканчивается 31 октября!
Please open Telegram to view this post
VIEW IN TELEGRAM
Пользователь вводит пароль, затем подтверждает вход через Windows Hello, Touch ID или аппаратный ключ. В разборе на ASP.NET Core Identity показано, как добавить passkey вторым фактором после пароля в .NET 10.
Приложение сохраняет подтверждение парольного шага в отдельной короткоживущей cookie. Затем запрашивает passkey, проверяет подпись и сверяет пользователя с тем, кто ввёл пароль. После успешной проверки завершает вход.
Так можно добавить passkey в существующее приложение с паролями. Потребуются провайдер второго фактора, страница подтверждения и два обработчика: выдача параметров WebAuthn и проверка ответа.
Возьмите пример из статьи. Проверьте привязку обоих шагов к одному пользователю, срок действия cookie и CSRF-защиту обработчиков.
Please open Telegram to view this post
VIEW IN TELEGRAM
Тест создаёт UI-компонент, выполняет await и затем обращается к его свойствам. Чтобы такой сценарий работал, код должен продолжиться в UI-потоке приложения. Одной пометки STA для тестового потока недостаточно.
В руководстве по MSTest для UWP и WinUI 3 показана настройка с MSTest 4.5.1 и Microsoft.Testing.Platform 2.5.1. Атрибут
[UITestMethod] позволяет выполнять тест с доступом к настоящему UI-диспетчеру.При настройке CI проверьте модель приложения: для обычного WinUI-процесса и приложения в MSIX запуск устроен по-разному. На чистом агенте также должны быть нужные компоненты Windows App SDK и разрешения для регистрации пакета.
Please open Telegram to view this post
VIEW IN TELEGRAM
Сервис создаёт окружение клиента: сеть, базу, хранилище. В середине работы воркер перезапускается. Теперь нужно выяснить, что уже создано и с какого шага продолжать.
Durable Task записывает историю оркестрации и результаты завершённых шагов. При восстановлении код оркестратора проходит по этой истории, использует сохранённые результаты и доходит до следующего действия. Так можно выразить ожидание согласования, внешний callback и таймер.
В разборе пяти практических сценариев показаны границы такого подхода. Внешние операции проектируйте идемпотентными: стабильный ключ платежа и проверка уже созданного ресурса защищают от повторного действия при сбое.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3❤2
Вызовы StateHasChanged легко добавить по привычке, даже когда Blazor уже планирует обновление компонента. Новые анализаторы помогают находить такие места прямо при разработке.
В ASP.NET Core для .NET 11 также добавлены проверки работы с состоянием аутентификации: ошибки здесь могут оставить интерфейс со старыми сведениями о пользователе. В обзоре изменений есть ссылки на реализации этих проверок.
Если уже тестируете .NET 11 RC, посмотрите новые предупреждения в своём проекте. Для них не требуется переходить на стороннюю библиотеку компонентов: анализаторы входят в инструменты самого фреймворка.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Приложение собирается, устанавливается на iPhone, показывает заставку и закрывается. Если в журнале есть сообщение UIScene life cycle is required for apps built with this SDK, нужно проверить жизненный цикл интерфейса.
В руководстве по миграции разобраны изменения для существующих MAUI-проектов. UIScene управляет окнами приложения и их переходами между активным и фоновым состояниями.
При обновлении сборочного окружения пройдите этот сценарий на устройстве: запуск, сворачивание, возврат и открытие приложения по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Приложению с ИИ-агентом нужны обработка запросов, вызовы инструментов и управление ходом работы. Copilot SDK предоставляет такую среду выполнения, а BYOK позволяет направить запросы в собственное развёртывание модели.
В примере на C# показана настройка подключения к Microsoft Foundry или Azure OpenAI.
Подойдёт для проектов, где уже выбраны модель и облачное окружение. Начните с одного запроса и одного инструмента, затем проверьте авторизацию, обработку ошибок и завершение сессии.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Вызов через интерфейс или базовый класс требует определить нужную реализацию метода. Если JIT знает тип объекта, он может вызвать метод напрямую и встроить его код.
В разборе производительности .NET 11 показано, как этому помогают сведения, собранные во время выполнения. Для частого типа создаётся быстрый путь с проверкой.
Материал полезен при разборе горячих участков кода. Возьмите один пример, запустите его с DisassemblyDiagnoser и посмотрите, какие вызовы остались после оптимизации. Примеры используют предварительную версию .NET 11.
Please open Telegram to view this post
VIEW IN TELEGRAM
Перед обновлением runtime можно измерить важную операцию на текущей и новой версии. BenchmarkDotNet собирает тестовые приложения, выполняет измерения и выводит результаты рядом.
В примерах сравнения .NET 10 и .NET 11 проект настроен сразу на две платформы. Измерения запускают в Release.
Выберите операцию из своего приложения: сериализацию, обработку коллекции или вычисление. Подготовьте одинаковые входные данные и сравните время выполнения и выделение памяти. Для .NET 11 в материале используется предварительная сборка.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👾1