A Microsoft bemutatta a nyílt .NET 9 platform kiadását, amely a .NET Framework, .NET Core és Mono termékek egységesítésével készült. A .NET 9 alapjain többplatformos alkalmazásokat hozhatunk létre böngésző, felhő, asztali, IoT eszközök és mobil platformok számára, egységes könyvtárak és közös build folyamat használatával, függetlenül az alkalmazás típusától. A .NET SDK 9, .NET Runtime 9 és ASP.NET Core Runtime 9 kiadása Linux, macOS és Windows rendszerekre készült. A .NET Desktop Runtime 9 csak Windows-ra érhető el. A projekthez kapcsolódó fejlesztések MIT licenc alatt érhetők el.
A .NET tartalmaz JIT fordítót RyuJIT, API specifikációkat, WPF, Windows Forms, WinUI és Entity Framework könyvtárakat, dotnet parancssori interfészt, valamint eszközöket mikroszolgáltatások, könyvtárak, szerver, grafikus és konzol alkalmazások fejlesztéséhez. Külön kiadásra került az ASP.NET Core 9.0 webalkalmazás-fejlesztő keretrendszere, az Entity Framework Core 9.0 ORM réteg (illesztőprogramok, többek között SQLite és PostgreSQL számára), a WPF 9 (Windows Presentation Foundation) könyvtár, a Windows Forms 9 keretrendszer GUI fejlesztéshez, az Aspire 9 platform Cloud Native alkalmazások készítéséhez, a MAUI 9 keretrendszer többplatformos felhasználói felületek fejlesztéséhez, valamint a C# 13 és F# 9 nyelvek kiadásai. A .NET 9.0 és C# 13 támogatása a Visual Studio Code ingyenes kódszerkesztőben elérhető.
Az új verzió jellemzői:
- Több mint ezer változtatást hajtottak végre a teljesítmény optimalizálása és a generált kód minőségének javítása érdekében. Korszerűsítették a szemétgyűjtőt, amelyben alapértelmezés szerint a memóriaigényhez dinamikusan alkalmazkodó mechanizmus került bevezetésre (a szemétgyűjtő nem a rendszerben rendelkezésre álló erőforrásokhoz, hanem ahhoz igazodik, hogy az alkalmazásnak mennyi memóriára van szüksége). Az új üzemmód lehetővé teszi a hatékonyság növelését az olyan rendszereken, ahol sok processzormag van, ha az alkalmazás viszonylag kevés memóriát használ, vagy ha a memóriaigény jelentősen változik a munka során.
A JIT fordítóba új optimalizációk kerültek be a profilozás (PGO) alapján, javult a ciklusok kezelése, az inline kibővítés és a határellenőrzés. A .NET runtime-ban bővült a vektoriális utasítások használata, valamint hozzáadódott az Arm64 SVE és az Intel AVX10 kiterjesztések támogatása. 50%-kal felgyorsult a kivételkezeléshez szükséges kód. A típuskényszerítési műveleteket végző kódok, mint például a „(IFoo)myFoo” és a „myFoo is IFoo” esetén a teljesítménynövekedés elérte a 70%-ot. A LINQ (Language-Integrated Query) lekérdezési nyelvben a Take és DefaultIfEmpty függvények teljesítménye akár 10-szeresére nőtt üres tömbök és kollekciók esetén.
Jelentősen javult a System.Text.Json módszer teljesítménye és hatékonysága. A JsonProperty.WriteTo metódusban implementálták a közvetlen UTF8 karakterláncok írásának lehetőségét, csökkentve a felesleges memóriafoglalást. Optimalizálták a JsonObject méretének változtatásához szükséges műveleteket. A TechEmpower teszteken, amelyek a JSON kérdések feldolgozásának hatékonyságát mérik, a .NET 8-hoz képest 15%-os teljesítménynövekedést és 93%-os memóriafogyasztás-csökkenést figyeltek meg.
- A Runtime új attribútummodellt javasolt a funkciók aktiválására és csökkentésére a könyvtárakban.
- A C# 13 nyelvben kibővítették a 'params' módosító használati lehetőségeit, amely lehetővé teszi a kollekciók megadását a tömbök mellett is. A tömbök inicializálásakor az index értékében lehetőség van a 'ˆ' operátor használatára, amely az array végéről számítja az indexet (például „buffer = { [^1] = 0, [^2] = 1,….}” 0-t ír a legutolsó elembe, és 1-et a második legutolsóba). Iterátorokban és async módszerekben engedélyezett a ref és unsafe kifejezések használata. Hozzáadták az új escape szekvenciát „\e”. Engedélyezett interfészek definiálása a 'ref struct' típusok számára és 'ref struct' típusok használata argumentumként általános funkciókban. Új Lock típust javasoltak a zárak beállítására több szálas alkalmazásokban. Lock myLock = new(); void Concat<T>(params List<T> items) { lock (myLock) Console.WriteLine(string.Join(„\e[1mItem: \e[0m”, items)); }
- Az F# 9 nyelvben megjelent a null értéket elfogadó típusok támogatása. Az uniókban automatikusan generált „.Is*” tulajdonságok (például person.contact.IsEmail) érhetők el, amelyek segítségével ellenőrizhetjük, hogy az érték a halmazhoz tartozik-e. Bevezetésre került a üres számított kifejezések támogatása („let xs = seq { }”). A „#” karakterrel kezdődő direktívákban nem karakterlánc értékek megadása is engedélyezett (például használható a #nowarn 0070 a #nowarn „0070” helyett). A List, Array és Seq modulokba új funkciók kerültek be, amelyek lehetővé teszik az elemek véletlenszerű kiválasztását vagy keverését. A listák (list és set) esetében engedélyezett a gyűjteményekkel végzett műveletek alkalmazása.
- Bővítették a .NET Aspire stack képességeit, amely egy sor komponenst biztosít felhőalapú környezetben futó alkalmazások készítéséhez. Új lehetőségeket vezettek be az erőforrások és alkalmazáséletciklus kezelésére. Bővültek a telemetriagyűjtő eszközök.
- Javasoltak egy új C# absztrakciós készletet az AI-alkalmazások fejlesztéséhez, nagyméretű nyelvi modellek használatához, vektori tárolók eléréséhez és AI-szolgáltatásokkal való interakcióhoz. Bemutatásra került egy új „Tensor” típus és egy módszergyűjtemény a többdimenziós adatok számításához és manipulálásához. Az AI-hoz kapcsolódó kiegészítések a System.Numerics.Tensors, Microsoft.Extensions.AI és Microsoft.Extensions.VectorData csomagok formájában érhetők el. Frissült a ML.NET keretrendszer, amely a gépi tanulási modellek alkalmazásokba történő integrálására szolgál. Bevezetésre került a Microsoft.ML.Tokenizers könyvtár a szöveg tokenekre kódolásához és dekódolásához.
- A webalkalmazások fejlesztésére szolgáló ASP.NET Core stack bővítette a előrehaladó fordítás (ahead-of-time) támogatását, megerősítette a monitorozási és nyomozási eszközöket, csökkentette a kezdési időt és a memóriafogyasztást, optimalizálta a statikus fájlok kezelését. Új API-t vezettek be az azonosítás és engedélyezés számára. A Blazor, a C# nyelven készült webalkalmazások platformja új sablonokat valósított meg hibrid és webalkalmazásokhoz.
- A MAUI keretrendszer képességei a többplatformos felhasználói felületek fejlesztéséhez tovább bővültek. Teljesítményoptimalizálás történt. Megerősítették az integrációt asztali és mobil alkalmazásokkal. Új felhasználói elemek, a TitleBar és a HybridWebView kerültek bevezetésre.
- A WPF (Windows Presentation Foundation) bővített téma támogatásával és kiemelő színek támogatásával bővült.
Forrás: opennet.ru
