Skip to content

ravynOS 0.5.0 "Sneaky Snek"

Compare
Choose a tag to compare
@mszoek mszoek released this 26 May 20:50
· 3903 commits to main since this release

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 and plutil have been added.
  • cmake, gmake and all GNU binutils (prefixed with 'g'), and nasm 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.