Společnost Microsoft představila vydání otevřené platformy .NET 9, vytvořené díky sjednocení produktů .NET Framework, .NET Core a Mono. Na základě .NET 9 lze vytvářet multiplatformní aplikace pro prohlížeče, cloudové systémy, desktopové počítače, zařízení IoT a mobilní platformy, přičemž se používají jednotné knihovny a společný proces sestavení nezávislý na typu aplikace. Sestavení .NET SDK 9, .NET Runtime 9 a ASP.NET Core Runtime 9 jsou vytvářena pro Linux, macOS a Windows. .NET Desktop Runtime 9 je dodáváno pouze pro Windows. Související pracovní projekty jsou šířeny pod licencí MIT.
.NET zahrnuje Runtime s JIT kompilátorem RyuJIT, specifikace API, knihovny WPF, Windows Forms, WinUI a Entity Framework, příkazový řádek dotnet, a také nástroje pro vývoj mikroslužeb, knihoven, serverových, grafických a konzolových aplikací. Samostatně je dodáván stack pro vývoj webových aplikací ASP.NET Core 9.0, ORM vrstva Entity Framework Core 9.0 (existují ovladače včetně SQLite a PostgreSQL), knihovna WPF 9 (Windows Presentation Foundation), framework Windows Forms 9 pro vývoj GUI, platforma Aspire 9 pro tvorbu aplikací Cloud Native, framework MAUI 9 pro vývoj multiplatformních uživatelských rozhraní, stejně jako vydání jazyků C# 13 a F# 9. Podpora .NET 9.0 a C# 13 je zahrnuta ve volném editoru kódu Visual Studio Code.
Vlastnosti nového vydání:
- Bylo provedeno více než tisíc změn souvisejících s optimalizací výkonu a zlepšením kvality generovaného kódu. Byla modernizována správa paměti, která implementuje a využívá výchozí způsob dynamické adaptace na velikost aplikace (správa paměti není vázána na dostupnost systémových prostředků, ale na to, kolik paměti aplikace vyžaduje). Nový režim umožňuje zlepšit efektivitu práce na systémech s velkým počtem procesorových jader, pokud aplikace využívá relativně málo paměti nebo pokud je potřeba paměti během provozu výrazně proměnlivá.
Do JIT kompilátoru byly přidány nové optimalizace založené na profilování (PGO), zlepšena zpracování cyklů, inline rozvinutí a kontrola hranic. V .NET runtime bylo rozšířeno použití vektorových instrukcí a přidána podpora rozšíření Arm64 SVE a Intel AVX10. Zpracování výjimek bylo zrychleno o 50 %. Pro kód s operacemi převodu typů, jako je „(IFoo)myFoo“ a „myFoo is IFoo“, bylo zaznamenáno zvýšení výkonu až o 70 %. Výkon některých metod jazyka pro zpracování dotazů LINQ (Language-Integrated Query), jako jsou Take a DefaultIfEmpty, vzrostl až 10krát při práci s prázdnými poli a kolekcemi.
Byla výrazně zvýšena výkonnost a efektivita metody System.Text.Json. V metodě JsonProperty.WriteTo byla implementována možnost přímého zápisu řetězců UTF8, což vylučuje zbytečné alokace paměti. Operace změny velikosti JsonObject byly optimalizovány. Při testech TechEmpower, hodnotících efektivitu kódu pro zpracování JSON dotazů, bylo ve srovnání s .NET 8 zaznamenáno zvýšení výkonu o 15 % a snížení spotřeby paměti o 93 %.
- Runtime nabízí nový model atributů pro aktivaci a ořezávání funkcionality v knihovnách.
- V jazyce C# 13 byly rozšířeny možnosti použití modifikátoru „params“, kde kromě polí je povoleno uvádění kolekcí. Při inicializaci polí je povoleno použití operátoru „^“ pro načítání indexu od konce pole (například „buffer = { [^1] = 0, [^2] = 1,….}“ zapíše 0 do posledního prvku a 1 do předposledního). V iterátorech a asynchronních metodách je povoleno použití výrazů ref a unsafe. Byla přidána nová escape sekvence „\e“. Je povoleno definování rozhraní pro typy „ref struct“ a použití typů „ref struct“ jako argumentů v generických funkcích. Byl navržen nový typ Lock pro nastavení zámků v vícevláknových aplikacích. Lock myLock = new(); void Concat(params List items) { lock (myLock) Console.WriteLine(string.Join("\e[1mItem: \e[0m", items)); }
- V jazyce F# 9 byla přidána podpora typů, které mohou nabývat hodnoty null. V uních byly implementovány automaticky generované vlastnosti „.Is*“ (například person.contact.IsEmail), které lze použít k ověření příslušnosti hodnoty mnohosti. Byla přidána podpora prázdných vypočítaných výrazů („let xs = seq { }“). V direktivách začínajících znakem „#“ je povoleno uvádění neřetězcových hodnot (například #nowarn 0070 místo #nowarn „0070“). Do modulů List, Array a Seq byly přidány funkce pro náhodný výběr nebo promíchání prvků. K seznamům (list a set) byla povolena aplikace operací s kolekcemi.
- Byly rozšířeny možnosti stacku .NET Aspire, který poskytuje sadu komponent pro vytváření aplikací spuštěných v cloudových prostředích. Byly přidány nové možnosti pro správu zdrojů a životního cyklu aplikací. Byly rozšířeny nástroje pro sběr telemetrie.
- Byla navržena nová sada abstrakcí C# pro vývoj AI aplikací, využití velkých jazykových modelů, přístup k vektorovým úložištím a interakci s AI službami. Byl představen nový typ „Tensor“ a kolekce metod pro výpočty a manipulaci s vícerozměrnými daty. Doplňky pro AI jsou distribuovány ve formě balíčků System.Numerics.Tensors, Microsoft.Extensions.AI a Microsoft.Extensions.VectorData. Byla aktualizována rámcová struktura ML.NET určená pro integraci modelů strojového učení do aplikací. Byla přidána knihovna Microsoft.ML.Tokenizers pro kódování a dekódování textu na tokeny.
- Ve stacku pro vývoj webových aplikací ASP.NET Core byla rozšířena podpora předkompilace (ahead-of-time), byly rozšířeny možnosti monitorování a trasování, zkrácena doba spuštění a snížena spotřeba paměti, byla optimalizována práce se statickými soubory. Byl přidán nový API pro autentizaci a autorizaci. V Blazor, platformě pro vytváření webových aplikací v jazyce C#, byly implementovány nové šablony pro hybridní a webové aplikace.
- Byly rozšířeny možnosti frameworku MAUI pro vývoj multiplatformních uživatelských rozhraní. Byla provedena optimalizace výkonu. Byla posílena integrace s desktopovými a mobilními aplikacemi. Byly přidány nové prvky uživatelského rozhraní TitleBar a HybridWebView.
- Ve WPF (Windows Presentation Foundation) byla rozšířena podpora pro motivy a přidána podpora pro akcentové barvy.
Zdroj: opennet.ru
