First public release of Darwin for Raspberry Pi3

First public release of Darwin for Raspberry Pi3

Darwin on Pi3 is ready for people to play around with. I have made the repos public. Its important to understand with this is and what it isnt. This isnt macOS. This is something very very similar and shares a lot of the components. Everything here is open source. It is a Darwin with a pure Cocoa UI on X11. I have optimized everything for arm64/ 1GB RAM and totally disregarded other architectures. I have modified anything and everything to make the UI for this hardware. You will need Xcode 12 to build this. This is the version of Xcode closest to the version of the kernel we use. All the pi3B hardware works. This may boot on on other pi3s but there arent kexts for other hardware so everything may not work. I will add support for the other pi3 boards in the future. I do not own one so will need community testing to verify it works.

If you want to try to build it, start with this repo:

https://github.com/anurodhp/xnu-iokit-pi3/

setup third party should clone all of the many other repos. Build everything should build everything. tools/build real hw image will make 3GB image you can flash on to an SD card. The full build is huge and will take several hours.

SSH is on. Serial out works. HDMI out works. The root password is darwin. Since this is a bsd system you use pw to add/remove users and set passwords. When you boot it boots directly to X and the GSDM login screen. Logging in will take you to the new desktop with a dock. Sound works with a core audio daemon but there is nothing that uses it yet

If you use this image if you just want to flash to SD and try it out. File bugs in the iokit repo. if they are related to one of the apps Rome, Milan, Naples for Florence file them in their repo.

The ghostty terminal and the Webkit based browser are the most useful things right now. I will be publishing more user land apps and utilities to add more functionality. Things like wifi tools, setting screen, activity monitor, console viewer etc.

https://github.com/anurodhp/xnu-iokit-pi3/releases/tag/10_11_26

u/anurodhp — 4 days ago
▲ 29 r/DarwinOS+1 crossposts

Milan: Small, fast Gnustep desktop and file manager

Today's code release is Milan. A small fast file manager for the pi3 Darwin in Gnustep. The focus here is efficiency. It does the basics with proper unicode support.

https://github.com/anurodhp/milan

u/anurodhp — 5 days ago
▲ 33 r/DarwinOS+1 crossposts

Florence: A GNUStep Webkit browser

Today's code release from the Darwin rpi3 project is Florence. I've posted screenshots of it before. It's usable on the modern web. There are limitations (no video, webgl etc) but it is the current version of Safari and has hardware acceleration and JIT for Javascript.

  • Browse the web over HTTP and HTTPS (OpenSSL 3 and glib-networking; the padlock shows only for a loaded page whose certificate was checked).
  • Tabs, one engine page per tab; links that open a new tab; a start page of bookmark and recently-visited tiles.
  • Address bar that searches the web for anything that is not an address; back, forward, reload.
  • Bookmarks, history, find in page, zoom, and a Preferences window (homepage, search engine, downloads folder, font size, JavaScript on or off, cache, history).
  • Ad blocking with Safari-format content-blocker rule lists, which WebKit reads natively. The compiled rules are cached between runs.
  • Downloads, a context menu and Cmd-click, and copy and paste with the rest of the desktop.
  • Mouse wheel and keyboard scrolling.
  • Runs on Linux as well

https://github.com/anurodhp/florence

u/anurodhp — 6 days ago
▲ 30 r/DarwinOS+1 crossposts

Rome: A Ghostty based Gnustep terminal emulator (66x faster)

Today's code release from the Darwin on pi3 project is Rome. This is a modern terminal emulator entirely in Gnustep. It uses libghostty for terminal emulation and is optimized for the pi's hardware. In my perf testing it is 55-66x faster than the Gnustep terminal app. It's designed for Darwin but no reason why it cant work on other targets

Rome GNUstep Terminal
Print 50,000 lines (seq 1 50000) 1.5 s 83–97 s
CPU used by that 1.4 s 78–93 s
CPU while idle (30 s at a prompt) 0.06 s 0.8–1.1 s
Memory (resident) 29 MB 111–156 MB

https://github.com/anurodhp/rome

u/anurodhp — 7 days ago
▲ 36 r/DarwinOS+1 crossposts

GSDM: The GNUstep display manager

This is the first code release from the RPi3 Darwin project. The main reason to use this is if you are like me and are running an OS that has only one UI toolkit; GNUstep. This maintains visual consistency with the rest of the UI and eliminates the need for another toolkit. This has only been tested on arm64 rpi3 running Darwin, compiled with Xcode on a mac. Since it is pure user land and Appkit, no reason why it doesn't work on anything else.

https://github.com/anurodhp/gsdm

u/anurodhp — 8 days ago
▲ 31 r/DarwinOS+1 crossposts

Darwin on rpi3: gl works and goodbye xdm and terminal.app

The gpu now works. This brings gl and accelerated x11. This has already made an impact on the ui. The Florence browser is actually usable now.

Xdm has served me well but it isn’t visually consistent. Replacing it with a new application called gnustep display manager gsdm.

Finally it is time to retire the very very slow terminal.app . Rome is the new gnustep terminal emulator. At the moment it is using a cpu renderer and libvterm. In my own testing it is around 10x faster. I intend to replace this with ghostty for an accelerated terminal. I will post perf numbers on that in the future.

u/anurodhp — 9 days ago
▲ 36 r/DarwinOS+1 crossposts

Florence the gnustep browser for Darwin has a new ui

Massive overhaul to the browser project. Switched to WebKit 2.54 (current safari). This takes advantage of all four of our cores and works fine on the modern web. The gnustep ui looks like safari now . We are using wpe to get WebKit to work here the benefit is we can keep updating the engine as Apple updates it

Added:
Tabs
Bookmarks
History
Download manager
Start page with bookmarks and history
The same JSON list Adblock as safari

u/anurodhp — 11 days ago
▲ 18 r/DarwinOS+1 crossposts

Florence: a browser for Darwin on pi3

Can’t have an os in this day and age and not have a browser. This is a very light weight browser based on netsurf. The ui is gnustep. One of my goals here is to have only gnustep be the only ui on this Darwin. It make sense in term of memory usage and also keeps things visually consistent.Rpi3 is very memory and cpu constrained so I am optimizing anything for the xnu kernel and the hardware it’s going to run on

u/anurodhp — 13 days ago

New Android and Apple betas. Main thread

Android beta testers should see build 45. This should look better and be much more stable with a lot of recurring issues resolved. This should go to everyone (we only have beta testers here now)

Apple platforms also have a new beta released with an updated UI. This only goes to beta testers. The app store app should be the same.

reddit.com
u/anurodhp — 13 days ago

Modifying Linux apps to be Darwin apps on pi3

My Darwin on pi3 project is progressing. My goal has always been to make something usable for me, which I hope would be usable for others. Now that the kernel, basic services and libraries work reasonably well, I’ve been building and testing user land applications.

Currently running x11, window maker and gnustep which has been modified to use apples official objc4 runtime not objc2. But beyond that that I’m making other changes to the software to be very Darwin’s specific. Like on a Mac the ui runs as the main thread with guaranteed qos. I am now modifying window maker further to use posix_spawn and Kqueues

u/anurodhp — 15 days ago

Darwin on rpi3 runs x11 and window maker

I didn’t intend to make a gui for my rpi3 port. It realized running x11 and window maker would exercise more of the kernel and code base. This is using a modified version of x11 from pure Darwin.

This is framebuffer only so there is no acceleration, however window maker work, mouse and keyboard work. Hot swappable usb works

u/anurodhp — 17 days ago

Android Upgrades Coming

Huge update coming for Android after football on Monday. Lots of bugs fixed and polish trying to match the behavior and look of iOS. In particular I'm trying to use the material 3 equivalent of ios tab bar so we can properly support more features in the future (tbd). Images, branding, logos, consistent EPG behavior, stability fixes. The list is big.

u/anurodhp — 19 days ago

iOS ui changes coming

Shifting to a Liquid Glass style tabbar to be consistent with other apps (also we will have more than one screen). Settings screen is less of an eyesore and captions toggle is easier to discover (if you don’t use Siri or the button in player)

u/anurodhp — 23 days ago

Darwin on Rpi3 now has DHCP and DNS

Getting very close to a usable OS. Next up sshd and frame buffer /keyboard support so you dont need to use a serial cable to interface with it. This latter bit is probably whats holding back a release. Serial console is very convenient for debugging but doesnt make any sense in the real world.

u/anurodhp — 27 days ago

ext4 vs hfs+ for root partition

This is an architectural difference between my darwin project and Puredarwin. I stuck with hfs+ because the exiting native implementation let me bootstrap the OS quickly without patching the kernel. While HFS+ is very aged it makes things easier with uboot and xnu. Looking at it today I notice that Puredarwin went with linux's ext4. ext4 is newer and technically superior but is very linux specific and looking at the Puredarwin notes apparently is a source of bugs.

APFS is closed source so it's not a choice.

reddit.com
u/anurodhp — 1 month ago

Amazingly, there are in fact two Darwin projects happening right now

I've added u/Successful-Reason-96 as a second moderator to this sub. I didnt realize that PureDarwin was still alive. Unrelated to that, I am building a raspberry pi specific version of darwin purely for arm64.

I will keep posting that status of my project. Hopefully we will see updates from PureDarwin here as well. This sub may no longer be dormant.

reddit.com
u/anurodhp — 1 month ago