Programavimas

Kas naujo „Microsoft .NET 5“

Antrasis „Microsoft“ išleidimo kandidatas į .NET 5 atėjo spalio 13 d., O „.NET Framework“ ir „.NET Core“ sujungimas dar labiau priartėjo prie pabaigos. Naują vieningą .NET platformą bus galima pasiekti 2020 m. Lapkričio 10 d.

„Microsoft“ apibūdina „Release Candidate 2“ kaip beveik galutinį leidimą ir paskutinį iš dviejų RC. Pirmasis RC buvo paskelbtas rugsėjo 13 d. .NET 5.0 leidimo kandidatą galima atsisiųsti iš dotnet.microsoft.com.

Aukšto lygio .NET 5 tikslai apima vieningos .NET SDK patirties suteikimą su viena BCL (pagrindinės klasės biblioteka) visose .NET 5 programose ir palaikymą tiek vietinėms, tiek žiniatinklio programoms keliose operacinėse sistemose. Vienas „.NET 5“ savosios programos projektas palaikytų tokius taikinius kaip „Windows“, „Microsoft Duo“ („Android“) ir „Apple iOS“, naudodamas savąsias tų platformų valdiklius.

Papildomi „.NET 5“ tikslai yra palaikymas kuriant našias debesų programas, greitesni algoritmai BCL, geresnis konteinerių palaikymas vykdymo metu ir palaikymas HTTP3. .NET 5.0 apima „WebAssembly“ dvejetainio formato palaikymą per „Mono“ vykdymo laiką ir .NET bibliotekas. Taip pat pateikiamas negaliojančių nuorodų tipo komentarų rinkinys.

.NET 5 taip pat žada leisti kūrėjams automatiškai rasti latentinių klaidų kode. Kitos naujos funkcijos yra Pusė tipas, dvejetainis slankusis taškas, užimantis 16 bitų, ir surinkimo apipjaustymas, kuris apipjauna nenaudojamus mazgus, kad sumažintų programų dydį. Taip pat paryškinamas pritaikytas kirpimas. Naujas modelio atitikimas C # 9 apima reliacinius, loginius ir paprastus tipo modelius. „ClickOnce“ diegimo parinktis dabar palaikoma .NET 5.0 „Windows“ programoms ir .NET Core 3.1 programoms.

Naujoji .NET platforma taip pat žada našumo patobulinimus. Biuletenyje, susijusiame su „Preview 7“, kuris buvo pateiktas liepos 21 d., Pripažįstama apie 250 į našumą orientuotų traukimo užklausų .NET 5 ir pažymima, kad tiems, kurie stebėjo .NET Core našumą, laukia maloni staigmena.

Kiti „.NET 5 Preview 7“ biuletenyje pastebėti papildymai ir patobulinimai:

  • Naujasis System.text.json JSON API suteikia galimybę ignoruoti numatytąsias vertės tipo ypatybių reikšmes atliekant nuoseklųjį naudojimą, naudingą mažinant nuoseklinimo ir laidų sąnaudas. Tai lūžtantis pokytis. Be to, sistemai System.text.json pridedama galimybė tvarkyti žiedines nuorodas atliekant serijinį procesą, o API forma dabar turėtų būti galutinė.
  • Surinkus šiukšles dabar pateikiami išsamūs duomenys apie naujausią surinkimą naudojant „GetGCMemoryInfo“ metodas, kuris grąžina a „GCMemoryInfo“ struktūros. „GCMemoryInfo“ teikia informaciją apie mašinų ir kaupų atmintį ir naujausią rinkinį ar naujausią nurodyto tipo GC rinkinį - trumpalaikį, visišką blokavimą ar foną. Labiausiai tikėtini šios API naudojimo atvejai yra registravimas / stebėjimas arba nurodymas apkrovos balansuotojui, kad mašina turėtų būti pašalinta iš sukimosi, kad būtų pareikalauta visiško GC. Tuo tarpu buvo atliktas dar vienas GC pakeitimas, kad brangios atstatomosios atminties operacija būtų atidedama į mažai atminties turinčias situacijas.
  • „Ryujit“, .NET surinkimo kodų generatorius, patobulina įvairius parametrus, pradedant tam tikrų ribų patikrinimų leidimu, baigiant uodegų dubliavimo patobulinimais ir nereikalingų nulio įvedimų pašalinimu. Taip pat „Ryujit“ yra ARM64 aparatinės įrangos vidus ir API optimizavimas.

