Die Open-Source-Programmiersprache Rust wurde mit dem Ziel entwickelt, sicher, nebenläufig und praxisnah zu sein. Sie vereint mehrere Programmierparadigmen und hat jüngst enorm an Popularität gewonnen. Kein Wunder also, dass Slint, der Shootingstar unter den GUI-Frameworks, damit arbeitet (aber auch C++ und künftig NodeJS einbindet). Für das HMI-Werkzeug von SixtyFPS sprechen außerdem seine grandiose Geschwindigkeit und die intuitive Bedienung. Natürlich: Es gibt auch Kinderkrankheiten. Unterm Strich aber ein dickes Lob des Cloudflight-Testteams für das „Straightforward, Lightweight, Native Toolkit“, so sein voller Name.
Visual Studio Code mit Live Preview.
(Bild: Cloudflight Germany GmbH)
Slint ist ein Werkzeug für das Erstellen und Verwalten von Bedienoberflächen, das den Vergleich mit etablierten Tools nicht scheuen muss. Es unterstützt eine breite Palette von Hardware-Geräteklassen, von Cortex-M bis zu großen Embedded-Geräten und läuft als Cross-Platform-Native-Toolkit auch auf Geräten mit wenig Speicher und leistungsschwachem Prozessor. Eine deklarative Sprache ermöglicht es, das User Interface und seine Elemente zu beschreiben, woraufhin ein Compiler diese Beschreibungen in nativen Code umwandelt.
Slint für Mikrocontroller
Cloudflight hat die Plattform mit dem spezifischen Embedded-Testsystem STM32H7G Development Kit getestet. Die Evaluierung auf Mikrocontrollern brachte einige interessante Erkenntnisse zutage, aber auch Einschränkungen, die bei der Implementierung auf diesen Plattformen zu berücksichtigen sind.
Zunächst unterstützt Slint einen Framebuffer für Single-/Double-Buffering in Farbtiefen bis zu 24 Bit, wobei die volle (oder doppelte) Framebuffer-Bereitstellung bevorzugt wird, solange genügend RAM vorhanden ist. Ist der RAM knapp, ermöglicht ein Line Buffer das partiale Rendering, was das System entlastet, indem es Bildinhalte Zeile für Zeile verarbeitet. Im Bereich der Hardwarebeschleunigung bietet Slint auf MCUs derzeit keine native Unterstützung für GPU-Beschleunigung, was eine potenzielle Einschränkung für bestimmte Anwendungen darstellt. Dafür aber ist die Performance beeindruckend. Und es gibt einen Prototypen für STs DMA2D, der die Fertigstellung oder Integration anderer GPUs als Dienstleistung erlaubt.
Werkzeuge für Entwickler
Zur Erstellung von Desktop-Builds für Windows/macOS/Linux stehen mehrere Backend-Optionen (d.h. Windows-System-Anbindungen) zur Verfügung. Dies ist überaus hilfreich, da kein großer Aufwand für eine Desktop-Simulation anfällt. Für das Prototyping gibt es eine Integration für Visual Studio Code Editor mit Syntax-Highlighting, Code-Completion und Live-Preview (vgl. mit SlintPad). Außerdem stellt Slint einen Code-Generator für das Design-Werkzeug Figma bereit.
Wer CSS und Typescript kennt, wird die simple Syntax während der Entwicklung zu schätzen wissen. Für das unterstützte Board war Slint sehr einfach in Betrieb zu nehmen. Es braucht nur zwei Kommandozeilen Befehle: einmal zum Bauen, einmal zum Aufspielen auf das Gerät. Ansonsten ist abgesehen von Rust nichts einzurichten. Auch die Dokumentation überzeugt.
Vorteile
Skalierbarkeit: UIs passen sich problemlos jedem Bildschirm an und sind kompatibel mit einer Vielzahl an Geräten, von Desktop-Computern bis zu einfachen eingebetteten Systemen. Leichtgewichtigkeit ist ein weiteres Merkmal. Auch mit begrenzten Ressourcen bietet Slint ein flüssiges, Smartphone-ähnliches Benutzererlebnis auf jeglichem Device.
Intuitive Bedienung: Die Slint-Tools sind einfach zu handhaben, die APIs zeichnen sich durch Konsistenz und Benutzerfreundlichkeit aus, unabhängig von der gewählten Programmiersprache. Außerdem wurde Wert darauf gelegt, dass die erstellten Benutzeroberflächen einer nativen Anwendung in ihrer Anmutung und Funktionalität nicht nachstehen, egal ob auf Desktop, Mobilgerät, Web oder eingebettetem System. Slint orientiert sich hierbei an CSS und verwendet in der Syntax eine Mischung aus Rust, Python und JavaScript.
Rust als Basis: Gerade das Thema Rust stößt bei Kunden auf großes Interesse. Bei anderen Grafik-Frameworks sind zuweilen Klimmzüge erforderlich, um sie mit Rust verwenden zu können. Hier ist es eher umgekehrt. Was ideal funktioniert, ist das Zusammenspiel mit der Open-Source-Sprache. Keiner der drei Cloudflight-Tester hatte Vorabwissen über Rust und dennoch sind alle sehr schnell damit effizient geworden.
Rust verfügt über eine Vielzahl an Bibliotheken, mit denen sich die Entwicklung beschleunigen lässt. Die “std”-Bibliothek bietet – stark getestete – Grundfunktionalitäten, für die MCU-Entwicklung ist die Bibliothek “alloc” wichtig. Sie ist Bestandteil von “std”, beinhaltet aber nur Smart Pointer und Funktionen zur Heap Allokation. Dadurch lässt sich ein komfortables Memory- Management umsetzen. Allgemein können benötigte Funktionalitäten immer durch Einbinden entsprechender C-Bibliotheken bereitgestellt werden.
Flüssige Animationen: Eigenschaften wie Größe, Position, Opazität oder Farbe lassen sich dynamisch animieren und kubische Bezier-Kurven ermöglichen gleitende Übergänge. Auch bei vollflächigen Überblendungen und Bewegungen sind Animationen stets flüssig (siehe Abbildungen). So lassen sich animierte Diagramme mit Echtzeitdaten umsetzen.
Hohe Geschwindigkeit: Der beschriebene Showcase bedeutete für Cloudflight Zeitaufwand von gerade einmal einer Woche – und dies, obwohl man sich um vieles „zu Fuß“ kümmern muss, denn Slint bringt kein Dateisystem mit. Cortex-M7 Mikrocontroller, auf dem getestet wurde, ist ein leistungsfähiges System. Wer eine solche Plattform einsetzt, hat entsprechende Erwartungen an die Komplexität und Attraktivität seines HMI. Diese sind mit Slint mit vergleichsweise kleinem Aufwand umsetzbar.
Einschränkungen
Aktuell unterstützt Slint nur eine begrenzte Anzahl von MCU-Plattformen, für die ein entsprechendes Rust-Crate existiert. Die wichtigsten sind immerhin vorhanden und vereinfachen die Integration erheblich, da große Teile des BSPs und die Anbindung an Slint bereits vorgegeben sind. Für nicht explizit unterstützte MCUs oder Boards müssen Entwicklungsteams die Anbindung jedoch selbst vornehmen, einschließlich der Initialisierung von Pins, Peripheriegeräten und Treibern. Der Hersteller bietet entsprechende Anpassungen auch als Dienstleistung an.
Für leistungsstärkere Systeme ermöglicht Slint das Interpretieren von slint-Dateien zur Laufzeit. MCU-Systeme, die für “no_std” kompiliert werden, stehen jedoch vor Herausforderungen, da ihnen eine Schnittstelle zum dynamischen Laden von externen Ressourcen fehlt. Dies zwingt zur Vorkompilierung und direkten Integration von .slint-Dateien in das Binary, ein Vorgang, der auf MCU-Systemen aufgrund potenzieller Leistungseinbußen ohnehin häufige Standardpraxis ist.
(Bild: Cloudflight Germany GmbH)
Vektor-Schriftarten und -Bilder können über den Slint-Compiler automatisch in Bitmap-basierte Formate umgewandelt und in das Binary eingebettet werden; diese Integration kann jedoch schnell den verfügbaren internen FLASH-Speicher überfordern, insbesondere wenn die Bilder bzw. Fonts zuvor in einem Vektor Format vorlagen und in unterschiedlichen Größen angezeigt werden sollen. Pfadkomponenten für SVGs oder Vektorgrafiken zu verwenden wäre platzsparend, allerdings wird diese Funktion für MCUs noch nicht unterstützt. Auch dies ist nicht in jedem Fall ein Nachteil, da aus Performance Gründen auf MCUs gerne auf Pixel-basierte Formate zurückgegriffen wird und die Konsistenz der Toolchain die komfortable Verwendung derselben Ressourcen-Dateien etwa in einem plattform-übergreifenden Projekt erlaubt. Auf leistungsfähigen MCUs ist Grafik-Beschleunigung durch eine eingebaute GPU heute aber keine Seltenheit mehr. Auf solchen Systemen wäre es komfortabel, Vektor-Formate direkt verwenden zu können.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
Auch das dynamische Laden von Übersetzungsdateien in Umgebungen, auf welchen “std” nicht zur Verfügung steht, unterstützt Slint noch nicht. Pläne, Übersetzungen zur Compile-Zeit zu integrieren, sind für größere Anwendungen, die mehrere Sprachen unterstützen müssen, nicht praktikabel. Schließlich wird, obwohl dafür Pläne bestehen, die Umschaltung der Sprache zur Laufzeit derzeit nicht nativ unterstützt. Als Zwischenlösung lassen sich globale Variablen verwenden, die zur Laufzeit verschiedene Werte annehmen können.
Der Funktionsumfang ist also noch ausbaufähig - der Preis für die Verwendung eines neuen Werkzeugs. Die Geschwindigkeit, mit der das kleine Slint-Team neue Funktionalität integriert, ist aber beeindruckend. Wesentlich sind die Pluspunkte von Slint. Und wenn das Konzept stimmt, dann können weitere Funktionen später immer noch nachkommen.
Fazit
Slint überzeugte im Cloudflight-Test als frische Plattform mit modernen Konzepten, der Integration zeitgemäßer Werkzeuge und breiter Backend-Verfügbarkeit. Dadurch ermöglicht das Toolkit eine effiziente HMI-Entwicklung bei sehr guter Performance, sowohl auf MCUs als auch auf Linux-basierten Embedded-Geräten. Momentane Einschränkungen – zu groß für MCUs unterhalb des M7 für echte Anwendungen, Nachholbedarf an erweiterten Funktionen für Mittelklasse-MCUs – nimmt man da gerne in Kauf. Insbesondere, weil sich durch den bereits heute vorhandenen Effizienzgewinn auf der HMI-Seite mit Slint solche hier aufgeführten Standard-Embedded-Themen in einem Teil der gesparten Zeit lösen lassen. Ihr Ziel, ein GUI-Framework mit Zukunft zu entwickeln, mit dem immer flüssige Animationen gelingen, haben die Macherinnen und Macher von Slint auf jeden Fall erreicht. (mbf)