Hacker News new | past | comments | ask | show | jobs | submit login
Darling: Run macOS Software on Linux (darlinghq.org)
466 points by doener 8 months ago | hide | past | favorite | 125 comments



> We use The Cocotron as a basis for our Cocoa implementation, along with the Apportable Foundation and various bits of GNUstep.

My heart swells, I got to work at Apportable - super fond memories.

.. was a YCombinator 2011 thing https://www.ycombinator.com/companies/apportable


I've been using this the past few weeks to try and cross compile my software. Clang works, but a lot of the core libraries are missing. pkgbuild for instance won't work. And even native Cocoa apps I've tried won't work. That being said, this has a ton of potential. I really wish the devs had more time to work on it.


Cocotron used to have pretty good AppKit API coverage:

https://www.cocotron.org

I was able to get a ported app running with it at one point. And I think Microsoft took a pass at it more recently: https://github.com/Microsoft/WinObjC

But it appears Darling uses Cocotron so maybe you've already seen how well it works for you.


Have you tried using the headers and sources from Xcode SDKs and linking them against Clang on Darling? Should be enough if cross compiling is the goal and not porting apps to run on other platforms.

Something similar can be done with Wine as well as MinGW and other similar toolchains and platforms that target Windows.


You don't even need Darling or Wine if you just want to cross-compile since Clang can target any platform irrespective of the platform you are running it on (as long as your Clang is not built with support for that target disabled). All you need is the system libraries/headers and a linker (Apple's ld64 is open source, no idea if lld is usable for Mach-O yet). See e.g. OpenTTD's old how-to: http://web.archive.org/web/20200917010945/http://devs.opentt...

The only thing making this hard for targeting OS X is that a) too few people care for ready-made cross-compilers to be available so you have to piece this together yourself and b) there is no open-source reimplementation of the OS X system headers and stub libraries to link against so you have to extract the official ones from Xcode but that again is only a matter of people not caring.

For MinGW that is all there because Windows is a much more popular target - many Linux distros have MinGW packages that you can simply install and start cross-compiling. The same could be done for OS X.


Only runs on x64 chips.

Presumably only runs macOS binaries built for intel? (i.e. not apple silicon.) I can’t find if it says anywhere.


FWIW:

All Macs have been 64-bit for at least 11 years, if not longer. (My MBP from 2012 was 64-bit.)

Apple dropped 32-bit support a long time ago. Not sure of the exact date, but sometime around 2015-2017 I had to port a Mac application to 64-bit because the upcoming release of MacOS was going to drop all 32-bit support.


Yeah… I wasn’t really getting at it not working on 32bit, more getting at it not working on arm.

If it doesn’t acquire the ability to run arm binaries, it will be a retro computing platform in a couple of years. (And it would have to emulate apple’s cpu extensions, even when running on arm chips, yes.)


Perhaps the assumption is that ARM will be more common on Windows and Linux? Or that ARM will become a requirement at some point in the future?

I'm kinda surprised that ARM isn't common yet in Windows and Linux.


Why would it be? There isn't really a viable ARM chip for the PC platform.

Nvidia is supposedly planning to release one in 2025.


FWIW: I suspect when GP said “x64 chips” the reference point was that Apple’s main range of devices in 2023 (Apple Silicon) do not run x64 chips.


Not just their main range but actually none of their current computers do.


x64 means x86-64 in common parlance. Apple silicon would be an arm64 platform in comparison. Lots of software is compiled for both right now, but Apple is abandoning x86-64 so at some point in the future, software will stop being built for that platform (just like ppc before x86).


I think there was like one or two generations max of 32-bit Mac Minis and MacBooks before they shipped with 64-bit Core 2 Duo and Quad processors.

I have a 2008 MBP that's 64-bit, and a 2006 Mini that's 32-bit.


