馃 Introduction I figure the tech stack of Kulve is unique enough to be interesting, so seems like a good place to start for my first blog post. Kulve is a SwiftUI application that heavily leverages the Swift/C++ interop that got introducted with Swift 5.9. While it's not perfect, it offers just enough to be able to reliably blend the two languages together. The stack itself CMake Xcode VSCode Swift/SwiftUI C++ CMake is used to develop the C++ backend independently from the app itself. I find I really don't like Xcode as a general editor, so it was well worth the effort to configure the backend as a standalone C++ project leveraging CMake. The app itself compiles the C++ via Xcode, but when testing, running, and developing the backend itself, it's done via CMake in VSCode. The added benefit here is that Kulve's entire backend remains completely and entirely cross platform. Meaning that if I want to port this to Windows, the backend won't have to be modified in any way to do so. This is one of the key reasons Kulve is both native and cross platform. Xcode is used out of sheer necessity. It's a first class SwiftUI editor and a truly great build system. It's less ergonomic than VSCode in terms of raw editing, but I've been incredibly happy with it as a build and deploy platform. My builds are single button presses that compile and run near instantly. Fresh builds can take a few minutes, but when I need to compile and run the app for testing, it really couldn't be any faster. VSCode is used for backend development. The clangd extension is an incredibly C++ editing experience and it has out of the box compatibility with Cmake. All I need to do is add set(CMAKE_EXPORT_COMPILE_COMMANDS ON) to the backend's CMakeLists.txt and the extension configures itself directly from the build/ dir. The clangd extension is also the fastest linter I've yet to use on VSCode. I even prefer it to Xcode's auto complete/linting experience. Swift is used purely for UI and for some scaffolding f...
First seen: 2025-04-22 18:42
Last seen: 2025-04-22 19:42