Après deux ans de développement, la version 0.5 du projet ravynOS a été publiée, développant un système d'exploitation basé sur FreeBSD, avec pour objectif d'atteindre la compatibilité avec les applications macOS et de fournir une interface utilisateur de style macOS. Les travaux du projet sont distribués sous licence BSD. La taille de l'image ISO bootable est de 869 Mo (x86_64).
Les objectifs du projet incluent l'atteinte de la compatibilité avec les applications macOS au niveau des fichiers sources et exécutables. Dans le premier cas, cela implique la possibilité de recompiler le code des applications macOS pour s'exécuter sur ravynOS, tandis que dans le second, cela inclut l'intégration de modifications dans le noyau et les outils pour exécuter des fichiers exécutables Mach-O, compilés pour les architectures x86-64 et arm64. Les systèmes de fichiers pris en charge incluent ZFS ainsi que les systèmes de fichiers utilisés dans macOS, HFS+ et APFS. En plus des hiérarchies typiques de FreeBSD /usr et /usr/local, des répertoires spécifiques à macOS sont créés : /Library, /System et /Volumes. Les répertoires personnels des utilisateurs sont situés dans la hiérarchie /Users. Dans chaque répertoire personnel, il existe un sous-répertoire ~/Library pour les applications utilisant l'interface de programmation Apple Cocoa.
Pour assurer la compatibilité avec macOS, une implémentation partielle de l'interface de programmation Cocoa et du runtime Objective-C est fournie (située dans le répertoire /System/Library/Frameworks), ainsi que des compilateurs et des linkers modifiés pour leur support. En plus de la couche de compatibilité avec macOS, ravynOS permet également d'exécuter des applications Linux, basée sur l'infrastructure d'émulation de l'environnement Linux (Linuxulator) proposée dans FreeBSD.
Les applications peuvent être formatées en tant que paquets app-autonomes (App Bundle) au format AppImage, placés dans les répertoires /Applications ou ~/Applications. Aucune installation ou gestionnaire de paquets n'est nécessaire — il suffit de faire glisser le fichier AppImage et de l'exécuter. La prise en charge des paquets traditionnels de FreeBSD est également conservée.
L'environnement graphique est construit sur la base de son propre gestionnaire de fenêtres. de serveurs, utilisant un serveur composite réduit labwc (suppression de la prise en charge de la décoration des fenêtres côté serveur et des thèmes), wlroots et le protocole Wayland. Les applications peuvent utiliser les frameworks Qt et Cocoa. L'interface utilise des concepts typiques de macOS, tels qu'une barre supérieure avec un menu global, une structure de menu identique, des raccourcis clavier, un gestionnaire de fichiers Filer au style similaire et la prise en charge de commandes telles que launchctl et open.

Dans cette nouvelle version :
- Le système de base a été mis à jour vers la branche FreeBSD 15-CURRENT. L'utilisation des ports FreeBSD a été abandonnée — tous les composants nécessaires ont été transférés dans le dépôt système.
- Un éditeur de texte turbo a été inclus dans le package principal. Des outils tels que cmake, gmake, nasm et GNU binutils ont également été ajoutés.
- Dans les fichiers de construction des frameworks pour Cocoa et Objective-C, la possibilité de lier des objets dans des sous-répertoires a été fournie pour faciliter le transfert de code depuis différents sous-répertoires vers une seule bibliothèque.
- L'utilisation du dépôt de paquets a été arrêtée, mais la possibilité d'installer des paquets depuis les dépôts FreeBSD dans le répertoire /usr/local à l'aide de la commande pkg a été conservée.
- Une nouvelle utilitaire de construction build.sh a été ajoutée, simplifiant tout le processus de construction du système et de création d'une image ISO personnalisée, pouvant être chargée en mode Live.
- Une première version de la barre d'outils graphique Dock a été ajoutée, avec un petit ensemble d'icônes de base. Il est possible d'indiquer le lancement des programmes, de placer des raccourcis d'applications et de configurer le fond d'écran du bureau dans le style de macOS. Le contenu de la barre est encore configuré uniquement par l'édition du fichier plist dans ~/Library/Preferences.
- Ajout de la prise en charge de la classe NSStatusItem, permettant aux applications Cocoa de déplacer des menus vers la barre globale.
Source : opennet.ru