The PowerMac G5 and iMac G5 all the way back to 2003 are 64-bit. Apple actually had to drop 64-bit for one year during the intel transition in 2005-2006. (The original Intel Core Duo chips were 32-bit.


That was more than 11 years ago!


That's fine if you want to run the software on an 11 year old Mac, but irrelevant to anyone who has purchased a Mac during the Apple Silicon era.


Darling is not for running anythig on a Mac but for running OS X software on other computers. That means not supporting Apple-ARM only becomes a problem once software you want to run is no longer available for x86.


I decided to bite the bullet and make an account for this website.

> Presumably only runs macOS binaries built for intel?

For now, yes. I'm currently trying to get Darling working on ARM64; however, I'm running into issue getting dyld working...


Yes, it doesn’t do any emulation.


Apple would probably send their army of lawyers after GH if you were able to run Final Cut Pro without using Apple hardware or macOS


Actually I think they would send an army of recruiters.


Why would they do that? They could easily make this possible with their current expertise. They clearly don't want that, and that's how they've been their entire existence.


Because getting FCP to run on Linux shows that you have mad skills.


This ^


Final Cut Pro has been running on hackintoshes without the army of lawyers showing up for a decade or more. As long as they get their $300 per license, they don't care how unstable it runs on your unsupported hardware.


Hmmmm ok... but what if it becomes stable enough that one day it's comparable to using a Mac?


Then they still won't care as long as you pay for it


Seems like GUI application support is not there yet. In that case, what command-line software for MacOS is actually useful for?


Last I tried Darling, my goal was to make a proprietary printer driver run on Linux. It was available for Windows and macOS (CUPS). So that’s one use case.


Did it work?


No, unfortunately I could not get Darling to compile back then and gave up. (I don't have that printer anymore either.)


Depending on your printer

You may be able to print directly to port 9100 of the printer using netcat


Why this over Wine with the Windows executable?


The Windows driver wouldn't work with CUPS. Or is there something like ndiswrapper for printer drivers?


Similarly I was hoping to run the Bonjour Conformance Test on Linux in CI for Avahi. Which is CLI as well.


Xcode build tools. Right now you practically need a macOS machine to compile applications for macOS or iOS.


For command line apps you can cross-compile from Linux. IIRC it does require building Clang from source, and obtaining a Mac SDK (which is probably against their T&C's) but there are pre-made scripts to do it (there's a good GitHub Actions one).

That said, I only do that for free projects. For commercial stuff I'd just buy a Mac Mini.


> For command line apps you can cross-compile from Linux.

You technically can, but this has various issues. The lack of UI frameworks is one. I don't remember the others since I have a real Mac, but it's only an Intel Mac.


Any links?




On a Linux host, use pts-osxcross (https://github.com/pts/pts-osxcross) to target macOS, it contains Clang and other build tools precompiled for Linux amd64.


Honestly my feelings exactly. Any cli software that’s available for Mac is also available for any other Unix. Seems entirely pointless to me.


Spot on ;)


The problem is that it means porting all of Cocoa etc., which is as big if not bigger than Wine porting the win32 api.


Win32 has been Win32 since Win95 (if you don't count Win32s). Additions have occurred, but much of the base has remained the same.

In that time, Macs already changed processor architectures several times.


> Win32 has been Win32 since Win95

You are 2 years too late.

NT 3.1 was the first OS with Win32 as its standard API, in 1993.


At least Unix and Linux are similar families of operating systems. Porting over Win32 is probably bigger, especially since Windows 11 still has to run binaries from the 90s. macOS cares much less, and you either do dynamic linking or recompile.


Foundation Kit was “ok” with GNUStep. I’d expect that would be a good place to start.

As for AppKit and now all the other frameworks that have been added, it’ll be an uphill struggle.


If a ChatGPT assisted port can be seen as a cleanroom implementation, this can be done a lot faster than Wine.


it is most definitely not cleanroom


Clean room has two steps:

- Team A: reverse engineer and document

- Team B (with no intersection with A): implement from document

Allow me to indulge in a thought experiment:

What if one tells ChatGPT to generate the documentation, then implementation is done from that?

What if Copilot (which has no visibility into the original code) lays out a huge chunk of the implementation from the documentation?


ChatGPT probably wasn't trained on any proprietary Apple source code.


Yes, but can it be done with a blockchain?


Is it able to run Xcode? I’ve been trying to do some iOS development on Linux and so far my solution has been to use DockerOSX… but this sounds much more convenient.



Nice, but all those already run on Linux.


I think it still could be useful to build ios apps and upload them if that's possible in the command line.


How to get banned from apple store in 1 easy step!


I've done enough app uploads to know it's also half broken on a real Mac, so I would not worry about that.


Since when?


Everything on that list except XCode has a Linux version.


So the big thing is that you can use the command line xcbuild and also often need access to the asset bundlers (which are not open source).


That's actually useful. I need the asset bundlers so I can build for MacOS without having a Mac. I already build Rust programs for Linux and Windows on Linux.


Oh wow, it actually works.. That's awesome for a CI runner


I know this only works for cli tools right now, but I’d love to be able to run iMessage and Notes on linux.


Very very unlikely - as far as i know iMessage requires a Mac or iPhone serial number to authenticate :(


I have an iphone, so I hope the serial number won’t be an issue.


As an iOS + Linux user, icloud.com has been helpful. Access to reminders, notes, in theory messages (I don't use it so can't vouch for it).

The thing to do is to use Chrome (yes...), and open the page. In the hamburger, go to "Create a Desktop shortcut". Choose "open in a new window". This gives you a desktop shortcut to open the page in a standalone way. Visible to your launcher, distinct ctrl+tab... it's janky but I've found this works well.

Firefox please add the Chrome standalone desktop shortcut feature!


Yeah, I also tend to bring up iCloud Notes in a browser tab. It’s still far from perfect, since Notes is usually an offline-first app, which you miss out on here.

I’ve been looking for a replacement, but nothing really gives you

- Offline-first usage

- Sync changes via CRDT

- Fast startup time

- Rich text support

- iOS and desktop linux support


I have been using Joplin for longer notes, which provides good sync, offline-first, and good platform support. It's Janky but for writing out post drafts the sync has been super good for me. It lets me finish typing out a thing on my phone in a pinch, no futzing around with roam necessary.

For tiny notes I've been using.... facebook messenger chat to myself. Say what you will about Meta, at least their stuff mostly works.

I still feel for you. I really want to commission some software that feels good to use on Linux ("feels good" in the real sense, not in the GNOME sense)


Check out my note-taking app on Flathub: https://flathub.org/apps/io.github.nuttyartist.notes


Being able to run iMessage with this would be enough to let me (and I'm sure others) finally ditch my iPhone


From your lips to God's ears with iMessage.


I thought notes was just a client that syncs via IMAP so you would be able to use any notes app that supports IMAP sync?

Or has this changed?


It has long changed and became much more reliable in the process.


Related:

Darling Progress Report Q2 2023 - https://news.ycombinator.com/item?id=37220023 - Aug 2023 (15 comments)

Darling: The macOS virtual emulation layer for Linux - https://news.ycombinator.com/item?id=33157857 - Oct 2022 (1 comment)

Darling – Run Mac apps on Linux - https://news.ycombinator.com/item?id=29813679 - Jan 2022 (200 comments)

Darling: macOS Translation Layer for Linux - https://news.ycombinator.com/item?id=24683669 - Oct 2020 (199 comments)

Darling – Run macOS software on Linux - https://news.ycombinator.com/item?id=22700365 - March 2020 (128 comments)

Darling – macOS Translation Layer for Linux - https://news.ycombinator.com/item?id=19772322 - April 2019 (174 comments)

Darwin/macOS emulation layer for Linux - https://news.ycombinator.com/item?id=17718906 - Aug 2018 (7 comments)

The Mach-O Transition: Darling in the Past 5 Years - https://news.ycombinator.com/item?id=13581234 - Feb 2017 (1 comment)

Darling – MacOS translation layer for Linux - https://news.ycombinator.com/item?id=12854895 - Nov 2016 (265 comments)


I wonder if there is a way to run iOS applications on Android. I'd kill to be able to use the OneNote app on my Samsung galaxy tab S8. Samsung Notes are great, but not very portable.


This project is the most promising and it does what you say, except they're starting with iOS 1.0 so you'll have to be patient!

https://touchhle.org/


There are no plans to support any recent version of iOS


Isn’t this one very explicit about only aiming to cover old lost games…?


Onenote is normally available on Android, isn't it?



But there's a OneNote app for Android...


Fun fact, Meta (FB) actually had a tech to "emulate" iOS apps. Facebook and Instagram for Windows/WP once upon a time was an iOS emulated app.


IIRC it was actually Microsoft’s Windows 10 Bridge for iOS that enabled this: (and sadly it’s dead now)

https://web.archive.org/web/20170707092302/https://developer...



This is awesome. Now, what mac soft do I want to run on Linux? I am neither a gamer nor a designer


I'm a 30 year linux veteran and windows free for over 22. I di d have a windows vm for some time because I have some music stuff that doesn't work with linux, like a nord keyboard and some guitar stuff.

But i burnt the vm with fire when I found https://github.com/foxlet/macOS-Simple-KVM


It didn't work for me for the macOS version I tried (not the latest one). Probably because the installer is not available from Applr's servers anymore.


Doubt it will continue to work once Apple completely stops supporting Intel.


xcodebuild CLI to compile iOS apps without a Mac. Seems possible in theory, although there's an ongoing issue some are seeing apparently: https://github.com/darlinghq/darling/issues/488


Safari for testing


The real thing is better, but you can probably get most of the way with any WebKit browser native to Linux.


Really depends on what you are testing. Media format support is going to differ.


Dont worry, gaming on mac is not a thing so that’s out of the question anyway - apple products are too low spec for it.

There is some gui software that would be nice to run on linux, but none mase by apple.


There's been some recent big budget games compiled for Apple Silicon; Lies of P and Baldur's Gate 3 come to mind. Of course, that's just a tiny fraction of big budget games and I haven't actually played any of them to know how good the experience is.


I've been playing BG3 on an m1 Mac mini and it's surprisingly good. I haven't bothered loading it on my big-GPU gaming PC to compare, but that alone says something.

(I'm in no way a serious gamer, so there may be plenty of things I overlook)


It's nice when it works, but papercuts still degrade the experience. The M-series chips are really impressive when they get a chance to stretch their legs. It feels like we're still in the chicken-and-egg phase though. I don't foresee that changing unless Apple dumps a ton of money to incentivize publishers to port to Mac, or they do what Valve did and make their own equivalent of Proton - aimed at developers. The licensing on GPTK kinda kills that though.


I would natively expect those to mostly have Windows versions that work with WINE already.

Edit: Oh, it might be better if you want an ARM native binary.


I don't expect it to work anytime soon, but I'd love to see Logic on this.

I own a Mac and a copy of logic, but I really would love to be able to travel with a single laptop instead of carrying my Air just for recording.


Would be great to get Maccy & Rectangle working on Ubuntu!




With some smart dynamic binary translation it would be able to run Arm64 OSX binaries. Just 5 times slower.


Too bad the Go compiler doesn’t work. Been checking in once every month to see if that has been fixed


Is it only me or is that background color of the FAQ with the black font totally unreadable?


Wonder if it does mdsearch/mdutil which is the macOS killer indexing process…?


Would be nice to have support for fancy terminals like Warp or iTerm2 in Linux


Can I use this to run fig? (fig.io)


As a long time Linux user, it's always felt kind of unjust that all good Linux software is ported to other os, but there is no reciprocity. I do understand all the nuances, but Apple and especially MS seem to get a lot out of the GNU/Linux ecosystem and give very little in return.I would appreciate using some open source software released for Mac in my Linux desktop. Thanks to the developers of this project! Will give it a spin...


> Apple and especially MS seem to get a lot out of the GNU/Linux ecosystem and give very little in return

LLVM/Clang has been a huge boon to the GNU/Linux ecosystem, and dragged gcc into the modern era, and was largely funded Apple for many years.


How has it been a huge boon to the GNU ecosystem? Clang is slow, the code generated is not consistently better than GCC for most of the software I personally run benchmarks for, and it's not like GCC has ever been worse for feature support than a Microsoft compiler.

It's better to point out WebKit.


> How has it been a huge boon to the GNU ecosystem?

It would seem that you never used GCC in the pre-llvm era. The GCC project has had a couple of notable periods of stagnation, in each case being "rescued" by the emergence of meaningful competition. First EGCS, and then later llvm.

Clang brought new developers to the space, it disproved the assertion that error messages had to be cryptic and unhelpful, and it has been a peer competitor for an extended period of time now. The two projects compete and cross-pollinate to their mutual benefit.


People seem to forget that GCC was flopping around on C++11 for a long while until clang started pushing things along.

Not to say they've fallen behind, just that a competitor clearly kicked things back into gear. Same as Firefox and Webkit-based browsers did for the many years of IE6's monopoly.


Not really now.

If you use Windows or macOS then you can open all your time using the OS suppliers tools or tools bought from third parties.

In macOS you can use UNIX but it is the FreeBSD world so no GNU or Linux there.

In windows if you want Unix then WSL which is GNU/Linux but you can easily work in plain Windows.


I think this has less to do with "justness" and more to do with cost effectiveness. A majority of people use Windows. That's followed by macOS (or ChromeOS but you can't easily directly port software over there). Then you have GNU/Linux desktop users.

If you're building software you're often going to target your audiences where they are.

In the developer world, there are many desktop Linux users. So, we have more tools available to us related to our jobs. I use desktop Linux and appreciate that.

But, most people across industries and in their personal lives are not in the same situation.


It’s too bad that community interest/investment in efforts like GNUStep, Étoilé, and Cocotron have been low, because a major yet consistently underestimated component of why macOS has long had a thriving quality indieware scene is the depth, breadth, and quality of its frameworks. Cocoa/AppKit enables solo devs and small teams to punch well beyond their weight and I’m sure those devs would be happy to sell their programs to Linux users too if they could cross-compile.


As another long time Linux user, I've just started to worry how Microssoft is invading my work life:

GitHub, TypeScript, Vscode (when I have to interact with people who cannot think outside an IDE), and I've just started to use Playwright.


Same. I exported all my GitHub repos to GitLab, and I'm thinking about using Neovim (not because it's better, but because I hate Microsoft).

Sadly there isn't much I can do about TypeScript and NPM.

Microsoft wants to control everything in our lives.


Typescript and vscode are both good tools so can’t really hate on them, there is codium which removes the MS telemetry from vs code.


The goal of any corporation, some are more successful than others.


> I do understand all the nuances

The reasons, in decreasing significance: (1) demand and (2) OS interfaces.

1. Linux desktop has a small user base; there's simply less interest and value in porting to Linux.

2. The POSIX interface is basic (well, more basic than Windows); it's easier to emulate/replace/shim Linux interfaces than Windows ones.


Well, for Mac OS X there is GnuStep which has made Cenon possible.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: