A Microsoft jelentős kiadást mutatott be a nyílt .NET 7 platformból, amely a .NET Framework, a .NET Core és a Mono termékek egységesítése révén készült. A .NET 7 alapjain bármilyen platformra készült alkalmazásokat lehet fejleszteni, beleértve a böngészőket, felhőrendszereket, asztali környezeteket, IoT-eszközöket és mobilplatformokat, egységes könyvtárak és közös telepítési folyamat segítségével, függetlenül az alkalmazás típusától. A .NET SDK 7, a .NET Runtime 7 és az ASP.NET Core Runtime 7 telepítése Linuxra, macOS-ra és Windows-ra készült. A .NET Desktop Runtime 6 kizárólag Windows-hoz érhető el. A projekthez kapcsolódó fejlesztések MIT licenc alatt terjesztendők. A .NET 7 ága 18 hónapon keresztül, 2024. május 14-ig támogatott lesz.
.NET 7 tartalmazza a CoreCLR futtatókörnyezetet RyuJIT JIT-kompilerrel, standard könyvtárakat, CoreFX könyvtárakat, WPF-t, Windows Forms-t, WinUI-t, Entity Framework-öt, a dotnet parancssori felületet, valamint eszközöket mikroszolgáltatások, könyvtárak, szerveroldali, grafikus és konzol alkalmazások fejlesztéséhez. Külön közzétételre került az ASP.NET Core 7.0 webalkalmazások fejlesztésére szolgáló stack, az Entity Framework Core 7.0 ORM réteg (többek között SQLite és PostgreSQL illesztőprogramokkal), a WPF 7 (Windows Presentation Foundation) könyvtár, a Windows Forms 7 GUI fejlesztésére szolgáló keretrendszer, az Orleans 7 platform a Cloud Native alkalmazások létrehozására, a MAUI 7 keretrendszer a több platformos felhasználói interfészek fejlesztésére, valamint a C# 11 és F# 7 nyelvek kiadásai. A .NET 7.0 és C# 11 támogatása a Visual Studio Code ingyenes kódszerkesztőjébe van integrálva.
Az új verzió jellemzői:
- Megvalósult az alapvető osztálykönyvtár (BCL, Base Class Library) egyesítése különböző alkalmazástípusokhoz, beleértve az asztali alkalmazásokat, webalkalmazásokat, felhőplatformokat, mobilalkalmazásokat, játékokat, beágyazott programokat és gépi tanulási rendszereket. Különböző alkalmazástípusok fejlesztéséhez egy közös SDK, Runtime és könyvtárkészlet használható.
- Lehetőség nyílik az alkalmazás API-hoz való kötésére, amely megfelel .NET 7 kiadásának, a célplatform "net7.0" meghatározásával, például: "net7.0". A specifikus API-ra való kötésekhez a cél meghatározásánál részletezhető a platform típusa, például "net7.0-android" megadással.
- Jelentősen javult az ARM64 architektúra támogatása, és folytatódik a .NET alkalmazások teljesítményének kiegyenlítése x86 és ARM64 architektúrákon. A futási idő alatt javult a harmadik szintű cache kihasználásának hatékonysága ARM64 rendszereken. Az LSE utasításokat használták a párhuzamos szálak memóriához való hozzáférésének elhatárolására, ami 45%-os késleltetéscsökkenést eredményezett. Az könyvtárhoz új kezelők kerültek, amelyek a Vector64, Vector128 és Vector256 vektortípusokat használják, és a vektoralapú utasítások alapján átírásra kerültek az EncodeToUtf8 és DecodeFromUtf8 függvények, aminek eredményeként a teljesítményük akár 60%-kal is növekedett (az NarrowUtf16ToAscii és GetIndexOfFirstNonAsciiChar függvények esetében akár 35%-os teljesítménynövekedés is elérhető). Összességében a tesztelési sebesség ARM64 platformon 10-60%-kal nőtt.

