Después de dos años de desarrollo, se ha publicado la versión 0.5 del proyecto ravynOS, que desarrolla un sistema operativo basado en FreeBSD destinado a lograr compatibilidad con aplicaciones para macOS y proporcionar una interfaz de usuario al estilo de macOS. Los desarrollos del proyecto se distribuyen bajo la licencia BSD. El tamaño de la imagen ISO de arranque es de 869 MB (x86_64).
Los objetivos del proyecto incluyen lograr compatibilidad con aplicaciones de macOS a nivel de código fuente y de archivos ejecutables. En el primer caso, se refiere a la posibilidad de recompilar el código de aplicaciones de macOS para que se ejecute en ravynOS; en el segundo, a la integración de cambios en el núcleo y las herramientas para ejecutar archivos Mach-O, compilados para arquitecturas x86-64 y arm64. Se soportan sistemas de archivos ZFS y los sistemas de archivos utilizados en macOS HFS+ y APFS. Además de las jerarquías típicas de FreeBSD /usr y /usr/local, se crean directorios específicos de macOS como /Library, /System y /Volumes. Los directorios personales de los usuarios se colocan en la jerarquía /Users. En cada directorio personal hay un subdirectorio ~/Library para aplicaciones que utilizan la interfaz de programación de Apple Cocoa.
Para la compatibilidad con macOS, se proporciona una implementación parcial de la interfaz de programación Cocoa y del runtime de Objective-C (se encuentran en el directorio /System/Library/Frameworks), así como compiladores y enlazadores modificados adicionalmente para su soporte. Además de la capa de compatibilidad con macOS, ravynOS también ofrece la capacidad de ejecutar aplicaciones para Linux, basada en la infraestructura de emulación de entorno Linux (Linuxulator) disponible en FreeBSD.
Las aplicaciones pueden presentarse como paquetes app-autónomos (App Bundle) en formato AppImage, ubicándose en los directorios /Applications o ~/Applications. Los programas no requieren instalación ni el uso de un gestor de paquetes: solo hay que arrastrar y soltar el archivo AppImage para ejecutarlo. Aun así, se mantiene el soporte para los paquetes tradicionales de FreeBSD.
El entorno gráfico se construye sobre una base de un servidor de ventanas propio. servidores, que utiliza el servidor compuesto reducido labwc (se eliminó el soporte para la decoración de ventanas en el servidor y temas), wlroots y el protocolo Wayland. En las aplicaciones gráficas se pueden emplear los frameworks Qt y Cocoa. La interfaz utiliza conceptos típicos de macOS, como la barra superior con un menú global, una estructura de menú idéntica, combinaciones de teclas, un gestor de archivos Filer de estilo similar y soporte para comandos como launchctl y open.

En esta nueva versión:
- El sistema base se ha actualizado a la rama FreeBSD 15-CURRENT. Se ha dejado de utilizar los puertos de FreeBSD: todos los componentes necesarios se han trasladado al repositorio del sistema.
- Se ha incluido el editor de texto turbo en el conjunto principal. También se han añadido cmake, gmake, nasm y GNU binutils.
- En los archivos de ensamblaje de los frameworks para Cocoa y Objective-C se ha proporcionado la capacidad de vincular objetos en subdirectorios para facilitar la transferencia de código de diferentes subdirectorios a una sola biblioteca.
- Se ha dejado de utilizar el repositorio de paquetes, pero se ha mantenido la posibilidad de instalar paquetes desde los repositorios de FreeBSD en el directorio /usr/local mediante el comando pkg.
- Se ha añadido una nueva utilidad de compilación build.sh, que simplifica todo el proceso de construcción del sistema y creación de una imagen ISO personalizada, que se puede cargar en modo Live.
- Se ha añadido una implementación inicial de un panel Dock gráfico con un pequeño conjunto de iconos básicos. Hay posibilidad de indicar el lanzamiento de programas, colocar accesos directos de aplicaciones y configurar fondos de escritorio al estilo de macOS. El contenido del panel todavía se configura solo mediante la edición del archivo plist en ~/Library/Preferences.
- Se ha añadido soporte para la clase NSStatusItem, que permite a las aplicaciones Cocoa mover menús a la barra global.
Fuente: opennet.ru
