Schlankes UI-Toolkit (fast) aus Berlin: Slint benötigt weniger als 300 KByte RAM

Das in Rust geschriebene Toolkit für die plattformübergreifende Entwicklung von UIs zielt auf Plattformen vom Desktop bis zu Embedded-Devices.

In Pocket speichern vorlesen Druckansicht 63 Kommentare lesen

Mehr als einen Raspberry Pi Pico braucht es für Slint nicht.

(Bild: Raspberry Pi Foundation)

Lesezeit: 4 Min.
Inhaltsverzeichnis

Nach knapp drei Jahren Entwicklungszeit und zwei Jahre nach der ersten Vorstellung ist Slint in der stabilen Version 1.0 erschienen. Das Toolkit zum Erstellen grafischer User Interfaces ist besonders schlank gehalten, um es auch auf Embedded-Systemen mit wenig Speicher zu verwenden. Es ist in Rust geschrieben, bietet aber zusätzlich APIs für C++ und JavaScript.

Mit dem 1.0-Release verlässt das Projekt die Entwicklungsphase und gilt als bereit für den produktiven Einsatz. Die Kernentwickler des Projekts sitzen in Hohen Neuendorf bei Berlin. Der Name Slint steht für Straightforward, Lightweight, Native Toolkit.

Slint setzt auf eine deklarative Sprache, die das UI mit seinen Elementen beschreibt. Die Dokumentation zeigt ein Codebeispiel für ein einfaches Dialogfenster mit drei Buttons:

import { StandardButton, Button } from "std-widgets.slint";
export component Example inherits Dialog {
    Text {
      text: "This is a dialog box";
    }
    StandardButton { kind: ok; }
    StandardButton { kind: cancel; }
    Button {
      text: "More Info";
      dialog-button-role: action;
    }
}

Ein Compiler übersetzt die UI-Beschreibung in nativen Code. Slint bietet APIs, um die Business-Logik in unterschiedlichen Programmiersprachen zu implementieren.

Der Compiler übersetzt die Deklaration, und die Runtime von Slint bietet APIs, um die Businesslogik in Rust, C++ oder JavaScript anzubinden.

(Bild: Slint-Repository auf GitHub)

Für Visual Studio Code existiert eine Extension, die Syntaxhervorhebung, Autovervollständigung, Navigation und Refactoring für Slint-Deklarationen bietet. Ein Live-Preview-Fenster zeigt die Änderungen während der Eingabe des Codes an.

Im Zusammenspiel mit Visual Studio Code bietet Slint eine Live-Vorschau.

(Bild: Slint)

Wer Slint auf die Schnelle ausprobieren möchte, kann das interaktive SlintPad im Browser nutzen, das einen Codeeditor, ein Previewfenster und zusätzliche Informationen zu den Eigenschaften der Elemente und der Baumstruktur der UI anzeigt.

Slint-Anwendungen sind darauf ausgelegt, auch auf Geräten mit wenig Speicher und einem leistungsschwachen Prozessor zu laufen. Ein Blogbeitrag zeigt eine Demo, die auf einem Raspberry Pi Pico mit 264 KByte RAM, 2 MByte Flash-Speicher und dem auf Cortex M0+ basierten RP2040-Mikrocontroller läuft.

Slint-Anwendungen laufen auf dem Raspberry Pi Pico mit zugehörigem Touchscreen.

(Bild: Slint)

Ansonsten laufen Slint-Anwendungen auf Linux, macOS, Windows, Blackberry QNX und unter WebAssembly. Auch auf Systemen ohne Betriebssystem lassen sich Slint-Anwendungen ausführen.

Slint steht sowohl unter der GPLv3- als auch unter einer proprietären Lizenz zur Verfügung. Letztere ist unter dem Schlagwort Ambassador-Lizenz für "Botschafter", die zur Verbreitung des Projekts beitragen, kostenfrei. Die kommerzielle Lizenz kostet 59 Euro monatlich pro User und ist unbefristet: Sie bietet nach der Kündigung zwar keine Updates mehr, darf aber, anders als es ursprünglich für Qt 6.x geplant war, weiter verwendet werden. Zusätzlich bietet SixtyFPS, das Unternehmen hinter Slint, Premium-Support an.

Das Toolkit war ursprünglich als SixtyFPS gestartet, und das Unternehmen hinter Slint trägt nach wie vor den Namen SixtyFPS GmbH. Der Name leitet sich von der flüssigen Bildfrequenz von 60 Bildern pro Sekunde (Frames per Second, fps) ab.

Anfang 2022 tauften die Entwickler das Projekt um, nachdem sie wohl mehrfach Rückmeldung bekommen hatten, dass 60 fps überholt seien in Zeiten, in denen viele Bildschirme deutlich höhere Bildwiederholraten bieten.

Die Kernentwickler des Projekts Oliver Goffart und Simon Hausmann hatten zuvor Cross-Plattform-Erfahrungen rund um das Qt-Framework gesammelt, das frisch in Version 6.5 erschienen ist. Sie waren in dem auf Qt aufsetzenden KDE-Projekt involviert und arbeiteten bei Trolltech, der Mutter des Qt Frameworks. Hausmann hat bei der Qt Company als leitender Entwickler für die QtQml-Engine Erfahrungen im Bereich Auszeichnungssprachen mit Qt QML (Qt Modeling Language) gesammelt.

Weitere Details zum Release von Slint 1.0 lassen sich dem Slint-Blog entnehmen. Der Sourcecode findet sich auf GitHub. Dort gibt es auch einige Tutorials. Die Slint-Site bietet Links zu den Dokumentationen für das Zusammenspiel mit Rust, C++ und NodeJS sowie einige Demos in WebAssembly.

(rme)