Michal Strehovský's Avatar

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.

671
Followers
120
Following
88
Posts
18.10.2023
Joined
Posts Following

Latest posts by Michal Strehovský @migeel.sk

Very cool!

28.12.2025 22:09 👍 0 🔁 0 💬 0 📌 0
Post image

.NET 11 (NativeAOT) on Windows ARM32!!

21.12.2025 00:04 👍 12 🔁 3 💬 0 📌 0
Sokol.NET Examples - Interactive WebAssembly Showcase Try 36 interactive WebAssembly examples showcasing Sokol.NET's cross-platform graphics capabilities. Run directly in your browser!

Samples all run in the browser with WASM: elix22.github.io/Sokol.NET/

08.12.2025 07:08 👍 4 🔁 1 💬 0 📌 0
GitHub - elix22/Sokol.NET: Cross-platform graphics framework for C# with .NET NativeAOT | Desktop • Mobile • Web | Direct3D • Metal • OpenGL • WebGL Cross-platform graphics framework for C# with .NET NativeAOT | Desktop • Mobile • Web | Direct3D • Metal • OpenGL • WebGL - elix22/Sokol.NET

Found Sokol.NET - C# bindings for the Sokol crossplat gfx framework. If you haven't heard about Sokol, it's a C header-only library to build crossplat gfx/audio apps (games). Sokol.NET wraps it for C# (Win/Linux/Mac/Android/iOS/WASM). Tons of samples. Also native AOT: github.com/elix22/Sokol...

08.12.2025 07:08 👍 12 🔁 4 💬 1 📌 0

Congratulations!!!

03.12.2025 12:30 👍 1 🔁 0 💬 0 📌 0
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.

Nice article on the state of native AOT with the release of .NET 10: code.soundaranbu.com/state-of-nat...

13.11.2025 21:27 👍 30 🔁 10 💬 0 📌 0

:(. Well at least they added back (an option) to see seconds to the taskbar clock flyout. Maybe proper small icons will come back next.

07.11.2025 23:02 👍 2 🔁 0 💬 0 📌 0

I really hope the Windows UX team will not go this far. Clearly they are mac users so everything is possible

07.11.2025 14:35 👍 4 🔁 0 💬 0 📌 0
Post image

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).

07.11.2025 14:16 👍 7 🔁 0 💬 2 📌 0

How? Typescript to CIL to native? Go for it. You can also just use stock native AOT. The advantage of bflat is really just no friction crosscompilation.

01.11.2025 12:57 👍 2 🔁 1 💬 1 📌 0
Post image

Cosmos Gen3: The NativeAOT Era and the End of IL2CPU? valentin.bzh/posts/3 #dotnet #osdev #csharp

19.10.2025 12:29 👍 10 🔁 4 💬 0 📌 1
Preview
.NET Native release and support policy | .NET Learn about .NET Native support and lifecycle policies.

You'd need to debug the compiler. Either try to find the thing that first triggered it yourself or try reaching out to the email address listed at dotnet.microsoft.com/en-us/platfo.... Make sure you're using the latest version of the .NET Native package.

10.07.2025 09:17 👍 0 🔁 0 💬 1 📌 0
Preview
Learn to create a Hello World UWP app with XAML and .NET 9 - UWP applications Use XAML with C# to create a simple Hello, world app that targets the Universal Windows Platform (UWP) and .NET 9 on Windows.

I recommend migrating to .NET 9, the UWP support is there now: learn.microsoft.com/en-us/window...

09.07.2025 04:14 👍 0 🔁 0 💬 1 📌 0
Preview
UWP Native compiler error · Issue #2212 · StackExchange/StackExchange.Redis I have a UWP project When I want build this solution in Release Configuration I got a below error 1>C:\Users\ssoroosh\.nuget\packages\microsoft.net.native.compiler\2.2.12-rel-31116-00\tools\Microso...

Usually this is some NuGet that targets NetStandard2.0 (so it can be consumed from .NET Native) but uses a very recent language version (NetStandard 2.0 only officially supports up to C# 7.4; things can be hacked to allow higher version but it's unsupported). E.g. github.com/StackExchang...

09.07.2025 04:14 👍 0 🔁 0 💬 2 📌 0

I'm glad you like them! I don't post on medium anymore so the latest things are at migeel.sk

19.06.2025 13:40 👍 0 🔁 0 💬 0 📌 0

I miss the early days of .NET

06.06.2025 12:19 👍 3 🔁 0 💬 0 📌 0

Ah, rookie mistake, this is how you get a very cursed notepad.exe: bsky.app/profile/mige...

29.05.2025 21:39 👍 1 🔁 0 💬 0 📌 0

If you don't want to retrain muscle memory and don't care for the new notepad: bsky.app/profile/mige...

29.05.2025 21:37 👍 1 🔁 0 💬 0 📌 0
Post image

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/

18.04.2025 21:17 👍 14 🔁 3 💬 0 📌 0
Preview
Service.cs GitHub Gist: instantly share code, notes, and snippets.

A small template to write self-contained Win32 services in C# with NativeAOT: gist.github.com/jbevain/b295...

20.03.2025 18:28 👍 18 🔁 5 💬 1 📌 0

Ak bude mať Rusko spoločnú hranicu s Moldavskom tak tie mapy dlho aktuálne nebudú.

06.03.2025 12:55 👍 1 🔁 0 💬 0 📌 0

The default value for this property in the SDK is just wrong.

04.03.2025 23:35 👍 2 🔁 0 💬 0 📌 0
Preview
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.

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

11.02.2025 09:46 👍 16 🔁 4 💬 0 📌 0

Looking forward to read more about your GC adventures!

29.01.2025 11:28 👍 1 🔁 0 💬 1 📌 0

10/ Then add a MyGC_ prefix to all your UnmanagedCallersOnly methods and they should get exported without the prefix.

29.01.2025 06:05 👍 0 🔁 0 💬 1 📌 0

9/ You can write an MSBuild task that takes $(ExportsFile), reads all lines in it, and Regex.Replace(line, @"MyGC_(\w+)", "$1=MyGC_$1") and write back to $(ExportsFile). Have the MSBuild target run BeforeTargets=LinkNative.

29.01.2025 06:05 👍 0 🔁 0 💬 1 📌 0

8/ We want this instead:
EXPORTS
GC_Initialize=MyGC_GC_Initialize

29.01.2025 06:05 👍 0 🔁 0 💬 1 📌 0

7/ By default the DEF file that native AOT compiler creates for UnmanagedCallersOnly("MyGC_GC_Initialize") looks like this:

EXPORTS
MyGC_GC_Initialize

29.01.2025 06:05 👍 0 🔁 0 💬 1 📌 0

6/ That's possible solution one. Possible solution two involves munging the .def file that native AOT compiler creates so that we can use "If the name that you export differs from the name in the DLL, specify the export's name" from the EXPORTS docs.

29.01.2025 06:05 👍 0 🔁 0 💬 1 📌 0

5/ Like this:

EXPORTS
GC_Initialize=MyNativeAotDll.MyGC_Initialize

Put this in a shim.def file and run link.exe like this: `link /dll /def:shim.def /out:shim.dll /noentry`. This produces a DLL with GC_Initialize export that is forwarded to MyGC_Initialize in MyNativeAotDll.

29.01.2025 06:05 👍 0 🔁 0 💬 1 📌 0