Što je novo u Microsoft .NET 5

Microsoftov drugi kandidat za izdanje .NET 5 stigao je 13. listopada, približavajući .NET Framework i .NET Core korak bliže svom završetku. Nova unificirana .NET platforma trebala bi biti dostupna 10. studenog 2020. 

Microsoft opisuje Release Candidate 2 kao skoro konačno izdanje i posljednje od dva RC-a. Početni RC objavljen je 13. rujna. Kandidat za izdanje .NET 5.0 može se preuzeti s dotnet.microsoft.com.

Ciljevi na visokoj razini za .NET 5 uključuju pružanje jedinstvenog .NET SDK iskustva, s jednim BCL-om (knjižnicom osnovne klase) u svim .NET 5 aplikacijama te s podrškom za matične i web-programe u više operativnih sustava. Jedan projekt .NET 5 izvornih aplikacija podržao bi ciljeve kao što su Windows, Microsoft Duo (Android) i Apple iOS pomoću izvornih kontrola na tim platformama.

Dodatni ciljevi .NET 5 uključuju podršku za izgradnju aplikacija u oblaku visokih performansi, brže algoritme u BCL-u, bolju podršku za spremnike u vrijeme izvođenja i podršku za HTTP3. .NET 5.0 uključuje podršku za binarni format WebAssembly putem Mono runtime i .NET knjižnica. Sadržan je i niz nultabilnih napomena referentnog tipa.

.NET 5 također obećava da će omogućiti programerima da automatski pronađu latentne greške u kodu. Ostale nove značajke uključuju Halftip, binarnu pokretnu zarez koja zauzima 16 bitova i obrezivanje sklopa, koje obrezuje neiskorištene sklopove kako bi se smanjila veličina aplikacija. Istaknuto je i prilagođeno obrezivanje. Novo podudaranje uzorka u C # 9 obuhvaća relacijske, logičke i jednostavne uzorke tipova. Opcija implementacije ClickOnce sada je podržana za .NET 5.0 Windows aplikacije i .NET Core 3.1 aplikacije.

Nova .NET platforma također obećava poboljšanja performansi. Bilten koji se odnosi na Preview 7, koji je stigao 21. srpnja, prihvaća oko 250 zahtjeva usmjerenih na izvedbu u .NET 5 i napominje da se sprema ugodno iznenađenje za one koji su slijedili performanse .NET Core-a. 

Ostali dodaci i poboljšanja zabilježeni u biltenu .NET 5 Preview 7:

  • Novi API System.text.json JSON pruža mogućnost zanemarivanja zadanih vrijednosti za svojstva vrijednosnog tipa prilikom serializacije, korisno za smanjenje serializacije i žičane troškove. Ovo je prelomna promjena. Za System.text.json također je dodana sposobnost baratanja kružnim referencama prilikom serializacije, pri čemu se API oblik sada očekuje konačnim.
  • Odvoz smeća sada izlaže detaljne podatke o najnovijem sakupljanju, koristeći GetGCMemoryInfometodu koja vraća GCMemoryInfostrukturu. GCMemoryInfosluži informacijama o memoriji stroja i hrpe i najnovijoj zbirci ili najnovijoj zbirci vrste GC specificirane - kratkotrajne, potpuno blokirane ili pozadine. Najvjerojatniji slučajevi upotrebe za ovaj API su bilježenje / nadzor ili ukazivanje uravnotežitelju opterećenja da stroj treba izvaditi iz rotacije da bi zatražio puni GC. U međuvremenu je napravljena još jedna promjena GC-a koja je odgodila skupu operaciju resetiranja memorije na situacije s malo memorije.
  • Ryujit, generator zbornog koda za .NET, dobiva poboljšanja koja se kreću od omogućavanja uklanjanja nekih provjera granica do poboljšanja repliciranja repa i poboljšanja za uklanjanje suvišnih nula inita. U Ryujitu se također nalaze ARM64 hardverske značajke i API optimizacija.

.NET 5 Preview 6, objavljen 25. lipnja, uklonio je ugrađenu podršku za WinRT (Windows Runtime), zbirku API-ja za izgradnju aplikacija Universal Windows Platform. Ovo je prelomna promjena; Aplikacije .NET Core 3.x koje koriste WinRT moraju se prekompajlirati. Timovi .NET i Windows rade na promjeni načina rada WinRT-a sa sustavom Windows, zamjenjujući WinRT podršku s C # / WinRT alatnim lancem u .NET 5. C # / WinRT je NuGet-ov paket alata koji nudi podršku za WinRT projekciju za C #.

Ostale promjene u .NET 5 Preview 6: 

  • .NET 5 Preview 6 SDK uključuje podršku za Windows Forms na Windows ARM64 uređajima. Nastavlja se rad na dodavanju podrške za Windows Presentation Foundation na Windows ARM64.
  • Poboljšanja kvalitete RyuJIT koda obuhvaćaju upravljanje strukturu i optimizaciju za uklanjanje suvišnih nultih inicijalizacija. Također, postignut je napredak u ARM64 optimizaciji unutarnje hardverske opreme, kao i u poboljšanju generiranog koda za ARM64, uz smanjenu veličinu koda.
  • Ažurirani su planovi za podršku platformi.

