.NET 7 dostępny – Microsoft postawił na wydajność
Premierę miała już nowa wersja .NET oznaczona numerem 7. Kolejne wydanie, choć nie brakuje w nim ważnych nowości, stanowi przede wszystkim kontynuację drogi podjętej jeszcze przy okazji prac nad .NET 5. Znów zatem mamy do czynienia ze stawianiem nacisku na integrację i unifikację poszczególnych modułów platformy.
.NET 7 – nacisk na optymalizację
Microsoft deklaruje, że to jednak nie unifikacja czy choćby ułatwienia w procesie konteneryzacji rozwijanego lokalnie oprogramowania odgrywają w .NET 7 najważniejszą rolę, lecz optymalizacje przekładające się na wzrosty wydajności.
Jednym z zabiegów, dzięki którym .NET 7 ma przyśpieszyć jest zapoczątkowane już w 2020 roku wprowadzenie mechanizmu On-stack Replacement (OSR) jako uzupełnienia przy kompilacji warstwowej. Dzięki temu możliwa jest już w środowisku uruchomieniowym .NET zmiana kodu wykonywanego przez daną metodę w trakcie jej wykonywania. Ponadto OSR obsługuje teraz optymalizację typu profile-guided (PGO) – aby ją uruchomić, wystarczy dodać <TieredPGO>true</TieredPGO>
do pliku z projektem.
Kolejny sposób, dzięki któremu Microsoft może się pochwalić przyśpieszeniem, to implementacja funkcji natywnego wykonywania w trybie ahead of time. Dzięki temu aplikacje wykorzystujące ten mechanizm będą szybsze i mniej łase na pamięć operacyjną. Aby skorzystać z natywnego AOT, trzeba na Windowsie skorzystać z Visual Studio 2022 i wybrać scenariusz rozwoju aplikacji desktopowej w C++. W przypadku dystrybucji Linuksa konieczne jest jeszcze uzupełnienie zależności w postaci biblioteki clang zlib1g-dev
.
.NET 7 to także liczne usprawnienia w obsłudze architektury ARM, co nie powinno dziwić. To właśnie w ARM-owy układ wyposażony został ostatni sprzęt developerski Microsoftu i nie ma większych wątpliwości, że w Redmond trwają intensywne prace, by śladem Apple w sposób bardziej udany niż dotychczas przenosić Windowsa i developerów na ARM.
Pomniejsze usprawnienia przekładające się na wzrosty wydajności dodano także w obsłudze Mono wykorzystywanego przez rozwijane z użyciem .NET-a aplikacje Blazor WebAssembly, ale też aplikacje mobilne.
.NET 7 – najważniejsze nowości
Jak już ustaliliśmy, .NET 7 to nie jest wydanie przełomowe pod względem funkcjonalności – producent najwięcej pracy włożył w omówione już zabiegi skutkujące przyśpieszeniem frameworka. Nie oznacza to jednak, że nowości nie ma wcale. Pojawiły się na przykład poprawki w System.Text.Json
– klasie wykorzystywanej do serializacji i deserializacji obiektów w JSON.
Zmiany pojawiły się także w sytuacjach, gdzie na typach generycznych przeprowadza się operacje arytmetyczne (tzw. Generic Math). Dotychczas, np. by dodać dwie liczby, konieczne było przeładowanie metody dla każdego z typów. Począwszy od .NET 7, można tego dokonać z użyciem jednej metody. To tylko przykład – nowości w Generic Math jest bowiem więcej i poświęcono temu cały osobny wpis blogowy.
Liczne nowości pojawiły się także wśród wyrażeń regularnych oraz API. Zainteresować może także świeża możliwość ułatwionego publikowania aplikacji do postaci skonteneryzowanej, czego dokonuje się z użyciem dotnet publish
. .NET 7 to także dalsza integracja z .NET MAUI, frameworkiem, dzięki któremu można rozwijać wieloplatformowego UI (jedno API dla Windowsa, macOS-a, Androida i iOS-a) aplikacji z użyciem wyłącznie C# i XAML-a.
Jak widać, choć w tym wydaniu .NET 7 Microsoft skupił się na wydajności, to funkcjonalnych zmian w samym frameworku także się pojawiło się sporo. Z ich pełną listą zapoznać można się dzięki dokumentacji.
Zobacz też: