Grafische User-Interfaces: SixtyFPS-Toolkit aus Berlin als Slint überarbeitet

Das in Rust implementierte Toolkit der Entwickler mit Wurzeln in KDE und Qt ist in Version 0.2 erschienen und verabschiedet sich von der Referenz auf 60 FPS.

In Pocket speichern vorlesen Druckansicht 30 Kommentare lesen

(Bild: Andrey Suslov/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Ein halbes Jahr nach der Vorstellung von SixtyFPS 0.1 wechselt das Toolkit zum Erstellen grafischer User-Interfaces den Namen und heißt nun Slint. Die Entwickler hinter dem in Rust geschriebenen Projekt haben parallel Version 0.2.0 veröffentlicht, die unter anderem das Zusammenspiel mit OpenGL erweitert.

The artist formerly known as SixtyFPS ist ein Toolkit zur plattformübergreifenden Entwicklung für Anwendungen. Es zielt auf Embedded Devices, Mobilgeräte und den Desktop. Mit Blick auf Erstere ist es schlank aufgebaut und benötigt laut GitHub-Repository nur wenige Hundert KByte RAM und geringe Prozessorleistung.

Der ursprüngliche Name des Frameworks leitete sich von der flüssigen Bildfrequenz von 60 Bildern pro Sekunde (Frames Per Second, FPS) ab. Allerdings haben die Entwickler wohl mehrfach Rückmeldung bekommen, dass die stabilen 60 FPS inzwischen überholt seien, weil die meisten Bildschirme deutlich höhere Bildwiederholraten bieten.

Der neue Name, der aus einer öffentlichen Diskussion auf GitHub hervorgegangen ist, steht für Straightforward, Lightweight, Native Toolkit. Die Umbenennung wirkt sich auf die Namen der APIs und Pakete aus. Entwicklerinnen und Entwickler müssen ihre Cargo.toml für Rust beziehungsweise CMakeLists.txt für C++ anpassen.

Die größte technische Neuerung der Version 0.2.0 ist die Option, OpenGL-Code vor oder nach einer Slint-Szene zu verwenden. Die Slint-Seite zeigt dafür eine psychedelisch anmutende Beispielanwendung, die nach WebAssembly kompiliert ist und deren Sourcecode auf GitHub zu finden ist.

Das Toolkit bringt eine eigene Auszeichnungssprache mit dem Namen .slint (früher .60) mit, die zum Festlegen der Positionen, Farben und Inhalte dient. Sie setzt auf eine JSON-Struktur und ist an Cascading Style Sheets angelehnt. Ein einfaches Hello World findet sich im GitHub-Repository:

HelloWorld := Window {
    width: 400px;
    height: 400px;

    Text {
       y: parent.width / 2;
       x: parent.x + 200px;
       text: "Hello, world";
       color: blue;
    }
}

Ein Compiler übersetzt den Markup-Code in Rust- oder C++-Code und führt dabei Optimierungen durch. Für die Ausführung bietet die Slint-Laufzeitumgebung eine Schnittstelle zum Umsetzen der Properties. Als Backend lässt sich derzeit wahlweise OpenGL ES 2.0 oder QStyle von Qt verwenden.

Der Slint-Compiler übersetzt den Markup- in nativen Code, der auf der Slint-Runtime ausgeführt wird.

(Bild: Slint)

Slint bietet zur Laufzeit eine Anbindung an andere Programmiersprachen. Derzeit existieren APIs für Rust, C++ und JavaScript. Langfristig soll es Schnittstellen für weitere Sprachen wie Python und Go geben.

Das GitHub-Repository bezeichnet bei den Zielplattformen derzeit nur die Embedded-Variante als fertig. Die Umsetzung für Desktop ist demnach in Arbeit, während die Anbindung an die mobilen Betriebssysteme Android und iOS noch offen auf der To-Do-Liste steht. Eine direkte Integration für das Web ist zwar nicht geplant, aber der Code lässt sich nach WebAssembly kompilieren.

Für das Zusammenspiel mit Entwicklungsumgebungen existiert eine Implementierung des Language Server Protocol (LSP), das Codenvy, Microsoft und Red Hat 2016 als werkzeugunabhängige Schnittstelle zwischen Programmiersprachen und Entwicklungstools veröffentlicht haben. Damit lässt sich unter anderem in Visual Studio Code Syntaxhervorhebung und Autovervollständigung nutzen. Die Integration bietet zudem eine Live-Preview der Anwendung.

Die beiden Entwickler des Projekts Oliver Goffart und Simon Hausmann sitzen in Berlin. Beide haben Cross-Plattform-Erfahrungen rund um das Qt-Framework gesammelt. 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 UI-Toolkit und dem Namenswechsel von SixtyFPS zu Slint lassen sich dem Slint-Blog entnehmen. Der Sourcecode findet sich auf GitHub. Das Toolkit steht unter drei Lizenzen zur Verfügung: Neben der GPLv3-Lizenz für Open-Source-Projekte und einer kommerziellen Variante existiert die sogenannte Ambassador-Lizenz, die "Botschaftern", die zur Verbreitung des Projekts beitragen, eine freie Lizenz ohne die Einschränkungen der GPL bietet.

(rme)