I thought about writing the low-level parts in #Rust and then binding a high-level #Swift API on top.
But #GPUI for example all closures and borrowed state. Doesn't cross language boundaries well.
So if I actually want Swift, there’s no real GPUI alternative. Which means rebuilding a similar API on top of Skia.
And that means… way more code. Code I now have to maintain. I'm in limbo.
Many components still don't work properly, but we're close to parity with the Rust version.
Anyone wants to port a simple macOS app to Linux? Be my alpha tester.
I'm in Swift bindings hell.
Skia bindings implemented. Yoga bindings implemented. wlroots bindings implemented. libinput bindings implemented.
I'm so close to rendering a window surface!
My Ghostty shell froze for weeks.
It turned out Ghostty reloads its config, which reloads fish, which runs nvm, which costs ~500ms.
Lazy-loading nvm fixed it.
Then there's reactivity. I could switch to Iced and get it built in, or bolt a reactive layer onto GPUI myself.
To get macOS people to take Linux seriously, a Swift-based path might feel less like moving to a different planet, as long as AppLib ends up with an API that’s close enough to AppKit.