- Javult a Linux platform támogatása, beleértve a hivatalos Ubuntu 22.04 repókba a .NET 6 csomagok hozzáadását, valamint biztosított egy optimalizált, kompakt és használatra kész docker képet a .NET alapú alkalmazások gyors konténerbe állításához.
- Hozzáadva az IBM Power (ppc64le) 64-bites architektúra támogatása.
- A .NET Upgrade Assistant eszközkészletet javasolták, hogy megkönnyítsék a régi alkalmazások áttérését a .NET 6 vagy .NET 7 verziókra. Az új verzióban kiszélesítették az ASP.NET alkalmazások ASP.NET Core-ra való migrációjának támogatását, valamint kódanalizálókat és javítókat adtak hozzá WinForms, WPF és osztálykönyvtárakhoz, megvalósították az végrehajtható fájlok elemzésének támogatását, és hozzáadva van az UWP (Universal Windows Platform) támogatás.
- Kibővítették a cloud-native rendszerek és PaaS (szolgáltatásként platform) alkalmazásfejlesztési lehetőségeit. Lehetővé vált az izolált konténerekbe csomagolt alkalmazások létrehozása a "dotnet publish" parancs segítségével.
- Kibővítették az alkalmazások állapotának nyomon követésére és teljesítménymutatók gyűjtésére szolgáló eszközöket. Új események és módszerek kerültek be a rendszer aktivitásának és teljesítményének elemzésére.
- A C# 11 nyelvében megjelent a nyers sztringliterálok támogatása, amelyek speciális karaktereket tartalmazhatnak anélkül, hogy azokat ki kellene escapingelni (az ilyen literálok három idézőjellel vannak kiemelve). Felajánlották a matematikai funkciókhoz általános interfészeket (generic), valamint lehetőséget biztosítottak statikus elemek definiálására virtuális interfészekben, ami lehetővé tette az általános programozási módszerek alkalmazását matematikai műveletek végrehajtásához anélkül, hogy pontos információval rendelkeznénk az értékek típusáról.
- Kiterjesztették a standard könyvtár képességeit. Hozzáadták a System.Formats.Tar API-t a Tar formátumú archívumok kezelésére. Az idővel való munka funkcióiba (TimeStamp, DateTime stb.) beépült a mikro- és nanomásodperc-támogatás. A System.Text.Json-ban megvalósították a .NET típusok sorosításának és deserializálásának kezelését.
- A parancssori felületen, a „dotnet new” paranccsal bevezették a sablonprojektek automatikus kiegészítésének támogatását a Tab billentyű lenyomásával.
- A .NET SDK-ban lehetővé vált a szolgáltatott projektsablonok alkalmazásának korlátozása, például meghatározható, hogy mely operációs rendszerekben megengedett a sablon.
- A NuGet-hez hozzáadták a központosított csomagkezelés módot, amely lehetővé teszi a függőségek kezelését több projekt esetében egyszerre.
- Növelték a JIT fordító teljesítményét. Bevezették az OSR (On Stack Replacement) mechanizmust, amely lehetővé teszi már végrehajtott módszerek kódjának módosítását, így optimalizálásokat végezhetünk időigényes módszereken anélkül, hogy várakoznánk a jelenlegi hívás befejezésére (a TechEmpower tesztjeiben az első lekérdezések feldolgozásában 10-30% teljesítménynövekedést tapasztaltak).
- Fokozották a kódprofilozás (PGO — Profile-guided optimization) alapján végzett optimalizálás hatékonyságát, lehetővé téve a futás közben meghatározott jellemzők figyelembevételét.
- Hozzáadták a natív, önálló végrehajtható fájlok (Native AOT) fordításának támogatását, amelyekben az egész projekt eredetileg a célplatform gépi kódjára lett lefordítva, közbeiktatott kód és JIT alkalmazása nélkül.
Forrás: opennet.ru

