RSSAmplifier

Blog

Kevin Montrose

kevinmontrose.comRSS feed ↗10 posts

Latest posts

A (Nearly) Branchless RESP Request Parser

I’ve been messing around with Garnet at work a lot lately a Redis compatible, highly scalable, mostly C# remote cache. This brought an old idea back to mind, and I decided to actually hash it out this time can you write a branchless RESP request parser, and would it be worth it? Framing [ ]

Thoughts On Truth In Our Time

Anybody else been thinking about the truth recently? Not “why doesn’t everyone agree with me, the obviously correct person” but how do people learn something, decide it is true, and how do falsehoods become truths to so many? Anyone? Anyone? Bueller? Obviously the 2024 election, shall we say, heightened my concerns but I’ve been [ ]

Another Optimization Exercise – Packing Sparse Headers

I recently came across an interesting problem at work, and found it was a good excuse to flex some newer .NET performance features (ref locals, spans, and intrinsics). So here’s part 2 of a series that started 6+ years ago. The Problem You’ve got a service that accepts HTTP requests, each request encoding many of [ ]

Overthinking CSV With Cesil: .NET 5

The latest release of Cesil, 0.9.0, now targets .NET 5. Along with some free performance, .NET 5 and C# 9 bring some new features which Cesil now either uses or supports. Free Performance It’s no secret that each new .NET Core release has come with some performance improvements, and even though .NET 5 has dropped [ ]

Overthinking CSV With Cesil: Source Generators

As of 0.8.0, Cesil now has accompanying Source Generators (available as Cesil.SourceGenerators on Nuget). These allow for Ahead-Of-Time (AOT) generation of serializers and deserializers, allowing Cesil to be used without runtime code generation. What the heck is a Source Generator? Released as part of .NET 5 and C# 9, Source Generators are a really cool [ ]

Overthinking CSV With Cesil: Performance

It’s time to talk about Cesil’s performance. Now, as I laid out in an earlier post, Cesil’s raison d etre is to be a “modern” take on a .NET CSV library not to be the fastest library possible. That said, an awful lot of .NET and C#’s recent additions have had an explicit performance focus. [ ]

Overthinking CSV With Cesil: Open Source Update

It s been about 4 months since I started this series on Cesil. In that I ve published 12 blog posts and made numerous updates to Cesil. Having just released a new version (0.6.0), it feels like a good time to do a small retrospective on some of the less technical parts of my efforts. First, the [ ]

Overthinking CSV With Cesil: Documentation in 2020

It goes without saying that a library’s documentation is important, and Cesil is no exception. Cesil has two broad kinds of documentation: handwritten wiki documentation, and automatically generated reference documentation. The handwritten documentation is all in a GitHub Wiki, which means it’s basically just a bunch of markdown files sitting in a git repository. This [ ]

Overthinking CSV With Cesil: Testing And Code Coverage in 2020

I’ve always been a proponent of extensive test suites, especially for libraries. Accordingly, Cesil has a lot of tests 665 at time of writing. I also decided to set some code coverage goals: covering 90+% of lines and 80+% of branches. None of this is new to modern .NET, though there have been some [ ]

Overthinking CSV With Cesil: Adopting Nullable Reference Types

In the previous post I went over how Cesil has adopted all the cool, new, C# 8 things except for the coolest new thing, nullable reference types. C#’s answer to the billion dollar mistake, I treated this new feature differently from all the rest I intentionally delayed adopting it until Cesil was fairly [ ]