Advertisement · 728 × 90

Posts by Sebastian Schöner

Post image

I wanted Zig's nice toys. My DLL hot reload setup wanted an ABI. We met somewhere in the middle, and now I have the worst of both worlds. Return of the Header File 2, now live: blog.s-schoener.com/2026-04-16-z...

5 days ago 6 0 0 0

Thanks. It's nice to hear that. While I don't necessarily just write for others, I wasn't sure how much anyone else actually cares about this topic in particular :)

1 week ago 1 0 0 0
Preview
What I learned from improving Unity's Mono codegen, part 2 | Sebastian Schöner My current sidequest is to improve the codegen for Unity games (and the editor) running on Mono. This post is a continuation of last week’s post about this journey. To LLVM or not to LLVM? The first d...

More learnings from turning Mono into an optimizing compiler. This time: Why not LLVM? Was it a good idea to start with x64 peepholes? Plus some thoughts about aliasing. blog.s-schoener.com/2026-04-13-m...

1 week ago 8 0 1 0
Preview
What I learned from improving Unity's Mono codegen, part 1 | Sebastian Schöner My current sidequest is to improve the codegen for Unity games (and the editor) running on Mono. This post and the next two are about this process and what I learned. In this post, I am going to give ...

Why does a tiny float4 function blow up into 400 lines of assembly on Mono? Value types, lowering, and lots of unnecessary copies. I wrote up a step-by-step walkthrough from C# to IR to final codegen. blog.s-schoener.com/2026-04-07-m...

2 weeks ago 7 3 0 0
Preview
Better codegen for Unity games on Mono | Sebastian Schöner tl;dr: I am tinkering with improved codegen for Mono to get better performance in the Unity Editor and in Unity games that ship with Mono as their runtime. Not done yet, but please do get in touch if ...

I have spent some time on a little project to improve codegen for Unity's Mono runtime, which is used in the editor and is even what some games ship on: blog.s-schoener.com/2026-03-31-b...

3 weeks ago 10 0 0 0
Preview
I miss header files | Sebastian Schöner I am currently on a side quest to write some Zig code, or more specifically: take some C++ code that is written in a I-can’t-believe-it’s-not-C style and turn it into Zig. This entire adventure starte...

How trying out Zig made me miss header files
blog.s-schoener.com/2026-03-27-h...

3 weeks ago 10 0 0 0

Yes! There's so much code you know that *should* be written, but writing it? Urgh. I currently have an agent binary searching through compiler failures by tracing what optimizations fire in what methods and then deny-listing half of them. The idea is obvious, but implementing it by hand? No thanks!

1 month ago 1 0 0 0
Preview
It has never been about the typing | Sebastian Schöner My friend Stefan Reinalter is asking: I find this extremely worrying, with many of people I respect saying things like “I no longer write code” or “let LLMs do it”. Why did you start programming? Was ...

It has never been about the typing

blog.s-schoener.com/2026-03-18-n...

1 month ago 6 1 1 0
Advertisement

I'm flattered :) -- fwiw, it took me a while to understand the RectTransform layouting, but once it clicks, it's very good indeed. I have only recently used a very similar approach for a new UI system.

1 month ago 1 0 0 0

Elements need to be keyed manually. There is no auto-keying, but you can often derive it from content (e.g. a button can be identified by its text within its parent scope). It's essentially what DearImGui is also doing :)

2 months ago 1 0 0 0

nice side-effect of making all cross-frame dependencies explicit and obvious. One of my main gripes with immediate mode GUIs is the layout lag/stabiliziation frame that you sometimes see, and it was important to me to make it obvious where that exists as a risk.

2 months ago 0 0 1 0

but sometimes it happens explicitly. In the case of interactions, the system handles it for you ("oh, you created spot XYZ? That existed last frame and we're hovering it!"). In some other cases, you have explicitly say "I am now querying the position of this box in the last frame". This has the...

2 months ago 0 0 1 0

I use hierarchical keys to give every item a hash. The state flip-flops between two arenas: last frame and previous frame. So at the start of a new frame I can use the new mouse pointer to compare it against last frame's data, and then you can query it using the hashes. Most of this is implicit, but

2 months ago 0 0 1 0
Post image

What I've learned over the last 1.5months of writing a GUI library: blog.s-schoener.com/2026-02-09-g...

2 months ago 20 4 1 0
Preview
Putting slim locks on a diet | Sebastian Schöner Let’s talk about reader-writer locks. Reader-writer locks are what you employ when you know that multiple readers can safely access a resource concurrently, but once there is a single writer that writ...

Putting slim locks on a diet
blog.s-schoener.com/2026-01-28-r...

2 months ago 4 0 0 0
Preview
Spinning around: Please don't! - siliceum Embark on a journey about why you should sometimes trust your OS more than yourself.