.NET 5 peržiūra 6, išleista birželio 25 d., Pašalino integruotą „WinRT“ („Windows Runtime“) palaikymą, API rinkinį, skirtą kurti „Universal Windows Platform“ programas. Tai lūžtantis pokytis; .NET Core 3.x programos, naudojančios WinRT, turi būti perkompiliuotos. „.NET“ ir „Windows“ komandos stengėsi pakeisti „WinRT“ darbo su „Windows“ būdą, pakeisdamos „WinRT“ palaikymą „C # / WinRT“ įrankių grandine, esančia .NET 5.

Kiti „.NET 5“ 6 peržiūros pakeitimai:

  • .NET 5 Preview 6 SDK yra „Windows“ formų palaikymas „Windows ARM64“ įrenginiuose. Tęsiamas darbas papildant „Windows Presentation Foundation“ palaikymą sistemoje „Windows ARM64“.
  • „RyuJIT“ kodo kokybės patobulinimai apima struktūros valdymą ir optimizavimą, kad būtų pašalinti nereikalingi nulio inicijavimai. Taip pat padaryta pažanga optimizuojant ARM64 aparatinę įrangą ir tobulinant sugeneruotą ARM64 kodą, sumažinus kodo dydį.
  • Atnaujinti platformos palaikymo planai.

.NET 5 „Preview 5“, išleistame birželio 10 d., Yra šios naujos funkcijos:

  • „RyuJIT JIT“ kompiliatorius turi greitesnį, nešiojamąjį „tailcall“ pagalbininkų įdiegimą. JT prašo vykdymo laiko pagalbos, kai supranta, kad jam reikės pagalbininko, kad atliktų iškvietimą. „RyuJIT“ srityje buvo daroma pažanga diegiant ARM64 aparatinę įrangą. Kiti „RyuJIT“ patobulinimai apima didesnį greitį byloje, kuri turėjo įtakos reguliarios išraiškos kompiliavimui ir patobulintam „Intel“ architektūros našumui.
  • Įgalintas vietinių dvejetainių failų eksportas į skambučius į .NET kodą. Šios galimybės pagrindas yra API palaikymas „UnManagedCallersOnlyAttribute“. Vietinio eksporto projektas leidžia atskleisti pasirinktinį vietinį eksportą. Tai nereikalauja aukštesnio lygio sąveikos technologijos, tokios kaip COM, ir yra kelių platformų.
  • DirectoryServices. Protokolai palaikymas plečiamas į „Linux“ ir „MacOS“.
  • Dabar palaikomas „Alpine 3.12 Linux“ platinimas.

.NET 5.0 leidimo kandidatą galima atsisiųsti iš dot.net.microsoft.com.

Gegužės 19 d. Išleista .NET 5 peržiūra 4 pristatė šias naujas galimybes:

  • C # 9 ir F # 5 kalbų palaikymas.
  • Patobulintas „F #“ naudojamų „tailcall“ veikimas.
  • Pagerintas „ToUpperInvariant“, eilutė.ToLowerInvariantir susiję modeliai.
  • Pagerintas HTTP 1.1 ir HTTP 2 našumas.
  • Patobulintas skambučių skaičiavimo mechanizmas.
  • Dinamiškas vidinio bendrojo žodyno išplėtimas, siekiant pašalinti našumo uolas, nukentėjusias nuo bendro kodo.
  • Prisegtas daiktų kaupas, skirtas sumažinti kaupo fragmentiškumą.
  • Vieno failo programos, pagrįstos nauju vieno failo publikavimo tipu, kuris vykdo programą iš vieno dvejetainio failo.

