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.

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

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

github.com

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

Bild

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/

Bild

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

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

Screenshot of a hex editor with a PE file open, on the left there's a tree with the headers, sections and other parts of the file format. On the right there's a typical table of bytes in hex.

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

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.

Bild

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.

Enhanced ad privacy dialog in Google Chrome

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.

Screenshot of TechEmpower JSON benchmark showing 2,921,958 rps with AOT and 2,920,527 rps with JIT.

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

Bild

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

"Grant Gustin Next To Oliver Queen's Grave" meme with the name on the gravestone replaced to read "Reflection-free mode 2019 - 2024".

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.