Dopo due anni di sviluppo, è stata rilasciata la versione 0.5 del progetto ravynOS, che sviluppa un sistema operativo basato su FreeBSD, mirato a raggiungere la compatibilità con le applicazioni per macOS e a fornire un'interfaccia utente in stile macOS. I progressi del progetto sono distribuiti con licenza BSD. La dimensione dell'immagine iso avviabile è di 869 MB (x86_64).
Tra gli obiettivi del progetto c'è il raggiungimento della compatibilità con le applicazioni macOS a livello di codice sorgente e file eseguibili. Nel primo caso si intende la possibilità di ricompilare il codice delle applicazioni macOS per l'esecuzione in ravynOS, nel secondo l'integrazione nel kernel e negli strumenti delle modifiche necessarie per eseguire file eseguibili Mach-O, compilati per le architetture x86-64 e arm64. Vengono supportati i file system ZFS e i file system utilizzati in macOS come HFS+ e APFS. Oltre alle gerarchie tipiche di FreeBSD come /usr e /usr/local, vengono create directory specifiche per macOS come /Library, /System e /Volumes. Le directory home degli utenti sono collocate nella gerarchia /Users. In ogni directory home c'è una sottodirectory ~/Library per le applicazioni che utilizzano l'interfaccia di programmazione Apple Cocoa.
Per la compatibilità con macOS viene fornita un'implementazione parziale dell'interfaccia di programmazione Cocoa e del runtime Objective-C (collocati nella directory /System/Library/Frameworks), insieme a compilatori e linker modificati per supportarli. Oltre allo strato di compatibilità con macOS, in ravynOS è anche disponibile la possibilità di eseguire applicazioni per Linux, basata su un'infrastruttura di emulazione dell'ambiente Linux offerta da FreeBSD (Linuxulator).
Le applicazioni possono essere confezionate come app-pacchetti autonomi (App Bundle) nel formato AppImage, collocati nelle directory /Applications o ~/Applications. I programmi non richiedono installazione né l'uso di un gestore di pacchetti: basta trascinare con il mouse e avviare il file AppImage. È mantenuto il supporto anche per i pacchetti tradizionali di FreeBSD.
L'ambiente grafico è basato su un proprio sistema di finestre. server, che utilizza il server composito ridotto labwc (rimosso il supporto per la decorazione delle finestre lato server e i temi), wlroots e il protocollo Wayland. Nelle applicazioni grafiche possono essere utilizzati framework come Qt e Cocoa. L'interfaccia utilizza concetti standard per macOS, come la barra superiore con menu globale, una struttura di menu identica, combinazioni di tasti, un file manager Filer simile nello stile e supporto per comandi come launchctl e open.

Nel nuovo rilascio:
- Il sistema di base è stato aggiornato alla branch FreeBSD 15-CURRENT. È stata interrotta l'utilizzo dei port di FreeBSD: tutti i componenti necessari sono stati trasferiti nel repository di sistema.
- Nel pacchetto principale è stato incluso l'editor di testo turbo. Sono stati aggiunti anche cmake, gmake, nasm e GNU binutils.
- Nei file di costruzione dei framework per Cocoa e Objective-C è stata fornita la possibilità di collegare oggetti in sottodirectory per semplificare il trasferimento del codice da diverse sottodirectory in una sola libreria.
- È stata interrotta l'utilizzo del repository di pacchetti, ma è stata mantenuta la possibilità di installare pacchetti dai repository FreeBSD nella cartella /usr/local tramite il comando pkg.
- È stata aggiunta una nuova utilità di build.sh, che semplifica l'intero processo di costruzione del sistema e creazione di un'immagine ISO personalizzabile, caricabile in modalità Live.
- È stata aggiunta un'implementazione iniziale di una Dock bar grafica con un insieme limitato di icone di base. C'è la possibilità di indicare l'avvio di programmi, posizionare collegamenti a applicazioni e impostare lo sfondo del desktop in stile macOS. Il contenuto della barra può essere configurato solo tramite la modifica del file plist in ~/Library/Preferences.
- È stato aggiunto il supporto per la classe NSStatusItem, che consente alle applicazioni Cocoa di spostare i menu nella barra globale.
Fonte: opennet.ru
