Why “Darling”?

The name Darling is a combination of “Darwin” and “Linux”. Darwin is the core operating system OS X and iOS build on.

Isn’t this violating Apple’s EULA?

No, no part of this project contains code covered under Apple’s EULA. As long as you are not using Darling to run something covered by Apple’s EULA, you are not bound by it either. As a matter of fact, the aim is to avoid any APSL-licensed code too, just to be on the safe side. As of now, you can find several header files covered by the APSL (Apple’s open source license) in the project source tree, but this is only temporary.

Why are you spending time dealing with apps that have better alternatives on Linux?

These applications turned to be good and simple enough for testing. You cannot build a complex project by focusing on something very complicated from the beginning. You have to start small and thing big.

When will it run XYZ?

Absolutely no idea, sorry.

Do you support other platforms such as *BSD or Windows?

Sorry, no. BSD may very well be possible, but Windows would take a lot of extra effort. Darling depends on lots of Linux specifics, which make the development easier.

Will you support applications for iPhone/iPod/iPad?

The intention is to support the ARM platform on the lowest levels (the dynamic loader an the Objective-C runtime). Rewriting the frameworks used on iOS is a whole different story, though. See iOS Support Information.

How does Darling provide OS X APIs?

  • Some standard functions (e.g. the libc function floor()) are fully compatible both API and ABI-wise. Darling uses the native function version directly.
  • Some functions are fully compatible, but a different name is used (e.g. whatever the errno macro expands to). Darling maps the OS X name to the Linux name.
  • Some functions are not compatible on the ABI level (e.g. due to different flag values). This is for example the case of uname(). In this case, Darling has a simple wrapper around the native function.
  • Missing functions. Darling has to provide these. Examples include BSD-specific extensions.
  • Missing frameworks. Darling has to implement these. There are countless examples…

Darling relies on GNUstep in providing several frameworks. This includes Core Foundation, Foundation or Cocoa. Your mileage may vary.

Apple has released the source code of many libraries or frameworks. These can be ported to Linux and then used by Darling. libdispatch is a good example of that.