<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sergio Velásquez Zeballos</title>
    <description>The latest articles on DEV Community by Sergio Velásquez Zeballos (@sergiovelasquezzeballos).</description>
    <link>https://dev.to/sergiovelasquezzeballos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4185420%2F6e550680-4753-419e-b24e-aef799ad61bc.jpg</url>
      <title>DEV Community: Sergio Velásquez Zeballos</title>
      <link>https://dev.to/sergiovelasquezzeballos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sergiovelasquezzeballos"/>
    <language>en</language>
    <item>
      <title>Qt, GTK, Flutter, Electron? No: a graphics engine from scratch, entirely in Rust</title>
      <dc:creator>Sergio Velásquez Zeballos</dc:creator>
      <pubDate>Wed, 14 Oct 2026 20:09:37 +0000</pubDate>
      <link>https://dev.to/sergiovelasquezzeballos/qt-gtk-flutter-electron-no-a-graphics-engine-from-scratch-entirely-in-rust-2nk6</link>
      <guid>https://dev.to/sergiovelasquezzeballos/qt-gtk-flutter-electron-no-a-graphics-engine-from-scratch-entirely-in-rust-2nk6</guid>
      <description>&lt;p&gt;Llimphi draws every pixel of tawasuyu, even inside an operating system that boots with no Linux underneath. Why it exists, how it works and how true that “from scratch” really is.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F71n0rhrgr0xbaj37apik.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F71n0rhrgr0xbaj37apik.jpg" alt=" " width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every time you open an application, something has to draw every button, every letter and every window on your screen, dozens of times per second. That something is a graphics engine, and almost nobody builds their own: most of the world’s software is painted with Qt, GTK, Flutter or Electron. Tawasuyu, the software suite with Quechua names being written in the Gioser workshop, chose not to borrow one.&lt;/p&gt;

&lt;p&gt;Its engine is called Llimphi, which in Quechua means color, shine, pigment. It draws the whole suite: the desktop, the editor, the video player, the control panels and the interface of the project’s own operating system. Today 276 pieces of the suite are painted with Llimphi.&lt;/p&gt;

&lt;p&gt;Fifteen and a half seconds of Llimphi. Everything on screen is drawn by the engine, frame by frame: the controls, the cosmos sky, the supay corridor, the infinite voxel world and the hand.&lt;br&gt;
Why not use one that already exists&lt;/p&gt;

&lt;p&gt;Until May 2026, tawasuyu was drawn with GPUI, the engine behind the Zed editor. On May 26 it was removed entirely, and not on a whim: the project has its own operating system, wawa, which boots straight on the hardware, with no Linux underneath. No existing engine knows how to draw there.&lt;/p&gt;

&lt;p&gt;Qt, GTK and Flutter take a conventional operating system for granted, with its window manager, its installed fonts and its memory management. Llimphi was designed from day one to paint both in a desktop window and in the video memory of a kernel that has just powered on. That requirement forced it to be written from scratch.&lt;br&gt;
What “from scratch” means&lt;/p&gt;

&lt;p&gt;It is worth being precise, because it is the question every programmer asks. Llimphi did not reinvent every piece. Just as Flutter relies on Skia and GTK on Cairo, Llimphi uses four free projects from the Rust community for the most specialized jobs. Everything else is its own: the way an application describes its screen, how it reacts to each click, the components and the paths that lead to the pixels.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Talking to the graphics card: wgpu · community
Drawing curves and fills with antialiasing: vello · community
Working out where each box goes (flexbox and grid): taffy · community
Shaping text: Arabic, Chinese, emoji, ligatures: parley · community
The life cycle of each application: Llimphi
Components, themes, animation, accessibility: Llimphi
Painting without a graphics card, inside the kernel: Llimphi
Isolating an application and painting its drawing from outside: Llimphi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The four community pieces are written in Rust too. That is why the headline says “entirely in Rust”, and stands by it.&lt;br&gt;
How a Llimphi application thinks&lt;/p&gt;

&lt;p&gt;Llimphi follows the Elm architecture, named after a language known for applications that almost never crash. The idea is simple: the application does not modify the screen, it describes it. Every time something happens, the engine goes through six steps:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;input: A click, a key or a gesture arrives.
update: The application computes its new state.
view: It describes how it should look in that state.
layout: The engine works out the position of each box.
raster: It turns that description into pixels.
present: It shows the finished frame.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Since nothing touches the screen directly, no two parts of the program fight over the same button. It is the same reason this style became popular on the web with React, except here it runs natively, with no browser in between.&lt;br&gt;
One brush, four paths to your screen&lt;/p&gt;

&lt;p&gt;The most unusual part of Llimphi is that the same drawing can reach the screen by completely different paths, depending on where the application runs. “Looks about the same” was not good enough: each path was put side by side with the others and the pixels were counted.&lt;br&gt;
With a graphics card&lt;/p&gt;

&lt;p&gt;The everyday path on the desktop. It is the reference everything else is measured against.&lt;br&gt;
CPU only&lt;/p&gt;

&lt;p&gt;The one the wawa kernel uses, since it has no video driver.&lt;br&gt;
Subscribe to the Medium newsletter&lt;/p&gt;

&lt;p&gt;Fills and layers identical bit for bit. Accented text may differ, because the kernel only ships three fonts.&lt;br&gt;
By message&lt;/p&gt;

&lt;p&gt;An isolated application doesn’t touch the screen: it sends its drawing as a message and the system paints it on its behalf.&lt;/p&gt;

&lt;p&gt;0 pixels of difference across the four test scenes.&lt;br&gt;
For phones&lt;/p&gt;

&lt;p&gt;A path that works on mobile graphics chips without general-purpose compute, such as the Mali-G57.&lt;/p&gt;

&lt;p&gt;No pixel differs by more than 1/255 out of 19,200.&lt;/p&gt;

&lt;p&gt;The “by message” path coming out with zero difference has a practical consequence: an application can live locked away, with no permission at all to touch the screen, and still look exactly the same. Security that costs nothing in appearance.&lt;br&gt;
What it already ships&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Close to eighty components: buttons, tables, text editors with multiple cursors, node graphs, panel splitters, calendars and more.
Eleven modules that combine components into complete application pieces.
Real text: right-to-left writing, Chinese characters, emoji, ligatures and input methods for Asian languages.
Accessibility: every element can declare what it is and what it is called, and the tests query it the way a screen reader would.
Image-based tests: a screen is compared with its approved version, and any unexpected change makes the test fail.
A 3D voxel engine that mounts inside the same interface, as just another component.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;What it doesn’t do yet&lt;/p&gt;

&lt;p&gt;An engine that promises too much loses the trust of whoever tries it, so it is worth saying what is missing too:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The phone path has been tested on real hardware, but no published application uses it yet. The current Android builds take another path that doesn’t work on every chip.
Outside its three built-in fonts, text may look different in the kernel and on the desktop. The cause is known: with no operating system underneath, there is nowhere to get more fonts from.
Part of Llimphi is already published on crates.io, Rust’s official registry, but the release is incomplete and some recent pieces haven’t been uploaded yet.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;How to try it&lt;/p&gt;

&lt;p&gt;For Rust programmers, the way in is a single package:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;cargo add llimphi&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The package bundles the core, the themes and the 3D engine. For the rest, the best demonstration is tawasuyu itself: every window in the suite is a Llimphi application.&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://gioser.net" rel="noopener noreferrer"&gt;https://gioser.net&lt;/a&gt; on October 12, 2026.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>programming</category>
      <category>rust</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
