We all want a programming environment that "just works" without unnecessary development and runtime complexities. The usual belief is that programmers need complicated ecosystems (operating system, drivers, compiler, programming language, IDE) to be able to develop applications easily. Although sometimes this is true (arguably, programming in C is a huge benefit compared to programming in assembly, or in machine code), most of these ecosystems nowadays tend to have the reverse effect. Most of them introduce a huge runtime cost by requiring a complicated software stack on top of which the user's (relatively simple) application can run (think of a game engine, garbage collector or operating system). Some of them are so overcomplicated that navigating between their rules slows the development process and introduces weird bugs (think of a high level API or programming language).
There are lots of initiatives to improve separate parts of the programming experience: new programming languages, small kernels and text editors are in development. However, my belief is that to really reduce complexity in a significant scale, these parts should be reimplemented/reinvented in parallel in one project, as one "operating system". Therefore, I started qipos in January, 2026.
The goal is the following:
Assume having a target device (or a simulation of it) with a CPU, a keyboard and a display. Assume the qip IR to machine code conversion for the given CPU architecture (for example, x64 or arm64) has been implemented in the qip compiler, and the driver for the keyboard and display is implemented in the qip language. Furthermore, assume that a boot binary is available for initializing the CPU and the memory (and perhaps other peripherals in case of SoCs).
Then, qipos can be compiled for the target device on a source device, and after the compilation, qipos becomes self-hosting on the target device: it can be used to develop, test and run applications and drivers, and to modify and recompile qipos itself, for example, to modify the text editor, the compiler, or the kernel itself. Furthermore, the target device can be used as a source device for other targets in the future.
The current version of qipos is mostly a proof of concept. It is implemented in C++ (mainly in C). The Windows API is used for keyboard and display, and the backend supports x64. Interactivity, hot-reload, metaprogramming and compile-time execution are all important aspects of the language design. The image below shows the current state of qipos: on the left, users can edit the source code of the application that runs on the right side. After modifying the source code, the application can be recompiled and hot-reloaded.