Ever wrote spin-locks or had to debug them?
I have, and I got tired of seeing (and writing) crappy ones, so I did a real investigation this time.

Spoiler: trust your OS.

siliceum.com/en/blog/post...

2 months ago 23 9 1 1
Preview
Clauded optimism | Sebastian Schöner This post is a continuation of my last post about programming with AI agents. I wanted to specifically talk about one property of Claude Code: The constant “Yes, of course!” and “That’s a brilliant id...

A piece on how I learned to appreciate the brainless enthusiasm of AI agents.
blog.s-schoener.com/2026-01-14-c...

3 months ago 4 0 1 0
Preview
An early good bye to 2025 | Sebastian Schöner There are less than 2 weeks left in 2025 and this means it is time to look back at the last year. In last year’s review I ended on this note: For the next year, I hope to spend more timing painting in...

An early good bye to 2025: blog.s-schoener.com/2025-12-19-y...

4 months ago 10 0 1 0
Advertisement
Preview
When better codegen doesn't help | Sebastian Schöner I want to write a few words about what sorts of games benefit from my build postprocessor for Unity il2cpp builds, cpp2better. It’s not the case that every game unconditionally benefits from it to the...

I wrote a few words about when improving codegen actually leads to better performance, motivated by my experiences with cpp2better: blog.s-schoener.com/2025-12-04-w...

4 months ago 10 0 1 0
Preview
How to figure out why C# projects are rebuilding | Sebastian Schöner A friend recently joked that all my blog posts are to some level just trauma processing. He is not entirely wrong. Today’s trauma is “why does it take 12s to recompile C# when nothing has changed?” I ...

How do you figure out why your C# projects are rebuilding, and how does the MSBuild log help?
blog.s-schoener.com/2025-11-24-m...

4 months ago 7 1 0 0

can we declare this an international holiday already?

5 months ago 2 0 0 0
Post image

Every once in a while, I check the reviews on my games on Steam. It's always nice when a game finds the exact player it was made for. New review from July:

"We Love this game, it plays as advertised." (store.steampowered.com/app/1584170/...)

How I advertise it:

5 months ago 10 0 0 0
Post image

Is your company interested in trying Live++? Want to know what it can do for you? Curious about its features?

You can now request a live demo through our website - free of charge!
liveplusplus.tech/request_live...

#cpp

5 months ago 4 3 1 0
Preview
cpp2better, an il2cpp postprocessor | Sebastian Schöner It’s been a while since I last talked about cpp2better. Time for an official “here it is” post. What is cpp2better? cpp2better is a tool that hooks into your build pipeline for Unity to achieve better...

Do you want to improve the performance of your il2cpp Unity projects, without changing your code or your assets? My il2cpp build processor cpp2better is now officially available (on request). Reach out to me, details here: blog.s-schoener.com/2025-11-04-c...

5 months ago 14 7 0 0

Fantastic! I saw it the other day, excellent change. I am also looking forward to watching the talk, I am sure I'm going to learn some new tricks!

5 months ago 1 0 1 0

Ahhh you should have said you are going to be in Stockholm, I would have gladly invited you for dinner!

5 months ago 1 0 1 0
Preview
GitHub - eliemichel/dawn-prebuilt: Only look at releases! This fork of Dawn is use to share precompiled artifacts until upstream shares official builds. Only look at releases! This fork of Dawn is use to share precompiled artifacts until upstream shares official builds. - eliemichel/dawn-prebuilt

I'm currently dealing with dawn as well. We started with github.com/eliemichel/d... (used via github.com/eliemichel/W...), which provides binaries and also does a slightly leaner build of Dawn. Ironically, I have just decided to build Dawn myself today and ditch the binaries :)

6 months ago 1 0 0 0

There are plenty of cases where Windows will actually stop you from deleting a file while it is in use. Try deleting a DLL that's loaded into a process, for example.

But to be very precise, the entire post shows that Windows doesn't actually stop you very much, so I also disagree with it :)

6 months ago 1 0 0 0
Advertisement

Removing the API isn't the only option. It could be marked deprecated, it could get an API upgrader. The upgrade wouldn't Remove the allocation, but it could clearly tell people "this is more expensive than you think."

6 months ago 3 0 0 0
Preview
What can go wrong in cross compilation | Sebastian Schöner I have been unfortunate enough to embark on a journey of C++ cross-compilation, by choice nonetheless. In my case, I use clang to compile on a Linux machine to get binaries for a Windows machine. This...

Do you want to know about what things might go wrong when cross-compiling from Linux to Windows? No? Ah, too bad. Then don't click the link below.

blog.s-schoener.com/2025-09-29-c...

6 months ago 14 1 1 0