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 turbo
editor is now included in the base for those who don't vim
right 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}= .ext
and exclude specific objects per directory with LINK_EXCLUDE.${subdir}= file.o file2.o
. Example here.
Package system changes
ravynOS no longer has a package repository or uses the pkg
command. This command is once again available for installing and managing FreeBSD packages from upstream repos. These packages will normally install into /usr/local
and 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.sh
have been fixed and it works again. zsh
has been moved to/bin
from/usr/bin
.bash
remains available in/bin
as well.neofetch
andplutil
have been added.cmake
,gmake
and all GNU binutils (prefixed with 'g'), andnasm
were added.- Our PoC
dyld
has 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.ids
v2.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.