25 Jan 2017
Delegates are a fundamental part of the .NET runtime and whilst you rarely create them directly, they are there under-the-hood every time you use a lambda in LINQ (
=>) or a
Action<T> to make your code more functional. But how do they actually work and what’s going in the CLR when you use them?
13 Jan 2017
Over the last few months there have been several blog posts looking at GC pauses in different programming languages or runtimes. It all started with a post looking at the latency of the Haskell GC, next came a follow-up that compared Haskell, OCaml and Racket, followed by Go GC in Theory and Practice, before a final post looking at the situation in Erlang.
20 Dec 2016
14 Dec 2016
It’s common knowledge that reflection in .NET is slow, but why is that the case? This post aims to figure that out by looking at what reflection does under-the-hood.
12 Dec 2016
This post is completely inspired by (or ‘copied from’ depending on your point of view) a recent post titled JAVA PAPERS (also see the HackerNews discussion). However, instead of looking at Java and the JVM, I’ll be looking at references to research papers in the .NET language, runtime and compiler source code.
23 Nov 2016
A little over 2 years ago Microsoft announced that they were open sourcing large parts of the .NET framework and as Scott Hanselman said in his recent Connect keynote, the community has been contributing in a significant way:
26 Oct 2016
Well it turns out that it’s a really nice example of collaboration between the main parts of the .NET runtime, here’s a list of all the components involved:
03 Oct 2016
dotnet CLI tooling comes with several built-in cmds such as
test, but it turns out it’s possible to add your own verb to that list.
29 Sep 2016
What’s the problem with LINQ? As outlined by Joe Duffy, LINQ introduces inefficiencies in the form of hidden allocations, from The ‘premature optimization is evil’ myth:
19 Sep 2016
In the CLR strings are stored as a sequence of UTF-16 code units, i.e. an array of
char items. So if we have the string ‘testing’, in memory it looks like this: