Après deux ans de développement, le projet ravynOS 0.5 a été publié. Il s'agit d'un système d'exploitation basé sur FreeBSD, visant à assurer la compatibilité avec les applications pour macOS et en fournissant une coque personnalisée dans le style macOSCe projet est distribué sous licence BSD. La taille de l'image ISO amorçable est de 869 Mo (x86_64).
Les objectifs déclarés du projet sont d'assurer la compatibilité avec les applications. macOS au niveau du code source et du fichier exécutable. Le premier point implique la possibilité de recompiler le code. macOS- Applications pour exécution sous ravynOS, dans le second - intégration du noyau et instrumentation des modifications pour l'exécution d'exécutables Mach-O compilés pour les architectures x86-64 et arm64. Parmi les systèmes de fichiers, ZFS et ceux utilisés dans macOS Systèmes de fichiers HFS+ et APFS. Outre les hiérarchies /usr et /usr/local typiques de FreeBSD, des hiérarchies spécifiques sont créées. macOS Les répertoires /Library, /System et /Volumes. Les répertoires personnels des utilisateurs se trouvent dans l'arborescence /Users. Chaque répertoire personnel contient un sous-répertoire ~/Library pour les applications utilisant l'API Cocoa d'Apple.
Pour la compatibilité avec macOS Une implémentation partielle de l'API Cocoa et de l'environnement d'exécution Objective-C (situé dans le répertoire /System/Library/Frameworks) est fournie, ainsi que des compilateurs et des éditeurs de liens modifiés pour les prendre en charge. En plus de la couche de compatibilité avec macOS ravynOS a également la capacité d'exécuter des applications pour Linux, basé sur l'infrastructure d'émulation d'environnement proposée par FreeBSD Linux (Linuxulateur).
Les applications peuvent être conçues comme des packages d'applications autonomes (App Bundle) au format AppImage, placés dans les répertoires /Applications ou ~/Applications. Les programmes ne nécessitent pas l'installation ou l'utilisation d'un gestionnaire de packages - il suffit de glisser-déposer et de lancer le fichier AppImage. Dans le même temps, la prise en charge des packages FreeBSD traditionnels est conservée.
L'environnement graphique est construit sur la base de sa propre fenêtre. serveurCe système utilise un serveur composite labwc allégé (la prise en charge de la décoration des fenêtres côté serveur et des thèmes a été supprimée), wlroots et le protocole Wayland. Les applications peuvent utiliser les frameworks Qt et Cocoa pour la gestion graphique. L'interface utilise des standards macOS des concepts tels qu'un panneau supérieur 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 la nouvelle version :
- Le système de base a été mis à jour vers la branche FreeBSD 15-CURRENT. L'utilisation des ports FreeBSD a été interrompue - tous les composants nécessaires ont été déplacés vers le référentiel système.
- La structure principale comprend l'éditeur de texte turbo. Également ajouté les binutils cmake, gmake, nasm et GNU.
- Les fichiers d'assemblage des frameworks pour Cocoa et Objective-C offrent la possibilité de lier des objets dans des sous-répertoires pour simplifier le transfert de code de différents sous-répertoires vers une seule bibliothèque.
- L'utilisation du référentiel de packages a été interrompue, mais il est toujours possible d'installer des packages depuis les référentiels FreeBSD dans le répertoire /usr/local à l'aide de la commande pkg.
- Un nouvel utilitaire de construction a été ajouté, build.sh, qui simplifie l'ensemble du processus de construction du système et de création d'une image ISO personnalisée pouvant être chargée en mode Live.
- Une implémentation basique d'un panneau Dock graphique avec un petit ensemble d'icônes de base a été ajoutée. Elle permet d'afficher les lancements de programmes, de placer des raccourcis d'applications et de personnaliser le fond d'écran du bureau dans le style de macOSLe contenu de ce panneau ne peut actuellement être personnalisé qu'en modifiant le fichier plist situé dans ~/Library/Preferences.
- Ajout de la prise en charge de la classe NSStatusItem, permettant aux applications Cocoa de déplacer les menus vers le panneau global.
Source: opennet.ru
