Michal Strehovský
banner
migeel.sk
Michal Strehovský
@migeel.sk
I help building the .NET runtime at Microsoft. My tweets are my own opinions and/or shitposts, not the official party line.
Reposted by Michal Strehovský
Nice article on the state of native AOT with the release of .NET 10: code.soundaranbu.com/state-of-nat...
State of Native AOT in .NET 10
After 3 years since my previous article on Native AOT, let’s find out how far AOT compilation in .NET has come.
code.soundaranbu.com
November 13, 2025 at 9:27 PM
Sorry but the off-color corner of the new Word icon looks like a compression artifact when taskbar is set to small (and sorry but small & never combine & show labels is the only correct taskbar configuration on Windows, this is not macOS).
November 7, 2025 at 2:17 PM
Reposted by Michal Strehovský
Cosmos Gen3: The NativeAOT Era and the End of IL2CPU? valentin.bzh/posts/3 #dotnet #osdev #csharp
October 19, 2025 at 2:29 PM
Reposted by Michal Strehovský
After #flareon11 challenge 7, I got inspired to build tooling for #dotnet Native AOT reverse engineering.

As such, I built a #Ghidra Analyzer that can automatically recover most .NET types, methods and frozen objects (e.g., strings).

👉https://blog.washi.dev/posts/recovering-nativeaot-metadata/
April 18, 2025 at 9:17 PM
Reposted by Michal Strehovský
A small template to write self-contained Win32 services in C# with NativeAOT: gist.github.com/jbevain/b295...
Service.cs
GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
March 20, 2025 at 6:28 PM
Reposted by Michal Strehovský
I've published the third part of my series of articles about writing a .NET garbage collector in C#. In this one, we add a helper method to inspect the objects in memory, learning about thread modes and the DAC.

minidump.net/writing-a-ne...

#dotnet
Writing a .NET Garbage Collector in C#  -  Part 3
Using NativeAOT to write a .NET GC in C#. The third part adds some tooling to inspect the objects stored on the heap.
minidump.net
February 11, 2025 at 9:46 AM
Reposted by Michal Strehovský
After writing a profiler in C#, I've now published the first of a series of articles about how use C# to... write a .NET Garbage Collector. #dotnet
minidump.net/2025-28-01-w...
Writing a .NET Garbage Collector in C#  -  Part 1
First part of a series of articles about writing a .NET Garbage Collector in C# using NativeAOT. This part sets the expectations and setups the project, dealing with the first difficulties.
minidump.net
January 28, 2025 at 11:05 AM
Cool project: a hypervisor-based emulator for Windows x64 user-mode executables. One of my first thoughts upon seeing it - "I wonder if it's also possible to call the Windows hypervisor APIs from C#". github.com/x86matthew/W...
GitHub - x86matthew/WinVisor: WinVisor - A hypervisor-based emulator for Windows x64 user-mode executables using Windows Hypervisor Platform API
WinVisor - A hypervisor-based emulator for Windows x64 user-mode executables using Windows Hypervisor Platform API - x86matthew/WinVisor
github.com
January 24, 2025 at 7:52 AM
Reposted by Michal Strehovský
I published part 5 of my "Writing a .NET profiler in C#" series. All the foundations built in the previous articles have been moved to a library named Silhouette. In this new article, we finally have everything we need to write an actual profiler.

minidump.net/writing-a-ne...

#dotnet
Writing a .NET profiler in C#  -  Part 5
Part 5 of the series about using NativeAOT to write a .NET profiler in C#. We have all the foundations, we’re finally writing an actual profiler.
minidump.net
January 7, 2025 at 9:35 AM
Reposted by Michal Strehovský
Finally had time over the holidays to realize a long-standing dream of mine: a hex editor that knows about the PE file and .NET metadata format. You can click any byte and it will show you which data structure it is in the tree. Every byte is covered.

The parser is at github.com/KirillOsenko...
December 29, 2024 at 8:08 PM
Reposted by Michal Strehovský
got my custom sokol-backed c# game engine zinc compiling to wasm using nativeaot-llvm! and for anyone else headed in a similar direction, I spent some time writing up what it took, what bugs I encountered, etc! give it a read here

