Microsoft esitles märkimisväärse avatud platvormi .NET 7, mis on loodud .NET Frameworki, .NET Core'i ja Mono toodete ühtsuse kaudu. .NET 7 põhjal on võimalik luua ristplatvormi rakendusi brauseritele, pilvesüsteemidele, lauaarvutitele, IoT-seadmetele ja mobiilsetele platvormidele, kasutades ühtseid teeke ja ühiseid kogumise protsesse, mis ei sõltu rakenduse tüübist. .NET SDK 7, .NET Runtime 7 ja ASP.NET Core Runtime 7 kogud on loodud Linuxile, macOS-ile ja Windowsile. .NET Desktop Runtime 6 on saadaval ainult Windowsile. Projekti seotud materjalid jagatakse MIT litsentsi alusel. .NET 7 haru hooldust hakata teostatama 18 kuu jooksul kuni 14. maini 2024.
.NET 7 sisaldab CoreCLR runtime'i koos RyuJIT kompilaatoriga, standardraamatukogusid, CoreFX raamatukogusid, WPF, Windows Forms, WinUI, Entity Frameworki, dotnet käsurealiidese ning tööriistu mikroteenuste, raamatukogude, serveripoolsete, graafiliste ja konsoolirakenduste arendamiseks. Eraldi on avalikustatud ASP.NET Core 7.0 veebirakenduste arendamiseks mõeldud stack, Entity Framework Core 7.0 ORM-ülemineku kiht (sh draiverid SQLite ja PostgreSQL jaoks), WPF 7 (Windows Presentation Foundation) raamatukogu, Windows Forms 7 raamistik GUI arendamiseks, Orleans 7 platvorm pilverakenduste loomiseks, MAUI 7 raamistik mitme platvormi kasutajaliideste arendamiseks ning C# 11 ja F# 7 keelte väljaanded. .NET 7.0 ja C# 11 tugi on saadaval Visual Studio Code'i tasuta koodiredaktoris.
Uue väljaande omadused:
- Põhirakenduste raamatukogu (BCL, Base Class Library) on ühtlustatud erinevat tüüpi rakendustes kasutamiseks, sealhulgas lauaarvutirakendustes, veebirakendustes, pilveplatvormides, mobiilirakendustes, mängudes, sisseehitatud programmides ja masinõppesüsteemides. Erinevat tüüpi rakenduste arendamiseks saab kasutada ühtset SDK-d, runtime'i ja raamatukogude komplekti.
- Rakenduse sidumise võimalus .NET 7 API-ga on saadaval, määrates sihtplatvormiks «net7.0», näiteks «net7.0». Platvormispetsiifiliste API-de sidumisel on võimalik sihtmärkide määramisel täpsustada platvormitüüpi, näiteks märkides «net7.0-android».
- ARM64 arhitektuuri tugi on märkimisväärselt paranenud ning jätkatakse tööd rakenduste .NET jõudluse poolse pariteedi saavutamiseks x86 ja ARM64 arhitektuuridel. Runtime'i kolmanda taseme vahemälu kasutamise efektiivsus on suurenenud ARM64 süsteemides. Mälule juurdepääsu jagamiseks paralleelsete lõimedega on rakendatud LSE käske, mis on vähendanud latentsi 45%. Raamatukogusse on lisatud töötlusid, mis kasutavad vektortüüpe Vector64, Vector128 ja Vector256, ning vektorkäskude alusel on ümber kirjutatud funktsioonid EncodeToUtf8 ja DecodeFromUtf8, mis on võimaldanud nende jõudlust suurendada kuni 60% (NarrowUtf16ToAscii ja GetIndexOfFirstNonAsciiChar funktsioonide jõudluse kasv ulatub 35%-ni). Kokkuvõttes on testide edastuskiirus ARM64 platvormil kasvanud 10-60%.

- Linux platvormi toetust on parendatud, sealhulgas on Ubuntu 22.04 ametlikesse registritesse lisatud .NET 6 pakette ning esitatud optimeeritud, kompaktne ja kasutamiseks valmis docker-pilt rakenduste konteinerite kiireks juurutamiseks, mis põhinevad .NET-l.
- Lisatud tugi IBM Power 64-bitisele arhitektuurile (ppc64le).
- .NET Upgrade Assistant tööriist on ette pandud, et lihtsustada vanade rakenduste üleviimist .NET 6 või .NET 7 harudesse. Uues versioonis on laiendatud rakenduste migratsiooni toetust ASP.NET-ilt ASP.NET Core-ile, lisatud koodianalüsaatorid ja -korrektuurid WinFormsile, WPF-ile ja klasside raamatukogudele, rakendatud täitmisfailide analüüsi toetus ja lisatud UWP (Universal Windows Platform) toetus.
- Rohkemate võimaluste pakkumine pilvepõhiste (cloud-native) rakenduste loomiseks ja PaaS (teenusena platvorm) platvormide toetamiseks. Antud on võimalus luua rakendusi, mis on pakitud isoleeritud konteineritesse, kasutades käsku "dotnet publish".
- Rakenduste oleku jälgimise ja nende töö kohta metrikate kogumise vahendeid on laiendatud. Lisatud on uusi sündmusi ja meetodeid rakenduse aktiivsuse ja jõudluse analüüsimiseks.
- C# 11-s lisati toetatakse töötlemata stringi literale, mis võivad sisaldada erikiparete, ilma nende tagasiviimise vajaduseta (sellised literale on vooderdatud kolme jutumärgi vahel). Pakutakse geneerilisi liideseid matemaatiliste funktsioonide jaoks ja antakse võimalus määrata staatilisi elemente virtuaalsetes liidestes, mis võimaldas rakendada geneerilise programmeerimise meetodeid matemaatiliste toimingute teostamiseks ilma täpse teabe olemasoluta väärtuste tüüpide kohta.
- Standardse raamatukogu võimalusi on laiendatud. Lisatud on API System.Formats.Tar, et töötada Tar-formaadis arhiveeritud failidega. Aja töötlemise funktsioonides (TimeStamp, DateTime jne) on lisatud mikroseunde ja nanoseundide tugi. System.Text.Json-s on rakendatud võimalus hallata .NET tüüpide serialiseerimist ja deserialiseerimist.
- Käskude rea „dotnet new“ liideses on lisatud projektimallide automaatse täiendamise tugi, vajutades Tab-klahvi.
- .NET SDK-s on rakendatud võimalus piirata pakutavate projektimallide rakendamise ulatust, näiteks saab määrata, millistes operatsioonisüsteemides on mall lubatud.
- NuGet on lisatud keskne pakettide haldamise režiim, mis võimaldab hallata sõltuvusi korraga mitme projekti jaoks.
- JIT-kompilaatori jõudlust on parendatud. Lisatud on OSR (On Stack Replacement) mehhanismi tugi, mis võimaldab juba käivitatud meetodite koodi muuta, et optimeerida kõrge koormusega meetodeid, ootamata jooksva kõne lõppu (TechEmpoweri testis tuvastati 10-30% parandatud algse päringute töötlemise jõudlus).
- Koodi profiilimise tulemuste põhjal tehtud optimeerimise (PGO — Profile-guided optimization) efektiivsust on parendatud, võimaldades arvesse võtta omadusi, mis tuvastatakse programmi käivitamise käigus.
- Lisatud on tugi iseseisvate täitmisfailide (Native AOT) kompileerimisele, mille puhul kogu projekt kompileeritakse algselt sihtplatvormi masinkoodiks ilma vahepealse koodita ja JIT-i rakendamata.
Allikas: opennet.ru

