Dopo un anno di sviluppo, è stata pubblicata la versione 0.6.2 del motore desktop Arcan, che integra un server di visualizzazione, un framework multimediale e un motore di gioco per l'elaborazione di grafica 3D. Arcan può essere utilizzato per creare vari sistemi grafici, da interfacce utente per applicazioni embedded a ambienti desktop autonomi. Tra l'altro, su Arcan si sta sviluppando il desktop tridimensionale Safespaces per sistemi di realtà virtuale e l'ambiente desktop Durden. Il codice del progetto è scritto in C ed è distribuito con licenza BSD (alcuni componenti sotto GPLv2+ e LGPL).
Nel nuovo rilascio prosegue lo sviluppo di strumenti per il lavoro remoto sul desktop tramite rete. L'accesso di rete è fornito da un server «arcan-net», che implementa il protocollo A12, che integra le funzionalità di tecnologie come mDNS (scoperta di servizi locali), SSH (shell testuale interattiva), X11/VNC/RDP (interfaccia grafica interattiva), RTSP (streaming di dati multimediali) e HTTP (caricamento di risorse e sincronizzazione dello stato).
Arcan non è legato a un singolo sottosistema grafico e può operare su vari ambienti di sistema (BSD, Linux, macOS, Windows), utilizzando backend collegabili. Ad esempio, è possibile eseguire su Xorg, egl-dri, libsdl e AGP (GL/GLES). Sotto il controllo del server Arcan possono essere eseguite applicazioni client basate su X, Wayland e SDL2. I criteri chiave applicati nella progettazione dell'API di Arcan includono sicurezza, prestazioni e facilità di debug. Per semplificare lo sviluppo delle interfacce, si propone di utilizzare il linguaggio Lua.
Caratteristiche di Arcan:
- Combinazione di ruoli di server composito, server di visualizzazione e gestore di finestre.
- Capacità di operare in modalità isolata, in cui l'applicazione funge da elemento autonomo.
- Framework multimediale integrato, che fornisce strumenti per la grafica, l'animazione, l'elaborazione di video e audio in streaming, il caricamento di immagini e l'interazione con dispositivi di acquisizione video.
- Modello multi-processo per la connessione di gestori di fonti di dati dinamiche — dai flussi video all'output di singoli programmi.
- Modello rigido di separazione dei privilegi. I componenti del motore vengono suddivisi in piccoli processi non privilegiati che comunicano tramite un'interfaccia di memoria condivisa shmif;
- Strumenti integrati per monitoraggio e analisi dei crash, incluso il motore può serializzare lo stato interno degli script Lua per semplificare il debugging;
- Funzione di ripristino (Fallbacks), che in caso di errore di programma può avviare un'applicazione di riserva, mantenendo le stesse fonti di dati esterni e connessioni;
- Strumenti avanzati per la condivisione, utilizzabili per registrare o trasmettere singoli sottoinsiemi di fonti audio e video durante la realizzazione della condivisione del desktop.
Fonte: opennet.ru