#gamedev #zinc #csharp

kylekukshtel.com/csharp-wasm-...
So You Want To Compile Your C# Game Engine To The Web With WASM - k-hole
Diving into the NativeAOT-LLVM compile chain to make my game engine work on the web
kylekukshtel.com
December 29, 2024 at 2:43 PM
Forgot that the docs are here: www.nuget.org/packages/siz.... To install, simply `dotnet tool install sizoscope --global` but you'll want to read the docs to find out how to create the files this tool operates on.
December 19, 2024 at 12:42 PM
1/3 New version of sizoscope, my tool to analyze size of .NET native AOT executables, is out! It can now show you sizes of some of the blobs within the executable just to give a more complete picture.
December 19, 2024 at 8:13 AM
Reposted by Michal Strehovský
Invoke Mechanism for the .NET CLR, etc. - George Bosworth - 2001/09 www.youtube.com/watch?v=Uimh...
.NET Workshop - Invoke Mechanism for the .NET CLR, etc. - George Bosworth, Nick Benton - 2001/09
YouTube video by WalkingCat
www.youtube.com
December 14, 2024 at 1:46 PM
Thanksgiving is approaching in the US and that means time with family. People in your family were presented with this dialog in the past and probably just clicked the button Google wanted them to click. Ask them if they want to browse the web, or if they want web to browse them.
November 27, 2024 at 10:01 PM
If you're into low level .NET, you should give @xoofx.mastodon.social.ap.brid.gy a follow!
November 26, 2024 at 8:26 AM
JIT compiled .NET will often be faster than AOT compiled .NET thanks to dynamic PGO. But AOT compilation has some tricks up the sleeve too. In .NET 9, the TechEmpower JSON benchmark ends up a bit faster with AOT.
November 26, 2024 at 8:18 AM
Reposted by Michal Strehovský
The C# Community Discord is putting on another virtual conference, and I'll be talking performance. SIMD content guaranteed. Nov 24 @ 17:30 UTC

www.youtube.com/watch?v=T4Ao...
Solution2: C# Is Faster Than C++!!!!!1!!! with Clinton Ingram
YouTube video by .NET Foundation
www.youtube.com
November 22, 2024 at 3:14 AM
1/4 Life hack: uninstalling the Notepad app in Windows 11 gives you back old notepad.exe that starts faster and uses less memory. This Notepad is going to be a bit cursed and registry hacks are needed to uncurse it. 👇
November 20, 2024 at 8:53 PM
Last time I got free stuff from Microsoft as an employee was when I got a T-shirt for shipping .NET 6.
Microsoft created a unique purple and blue Surface colorway for employees that worked on the Copilot+ PC launch. This won’t be available to purchase, just something for some Microsoft employees. It looks great in person 👍
November 19, 2024 at 7:44 AM
The .NET native AOT compiler used to have an unsupported mode where it broke all reflection for size savings. I added the mode in 2019 when Hello World was 4 MB and with broken reflection only 1 MB. It was a good goalpost. In .NET 9 they're both ~1 MB: goalpost reached! github.com/dotnet/runti...
November 18, 2024 at 7:30 AM
Reposted by Michal Strehovský
Game Engine Black Book: DOOM v1.2
Game Engine Black Book: WOLFENSTEIN 3D v2.2
The Book of CP-System v1.0
Free pdfs, high-quality 80g premium color prints, PlayStore, and source code are now available.
fabiensanglard.net/three_books_...
November 17, 2024 at 6:14 AM
My Deep dive on native AOT talk is now available for on-demand viewing! www.youtube.com/watch?v=Gmn-...
Deep dive on native AOT
YouTube video by dotnet
www.youtube.com
November 15, 2024 at 7:38 PM
Starting in 10 hours from now here, available on-demand later: www.youtube.com/watch?v=Gmn-...
November 15, 2024 at 7:21 AM
1/N When the .NET native AOT compiler compiles your app to native code, it needs to perform whole program analysis to figure out all parts of your program. Reflection kind of throws a wrench in that because some reflection is really hard to reason about statically.
November 13, 2024 at 10:45 PM