Patobulinimai .NET 5 3 peržiūroje, pristatytoje balandžio 23 d., Apima:

  • „BitArray“ klasė, skirta bitų reikšmių masyvui valdyti, buvo atnaujinta, įtraukiant aparatinės įrangos pagreitintą ARM64 diegimą naudojant ARM64 vidinę funkciją. „BitArray“ našumo patobulinimai yra reikšmingi, teigė „Microsoft“. Be to, „Clack Stack“ pakeitimas (OSR) CLR buvo įgyvendintas, kad būtų galima pakeisti kodą, vykdomą šiuo metu veikiančiais metodais, metodo vykdymo viduryje, o šie metodai yra aktyvūs „ant rietuvės“. Ši galimybė pagerinti pakopinio kompiliavimo našumo charakteristikas dabar yra eksperimentinė „x64“ pasirinkimo funkcija. Kitas „RyuJIT“ patobulinimas pagerina kodų, kaip argumentų „uodeginio skambučio“ pozicijos skambučiuose, kodo kokybę. Taip pat tikimasi, kad „RyuJIT“ pasiūlys geresnius generinių vaistų rezultatus.
  • Prie System.Txt.Json pridėtas palaikymas nuorodų išsaugojimui, leidžiantis tvarkyti JSON serijinį etaloninį kilpą. Be to, dabar „JsonSerializer“ palaiko nekintamas klases ir struktūras. Taip pat dabar palaikomas niekinės vertės tvarkymas.
  • Dabar .NET SDK automatiškai nurodys „NETFramework.ReferenceAssemblies NuGet“ paketą, kuriam projekto faile suteikta .NET Framework tikslinė sistema. Šis pakeitimas leidžia kurti .NET Framework projektus kompiuteryje be įdiegto .NET Framework taikymo paketo. Šis patobulinimas būdingas nukreipimo paketams ir neatsižvelgia į kitas galimas projekto priklausomybes.

Konkretūs patobulinimai .NET 5 2 peržiūroje, išleistoje balandžio 2 d., Buvo:

  • „RyuJIT“ buvo atlikta nemažai pakeitimų, siekiant pagerinti sugeneruoto mašininio kodo kokybę, įskaitant agresyviau pašalintą dvigubą nulinį inicijavimą ir anuliavusį langelių optimizavimą.
  • Serverio šiukšlių surinkimas ant skirtingų gijų dabar gali būti pavogtas žymint gen0 / 1 objektus, kuriuos tiesiogiai gyvena senesnės kartos objektai. Darbų vagystės per gijas sutrumpina trumpalaikes GC pauzes scenarijams, kai vienų GC gijų žymėjimas užtruko daug ilgiau nei kitų. Be to, buvo įdiegta dalis prisegto objekto kaupo (POH) funkcijos, vidinė šiukšlių surinkimo dalis, kad surinkėjas galėtų atskirai tvarkyti prisegtus objektus. Taip išvengiama neigiamo prisegtų objektų poveikio kartų kaupams.

1 peržiūra, išleista kovo 16 d., Apėmė įprastus išraiškos našumo patobulinimus, taip pat „RyuJIT“ kodo kokybės patobulinimus.

Dėl leidimo 2020 m. Lapkričio mėn. „.NET 5“ turėtų būti:

  • ASP.NET Core, atvirojo kodo sistema, skirta žiniatinklio programoms.
  • „Entity Framework“ pagrindinė duomenų prieigos technologija.
  • WinForms.
  • WPF („Windows Presentation Foundation“).
  • „Xamarin“ mobiliosios programos įrenginio modelis.
  • ML.NET.

„Microsoft“ teigė, kad .NET 5 suteiks vieną, vieningą platformą bet kokio tipo programoms kurti. Pusė srauto į .NET svetainės srautą bendrovė nukreipia į .NET 5 versiją kaip bandomąjį atvejį, naudodama „Azure“ apkrovos balansavimą.

„Microsoft“ rekomenduoja kūrėjams kurti naujas programas su .NET Core 3.1, o tada perkelti jas į .NET 5. Bendrovė pažymėjo, kad .NET Framework programas galima palikti „.NET Framework“, kurios palaikomos tol, kol bus palaikoma pati „Windows“.