I went down a deep but entertaining rabbit hole in the other direction for fun: https://github.com/ayourtch-llm/fakelinux - initially with the idea “just replace the syscalls in the executable with some sort of a trap and handle that”.
It almost worked, unfortunately MacOS reserves x18 for platform purposes and Linux doesn’t.
The result is some sort of pretty mad contraption which works sufficiently often to compile aarch64 Linux VPP and its dependencies on the Mac using Linux gcc :)
I suppose with some polish it might be useful for something..
> Do you know about opensource.apple.com, GNUstep, The Cocotron and other projects?
> We do, and in fact, Darling is largely based on the original Darwin source code published by Apple. We use The Cocotron as a basis for our Cocoa implementation, along with the Apportable Foundation and various bits of GNUstep.
In theory, running Apple Silicon apps on ARM64 linux machines would be really nice. But we are still far from having a performant and feature-complete implementation of doing so.
Darling only targets x86_64 stuff. Still, it's a cool project.
Kinda sad that there are very few updates though [1]
their AppKit implementation receives about 20-30 commits every 5 years. Cool project, but
you are better off waiting for proprietary software manufacturers to release ARM64 builds (a lot of them do now) and patch the holes with FEX.
All I want for Christmas is Logic on Linux. But then you’d still need a Mac to legally download it from the App Store and DRM checks would probably only work on Macs
A few years back, I would have dreamt to run Photoshop on Linux.
But this and the mandatory utilities that come with it became so bloated that even if it was officially offered on Linux I am not sure I would be using it.
This is the Darling project which aims to run macOS software on Linux for both Intel and ARM64.
But you are probably looking for this:
> Does it support GUI apps?
> Almost! This took us a lot of time and effort, but we finally have basic experimental support for running simple graphical applications.
It is still far away from running your favorite mac GUI apps like Logic Pro or Xcode, but it is a work in progress but can still run command line tools.
What allows Wine to run so many Windows apps that there's not an equivalent for MacOS? Is it lack of interest? Is it a technical thing? I'd even be willing to limit to x86 apps. Or maybe there is and I'm just really out of touch??
> What allows Wine to run so many Windows apps that there's not an equivalent for MacOS? Is it lack of interest? Is it a technical thing?
It is a technical thing.
The XNU[0] kernel, which underpins macOS and is detailed by the exceptional book "Mac OS X internals"[1], can theoretically run on many x86 and/or ARM machines. However, the issue with running macOS apps via other operating systems is not the OS, but instead are the GUI frameworks expected (i.e., Carbon[2], Quartz[3], etc.). These frameworks are intentionally written for Apple hardware/macOS distros. Which makes sense when viewing macOS as a selling point for selling Mac's.
At a guess: the "killer apps" are things like MS Office and Photoshop, and since they are usually available on both Windows and Mac, there's not such a pressing demand to support similar functionality for Mac apps if the Windows version is easy to obtain.
Win32 has a little less churn than AppKit used to. If you support the API surface of winxp from 25 years ago you can run a lot of stuff. Most teams inside Windows at MSFT also try to leave older APIs alone and introduce stuff in an additive fashion. Apple, by contrast, historically has app compatibility as a non-goal.
I said "used to" because anecdotally, I had a personal project I haven't released anywhere target AppKit, I haven't been maintaining it because life is busy, I recently rebuilt it for the first time in a long time and I was shocked that everything worked. ~8 years ago, you would need to do some porting to a new major release once per year. I skipped that maintenance for many releases and didn't need to change a single line. This tells me that desktop apps are not at all an area of major focus for them lately. Maybe swiftui is getting all the attention. They are doing something more resembling Microsoft, leaving the old shit alone.
While the productivity apps are mentioned in the other comments of this reply, games are another reason. There are far more games on Windows to port and handle than macOS games. And in that case, you got a financial desire in the form of Valve and its Steam store. macOS games tend to be ports from Windows and are usually less featureful.
It almost worked, unfortunately MacOS reserves x18 for platform purposes and Linux doesn’t.
The result is some sort of pretty mad contraption which works sufficiently often to compile aarch64 Linux VPP and its dependencies on the Mac using Linux gcc :)
I suppose with some polish it might be useful for something..
> We do, and in fact, Darling is largely based on the original Darwin source code published by Apple. We use The Cocotron as a basis for our Cocoa implementation, along with the Apportable Foundation and various bits of GNUstep.
Apportable (<3) was a YC startup https://www.ycombinator.com/companies/apportable from 2011 - the Foundation repo last update was Dec 2014.
Darling only targets x86_64 stuff. Still, it's a cool project.
Kinda sad that there are very few updates though [1]
[1] https://blog.darlinghq.org/
All I want for Christmas is Logic on Linux. But then you’d still need a Mac to legally download it from the App Store and DRM checks would probably only work on Macs
But you are probably looking for this:
It is still far away from running your favorite mac GUI apps like Logic Pro or Xcode, but it is a work in progress but can still run command line tools.It is a technical thing.
The XNU[0] kernel, which underpins macOS and is detailed by the exceptional book "Mac OS X internals"[1], can theoretically run on many x86 and/or ARM machines. However, the issue with running macOS apps via other operating systems is not the OS, but instead are the GUI frameworks expected (i.e., Carbon[2], Quartz[3], etc.). These frameworks are intentionally written for Apple hardware/macOS distros. Which makes sense when viewing macOS as a selling point for selling Mac's.
0 - https://en.wikipedia.org/wiki/XNU
1 - https://openlibrary.org/books/OL17205558M/Mac_OS_X_internals
2 - https://en.wikipedia.org/wiki/Carbon_(API)
3 - https://en.wikipedia.org/wiki/Quartz_(graphics_layer)
https://en.wikipedia.org/wiki/GNUstep
I don't think the project kept up with changes to the APIs over the decades compared to how well the Wine project kept up with changes in Windows.
I said "used to" because anecdotally, I had a personal project I haven't released anywhere target AppKit, I haven't been maintaining it because life is busy, I recently rebuilt it for the first time in a long time and I was shocked that everything worked. ~8 years ago, you would need to do some porting to a new major release once per year. I skipped that maintenance for many releases and didn't need to change a single line. This tells me that desktop apps are not at all an area of major focus for them lately. Maybe swiftui is getting all the attention. They are doing something more resembling Microsoft, leaving the old shit alone.
A lot of work done over 3 decades. Wine also started when Win32 was something comprehensible by one person, so they could build it up slowly.