Nach einem Jahr Entwicklungsarbeit wurde die Version des Desktop-Engines Arcan 0.6.2 veröffentlicht, die einen Display-Server, ein Multimedia-Framework und eine Game-Engine zur Verarbeitung von 3D-Grafik vereint. Arcan kann zur Erstellung verschiedener graphischer Systeme verwendet werden, von Benutzeroberflächen für embedded Anwendungen bis hin zu eigenständigen Desktop-Umgebungen. Darunter entsteht auf Basis von Arcan der dreidimensionale Desktop Safespaces für Virtual-Reality-Systeme und die Desktop-Umgebung Durden. Der Code des Projekts ist in der Programmiersprache C geschrieben und wird unter der BSD-Lizenz (einige Komponenten unter GPLv2+ und LGPL) verbreitet.
In der neuen Version wurde die Entwicklung von Werkzeugen für die Fernarbeit mit dem Desktop über das Netzwerk fortgesetzt. Der Netzwerkzugang erfolgt über die grafische Server „arcan-net“, das das A12-Protokoll implementiert, das die Möglichkeiten solcher Technologien wie mDNS (Erkennung lokaler Dienste), SSH (interaktive Textschnittstelle), X11/VNC/RDP (interaktive grafische Schnittstelle), RTSP (Streamübertragung von Multimedia-Daten) und HTTP (Ressourcenerkennung und Statussynchronisation) vereint.
Arcan ist nicht an ein bestimmtes grafisches Subsystem gebunden und kann über verschiedene Systemumgebungen (BSD, Linux, macOS, Windows) laufen und dabei Plug-in-Backends nutzen. So besteht die Möglichkeit, über Xorg, egl-dri, libsdl und AGP (GL/GLES) zu starten. Unter der Kontrolle des Display Server kann Arcan Client-Anwendungen auf Basis von X, Wayland und SDL2 ausführen. Sicherheit, Leistung und Debugging-Fähigkeit werden als wichtige Kriterien genannt, die bei der Gestaltung der Arcan-API angewendet werden. Zur Vereinfachung der Entwicklung von Schnittstellen wird empfohlen, die Programmiersprache Lua zu verwenden.
Besonderheiten von Arcan:
- Die Kombination von Rollen eines Composite-Servers, Display-Servers und Window-Managers.
- Die Möglichkeit, im isolierten Modus zu arbeiten, bei dem die Anwendung als eigenständiges Element auftritt.
- Ein integriertes Multimedia-Framework, das Werkzeuge für Grafik, Animation, Streaming von Video und Audio, Bildübertragung und den Umgang mit Videoerfassungsgeräten bereitstellt.
- Ein multiprozessales Modell zur Anbindung von Handlern an dynamische Datenquellen — von Video-Streams bis zur Ausgabe einzelner Programme.
- Strenges Modell der Privilegienaufteilung. Die Komponenten der Engine werden in kleine unprivilegierte Prozesse unterteilt, die über die Schnittstelle des Shared Memory shmif miteinander kommunizieren;
- Integrierte Überwachungs- und Analysewerkzeuge für Abstürze, einschließlich der Möglichkeit, dass die Engine den internen Zustand von Lua-Skripten zur Vereinfachung des Debuggens serialisieren kann;
- Fallback-Funktion, die im Fall eines Fehlers in der Anwendung eine Ersatzanwendung starten kann, während dieselben externen Datenquellen und Verbindungen beibehalten werden;
- Erweiterte Funktionen für die gemeinsame Nutzung, die zur Aufnahme oder Übertragung bestimmter Teilmengen von Audio- und Videoquellen während der Realisierung der Desktop-Freigabe verwendet werden können.
Quelle: opennet.ru
