Nach einem Jahr Entwicklung wurde die Desktop-Engine Arcan 0.7 veröffentlicht, die einen Display-Server, ein Multimedia-Framework und eine Game-Engine zur Verarbeitung von 3D-Grafik vereint. Arcan kann verwendet werden, um verschiedene grafische Systeme zu erstellen – von Benutzeroberflächen für eingebettete Anwendungen bis hin zu eigenständigen Desktop-Umgebungen. Unter anderem basiert Arcan auf dem dreidimensionalen Arbeitsplatz Safespaces für Virtual-Reality-Systeme und der Desktop-Umgebung Durden. Der Code des Projekts ist in C geschrieben und wird unter der BSD-Lizenz veröffentlicht (einige Komponenten unter GPLv2+ und LGPL).
Arcan ist nicht an bestimmte grafische Subsysteme gebunden und kann über verschiedene Systemumgebungen (BSD, Linux, macOS, Windows) mit pluggable Backends arbeiten. Beispielsweise gibt es die Möglichkeit, über Xorg, egl-dri, libsdl und AGP (GL/GLES) zu starten. Unter der Kontrolle des Display-Servers Server können Client-Anwendungen auf Basis von X11, Wayland und SDL2 ausgeführt werden. Zu den Schlüsselkriterien, die bei der Gestaltung der Arcan-API angewendet werden, zählen Sicherheit, Leistung und Debugging-Freundlichkeit. Zur Erleichterung der Entwicklung von Schnittstellen wird die Verwendung von Lua vorgeschlagen.
Besonderheiten von Arcan:
- Kombination der Funktionalitäten eines Komposit-Servers, eines Display-Servers und eines Fenster-Managers.
- Unterstützung des Betriebs im isolierten Modus, bei dem die Anwendung ein eigenständiges Glied ist.
- Integriertes Multimedia-Framework, das Werkzeuge zur Arbeit mit Grafiken, zur Verarbeitung von Streaming-Videos und -Audios, zur Animation, zum Laden von Bildern und zur Zusammenarbeit mit Videoerfassungsgeräten bereitstellt.
- Multiprozessmodell zur Anbindung von Handlern für Datenquellen (z. B. Video-Streams und Ausgaben von gestarteten Programmen).
- Striktes Modell der Trennung von Rechten — die Engine-Komponenten werden in kleine, nicht privilegierte Prozesse aufgeteilt, die über die Schnittstelle des gemeinsamen Speichers Shmif interagieren.
- Eingebaute Mittel zur Überwachung und Analyse von Abstürzen von Prozessen, beispielsweise kann die Engine den internen Zustand von Lua-Skripten serialisieren, um das Debugging zu erleichtern.
- Fallbacks auf einen anderen Handler – im Falle eines Fehlers durch einen Programmfehler kann die Engine eine Ersatzanwendung starten, wobei die gleichen externen Datenquellen und Verbindungen beibehalten werden.
- Mittel für die gemeinsame Nutzung und Remote-Anbindung an den Desktop. Der Netzwerkzugang wird durch die grafische Server «arcan-net» gewährleistet, das das P2P-Protokoll A12 implementiert und Funktionen solcher Technologien wie mDNS (Erkennung lokaler Dienste), SSH (interaktive Shell), X11/VNC/RDP (interaktive grafische Shell), RTSP (Streaming von Multimedia-Inhalten) und HTTP (Ressourcendownload und Statussynchronisierung) kombiniert.
In der neuen Version wurde die Arbeit an der Netzwerksubsystem und dem A12-Protokoll fortgesetzt. Die Möglichkeiten des Verzeichnisservers, der zur Verbindung von Komponenten verwendet wird, die über das Netzwerk verteilt sind, wurden erweitert. Er kann beispielsweise verwendet werden, um eine Verbindung zu externen Geräten wie Speicher, Kameras und Bildschirmen herzustellen. Auf dem X-Server Xarcan wurde die Unterstützung für das Starten von externen Fenstermanagern hinzugefügt. Bei einem solchen Start übernimmt Xarcan die Funktionen der niedrigstufigen Bildschirmverarbeitung, Sicherheitsgarantien und Konfigurationsverwaltung, während der Fenstermanager für die Verarbeitung und Dekoration der Fenster verantwortlich ist (Video mit Beispiel).

Die Möglichkeiten von Lash, der Umgebung zur Ausführung von Skripten in Lua, und der auf ihr basierenden Kommandozeile Cat9 wurden erweitert. Diese bietet die Möglichkeit, die Ausführung von Befehlen an einzelne Zellen zu binden, die einer Art Spreadsheet ähneln (Video mit Demonstration). Das vorgeschlagene Konzept ermöglicht es, Datenströme zwischen Fenstern umzuleiten, indem es Daten und Prozessoren in verschiedenen Fenstern ähnlich wie Zellen in Tabellenkalkulationen verknüpft (z. B. kann die Ausgabe aus einem Fenster an einen im Terminal laufenden Shell-Prozessor umgeleitet und das Ergebnis in einem anderen Fenster verwendet werden).

Quelle: opennet.ru
