WIADOMOśCI Z BRANżY

.NET 11 Preview 1: Wielkie zwycięstwa w czasie, większe pytania o kierunek

W lutym firma Microsoft udostępnia pierwszą wersję zapoznawczą platformy .NET 11, wprowadzającą ulepszenia środowiska uruchomieniowego. Nasz zespół w Iron Software zapoznał się z wersją .NET 11 Preview 1 i znalazł kilka zmian, które warto podkreślić dla społeczności programistów .NET.

TL;DR

  • Async wkracza do środowiska uruchomieniowego — jest szybszy, bardziej zoptymalizowany i łatwiejszy do debugowania. Dobra wiadomość dla naszych produktów uniwersalnych.
  • CoreCLR zyskuje obsługę WASM — zastępuje Mono, dzięki czemu kod .NET kompilowany w przeglądarce powinien działać zauważalnie szybciej.
  • Natywna kompresja Zstandard — rozważamy jej wdrożenie w IronZIP.

Firma Microsoft oficjalnie wydała wersję .NET 11 Preview 1, która stanowi pierwszy kamień milowy w cyklu rozwoju kolejnej wersji Standard Term Support, której premiera zaplanowana jest na listopad 2026 roku.

Asynchroniczność na poziomie środowiska uruchomieniowego: cicha, ale znacząca zmiana

Jedną z najważniejszych aktualizacji w wersji Preview 1 jest to, że śledzenie asynchroniczne jest coraz bardziej wbudowane w samo środowisko uruchomieniowe, a nie obsługiwane wyłącznie przez kompilator.

Dla kontekstu, programowanie asynchroniczne to wzorzec, który pozwala aplikacjom działać w nieblokujących fragmentach, dzięki czemu cały wątek nie zawiesza się podczas oczekiwania na wywołanie sieciowe, odczyt pliku lub odpowiedź z bazy danych. Ma to fundamentalne znaczenie dla nowoczesnego programowania w środowisku .NET. Większość interfejsów API, usług i zadań opartych na interfejsie użytkownika w dużym stopniu na tym polega.

Przenosząc koordynację asynchroniczną bliżej warstwy wykonawczej, Microsoft może rozwiązać oba te problemy jednocześnie:

Debugowanie: Zrekonstruowane przepływy asynchroniczne. Debugger powinien w końcu być w stanie śledzić ścieżki wykonania w ramach await, przywracając kontekst, który obecnie jest tracony.

Wydajność: Mniejsze obciążenie związane z koordynacją. Optymalizacja na poziomie środowiska uruchomieniowego może być bardziej agresywna niż same generowane przez kompilator maszyny stanów, co zmniejsza koszt na zadanie.

W przypadku usług rozproszonych, interfejsów API natywnych dla chmury oraz aplikacji UI może to przełożyć się na wymierne ulepszenia we wszystkich obszarach.

CoreCLR wkracza do WebAssembly

Do tej pory aplikacje .NET kompilowane do WebAssembly opierały się na Mono, starszym środowisku uruchomieniowym zaprojektowanym pierwotnie z myślą o kompatybilności międzyplatformowej. Mono działa, ale ma dobrze znane ograniczenia wydajnościowe i nie korzysta z takich samych inwestycji w optymalizację jak CoreCLR.

Dzięki tej wersji zapoznawczej CoreCLR zyskuje obsługę WebAssembly, co przynosi kilka konkretnych ulepszeń: Możliwości JIT poprawiają szybkość wykonywania w czasie rzeczywistym. Zarządzanie pamięcią staje się bardziej wydajne. Aplikacje .NET hostowane w przeglądarce zbliżają się do poziomu wydajności aplikacji natywnych. Dla zespołów tworzących aplikacje Blazor WebAssembly lub eksperymentujących z obciążeniami .NET po stronie przeglądarki jest to jedna z najlepszych aktualizacji w całej wersji zapoznawczej.

Ma to również znaczenie dla szerszego ekosystemu. Biblioteki i narzędzia przeznaczone dla WASM, w tym przetwarzanie dokumentów w przeglądarce, renderowanie i manipulowanie danymi.

Natywna kompresja Zstandard

.NET 11 dodaje pełne wsparcie dla algorytmu kompresji Zstandard (Zstd) dzięki nowej implementacji ZstandardStream. Zstd stał się standardem w systemach o wysokiej wydajności, ponieważ zapewnia lepszy współczynnik kompresji niż Gzip, znacznie szybszą dekompresję oraz wysoką przepustowość przy przetwarzaniu danych na dużą skalę.

Dla twórców bibliotek i narzędzi eliminuje to utrudnienia związane z powiązaniami stron trzecich. Produkty wymagające intensywnej kompresji mogą teraz natywnie korzystać z Zstd. Łatwo dostrzec, że może to okazać się przydatne w przypadku narzędzi takich jak IronZIP lub podobnych procesów, w których zarówno wydajność, jak i rozmiar plików mają kluczowe znaczenie.

Szerszy kontekst: zwrot .NET w kierunku agentycznej sztucznej inteligencji

Oprócz ulepszeń środowiska uruchomieniowego, strategiczny kierunek rozwoju .NET 11 staje się coraz bardziej jasny. Microsoft mocno promuje coś, co nazywa "agentyczną sztuczną inteligencją" – aplikacje zaprojektowane do interakcji z agentami AI, przepływami pracy Copilot oraz kontekstami modeli strukturalnych. Obejmuje to obsługę protokołu Model Context Protocol, wzorce programowania wspomagane przez sztuczną inteligencję oraz frameworki pozycjonujące aplikacje .NET jako narzędzia, które agenci mogą wywoływać i koordynować.

Kierunek nie jest zaskakujący. Cała branża zmierza w kierunku procesów wspieranych przez sztuczną inteligencję, a firma Microsoft ma wszelkie powody, aby uczynić platformę .NET kluczowym elementem tego ekosystemu.

Co tak naprawdę ma tutaj znaczenie

Jeśli odłożymy na bok dyskusje dotyczące planu działania i skupimy się wyłącznie na praktycznych skutkach, to prawdziwą sensacją są ulepszenia środowiska uruchomieniowego:

  • Debugowanie asynchroniczne może wreszcie stać się możliwe w przypadku złożonych baz kodu
  • Wydajność WebAssembly może znacznie wzrosnąć dzięki zastąpieniu Mono przez CoreCLR
  • Kompresja Zstd zyskuje wsparcie na najwyższym poziomie, eliminując zależności od rozwiązań innych firm

Nie są to funkcje, które rzucają się w oczy. Nie wzbudzą one burzy oklasków podczas konferencji. Są to jednak ulepszenia, które w cichy sposób zmniejszają opór w codziennym programowaniu, a te w dłuższej perspektywie mają zazwyczaj znacznie większe znaczenie niż główne funkcje.

Wersja Preview 1 pokazuje już dwie strony ekosystemu .NET: znaczący postęp w zakresie środowiska uruchomieniowego oraz rosnącą dyskusję na temat kierunku rozwoju języka i priorytetów platformy. To napięcie niekoniecznie jest czymś złym. Zazwyczaj oznacza to, że platforma ewoluuje w sposób, który faktycznie interesuje użytkowników.