Usr6 Posted January 24, 2018 Report Posted January 24, 2018 It all started with a tweet, which seemed to resonate with people: The aim was to list blogs that specifically cover .NET internals at a low-level or to put it another way, blogs that answer the question how does feature ‘X’ work, under-the-hood. The list includes either typical posts for that blog, or just some of my favourites! Note: for a wider list of .NET and performance related blogs see Awesome .NET Performance by Adam Sitnik I wouldn’t recommend reading through the entire list, at least not in one go, your brain will probably melt. Picks some posts/topics that interest you and start with those. Finally, bear in mind that some of the posts are over 10 years old, so there’s a chance that things have changed since then (however, in my experience, the low-levels parts of the CLR are more stable). If you want to double-check the latest behaviour, you’re best option is to read the source! Community or Non-Microsoft Blogs These blogs are all written by non-Microsoft employees (AFAICT), or if they do work for Microsoft, they don’t work directly on the CLR. If I’ve missed any interesting blogs out, please let me know! Special mention goes to Sasha Goldshtein, he’s been blogging about this longer than anyone!! All Your Base Are Belong To Us by Sasha Goldshtein (@goldshtn) Generic Method Dispatch Inspecting Local Root Lifetime Virtual Method Dispatch and Object Layout Changes in CLR 4.0 Runtime Representation of Generics—Part 2 Revisiting Value Types vs. Reference Types Dissecting the code by Sergey Teplyakov (@STeplyakov) (M/S) Garbage collection and variable lifetime tracking Managed object internals, Part 1. The layout (Also part 2, part 3 and part 4) To box or not to Box? That is the question! Dissecting the new() constraint in C#: a perfect example of a leaky abstraction Adam Sitnik - .NET Performance and Reliability by Adam Sitnik (@SitnikAdam) (M/S) Value Types vs Reference Types Span Pooling large arrays with ArrayPool Collecting Hardware Performance Counters with BenchmarkDotNet Disassembling .NET Code with BenchmarkDotNet Andrey Akinshin’s blog by Andrey Akinshin (@andrey_akinshin) Measuring Performance Improvements in .NET Core with BenchmarkDotNet (Part 1) Blittable types DateTime under the hood Stopwatch under the hood TooSlowException by Konrad Kokosa (@konradkokosa) .NET Core – compilation, running, debugging How does Object.GetType() really work? Zero Garbage Collector for .NET Core The Ultimate .NET Experiment – open source project a little bit of programming by Marcin Juraszek (@mmjuraszek) (M/S) String.Split and int[] allocations Adding Matt operator to Roslyn - Syntax, Lexer and Parser (Part 2 - Binder, Part 3 - Emitter) yizhang82’s blog by Yi Zhang (@yizhang82) (M/S) Sharing .NET generic code under the hood C# value type boxing under the hood Embedding CoreCLR in your C/C++ application Timur Guev’s posts on {coding}Sight by Timur Guev (@timyrik200), also appears to have his own blog Math and Programming (in Russian) The origin of GetHashCode in .NET Aspects of Strings in .NET StringBuilder: the Past and the Future The mole is digging by Alexandr Nikitin (@nikitin_a_a) .NET Generics under the hood Hoisting in .NET Explained Hoisting in .NET Examples My Coding Place by Dudi Keleti (@dudi_ke) Object header get complicated IL Call Vs. Callvirt Instruction (Part 2) Value type methods – call, callvirt, constrained and hidden boxing Alexandre Mutel’s blog by Alexandre Mutel (@xoofx) A new stackalloc operator for reference types with CoreCLR and Roslyn Struct inheritance in C# with CoreCLR and Roslyn Microsoft Engineers The blogs below are written by the actual engineers who worked on, designed or managed various parts of the CLR, so they give a deep insight (again, if I’ve missed any blogs out, please let me know): Maoni’s WebLog - CLR Garbage Collector by Maoni Stephens Suspending and resuming threads for GC Allocating on the stack or the heap? Large Object Heap cbrumme’s WebLog by Christopher Brumme Memory Model Value Types Virtual and non-virtual A blog on coding, .NET, .NET Compact Framework and life in general.. by Abhinaba Basu .NET Just in Time Compilation and Warming up Your System Trivia: How does CLR create an OutOfMemoryException Back to basic: Series on dynamic memory management Joel Pobar’s CLR weblog - CLR Program Manager: Reflection, LCG, Generics and the type system.. by Joel Pobar CLR Type System notes CLR Generics and code sharing Explanatory notes on Rotor’s Garbage Collector CLR Profiling API Blog - Info about the Common Language Runtime’s Profiling API by David Broman (slightly niche, but still worth a read) Creating an IL-rewriting profiler Type Forwarding Metadata Tokens, Run-Time IDs, and Type Loading Books Finally, if you prefer reading off-line there are some decent books that discuss .NET Internals (Note: all links are Amazon Affiliate links): CLR via C#, 4ed by Jeffrey Richter Shared Source CLI Essentials Paperback by David Stutz, Ted Neward, Geoff Shilling Writing High-Performance .NET Code Paperback by Ben Watson Pro .NET Performance: Optimize Your C# Applications by Sasha Goldshtein All the books listed above I’ve bought copies of and read cover-to-cover, they’re fantastic resources. I’ve also been recently recommend the 2 books below, they look good and certainly the authors know their stuff, but I haven’t read them yet: The Common Language Infrastructure Annotated Standard by James S. Miller, Susann Ragsdale Essential .NET, Volume I: The Common Language Runtime by Don Box, Chris Sells Sursa: http://mattwarren.org/2018/01/22/Resources-for-Learning-about-.NET-Internals/ 1 1 Quote