Compania Microsoft a lansat versiunea platformei deschise .NET 9, creată prin unificarea produselor .NET Framework, .NET Core și Mono. Pe baza .NET 9, se pot crea aplicații multi-platforme pentru browsere, sisteme cloud, desktop, dispozitive IoT și platforme mobile, utilizând biblioteci unificate și un proces comun de construire, independent de tipul aplicației. Pachetele .NET SDK 9, .NET Runtime 9 și ASP.NET Core Runtime 9 sunt disponibile pentru Linux, macOS și Windows. .NET Desktop Runtime 9 este disponibil doar pentru Windows. Contribuțiile asociate proiectului sunt distribuite sub licența MIT.
În cadrul .NET se regăsesc Runtime cu compilatorul JIT RyuJIT, specificațiile API, bibliotecile WPF, Windows Forms, WinUI și Entity Framework, interfața de linie de comandă dotnet, precum și instrumente pentru dezvoltarea microserviciilor, bibliotecilor, aplicațiilor server, grafice și console. Se oferă separat un stivă pentru dezvoltarea aplicațiilor web ASP.NET Core 9.0, stratul ORM Entity Framework Core 9.0 (driveri disponibili, inclusiv pentru SQLite și PostgreSQL), biblioteca WPF 9 (Windows Presentation Foundation), framework-ul Windows Forms 9 pentru dezvoltarea GUI, platforma Aspire 9 pentru crearea aplicațiilor Cloud Native, framework-ul MAUI 9 pentru dezvoltarea interfețelor utilizator pe mai multe platforme, precum și versiunile limbajelor C# 13 și F# 9. Suportul pentru .NET 9.0 și C# 13 este inclus în editorul de cod liber Visual Studio Code.
Caracteristicile noului release:
- S-au efectuat mai mult de o mie de modificări legate de optimizarea performanței și de îmbunătățirea calității codului generat. Garbage collector-ul a fost modernizat, implementând și activând în mod implicit un mecanism de adaptare dinamică la dimensiunea aplicației (garbage collector-ul se corelează nu cu resursele disponibile în sistem, ci cu cantitatea de memorie necesară aplicației). Noua modalitate permite creșterea eficienței pe sistemele cu un număr mare de nuclee de procesor, dacă aplicația folosește relativ puțină memorie sau dacă necesitatea de memorie variază semnificativ în timpul execuției.
JIT compilarea a introdus noi optimizări bazate pe profilare (PGO), îmbunătățind gestionarea buclelor, desfășurarea inline și verificarea limitelor. În runtime-ul .NET s-a extins utilizarea instrucțiunilor vectoriale și s-a adăugat suport pentru extensiile Arm64 SVE și Intel AVX10. Codul pentru gestionarea excepțiilor a fost accelerat cu 50%. Pentru cod cu operațiuni de conversie de tip, cum ar fi „(IFoo)myFoo” și „myFoo is IFoo”, s-a înregistrat o creștere a performanței de până la 70%. Performanța unor metode din limbajul de interogare integrat în limbaj (LINQ), cum ar fi Take și DefaultIfEmpty, a crescut de până la 10 ori când se lucrează cu array-uri și colecții goale.
Performanța și eficiența metodei System.Text.Json au fost semnificativ îmbunătățite. În metoda JsonProperty.WriteTo a fost implementată posibilitatea de a scrie direct șiruri UTF8, eliminând alocarea de memorie inutilă. Operațiile de redimensionare a JsonObject au fost optimizate. În timpul testelor TechEmpower, care evaluează eficiența codului pentru gestionarea cererilor JSON, s-a observat o creștere a performanței cu 15% și o reducere a consumului de memorie cu 93% comparativ cu .NET 8.
- Runtime-ul a propus un nou model de atribute pentru activarea și reducerea funcționalităților în biblioteci.
- În C# 13, s-au extins funcționalitățile modulatorului „params”, permițând specificarea colecțiilor pe lângă array-uri. La inițializarea array-urilor, operatorul „^” este permis pentru a raporta indexul de la capătul array-ului (de exemplu, „buffer = { [^1] = 0, [^2] = 1,….}” va scrie 0 în ultimul element și 1 în penultimul). În iteratoare și metode async, utilizarea expresiilor ref și unsafe este permisă. A fost adăugată o nouă secvență de escape „\e”. Este permisă definirea interfețelor pentru tipurile „ref struct” și utilizarea tipurilor „ref struct” ca argumente în funcțiile generice. A fost propus un nou tip Lock pentru a stabili blocări în aplicații multi-threaded. Lock myLock = new(); void Concat(params List items) { lock (myLock) Console.WriteLine(string.Join(„\e[1mItem: \e[0m”, items)); }
- În F# 9 a fost adăugată suportul pentru tipuri care pot accepta valori null. În uniuni sunt implementate proprietăți generate automat „.Is*” (de exemplu, person.contact.IsEmail), care pot fi folosite pentru a verifica apartenența unei valori unui set. A fost adăugat suport pentru expresii computate goale („let xs = seq { }”). În directivele care încep cu simbolul „#”, este permisă specificarea de valori non-string (de exemplu, se poate scrie #nowarn 0070 în loc de #nowarn „0070”). În modulele List, Array și Seq au fost adăugate funcții pentru selectarea aleatorie sau amestecarea elementelor. Operațiile cu colecții sunt permise pentru liste (list și set).
- Capabilitățile stivei .NET Aspire au fost extinse, oferind un set de componente pentru crearea aplicațiilor care rulează în medii cloud. Au fost adăugate noi funcționalități pentru gestionarea resurselor și ciclului de viață al aplicațiilor. Instrumentele pentru colectarea telemetriei au fost extinse.
- A fost propus un nou set de abstracții C# pentru dezvoltarea aplicațiilor AI, utilizarea modelelor lingvistice mari, accesarea stocărilor vectoriale și interacțiunea cu serviciile AI. A fost introdus un nou tip „Tensor” și o colecție de metode pentru calcule și manipulare a datelor multidimensionale. Complementele pentru AI sunt distribuite sub formă de pachete System.Numerics.Tensors, Microsoft.Extensions.AI și Microsoft.Extensions.VectorData. Framework-ul ML.NET a fost actualizat pentru integrarea modelurilor de învățare automată în aplicații. A fost adăugată biblioteca Microsoft.ML.Tokenizers pentru codificarea și decodificarea textului în tokeni.
- În stiva pentru dezvoltarea aplicațiilor web ASP.NET Core, suportul pentru compilarea anticipată (ahead-of-time) a fost extins, capacitățile de monitorizare și urmărire au fost extinse, timpii de pornire au fost reduși și consumul de memorie a fost diminuat, iar funcționarea cu fișiere statice a fost optimizată. A fost adăugat un nou API pentru autentificare și autorizare. În Blazor, platforma pentru crearea aplicațiilor web în C#, au fost implementate noi șabloane pentru aplicații hibride și web.
- Capabilitățile framework-ului MAUI pentru dezvoltarea interfețelor utilizatorilor multiplatformă au fost extinse. Performanța a fost optimizată. Integrarea cu aplicațiile desktop și mobile a fost întărită. Au fost adăugate noi elemente de interfață, TitleBar și HybridWebView.
- În WPF (Windows Presentation Foundation) s-a extins suportul pentru teme și s-a adăugat suport pentru culori accentuate.
Sursa: opennet.ro
