Simurg
A native renderer for apps and games on a single C core - the same signals-first TS code runs on the web, Linux desktop, PinePhone, macOS, or a terminal.
Simurg started as two separate things that I only later realized should be the same thing :)
The first thing - a React Native replacement
I wanted a UI runtime with signals as a first-class primitive (not bolted on like in React), really efficient, cross-OS, and especially good on Linux + PinePhone because nobody else seems to care.
The runtime itself was originally going to be in Rust. But here's the thing: any low-level language for the app layer forces you to ship WebAssembly to the browser, and wasm doesn't run great on the cheapest mobile devices. The whole point of this project is not leaving those users behind - the ones who would benefit most from a free, efficient alternative. So the app layer has to be TS, plain and simple, so the browser can just interpret it. No Rust, no GoLang, no wasm required to use the thing.
The second thing - a game
I wanted to make a very ambitious game called Albatross (still on my plate). I started prototyping it in Unity, tried to move it to Godot. I love Unity and it's the engine I've used the most, but I have a real conflict with it: it's commercial and there are some practices I'm not OK with. Godot wasn't quite there either, some limitations made me uncertain :/
So I decided I'd just write the engine myself, in code, no closed editor. The options I tried:
Bevyin Rust -> compile times destroyed me- C++ -> also slow to compile, and the complexity was wild
- C -> the surprise winner. The philosophy is almost the same as GoLang (my favorite language to date) but no GC and full control over every byte
Then they collapsed into one thing
While building the game engine I realized: a renderer that mounts native nodes for a game can mount native nodes for an app the same way. UI layer + game engine are just modes of the same C core, neither side limits the other:
- Run only the UI layer -> a React Native replacement
- Run only the game side -> a Unity-shaped engine
- Run both -> whatever this thing is :)
The name
Named after the Simurg from Attar's Conference of the Birds: thirty birds set out to find their king, cross seven valleys, and discover that together they ARE the Simurg. Si murgh literally means thirty birds. The point being: no single platform / no single corporate king owns your software. Pretty much the vibe of the whole portfolio (:
