Your web browser is out of date. Update your browser for more security, speed and the best experience on this site.

.NET 8 preview 1 & 2

.NET 8 heeft zijn eerste previews uitgebracht! Ben jij ook benieuwd wat er allemaal nieuw en of veranderd is? Laten we samen eens kijken wat .NET 8 ons brengt.

Native ahead of time compilatie (aka. NativeAOT)

Bij de release van .NET 7 heeft het .NET team al een basis voorzien voor AOT in console apps. Deze feature zorgt ervoor dat je code op voorhand gecompileerd is en dus een pak performanter werkt op de host machine. Hier hebben ze dus op verder gebouwd met .NET 8, en de impact is zeer merkbaar! Applicaties met native AOT zijn tot wel 50% kleiner dan in .NET 7 voor een single executable met de .NET Runtime ingebouwd.

Buiten dat de '.exe' kleiner is zijn er nog enkele voordelen zoals:

  • Minder systeem geheugen nodig 💽. Doordat de code op voorhand gecompileerd is moet deze niet meer door de JIT (Just-In-Time) compiler. De JIT compiler gebruikt extra systeem geheugen om de vertaalde code op te slaan.
  • Verkorte opstarttijd ⏱️. Door de compileer stap uit te voeren op voorhand moet dit ook niet meer gebeuren bij het opstarten van de applicatie wat dus tijd uitspaart.
  • Betere batterijlevensduur 🪫. Ook hier weer hetzelfde verhaal. Doordat er niet meer gecompileerd hoeft te worden tijdens het uitvoeren van de applicatie wordt het host systeem minder belast en is er dus ook minder batterij/energie verbruik. Meer .NET apps voor je het piek tarief bereikt 😉.

On the topic of randomness

In deze versie van .NET hebben ze 2 nieuwe methodes toegevoegd die ons helpen te werken met willekeurigheid.

GetItems<T>()

De `GetItems<T>()` methode geeft ons de mogelijkheid om uit een gegeven lijst willekeurige items te nemen. We hoeven dus niet meer te dansen met nummertjes om die willekeurig gekozen items te verkrijgen! Zeer handig bij het ontwikkelen van spelletjes lijkt me.

Shuffle<T>()

Ooit een digitaal kaartspel willen ontwikkelen en de kaarten in het dek laten schudden? Dit kan nu eenvoudig met de `Shuffle<T>()` methode die dus de volgorde van items in je Span<T> door elkaar hutselt. Ik zie dit al gebruikt worden bij training data voor mijn machine learning modellen.

Meer validatie mogelijkheden

Er zijn uitbreidingen gemaakt aan de data annotaties in .NET 8. Zo kunnen we nu een verplicht veld markeren als verplicht zonder dat de default waarde toegelaten is. Bij de `range` attributen kunnen we nu aanduiden of de uiteindes wel of niet mee tellen. Verder krijgen we nu ook en `LengthAttribute` dat ons toelaat om zowel een minimum als een maximum lengte in te stellen, een `Base64StringAttribute` dat alle base64 strings toe laat en de `AllowedValues` en `DeniedValues` attributen die ons toe laten specifieke waardes wel of niet toe te laten.

Publish en pack

Voor zij die wel eens de `dotnet` cli gebruiken is er een veel gevraagde wijziging aangebracht aan de `publish` en `pack` commando's. Deze gebruiken nu standaard de release configuratie en dus moet je dat niet meer expliciet meegeven.

Er is nog meer

Dit zijn maar enkele van de nieuwigheden en aanpassingen die we krijgen bij de release van .NET 8 in Q3. Zin om meer .NET 8 nieuwtjes? Ik haalde mijn inspiratie uit de announcement devblog en de what's new pagina. Neem gerust zelf een kijkje en zie wat je nog kan verwachten van je favoriete ontwikkelplatform.

Axxes