Tvrtka Microsoft predstavila je značajno izdanje otvorene platforme .NET 7, koja je stvorena kroz unifikaciju proizvoda .NET Framework, .NET Core i Mono. Na temelju .NET 7 moguće je razvijati višepplatformske aplikacije za preglednike, oblačne sustave, radne stolove, IoT uređaje i mobilne platforme, koristeći jedinstvene biblioteke i zajednički proces izgradnje koji ne ovisi o vrsti aplikacije. Izgradnje .NET SDK 7, .NET Runtime 7 i ASP.NET Core Runtime 7 oblikovane su za Linux, macOS i Windows. .NET Desktop Runtime 6 dostupan je samo za Windows. Povezani radovi na projektu distribuiraju se pod MIT licencom. Održavanje grane .NET 7 bit će osigurano tijekom 18 mjeseci do 14. svibnja 2024.
.NET 7 uključuje runtime CoreCLR s JIT kompajlerom RyuJIT, standardne biblioteke, biblioteke CoreFX, WPF, Windows Forms, WinUI, Entity Framework, sučelje naredbenog retka dotnet, kao i alate za razvoj mikrosužbenika, biblioteka, poslužitelja, grafičkih i konzolnih aplikacija. Odvojeno je objavljen okvir za razvoj web aplikacija ASP.NET Core 7.0, ORM sloj Entity Framework Core 7.0 (drajveri su dostupni, uključujući SQLite i PostgreSQL), biblioteka WPF 7 (Windows Presentation Foundation), okvir Windows Forms 7 za razvoj GUI, platforma Orleans 7 za izradu Cloud Native aplikacija, okvir MAUI 7 za razvoj višepplatformskih korisničkih sučelja, kao i izdanja jezika C# 11 i F# 7. Podrška za .NET 7.0 i C# 11 uključena je u besplatni uređivač koda Visual Studio Code.
Značajke novog izdanja:
- Provedena je unifikacija osnovne biblioteke klasa (BCL, Base Class Library) za korištenje u različitim vrstama aplikacija, uključujući programe za stolna računala, web aplikacije, oblačne platforme, mobilne aplikacije, igre, ugrađene programe i sustave strojnog učenja. Za razvoj raznih tipova aplikacija koristi se jedan zajednički SDK, Runtime i skup biblioteka.
- Omogućena je vezivanje aplikacije za API koji odgovara izdanju .NET 7, putem definiranja ciljne platforme "net7.0", na primjer, "net7.0". Za vezivanje specificnim API-jima za neke platforme, pri definiranju cilja može se detaljno odrediti vrsta platforme, na primjer, navođenjem "net7.0-android".
- Significantly improved support for ARM64 architecture and ongoing work towards achieving parity in application performance for .NET on x86 and ARM64 architectures. The runtime has enhanced efficiency in using the third-level cache on ARM64 systems. LSE instructions were engaged for memory access management from parallel threads, which resulted in a 45% reduction in latency. The library has added handlers that utilize vector types Vector64, Vector128, and Vector256, and functions EncodeToUtf8 and DecodeFromUtf8 have been rewritten based on vector instructions, providing an increase in their performance by up to 60% (for the NarrowUtf16ToAscii and GetIndexOfFirstNonAsciiChar functions, the performance gain reaches 35%). Overall, the speed of test execution on the ARM64 platform has increased by 10-60%.

- Improved support for the Linux platform, including the addition of .NET 6 packages in the default repositories of Ubuntu 22.04, as well as an optimized, compact, and ready-to-use Docker image for the quick deployment of .NET-based application containers.
- Added support for 64-bit IBM Power architecture (ppc64le).
- Introduced the .NET Upgrade Assistant tool to simplify the migration of old applications to .NET 6 or .NET 7 branches. The new version has expanded support for migrating applications from ASP.NET to ASP.NET Core, added analyzers and code fixers for WinForms, WPF, and class libraries, implemented support for executable file analysis, and added support for the UWP (Universal Windows Platform).
- Expanded capabilities for creating cloud-native applications and PaaS (Platform as a Service) platforms. Enabled the creation of applications packaged in isolated containers using the 'dotnet publish' command.
- Expanded tools for monitoring the state of applications and collecting metrics about their performance. New events and methods have been added for analyzing application activity and performance.
- U jeziku C# 11 uvedena je podrška za neobrađene string literalne izraze koji mogu uključivati posebne znakove bez potrebe za njihovim escapiranjem (takvi izrazi se označavaju sa tri navodnika). Predloženi su generički sučelja za matematičke funkcije i omogućena je definicija statičkih elemenata u virtualnim sučeljima, što je omogućilo primjenu metoda generičkog programiranja za izvođenje matematičkih operacija bez točnih informacija o tipu vrijednosti.
- Proširene su mogućnosti standardne biblioteke. Dodan je API System.Formats.Tar za rad s arhivima u Tar formatu. U funkcijama za rad s vremenom (TimeStamp, DateTime itd.) dodana je podrška za mikrosekunde i nanosekunde. U System.Text.Json implementirana je mogućnost upravljanja serijalizacijom i deserializacijom tipova .NET-a.
- U sučelju naredbene linije 'dotnet new' dodana je podrška za automatsko dovršavanje predložaka tipičnih projekata pritiskom na tipku Tab.
- U .NET SDK-u implementirana je mogućnost ograničavanja primjene isporučenih predložaka projekata, na primjer, moguće je definirati u kojim operativnim sustavima je dozvoljen predložak.
- U NuGet je dodan način centraliziranog upravljanja paketima, omogućavajući upravljanje zavisnostima odjednom za više projekata.
- Povećana je učinkovitost JIT kompajlera. Dodana je podrška za mehanizam OSR (On Stack Replacement) za promjenu koda već izvršenih metoda, što omogućava optimizacije u metodama čije izvršavanje traje dugo, bez čekanja na završetak trenutnog poziva (u TechEmpower testu zabilježeno je povećanje učinkovitosti obrade prvih zahtjeva za 10-30%).
- Povećana je učinkovitost optimizacije na bazi rezultata profiliranja koda (PGO — optimizacija vođena profiliranjem), koja uzima u obzir osobitosti definirane tijekom izvođenja programa.
- Dodana je podrška za kompajliranje u samostalne izvršne datoteke (Native AOT), u kojima je cijeli projekt izvorno kompajliran u strojni kod ciljne platforme bez upotrebe međukodova i bez primjene JIT-a.
Izvor: opennet.ru

