Releases
All the releases and their details like features and bug-fixes, and link to discussions.
ravynOS 0.6.0 "Hyperpop Hyena" ravynOS "Hyperpop Hyena" Developer Preview Release v0.6.0
Welcome to the 0.6.0 Developer Preview of ravynOS!
⚠️ As usual, this is an unstable pre-release of upcoming stuff intended for people helping build the system. It is not complete. It contains bugs - sometimes serious ones - including application and desktop crashes and even kernel panics. You have been warned.
This release mainly updates the FreeBSD components to the
stable/15branch. The UI is a functional, although minimal, desktop environment with SystemUIServer (top menu bar), LoginWindow, and Dock, similar to v0.5.2. A very basic proof-of-concept Terminal.app is also bundled.You should see a login screen shortly after booting, where you can log in as
liveuserwith no password. After login, you should see a desktop with menu bar, Dock, and wallpaper.You can exit WindowServer by pressing
Command-Shift-Q(Commandis usually your OS logo key) followed byAlt-F2for a console login prompt in case things get funky.Bug fixes, Limitations and Known issues
See open issues for the full list.
Global display coordinates are not implemented. Only one display is currently supported.
NSWindowand WindowServer do not currently support OpenGL. This will be added back once we have acceleration again. (Long term plans are to support Metal.)Using a PS/2 mouse or keyboard emulation with virtio may cause input lag. Use USB devices.
Please see the wiki for system requirements, install instructions and where to find things.
Ask questions or give feedback in the Discussions area. Please report any bugs to the Issues tracker. Your help in fixing said bugs would be appreciated too! Thanks!
Get It!
Download from GitHub or your closest mirror: NomadLogic - US West | Clarkson - US East | HS Fulda - Germany | NTNU - Norway | dotSrc - Denmark
Torrents are also available courtesy of FOSSTorrents
SHA256:
25904aafeff717423dc8a6d7bd1aba60d9910bcb6ac744a915171e13c61fc3eb ravynOS_0.6.0_amd64.isoUnstable "nightly" builds are also available for developer testing: Download from NomadLogic - US West | Clarkson - US East | HS Fulda - Germany | NTNU - Norway | dotSrc - Denmark
Torrents of the snapshot builds are available too! Thanks to @RangerRick for setting these up.
Acknowledgements
As usual, thank you to our community of sponsors, designers, developers, testers, and users, and mirror hosts for supporting the project. Special thanks to everyone who didn't give up on the project while my life was crazy. ❤️
ravynOS 0.5.2 "Sneaky Snek" ravynOS "Sneaky Snek" Developer Preview Release v0.5.2 🐍
Welcome to the 0.5.2 Developer Preview of ravynOS!
⚠️ As usual, this is an unstable pre-release of upcoming stuff intended for people helping build the system. It is not complete. It contains bugs - sometimes serious ones - including application and desktop crashes and even kernel panics. You have been warned.
This release brings a functional, although minimal, desktop environment with SystemUIServer (top menu bar), LoginWindow, and Dock. A very basic proof-of-concept Terminal.app is also bundled.
You should see a login screen shortly after booting, where you can log in as
liveuserwith no password. After login, you should see a desktop with menu bar, Dock, and wallpaper.You can exit WindowServer by pressing
Command-Shift-Q(Commandis usually your OS logo key) followed byAlt-F2for a console login prompt in case things get funky.The notes below are a summary of the changes from v0.5.2. Full Changelog.
Base system updates
FreeBSD base updated to commit 2001bef84ba64cee51abf91b5ad3aca071e75788.
libarchiveupdated to 3.7.7. A security issue was fixed in bhyve's nvme module. Deprecatedfdiskand it will tell you when it runs. Improvements toloader.efi. ELF parsing functions fromkldxrefare now broken out intolibkldelffor easier reuse. LLVM updated to 19.1.2. Many more changes - please see the commit logs for details.Old wallpaper images of questionable license have been removed, and replaced with freely licensed ones from Trenta.io and original images contributed by Kush. You'll find these in
/System/Library/Desktop Picturesas usual.Stale settings from
/etc/rc.confon the ISO were removed.Font Awesome Free 6 was added to
/System/Library/Fontsas it is used for certain menu symbols.CoreGraphics
A fairly complete implementation of Quartz Display Services and Quartz Window Services has been added.
The nonstandard and hacky
CGWindowclass was removed.CGWindowLevel.hwas updated to match Apple's spec.AppKit
Large parts of platform-agnostic code were removed and
CGWindowfunctionality merged intoNSWindow. MigratedNSApplicationto use the new Quartz APIs in various places.Window position and size requests are now respected again since Wayland is gone.
Default font size for NSTextView/Field/etc was increased for readability.
Window controls now show their inner symbol when the mouse hovers on them.
Menu code related to drawing was moved to SystemUIServer, where it belongs and the view code was refactored.
NSMenuandNSMenuItemstay in AppKit. Menus are now shared with SystemUIServer using Mach IPC instead of a unix socket.Foundation
An error in creating missing folders when writing user preference files atomically was fixed.
WindowServer
WindowServer now allocates a new VT for itself and prevents switching while running. On exit, it should restore the original VT and re-enable switching. However, sometimes the original VT does not get reactivated - press
Alt-F2after exiting WindowServer if it does not return to a console.Switching between apps now happens when pressing
Command-Tab.The multiple window levels (from
CGWindowLevel.h) are now supported.SystemUIServer
dmidecode 3.6was brought in to the source tree for the About This Computer window.ClockViewwas rewritten in a better way.Dock
Dock is back! Much work is still needed here but it's back.
Tools and Misc
A simple CLI screen capture utility has been added at
/usr/bin/grabscr. Just provide a filename and it will write a PNG image of the main display to the file.Bug fixes, Limitations and Known issues
See open issues for the full list.
Global display coordinates are not implemented. Only one display is currently supported.
NSWindowand WindowServer do not currently support OpenGL. This will be added back once we have acceleration again. (Long term plans are to support Metal.)Using a PS/2 mouse or keyboard emulation with virtio may cause input lag. Use USB devices.
Please see the wiki for system requirements, install instructions and where to find things.
Ask questions or give feedback in the Discussions area. Please report any bugs to the Issues tracker. Your help in fixing said bugs would be appreciated too! Thanks!
Get It!
Download from GitHub or your closest mirror: NomadLogic - US West | Clarkson - US East | HS Fulda - Germany | NTNU - Norway | dotSrc - Denmark
Torrents are also available courtesy of FOSSTorrents
SHA256:
3a3b42545e5fbb5b9483f83903ac85afc193e6b652d93dbc7ee6e5fc0af951da ravynOS_0.5.2_f15_amd64.isoUnstable "nightly" builds are also available for developer testing: Download from NomadLogic - US West | Clarkson - US East | HS Fulda - Germany | NTNU - Norway | dotSrc - Denmark
Torrents of the snapshot builds are available too! Thanks to @RangerRick for setting these up.
Acknowledgements
As usual, thank you to our community of sponsors, designers, developers, testers, and users, and mirror hosts for supporting the project. Special thanks to everyone who didn't give up on the project while my life was crazy. ❤️
ravynOS 0.5.1 "Sneaky Snek" ravynOS "Sneaky Snek" Developer Preview Release v0.5.1
Welcome to the 0.5.1 Developer Preview of ravynOS! As usual, this is an unstable pre-release of upcoming stuff intended for people helping build the system. It is not complete. It contains bugs - sometimes serious ones - including application and desktop crashes and even kernel panics. You have been warned.
This release runs (as usual) on amd64 - aka x86_64. Much progress has been made on the ARM64 port and we hope to have an ISO available soon for that platform as well.
When the Live CD has booted, you should see a black screen with arrow cursor that moves with your mouse/trackpad. Please report your hardware or VM info if you do not! To get out of this new WindowServer, press
Shift-QthenAlt-F2for a new console where you should be able to log in asliveuser.The notes below are a summary of the changes from v0.5.0. Full Changelog.
Base system updates
This release updates the FreeBSD base to 15-CURRENT commit 41b746e05231b44c87f3a3087a7fe29966af6d0f (October 10, 2024). Interposing was removed from libepoll-shim. A kernel panic in the rtw89 driver was fixed. The
vmstatcommand now shows information about SysV shm segments. Improvements were made to virtual memory management and shared memory permissions. Many enhancements were made topf. ARM64 builds now use ACPI instead of FDT by default. Theerrnosymbol is now no longer exported from libc or libsys. OpenSSL was updated to 3.0.15. Theutouchmodule was removed. Many more changes - please see the commit logs for details.CoreGraphics
A partial implementation of Quartz Display Services has been added, with more to come. APIs added in 0.5.1 include:
- CGMainDisplayID
- CGGetDisplayList, CGGetOnlineDisplayList, CGGetActiveDisplayList, CGGetDisplaysWithOpenGLDisplayMask, CGGetDisplaysWIthPoint, CGGetDisplaysWithRect
- CGOpenGLDisplayMaskToDisplayID, CGDisplayIDToOpenGLDisplayMask
- CGDisplayCapture, CGDisplayCaptureWithOptions, CGDisplayRelease, CGCaptureAllDisplays, CGCaptureAllDisplaysWithOptions, CGReleaseAllDisplays
- CGShieldingWindowID, CGShieldingWindowLevel (both stubs - we do not use shielding windows)
- CGDisplayCreateImage, CGDisplayCreateImageForRect
- CGDisplayBounds, CGDisplayPixelsHigh, CGDisplayPixelsWide
- CGWindowServerCFMachPort
The default font family is now Inter.
AppKit
The default font family is now Inter. Keyboard layout definitions were added.
CoreFoundation
Implementations of
CFAllocatorandCFMachPortwere added.Foundation
NSExceptionnow includes the error message and a backtrace to improve debugging.NSAllocateMemoryPageswas fixed to allocate page-aligned chunks.WindowServer and the Desktop UI
WindowServer is being completely rebuilt without Wayland and DRM. It renders directly to the BSD EFI framebuffer console, which allows us to have graphics on any hardware (including VMs). The new WindowServer is entirely based on Cocoa and provides the backend for Quartz Display Services and Quartz Window Services (WIP). While drawing is currently not accelerated, it is very portable; accelerated drawing via DRM/KMS will be added back in later, with fallback to the unaccelerated framebuffer when not found.
Seatd was also removed as WindowServer directly takes the console and uses libinput, libevdev, and others for input. It sends events to apps using the Quartz APIs.
OpenGL has been removed for now. The still-supported bits will be added back once WindowServer is more mature. The long term plan is to implement Metal.
SystemUIServer and Dock have been temporarily disabled until WindowServer is ready.
Bug fixes, Limitations and Known issues
See open issues for the full list.
Please see the wiki for system requirements, install instructions and where to find things.
Ask questions or give feedback in the Discussions area. Please report any bugs to the Issues tracker. Your help in fixing said bugs would be appreciated too! Thanks!
Get It!
Download from GitHub or your closest mirror: NomadLogic - US West | Clarkson - US East | HS Fulda - Germany | NTNU - Norway | dotSrc - Denmark
Torrents are also available courtesy of FOSSTorrents
SHA256:
93ab3f61b8ffaab1d0fd83bd609314fe9598a4b5857f388b66551021f2c13ac8 ravynOS_0.5.1_f15_amd64.isoUnstable "nightly" builds are also available for developer testing: Download from NomadLogic - US West | Clarkson - US East | HS Fulda - Germany | NTNU - Norway | dotSrc - Denmark
Torrents of the snapshot builds are available too! Thanks to @RangerRick for setting these up.
Acknowledgements
As usual, thank you to our community of sponsors, designers, developers, testers, and users, and mirror hosts for supporting the project. Special thanks to everyone who didn't give up on the project while my life was crazy.
ravynOS 0.5.0 "Sneaky Snek" ravynOS "Sneaky Snek" Developer Preview Release v0.5.0
Welcome to the 0.5.0 Developer Preview of ravynOS! As usual, this is an unstable pre-release of upcoming stuff intended for people helping build the system. It is not complete. It contains bugs - sometimes serious ones - including application and desktop crashes and even kernel panics. You have been warned.
This release runs (as usual) on amd64 - aka x86_64. Much progress has been made on the ARM64 port and we hope to have an ISO available soon for that platform as well.
Base system updates
This release updates the FreeBSD base to 15-CURRENT and updates all third-party dependencies to their current versions as well. The build no longer relies on FreeBSD Ports and integrates all necessary code into the system repo. Cruft has been cleaned up, and the entire build runs against the source tree rather than the host system. This means ravynOS can now be built on vanilla FreeBSD 15 (and probably) 14 systems for easier development. However, executables will need to run on ravynOS. The new simplified iso build process (below) can help with this.
Gotta go fast
The
turboeditor is now included in the base for those who don'tvimright away.Improved Framework bundles
The ability to easily link objects in subdirs has been added to the Frameworks makefiles (rvn.framework.mk). This simplifies bundling code from subdirs into a single library and lets us build (for example) an OpenGL.framework containing a libOpenGL.so that includes not only the Apple APIs for GL but mesa and underlying dependencies that actually implement them. This functions more like a real Framework and simplifies linking of apps. CoreText, OpenGL, AppKit, Onyx2D have all been improved this way.
It's this easy. You can control the object file extension using
LINK_EXT.${subdir}= .extand exclude specific objects per directory withLINK_EXCLUDE.${subdir}= file.o file2.o. Example here.Package system changes
ravynOS no longer has a package repository or uses the
pkgcommand. This command is once again available for installing and managing FreeBSD packages from upstream repos. These packages will normally install into/usr/localand should not conflict with or break the base system, but do be careful. We have not finished locking in library run paths so installing libraries in /usr/local and having them found first may cause issues. In such a case, remove the packages.Easier builds
A new build tool
[tools/ravynOS/build.sh](https://github.com/ravynsoft/ravynos/blob/main/tools/ravynOS/build.sh)makes the whole process much easier and consistent, including creation of a bootable ISO live image with your changes. Instructions can be found on the wiki.Dock.app
A simple Dock has been added with a few default icons. It is very minimal so far. The indicator of a running app (dot under the icon) works, and it manages the desktop wallpaper as on macOS. Clicking an icon will launch it if it is not running. Manage the Dock by editing its plist file in
~/Library/Preferences.NSStatusItem
Partial support for NSStatusItem has been added. A NSStatusItem created by a Cocoa app will transparently appear in the Menu Extras area of the global bar, using its supplied icon. The item will disappear if the process exits. Context menus do not work yet.
Bug fixes and other changes
- Issues with
/bin/install.shhave been fixed and it works again. zshhas been moved to/binfrom/usr/bin.bashremains available in/binas well.neofetchandplutilhave been added.cmake,gmakeand all GNU binutils (prefixed with 'g'), andnasmwere added.- Our PoC
dyldhas been temporarily removed until the real one can be built - DBusKit.framework has been temporarily removed. Old Filer and dbus related functionality was removed from LaunchServices
- The LLVM vendor string was fixed
- WindowServer's internal compositor was stripped down to remove a pango dependency. This means server-side decoration, OSD, and font/theme functionality is removed. These are not technically needed for Cocoa apps and we'll find a better way.
pci.idsv2.2 was added to /etc- #416 Disable UART on boot
- An application's "About" window now works
launchd's handling of user-specified environment variables was made compliant with macOS Monterey- Menu windows properly stay on top
- Removed Herobrine (again)
Limitations and known issues
- Launchd jobs created from LaunchServices are not removed after exiting
- Many open options (e.g. redirecting I/O, setting env vars, wait for exit) are not yet implemented on the launchd version of LaunchServices
See open issues for the full list.
Please see the wiki for system requirements, install instructions and where to find things.
Ask questions or give feedback in the Discussions area. Please report any bugs to the Issues tracker. Your help in fixing said bugs would be appreciated too! Thanks!
Get It!
Download from GitHub or your closest mirror: NomadLogic - US West | Clarkson - US East | HS Fulda - Germany | NTNU - Norway | dotSrc - Denmark
Torrents are also available courtesy of FOSSTorrents
Unstable "nightly" builds are also available for developer testing: Download from NomadLogic - US West | Clarkson - US East | HS Fulda - Germany | NTNU - Norway | dotSrc - Denmark
Torrents of the snapshot builds are available too! Thanks to @RangerRick for setting these up.
Acknowledgements
As usual, thank you to our community of sponsors, designers, developers, testers, and users, and mirror hosts for supporting the project. Special thanks to everyone who didn't give up on the project while my life was crazy. This one is for you.
- Issues with
ravynOS 0.4.0pre4 ravynOS Pygmy Marmoset
Developer Preview Release v0.4.0pre4
Welcome to the 0.4.0pre4 Developer Preview of ravynOS as we continue working towards release 0.4! As usual, this is an unstable pre-release of upcoming stuff intended for people helping build the system. It is not complete. It contains bugs - sometimes serious ones - including application and desktop crashes and kernel panics. You have been warned.
This snapshot release includes the start of a GUI based on Cocoa and Mach. It aims to be Mac compatible. The GUI is very rudimentary so far - please be patient! More is on the way.
Detailed release notes below! TLDR: This release does stuff. More stuff than the previous one, but not by much, and a lot less than we want it to do eventually.
Kernel stabilization
A major bug in mach_msg memory allocation was fixed, massively improving the kernel's stability. There may still be occasional freezes or panics, mainly in the
drm-kmod(DRM/KMS video) drivers or in the latest Intel wifi (iwlwifi) driver.More LaunchDaemons
Launchdnow starts the Apple syslog (asld) andauditdservices which had been previously disabled for stability issues. The command-lineaslutilcan be used to examine ASL logs.WindowServer & SystemUIServer
The Tanuki series releases used a pretty traditional X11/KDE desktop environment that was shoehorned into looking and behaving like the Mac desktop. However, this can only go so far due to the very different architecture and design of the two systems. 0.4.0pre3 had the very first bits of a new UI built ground-up to be what we need. This release adds some vital plumbing and the first version of SystemUIServer.
WindowServer should start automatically if it detects a supported GPU (Intel HD and Iris, AMD or Radeon - we are still working towards virtual machine support with qxl and vmwgfx drivers). If successful, a black and white "ravynOS" wallpaper should appear on all screens and a login window should appear on one of them. Enter "liveuser" as the user name, leave password blank, and click the
Loginbutton. If you get it wrong, there is no feedback: just try again. A better login window is in development but we needed something quickly to make the Live ISO work :)After login, the display should change to a black screen with a menu bar at the top of one screen. The menu bar has a clock and the Ravyn menu, with typical options like
About this computer,Recent items,SleepandRestart. Most of these work - try Sleep, Restart, and Shut Down in particular and please report if they work for your hardware.When a Cocoa app (e.g.
/Applications/Utilities/Install ravynOS.app) is launched, its menus appear in the global bar and can be used as you would expect. Switching applications will switch the active menus as well. Exiting an application removes its menus from the bar. Remaining work items are tracked here. Also beware of known issues #288 and #280 in particular.Temporary Secret Terminal
Since the desktop has no way yet to launch apps, you can press
<Logo>-<Enter>(Logobeing your Windows or Command key or its equivalent) to launch a terminal window. Press<Alt>-<Space>while focused for a window menu, then enable Decorations to allow moving or resizing the window. The shell will be running asnobody, so usesu - liveuserto get to your regular account. This is not a Cocoa app and has no menus; it will go away once we have something better.Other Changes
- Many commits from FreeBSD upstream
- Many bugs fixed
- Many new bugs
Limitations and Known Issues
- The GUI is extremely minimal
- Lots of inconsistencies and incompatibilities
- Very few apps available
- Launchd jobs created from LaunchServices are not removed after exiting
- Many
openoptions (e.g. redirecting I/O, setting env vars, wait for exit) are not yet implemented on thelaunchdversion of LaunchServices - See open issues
Please see the wiki for system requirements, install instructions and where to find things.
Ask questions or give feedback in the Discussions area. Please report any bugs to the Issues tracker. Your help in fixing said bugs would be appreciated too! Thanks!
Get It!
Download 0.4.0pre4 from NomadLogic - US West or your closest mirror: US Central | US East | US East 2 | Norway | Denmark
Torrents are also available courtesy of FOSSTorrents
Unstable "nightly" builds are also available for developer testing: Download from US West | US Central | US East | US East 2 | Norway | Denmark
Torrents of the snapshot builds are available too! Thanks to @RangerRick for setting these up.
Acknowledgements
As usual, thank you to our community of sponsors, designers, developers, testers, and users, and mirror hosts for supporting the project.
ravynOS 0.4.0pre3 ravynOS Pygmy Marmoset
Developer Preview Release v0.4.0pre3
Welcome to the 0.4.0pre3 Developer Preview of ravynOS (formerly airyxOS)! As usual, this is an unstable pre-release of upcoming stuff intended for people helping build the system. It is not complete. It contains bugs - sometimes serious ones. It might spontaneously panic & reboot, melt your computer, eat your cat, or accelerate the heat death of the universe. You have been warned.
Also please note that the ISO currently does not boot into a GUI. You will see the boot messages and then it will appear to freeze. Switch to tty1 (Alt+F2 usually) for a login prompt. The login is
liveuserwith no password.Detailed release notes below! TLDR: This release does stuff. More stuff than the previous one, but not by much, and a lot less than we want it to do eventually.
Rebranding
The project's name, brand, associated images and assets have been changed.
FreeBSD 14-CURRENT
The kernel and base system has been rebased onto the CURRENT (14.0) branch of FreeBSD. The extra packages built from ports remain on the 2022Q1 branch for now. We expect the move to CURRENT to improve hardware support, especially in the DRM/KMS video drivers. Please expect some instability as we work out the bugs from this major update.
Mach Subsystem
There is now kernel support for Mach ports, port rights, messages, IPC including OOL descriptors, and system calls. This is provided by a kernel module,
mach.ko, which is (and must be) loaded at boot time byloader.conf. Never remove this; it will break your system. (Why is it a module then? Due to technical limitations that we need to solve.)The userspace parts are provided by headers in
/usr/include/machand/usr/include/sys/mach,libmach, and extensions tolibc.The
migcompiler is provided to compile.deffiles into Mach IPC/RPC code.launchdand LaunchAgentsApple's
launchdis now the systeminitprocess (pid 1). It starts a few essential services (asld- syslog,notifyd,devdandauditd) as LaunchDaemons then passes control to the standardrcscripts to start the rest of the system. More services can be translated into LaunchDaemons over time. (asldandauditdare temporarily disabled for stability concerns.)-+= 00001 root /sbin/launchd |--= 00025 root /sbin/devd -d |--= 00026 root /usr/sbin/asld -d |--= 00027 root /usr/sbin/auditd -l |--= 00030 root /usr/sbin/notifyd -dLaunchDaemons are started from their descriptions in
/System/Library/LaunchDaemonsor/Library/LaunchDaemonsas on macOS, but ours are currently defined in JSON instead of XML. (Because that's how iX Systems did theirlaunchctl.) Adding XML plist support here is on the task list.A per-user
launchdinstance is started to manage user LaunchAgents (defined in~/Library/LaunchAgents) and LaunchDaemons (defined in~/Library/LaunchDaemons).Grand Central Dispatch
You can now write (or build) software that needs Grand Central Dispatch, also known as libdispatch or Dispatch. Dispatch provides thread pools and concurrency. It can be used directly, but more importantly, opens the door to adding Dispatch support in Foundation. Note that neither Cocoa or CoreFoundation have been extended yet to support Dispatch.
XPC
A
libxpchas also been added, courtesy of work done by iX Systems. XPC is "a lightweight mechanism for basic interprocess communication" built on top of Mach. XPC is used bylaunchdamong other things and enables the addition of more compatibility stuff in Foundation. Note that Cocoa and CoreFoundation have not been extended yet to support XPC.Clang and LLVM
LLVM and Clang have been upgraded to 13.0.0.
ravynOS clang version 13.0.0 (git@github.com:llvm/llvm-project.git llvmorg-13.0.0-0-gd7b669b3a303) Target: x86_64-ravynos-freebsd14.0 Thread model: posix InstalledDir: /usr/binClang now links
libobjcautomatically for any input files detected as Objective-C (*.m) or Objective-C++ (*.mm). This only works if compilation and linking are one step. If linking is a separate step, you still need to specify-lobjc.Clang now defines the preprocessor symbol
__MACH__. The symbol__AIRYX__is no longer defined by the compiler; instead it defines__RAVYNOS__. You may notice that software tries to build in its Mac configuration due to the presence of__MACH__.Several essential header files from Darwin and Apple opensource have been added to
/usr/include.LaunchServices
LaunchServices now uses the "canonical" path of
/var/db/launchd/com.apple.launchd.per-user.$UIDfor its database. If you had an existing database under$HOME/Library/db, you can move it to the new location to preserve your app associations. It has also been integrated withlaunchdand will launch applications via the per-user instance if it is available."MachO ELF" Hybrid Linker, or "How I spent my winter vacation"
A proof-of-concept hybrid runtime linker has been added as
/usr/lib/dyld. This is not Apple'sdyld- it's an attempt to resolve symbols from a MachO binary with exports from ELF shared objects. The goal here was to run Mac MachO executables against our ELF-based Frameworks and other libraries so we don't need two sets of them or to convert everything to MachO. Curious people can read these notes captured during its very early development.So far, a small "hello world" in C using
printf()and one in Objective-C using Foundation'sNSLog()have been compiled on macOS and run under ravynOS'sdyld. GUI apps will not run yet.You need to create symlinks as well that translate the library & framework names in the executable to those on ravynOS; e.g.
ln -s /lib/libc.so.7 /usr/lib/libSystem.B.dylib.(Due to the complexity of this translation, we will very likely be moving toward building a Mach-O based system.)
MachO Executable Support
Alongside our
dyldis a very simple MachO image activator (BSD kernel module) that can recognize a MachO executable and transparently start it underdyld. This lets you run MachO binaries the same way as native ELF ones. Load themacho.komodule withkldloadto try it.★ zoe@haru ~ᐳ file ~/hello2 /Users/zoe/hello2: Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE> ★ zoe@haru ~ᐳ ~/hello2 2022-01-17 23:24:34.531 hello2[50578:80187d000] Hello from MachO Foundation!A Whole New World .. er GUI
Our previous images used a pretty traditional X11/KDE desktop environment that was shoehorned into looking and behaving like the Mac desktop. However, this can only go so far due to the very different architecture and design of the two systems. 0.4.0pre3 has the very first bits of a new UI built ground-up to be what we need. It's based on the wayland protocol, wlroots, OpenGL ES2, EGL, and kernel mode setting (KMS) drivers using the direct rendering manager (DRM).
WindowServer can be started if you have an Intel, AMD embedded, or Radeon GPU. It will not work in virtual machines until we get KMS drivers for the virtual hardware - work is underway to support Vmware (vmwgfx) and virtio (qemu, bhyve, others). Briefly:
kldload i915kms # for Intel GPUs /System/Library/CoreServices/WindowServer.app/WindowServerIf this works, you'll see a wallpaper and a placeholder menu bar with clock.
Other Changes
- The Live CD was reworked to use
tmpfsfor writable areas and droppedunionfs - Several new tree-themed wallpapers were added.
posix_spawn()now supports thePOSIX_SPAWN_SETEXECflag from Darwin./privatenow exists with symlinks to some critical areas- The installer now supports installing to MMC and VirtIO (VBD) media.
- pthread work queues were added to support libdispatch and friends
- Some icons have been updated (and more are coming)
Limitations and Known Issues
There are still many major limitations and problems making this release unsuitable for daily use.
- There is no GUI
- Lots of inconsistencies and incompatibilities
- Very few apps available
- Mach is not completely stable
- If the system does not shut down cleanly, you may see a kernel panic & reboot on the next start. It should start correctly after this reboot.
- Launchd jobs created from LaunchServices are not removed after exiting
- Many
openoptions (e.g. redirecting I/O, setting env vars, wait for exit) are not yet implemented on thelaunchdversion of LaunchServices
Please see the wiki for system requirements, install instructions and where to find things.
Ask questions or give feedback in the Discussions area. Please report any bugs to the Issues tracker. Your help in fixing said bugs would be appreciated too! Thanks!
Get It!
Download 0.4.0pre3 from NomadLogic - US West or your closest mirror: US Central | US East | US East 2 | Norway | Denmark
Unstable "nightly" builds are also available for developer testing: Download from US West | US Central | US East | US East 2 | Norway | Denmark
Acknowledgements
A huge thanks to the NetBSD and NextBSD projects for pioneering Mach support in BSD. Additional huge thanks to Jordan Hubbard, Kip Macy, the entire NextBSD team, and iX Systems for all their work on XPC, launchd, and Dispatch! As usual, thank you to our community of sponsors, designers, developers, testers, and users, and mirror hosts for supporting the project.
- The Live CD was reworked to use
OpenJDK 17.0.1+12 OpenJDK 17.0.1+12 (2021-10-30) built for airyxOS and usable as a bootstrap JDK for further builds.
This is a vanilla FreeBSD JDK other than being packaged for airyxOS. It does not have any menu, font, or other system integration yet.