Na een jaar ontwikkeling is de desktop-engine Arcan 0.7 uitgebracht, die een displayserver, multimedia-framework en game-engine combineert voor de verwerking van 3D-graphics. Arcan kan worden gebruikt voor het maken van verschillende grafische systemen, van gebruikersinterfaces voor embedded toepassingen tot zelfstandige desktopomgevingen. Onder andere is de 3D-desktop Safespaces voor virtual reality-systemen en de desktopomgeving Durden gebaseerd op Arcan. De code van het project is geschreven in C en wordt verspreid onder de BSD-licentie (sommige componenten onder GPLv2+ en LGPL).
Arcan is niet gebonden aan specifieke grafische subsystemen en kan draaien boven verschillende systeemomgevingen (BSD, Linux, macOS, Windows), waarbij plug-in backends worden gebruikt. Er is bijvoorbeeld de mogelijkheid om te draaien boven Xorg, egl-dri, libsdl en AGP (GL/GLES). Onder de controle van de display de server Arcan kunnen clienttoepassingen draaien op basis van X11, Wayland en SDL2. Als belangrijke criteria voor het ontwerp van de Arcan-API worden veiligheid, prestaties en debuggeschiktheid genoemd. Voor het vergemakkelijken van de ontwikkeling van interfaces wordt aangeraden om de programmeertaal Lua te gebruiken.
Features of Arcan:
- Combination of the capabilities of a composite server, display server, and window manager.
- Ondersteuning voor het werken in een geĆÆsoleerde modus, waarbij de toepassing een zelfstandige schakel is.
- Built-in multimedia framework providing tools for graphics work, streaming video and audio processing, animations, image loading, and video capture device handling.
- Multiprocess model for connecting data source handlers (e.g., video streams and output from running programs).
- Strict privilege separation model ā engine components are broken down into small unprivileged processes interacting through the shared memory interface Shmif.
- Ingebouwde hulpmiddelen voor monitoring en analyse van crashterminaties van processen, bijvoorbeeld, de engine kan de interne staat van Lua-scripts serialiseren om de debuggen te vergemakkelijken.
- Mogelijkheid voor terugval (Fallbacks) naar een andere handler ā in geval van een fout door een programmeerfout kan de engine een reserve-toepassing starten, waarbij dezelfde externe gegevensbronnen en verbindingen worden behouden.
- Hulpmiddelen voor samenwerkings- en externe desktopverbinding. Toegang via netwerk wordt mogelijk gemaakt door de grafische server «arcan-net», die het P2P-protocol A12 implementeert en de mogelijkheden van technologieën zoals mDNS (het ontdekken van lokale services), SSH (interactieve tekstshell), X11/VNC/RDP (interactieve grafische shell), RTSP (streaming van multimedia) en HTTP (resource-upload en statusynchronisatie) combineert.
In de nieuwe versie is er verder gewerkt aan het netwerk subsystem en het A12-protocol. De mogelijkheden van de directory server zijn uitgebreid, die is ontwikkeld om componenten die over het netwerk zijn verspreid te verbinden in ƩƩn stack; zo kan deze worden gebruikt voor het aansluiten van externe apparaten zoals opslagapparaten, camera's en schermen op de desktop. In de X-server Xarcan is ondersteuning toegevoegd voor het uitvoeren van externe window managers. Bij deze uitvoering neemt Xarcan de verantwoordelijkheden op zich voor low-level schermverwerking, beveiliging en configuratiebeheer, terwijl de window manager verantwoordelijk is voor het afhandelen en decoreren van vensters (video met voorbeeld).

De mogelijkheden van Lash, de omgeving voor het uitvoeren van scripts in de Lua-taal, en de command-line shell Cat9 die op basis daarvan is gebouwd, zijn uitgebreid. Dit biedt de mogelijkheid om de uitvoer van commando's aan specifieke cellen te binden, die een vergelijkbaar uiterlijk hebben als een spreadsheet (video met demonstratie). Het voorgestelde concept maakt het mogelijk om gegevensstromen tussen vensters te herleiden, door data en handlers in verschillende vensters te verbinden, vergelijkbaar met cellen in spreadsheets (bijvoorbeeld, de uitvoer van ƩƩn venster kan worden omgeleid naar een shell-handler die in de terminal draait, en de uitkomst kan in een ander venster worden gebruikt).

Bron: opennet.ru
