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-Grafiken kombiniert. Arcan kann verwendet werden, um verschiedene grafische Systeme zu erstellen — von Benutzeroberflächen für eingebettete Anwendungen bis hin zu autarken Desktop-Umgebungen. Unter anderem basiert der dreidimensionale Desktop Safespaces für Virtual-Reality-Systeme und die Desktop-Umgebung Durden auf Arcan. Der Code des Projekts ist in der Programmiersprache C geschrieben und wird unter der BSD-Lizenz verbreitet (einige Komponenten unter GPLv2+ und LGPL).
Arcan ist nicht an einzelne grafische Subsysteme gebunden und kann über verschiedene Systemumgebungen (BSD, Linux, macOS, Windows) arbeiten, indem es Plug-in-Backends verwendet. So besteht die Möglichkeit, über Xorg, egl-dri, libsdl und AGP (GL/GLES) zu starten. Unter der Steuerung des Display Server Arcan ermöglicht die Ausführung von Client-Anwendungen auf Basis von X11, Wayland und SDL2. Sicherheit, Leistung und Debugging-Fähigkeit sind wesentliche Kriterien, die bei der API-Entwicklung von Arcan berücksichtigt werden. Zur Vereinfachung der Entwicklung von Benutzeroberflächen wird die Verwendung der Programmiersprache Lua empfohlen.
Eigenschaften von Arcan:
- Eine Kombination aus den Funktionen eines Kompositionsservers, eines Display-Servers und eines Fenster-Managers.
- Unterstützung des Betriebs im isolierten Modus, in dem die Anwendung ein eigenständiges Element darstellt.
- Integriertes Multimedia-Framework mit Tools für Grafikbearbeitung, Streaming von Video und Audio, Animation sowie Bild-Uploads und die Nutzung von Videoaufzeichnungsgeräten.
- Multithreaded-Modell für die Anbindung von Datenquelle-Handlern, wie z. B. Video-Streams und ausgeführten Programmausgaben.
- Strenges Modell der Privilegientrennung – die Engine wird in kleine, unprivilegierte Prozesse aufgeteilt, die über die Schnittstelle des Shared-Memory-Systems Shmif kommunizieren.
- Eingebaute Monitoring- und Analysewerkzeuge für den Umgang mit unerwarteten Prozessabbrüchen, zum Beispiel kann die Engine den internen Zustand von Lua-Skripten serialisieren, um das Debugging zu erleichtern.
- Fallback-Möglichkeiten auf einen anderen Handler — im Falle eines Fehlers kann die Engine eine Ersatzanwendung starten, wobei dieselben externen Datenquellen und Verbindungen beibehalten werden.
- Werkzeuge für den gemeinsamen Zugriff und die Remote-Desktop-Verbindung. Der Netzwerkzugang gewährleistet eine grafische der Server «arcan-net», das das P2P-Protokoll A12 implementiert, vereint die Möglichkeiten von Technologien wie mDNS (Entdeckung lokaler Dienste), SSH (interaktive Kommandozeile), X11/VNC/RDP (interaktive grafische Benutzeroberfläche), RTSP (Streaming von Multimedia-Inhalten) und HTTP (Ressourcenabruf und Statussynchronisierung).
In der neuen Version wurde die Arbeit an der Netzwerk-Subsystem und dem Protokoll A12 fortgesetzt. Die Möglichkeiten des Verzeichnisservers, der zur Bündelung von Komponenten in einem Netzwerk-Stack entwickelt wird, wurden erweitert. Zum Beispiel kann er verwendet werden, um sich mit externen Geräten wie Speichergeräten, Kameras und Bildschirmen zu verbinden. Im X-Server Xarcan wurde die Unterstützung für den Betrieb von externen Fenstermanagern hinzugefügt. Bei diesem Start übernimmt Xarcan die Funktionen der niedrigstufigen Bildschirmverwaltung, Sicherheits- und Konfigurationsverwaltung, während der Fenstermanager für das Handling und die Dekoration der Fenster verantwortlich ist (Video mit einem Beispiel).

Die Möglichkeiten von Lash, einer Laufzeitumgebung für die Skriptsprache Lua und der darauf basierenden Kommandozeile Cat9, wurden erweitert. Diese bietet die Möglichkeit, die Ausführung von Befehlen an einzelne Zellen zu binden, wodurch eine Art Tabellenkalkulation entsteht (Demovideo). Das vorgeschlagene Konzept ermöglicht das Umschalten von Datenströmen zwischen Fenstern, indem Daten und Handler in verschiedenen Fenstern ähnlich wie Zellen in Tabellenkalkulationen verknüpft werden (zum Beispiel kann die Ausgabe eines Fensters an einen im Terminal laufenden Shell-Handler umgeleitet und das Ergebnis in einem anderen Fenster verwendet werden).

Quelle: opennet.ru
