HTTP/2 Header Frames

I have recently come across a GitHub issue 'Allow the encoder to split headers across frames' in the dotnet/aspnetcore repository, that made me look into and understand some of the details how HTTP/2 encodes headers.

In this post I will summarize my key findings on how ASP.NET Core writes these headers today. In this post I use version ASP.NET Core 8 with .NET 8. My findings are based on the current state of the source code and the corresponding RFC7540.

HTTP/2

Here are my key learnings:

Find out more


Collection Expressions

C# 12 introduced a new language feature: collection expressions or collection literal. It provides a neat way to initialize collections: enumerables, lists, spans, etc.

An example of using the collection expressions:

int[] a = [6, 7];

In this case the compiler generates code for variable a referencing an array with two elements: 6 and 7.

Find out more


Preview .NET with BenchmarkDotnet

In a previous post I explored how someone can setup a custom .NET SDK and Runtime for development. It consists of a script downloads the .NET runtime to a custom folder, another script that sets up environment variables to use the given .NET version with Visual Studio and a global.json / nuget.config for build time dependencies with Visual Studio and the .NET CLI.

In this post I evolve the previous setup:

  • Install and use an alpha release of .NET 10 Runtime with .NET 9 SDK.

  • Setup BenchmarkDotNet performance measurements to use .NET 10

Update the runtime to .NET 10

Find out more


Setup Local Preview .NET

In this blog post I will detail how to setup early preview versions of .NET for development. My findings apply for .NET 9, but the methods should be applicable in general to most versions of .NET (considering version specific details).

While a preview version of .NET can be downloaded at any time from the dotnet website, installing the forthcoming preview version requires somewhat more investment.

The findings of this post are based on ASP.NET Core, which uses a similar, but more complex approach in its restore.cmd command. This blog post will focus on the key components to have the latest SDK or a custom runtime available.

The preview versions of .NET can heavily change. Features may get added, removed, changed, or their performance might significantly improve. It is always suggested to choose and use an LTS or STS release for production applications. However, in certain cases a developer might want to test the latest preview features, in which case the methods described in this blog post will help.

Find out more


Vectorized Subset Sum

In this series I am implementing Dynamic Programming Katas with vectorized solutions.

The first post explored the Vectorized Longest Increasing Subsequence problem, and in the second post I dived into the Checkerboard problem.

In this post I will explore a version of the Subset sum problem. I will not focus on the most efficient algorithm or implementation for this problem. Instead, I will present the most common approach to solve the problem using Dynamic Programming and then present a vectorized version of the algorithm.

Introduction

Find out more