Microsofti ettevõte tutvustas avatud platvormi .NET 9 väljalaskmist, mis on loodud .NET Frameworki, .NET Core'i ja Mono toodete ühtsuse kaudu. .NET 9 baasil on võimalik luua mitme platvormiga rakendusi brauseritele, pilvesüsteemidele, lauaarvutitele, IoT-seadmetele ja mobiilplatvormidele, kasutades ühtseid raamatukogusid ja ühist kogumisprotsessi, mis ei sõltu rakenduse tüübist. .NET SDK 9, .NET Runtime 9 ja ASP.NET Core Runtime 9 koostatakse Linuxi, macOS-i ja Windowsi jaoks. .NET Desktop Runtime 9 on saadaval ainult Windowsile. Projekti seotud arendused on litsentseeritud MIT litsentsi alusel.
.NET-i komplekti kuulub töötlemisaja süsteem RyuJIT JIT-kompilaatoriga, API spetsifikatsioonid, WPF, Windows Forms, WinUI ja Entity Framework raamatukogud, käskude rea liides dotnet ning tööriistad mikroteenuste, raamatukogude, serveri-, graafiliste ja konsooli rakenduste arendamiseks. Eraldi tarnitakse veebirakenduste arendamise komplekt ASP.NET Core 9.0, ORM-kiht Entity Framework Core 9.0 (sh draiverid SQLite ja PostgreSQL jaoks), WPF 9 (Windows Presentation Foundation) raamatukogu, Windows Forms 9 GUI arendamiseks, Aspire 9 platvorm pilvepõhiste rakenduste loomiseks, MAUI 9 raamistiku mitme platvormi kasutajaliideste arendamiseks ja C# 13 ja F# 9 keeled. .NET 9.0 ja C# 13 tugi on integreeritud tasuta koodiredaktorisse Visual Studio Code.
Uue väljaande omadused:
- Tehtud on üle tuhande muudatuse, mis on seotud jõudluse optimeerimise ja genereeritud koodi kvaliteedi tõstmisega. Prügikorje süsteem on uuendatud, rakendades ja kehtestades vaikimisi dünaamilise kohandamise mehhanismi rakenduse suurusele (prügikorje ei sõltu süsteemis kasutatavast ressursist, vaid sellest, kui palju mälu rakendus vajab). Uus režiim võimaldab tõhusamat tööd süsteemides, kus on palju protsessorituumasid, kui rakendus kasutab suhteliselt vähe mälu või kui mälu vajadus muutub oluliselt töö käigus.
JIT-kompilaatorisse on lisatud uusi optimeerimisi, mis põhinevad profiilide analüüsil (PGO), ning parendatud silmuste töötlemist, inline-lahtimuutmist ja piiri kontrollimist. .NET runtime'i kontekstis on laienenud vektori juhiste kasutamine ja lisatud tugi Arm64 SVE ja Intel AVX10 laiendustele. Erandite töötlemise kood on kiiruselt 50% paranenud. Tüüpide konverteerimise toimingute, nagu "(IFoo)myFoo" ja "myFoo on IFoo", korral on jõudlus paranenud kuni 70%. Teatud meetodite, nagu LINQ (Language-Integrated Query) metoodikad, näiteks Take ja DefaultIfEmpty, jõudlus on kahjustatud kuni 10 korda, kui töö käib tühjade massiivide ja kollektsioonidega.
System.Text.Json meetodi jõudlus ja efektiivsus on oluliselt paranenud. Meetodis JsonProperty.WriteTo on rakendatud võimalus otse kirjutada UTF8 stringe, mis välistab liigse mälukasutuse. JsonObject'i suuruse muutmise toimingud on optimeeritud. Testide TechEmpower käigus, mis hindavad JSON-päringute töötlemise koodi efektiivsust, on võrreldes .NET 8-ga täheldatud jõudluse kasvu 15% ja mälu tarbimise vähenemist 93%.
- Runtime'is on välja pakutud uus atribuutide mudel funktsionaalsuse aktiveerimiseks ja kärpimiseks raamatukogudes.
- C# 13 keeles on laiendatud 'params' modifieri kasutamise võimalusi, kus lisaks massiividele on lubatud ka kogumite määramine. Massiivide initsialiseerimisel on lubatud indeksiväärtuses kasutada operaatorit '^', et arvestada indekseid massiivi lõpust (näiteks 'buffer = { [^1] = 0, [^2] = 1,….}' kirjutab 0 viimasesse elemendi ja 1 eelviimasesse). Iteraatorites ja async-meetodites on lubatud kasutada ref ja unsafe väljendeid. Lisatud uus escape-järg: '\e'. Lubatud on liideste määramine 'ref struct' tüüpide jaoks ning 'ref struct' tüüpide kasutamine argumentidena üldistes funktsioonides. Uus Lock tüüp on ette pandud lukustuse seadmiseks mitme lõimega rakendustes. Lock myLock = new(); void Concat(params List items) { lock (myLock) Console.WriteLine(string.Join('\e[1mItem: \e[0m', items)); }
- F# 9 keeles on lisandunud tugi tüüpidele, mis võivad võtta nulli väärtuse. Liidetes on rakendatud automaatselt genereeritud omadused " .Is* " (näiteks person.contact.IsEmail), mida saab kasutada väärtuse kuuluvuse kontrollimiseks hulgale. Lisatud on tugi tühjade arvutatud avalduste jaoks (" let xs = seq { } "). Direktiivides, mis algavad sümboliga " # ", on lubatud mitte-stringiliste väärtuste määramine (nt võite kirjutada #nowarn 0070 selle asemel, et #nowarn " 0070 "). Moodulitesse List, Array ja Seq on lisatud funktsioonid elementide juhuslikuks valimiseks või segamiseks. Loendite (list ja set) suhtes on lubatud kasutada kollektsioonide operatsioone.
- Ehitustööriistade võimeid on laiendatud .NET Aspire'i sees, mis pakub komponentide komplekti, et luua pilvekeskkondades töötavaid rakendusi. Uued võimalused on lisatud ressursside ja rakenduste elutsükli haldamiseks. Telemeetriakogumise vahendite valik on laienenud.
- Pakutakse välja uus C# abstraktsioonide kogum AI-rakenduste arendamiseks, suures keelemudelite kasutamiseks, vektorisalvestustega suhtlemiseks ja AI-teenustega integreerimiseks. Tutvustatakse uut tüüpi „Tensor“ ja meetodite kogumit multidimensionaalsete andmete arvutamiseks ja manipuleerimiseks. AI-laiendusi jagatakse System.Numerics.Tensors, Microsoft.Extensions.AI ja Microsoft.Extensions.VectorData paketina. Uuendatud on ML.NET raamistik, mis on mõeldud masinõppe mudelite integreerimiseks rakendustesse. Lisatud on Microsoft.ML.Tokenizers raamatukogu teksti kodeerimiseks ja dekodeerimiseks tokeniteks.
- Web-rakenduste arendamise virnas on ASP.NET Core'i tugi eelkompileerimise (ahead-of-time) jaoks laienenud, jälgimise ja jälgimise võimalused on paranenud, käivitusaeg on vähendatud ja mälu tarbimist on optimeeritud, staatiliste failide töö on paranenud. Lisatud on uus API autentimiseks ja autoriseerimiseks. Blazor'is, C#-ga web-rakenduste loomise platvormil, on rakendatud uusi malle hübriid- ja web-rakenduste jaoks.
- MAUI raamistiku võimalused kasutajate mitme platvormi liideste arendamiseks on laienenud. Taasi optimiseeriti jõudlust. Tugevnendati integreerimist lauaarvuti- ja mobiilirakendustega. Uued liidese elemendid TitleBar ja HybridWebView on lisatud.
- WPF (Windows Presentation Foundation) toetamist on laiendatud teemade võimekuse osas ning lisatud on tuge aktsentvärvide jaoks.
Allikas: opennet.ru