.NET 5 Preview 5, objavljen 10. lipnja, sadrži sljedeće nove značajke:

  • Kompajler RyuJIT JIT ima bržu, prenosivu implementaciju pomagača za tailcall. JIT traži pomoć tijekom izvođenja kad god shvati da će mu trebati pomoćnik za izvođenje tailcall-a. Također za RyuJIT, nastavljen je napredak u implementaciji suštinskih hardverskih komponenata ARM64. Druga poboljšanja u RyuJIT-u uključuju veću brzinu u slučaju koji je utjecao na kompilaciju regularnih izraza i poboljšane performanse Intelove arhitekture.
  • Omogućen je izvoz za izvorne binarne datoteke s pozivima u .NET kod. Gradivni element ove mogućnosti je hosting API podrška za UnManagedCallersOnlyAttribute. Projekt domaćeg izvoza omogućuje izlaganje prilagođenog domaćeg izvoza. Ne zahtijeva interop tehnologiju više razine poput COM-a i višestruka je platforma.
  • DirectoryServices.Protocols podrška se proširuje na Linux i MacOS.
  • Sada je podržana distribucija Alpine 3.12 Linux.

Kandidat za izdanje .NET 5.0 možete preuzeti s dot.net.microsoft.com.

.NET 5 Preview 4, objavljen 19. svibnja, predstavio je sljedeće nove mogućnosti:

  • Podrška za jezik C # 9 i F # 5.
  • Poboljšane performanse stražnjih poziva koje koristi F #.
  • Poboljšana izvedba ToUpperInvariant, string.ToLowerInvarianti srodnih uzoraka.
  • Poboljšane performanse HTTP 1.1 i HTTP 2.
  • Poboljšani mehanizam za brojanje poziva.
  • Dinamično proširenje internog generičkog rječnika za uklanjanje vrhova performansi pogođenih generičkim kodom.
  • Prikvačena hrpa predmeta kako bi se smanjila fragmentacija hrpe.
  • Aplikacije za jednu datoteku temeljene na novom tipu objavljivanja jedne datoteke koji izvršava aplikaciju iz jedne binarne datoteke.

Poboljšanja u .NET 5 pregledu 3, predstavljena 23. travnja, uključuju sljedeće: 

  • Klasa BitArray za upravljanje nizom bitnih vrijednosti ažurirana je tako da uključuje hardverski ubrzanu implementaciju za ARM64 koristeći ARM64 intrinsics. BitArray poboljšanja performansi su značajna, rekao je Microsoft. Pored toga, primijenjena je zamjena na stacku (OSR) u CLR-u kako bi se omogućilo mijenjanje koda izvršenog trenutno pokrenutim metodama usred izvršavanja metode, dok su te metode aktivne "na stogu". Ova sposobnost poboljšanja karakteristika izvedbe stupnjevite kompilacije sada je eksperimentalna značajka za prijavu na x64. Još jedno poboljšanje za RyuJIT poboljšava kvalitetu koda za strukture kao argumente u pozivima položaja "rep poziva". Očekuje se i da će RyuJIT ponuditi bolje performanse generičkih lijekova. 
  • Dodatak podrške za očuvanje referenci dodan je System.Txt.Json, omogućavajući rukovanje referentnom petljom za JSON serializaciju. Također, za JsonSerializer su sada podržane nepromjenjive klase i strukture. Sada je također podržano rukovanje nulom vrijednosti.
  • .NET SDK sada će automatski referencirati paket NETFramework.ReferenceAssemblies NuGet s obzirom na ciljni okvir .NET Framework u datoteci projekta. Ova promjena omogućuje izgradnju .NET Framework projekata na stroju bez instaliranog paketa za ciljanje .NET Framework. Ovo poboljšanje specifično je za ciljanje paketa i ne uzima u obzir druge moguće ovisnosti o projektu.

Specifična poboljšanja u .NET 5 preview 2, objavljena 2. travnja, uključuju: 

  • Izvršene su brojne promjene u RyuJIT-u radi poboljšanja kvalitete generiranog strojnog koda, uključujući dvostruke nulte inicijalizacije koje su agresivnije eliminirane i ranije povišene optimizacije poništenih okvira.
  • Prikupljanje smeća na poslužitelju na različitim nitima sada može ukrasti, dok označava gene0 / 1 objekte koji se uživo drže od objekata starije generacije. Kradnja preko niti skraćuje kratkotrajne GC pauze za scenarije u kojima je nekim GC nitima trebalo puno više vremena da se označe nego drugima. Pored toga, implementiran je dio značajke Prikvačene hrpe objekata (POH), dio koji je interni za prikupljanje smeća, kako bi sakupljač mogao odvojeno upravljati prikvačenim objektima. Time se izbjegavaju negativni učinci prikvačenih predmeta na gomile generacija.

Pregled 1, objavljen 16. ožujka, uključivao je poboljšanja izvedbe regularnih izraza, kao i poboljšanja kvalitete koda u RyuJIT-u.

Kao proizvodno izdanje u studenom 2020., .NET 5 trebao bi sadržavati:

  • ASP.NET Core, okvir otvorenog koda za web aplikacije.
  • Entity Framework Core tehnologija pristupa podacima.
  • WinForms.
  • WPF (Windows Presentation Foundation).
  • Model uređaja za mobilnu aplikaciju Xamarin.
  • ML.NET.

Microsoft je rekao da će .NET 5 pružiti jedinstvenu, objedinjenu platformu za izgradnju bilo koje vrste aplikacija. Tvrtka usmjerava polovicu prometa na svoje .NET web mjesto na verziju .NET 5 kao testni slučaj, koristeći Azure uravnoteženje opterećenja. 

Microsoft preporučuje programerima da izgrade nove programe s .NET Core 3.1, a zatim ih migriraju na .NET 5. Tvrtka je primijetila da .NET Framework programe možete ostaviti na .NET Framework, koji će ostati podržan sve dok je sam Windows podržan.