Darwin (operating system)


Darwin is an open-source Unix-like operating system first released by Apple Inc. in 2000. It is composed of code developed by Apple, as well as code derived from NeXTSTEP, BSD, Mach, and other free software projects.
Darwin forms the core set of components upon which macOS, iOS, watchOS, tvOS, and iPadOS are based. It is mostly POSIX-compatible, but has never, by itself, been certified as compatible with any version of POSIX. Starting with Leopard, macOS has been certified as compatible with the Single UNIX Specification version 3.

History

The heritage of Darwin began with NeXT's NeXTSTEP operating system, first released in 1989. After Apple bought NeXT in 1997, it announced it would base its next operating system on OPENSTEP. This was developed into Rhapsody in 1997, Mac OS X Server 1.0 in 1999, Mac OS X Public Beta in 2000, and Mac OS X 10.0 in 2001.
In 1999, Apple announced it would release the Mach 2.5 microkernel, BSD Unix 4.4 OS, and the Apache Web server components of Mac OS X Server. At the time interim CEO Steve Jobs alluded to British naturalist Charles Darwin by announcing "because it's about evolution". In 2000, the core operating system components of Mac OS X were released as open-source software under the Apple Public Source License as Darwin; the higher-level components, such as the Cocoa and Carbon frameworks, remained closed-source.
Up to Darwin 8.0.1, Apple released a binary installer after each major Mac OS X release that allowed one to install Darwin on PowerPC and Intel x86 systems as a standalone operating system. Minor updates were released as packages that were installed separately. Darwin is now only available as source code, except for the ARM variant, which has not been released in any form separately from iOS, watchOS, or tvOS. A hobbyist developer winocm took the official Darwin source code and ported it to ARM.
operating systems.|alt=

Design

Kernel

The kernel of Darwin is XNU, a hybrid kernel which uses OSFMK 7.3 from the OSF, various elements of FreeBSD, and an object-oriented device driver API called I/O Kit. The hybrid kernel design provides the flexibility of a microkernel and the performance of a monolithic kernel.

Hardware and software support

Darwin currently includes support for the 64-bit x86-64 variant of the Intel x86 processors used in Macs and the 64-bit ARM processors used in the iPhone 5S, the 6th generation iPod Touch, the iPad Air, the fourth generation Apple TV, original HomePod, and later models, as well as the 32-bit ARM processors used in the iPhone 5C and older, earlier generations of the iPod Touch, the iPad up to the fourth generation, and the second and third generation Apple TV. An open-source port of the XNU kernel exists that supports Darwin on Intel and AMD x86 platforms not officially supported by Apple, though it does not appear to have been updated since 2009. An open-source port of the XNU kernel also exists for ARM platforms. Older versions supported some or all of 32-bit PowerPC, 64-bit PowerPC, and 32-bit x86.
It supports the POSIX API by way of its BSD lineage and a large number of programs written for various other UNIX-like systems can be compiled on Darwin with no changes to the source code.
Darwin does not include many of the defining elements of macOS, such as the Carbon and Cocoa APIs or the Quartz Compositor and Aqua user interface, and thus cannot run Mac applications. It does, however, support a number of lesser known features of macOS, such as mDNSResponder, which is the multicast DNS responder and a core component of the Bonjour networking technology, and launchd, an advanced service management framework.

License

In July 2003, Apple released Darwin under version 2.0 of the Apple Public Source License, which the Free Software Foundation classifies as a free software license incompatible with the GNU General Public License. Previous versions were released under an earlier version of the APSL license, which did not meet the FSF definition of free software, although it did meet the requirements of the Open Source Definition.

Release history

The following is a table of major Darwin releases with their dates of release and their corresponding macOS releases. Note that the corresponding macOS release may have been released on a different date; refer to the macOS pages for those dates.
VersionDateCorresponding releasesNotes
0.1March 16, 1999Mac OS X Server 1.0 releases
  • Initial release
  • 0.1 is contrived as this identified itself simply as Rhapsody 5.3
0.2April 14, 1999Mac OS X Server 1.0 releasesMac OS X Server 1.0.1
0.3August 5, 1999Mac OS X Server 1.0 releasesBased on Rhapsody 5.5
  • ISO image is available on
  • After this point the kernel changed from the NeXTSTEP/OPENSTEP/Rhapsody to the newer XNU for Mac OS X
  • 1.0April 12, 2000Developer preview 3
  • ISO image is available on
  • 1.1April 5, 2000Developer preview 4
    1.2.1November 15, 2000Mac OS X Public BetaCode-named "Kodiak"
    1.3.1April 13, 2001Mac OS X v10.0
  • Code-named "Cheetah"
  • First commercial release of Darwin
  • All releases of Cheetah had the same version of Darwin.
  • 1.4.1October 2, 2001Mac OS X v10.1
  • Code-named "Puma"
  • Performance improvements to "boot time, real-time threads, thread management, cache flushing, and preemption handling"
  • Support for SMB network file system
  • Wget replaced with cURL.
  • 5.1November 12, 2001Mac OS X v10.1Mac OS X v10.1.1
  • Change in numbering scheme to match the Mac OS X build numbering scheme
  • 5.5June 5, 2002Mac OS X v10.1Mac OS X v10.1.5
    6.0.1September 23, 2002Mac OS X v10.2
  • Code-named "Jaguar"
  • GCC upgraded from 2 to 3.1
  • IPv6 and IPSec support
  • mDNSResponder service discovery daemon
  • Addition of CUPS, Ruby, and Python
  • Journaling support in HFS+
  • Application profiles for faster program launching.
  • 6.8October 3, 2003Mac OS X v10.2Mac OS X v10.2.8
    7.0October 24, 2003Mac OS X PantherMac OS X v10.3.0
  • BSD layer synchronized with FreeBSD 5
  • Automatic file defragmentation, hot-file clustering and optional case sensitivity in HFS+
  • Bash instead of tcsh as default shell
  • Read-only NTFS support
  • 7.9April 15, 2005Mac OS X PantherMac OS X v10.3.9
    8.0April 29, 2005Mac OS X TigerMac OS X for Apple TVMac OS X v10.4.0
    8.11November 14, 2007Mac OS X TigerMac OS X for Apple TVMac OS X v10.4.11
    9.0October 26, 2007Mac OS X Leopard
    iPhone OS 1
    Mac OS X v10.5.0
    9.8August 5, 2009Mac OS X LeopardiPhone OS 1Mac OS X v.10.5.8
    10.0August 28, 2009Mac OS X Snow Leopard
    iOS 4
    Mac OS X v10.6.0
    10.8June 23, 2011Mac OS X Snow LeopardiOS 4Mac OS X v10.6.8
    11.0.0July 20, 2011Mac OS X Lion
    iOS 5
    Mac OS X v10.7.0
    • XNU no longer supports PPC binaries.
    • XNU requires an x86_64 processor, except for iOS which is ARM based.
    • Improved sandboxing of applications
    • Complete support for Automatic Reference Counting
    11.4.2October 4, 2012Mac OS X LioniOS 5Mac OS X v10.7.5
    12.0.0February 16, 2012OS X Mountain LionOS X v10.8.0
    • Mac OS X was rebranded into OS X.
    • Objective-C garbage collection was deprecated in favor of Automatic Reference Counting
    12.6.0January 27, 2015OS X Mountain LionOS X v10.8.5
    13.0.0June 11, 2013OS X MavericksiOS 6OS X v10.9.0
    13.4.0September 17, 2014OS X MavericksiOS 6OS X v10.9.5
    14.0.0September 18, 2014OS X Yosemite
    iOS 7, iOS 8
    OS X v10.10.0
    14.5.0August 13, 2015OS X Yosemite
    iOS 7, iOS 8
    OS X v10.10.5
    15.0.0September 16, 2015OS X El Capitan
    iOS 9
    OS X v10.11.0 and iOS 9.0
    • System Integrity Protection. Protects certain system parts from being modified or tampered with by a process even if run by root or by a user with root privileges.
    • sudo is configured with the "tty_tickets" flag by default, restricting the session timeout to the terminal session in which the user authenticated the program.
    • LibreSSL replaces OpenSSL
    15.6.0July 18, 2016OS X El CapitaniOS 9OS X v10.11.6 and iOS 9.3.3
    16.0.0September 13, 2016macOS Sierra
    iOS 10
    macOS v10.12.0 and iOS 10.0.1
    • OS X was rebranded into macOS.
    • Writing to /Volumes directory is now restricted to root user or any user with root privileges
    • System Integrity Protection now covers /Library/Application Support/com.apple.TCC directory that contains a list of applications that are allowed to "control the computer"
    • Objective-C garbage collector removed and replaced by Automatic Reference Counting that was introduced with Darwin v12.0. Objective-C applications that use garbage collection will no longer work.
    • Native support for PPTP was removed.
    16.5.0March 27, 2017macOS SierraiOS 10macOS v10.12.4 and iOS 10.3
    • Changed filesystem from HFS+ to APFS on iOS devices. APFS is already available on macOS since 10.12.0 but can't be used on boot partition.
    16.6.0July 19, 2017macOS SierraiOS 10macOS v10.12.6 and iOS 10.3.3
    17.0.0September 19, 2017macOS High Sierra
    iOS 11

    • APFS replaces HFS+ as the default filesystem for boot partition in macOS on Macs with flash storage. On Macs with HDDs, the boot partition must be reformatted to use APFS.
    • ntpd replaced by timed as a time synchronization service
    • FTP and telnet commands are removed.
    • Kernel extensions will require explicit approval by the user before being able to run.
    17.5.0March 29, 2018macOS High SierraiOS 11macOS 10.13.4
    • Support for external graphics processors using Thunderbolt 3, and removes support for external graphics processors using Thunderbolt 1 and 2.
    17.6.0June 1, 2018macOS High SierraiOS 11macOS v10.13.5
    17.7.0July 9, 2018macOS High Sierra
    iOS 11
    macOS v10.13.6 and iOS 11.4.1
    18.0.0September 24, 2018macOS Mojave
    iOS 12
    18.2.0October 30, 2018macOS Mojave
    iOS 12
    macOS v10.14.1 and iOS 12.1
    • Added support for the new Radeon Vega 20 GPUs in the new MacBooks
    19.0.0September 19, 2019macOS CatalinaiOS 13
    19.2.0December 10, 2019macOS Catalina
    iOS 13
    macOS 10.15.2 and iOS 13.3
    19.3.0January 28, 2020macOS Catalina
    iOS 13
    macOS 10.15.3 and iOS 13.3.1
    • System Extensions replace Kexts and runs in userspace, outside of the kernel.
    • DriverKit replaces IOKit. It Introduces "Dexts" which are built using DriverKit. Driverkit is a new SDK with all new frameworks based on IOKit, but is updated and modernized. Device Drivers run in userspace, outside of the kernel.
    19.4.0March 24, 2020macOS CatalinaiOS 13
    19.5.0April 30, 2020macOS Catalina
    iOS 13
    macOS 10.15.5 and iOS 13.5
    19.6.0June 1, 2020macOS Catalina
    iOS 13
    macOS 10.15.6 beta 2 and iOS 13.6.0 beta 2
    20.0.0June 22, 2020macOS Big Sur
    iOS 14
    macOS 11.0 beta 1 and iOS 14.0 beta 1

    The jump in version numbers from Darwin 1.4.1 to 5.1 with the release of Mac OS X v10.1.1 was designed to tie Darwin to the Mac OS X version and build numbering system, which in turn is inherited from NeXTSTEP. In the build numbering system of macOS, every version has a unique beginning build number, which identifies what whole version of macOS it is part of. Mac OS X v10.0 had build numbers starting with 4, 10.1 had build numbers starting with 5, and so forth.
    The command uname -r in Terminal will show the Darwin version number, and the command uname -v will show the XNU build version string, which includes the Darwin version number.

    Derived projects

    Due to the free software nature of Darwin, there have been projects that aim to modify or enhance the operating system.

    OpenDarwin

    OpenDarwin was a community-led operating system based on the Darwin system. It was founded in April 2002 by Apple Inc. and Internet Systems Consortium. Its goal was to increase collaboration between Apple developers and the free software community. Apple benefited from the project because improvements to OpenDarwin would be incorporated into Darwin releases; and the free/open source community benefited from being given complete control over its own operating system, which could then be used in free software distributions such as GNU-Darwin.
    On July 25, 2006, the OpenDarwin team announced that the project was shutting down, as they felt OpenDarwin had "become a mere hosting facility for Mac OS X related projects", and that the efforts to create a standalone Darwin operating system had failed. They also state: "Availability of sources, interaction with Apple representatives, difficulty building and tracking sources, and a lack of interest from the community have all contributed to this." The last stable release was version 7.2.1, released on July 16, 2004.

    PureDarwin

    PureDarwin is a project to create a bootable operating system image from Apple's released source code for Darwin. Since the cessation of OpenDarwin and the release of bootable images since Darwin 8.x, it has been increasingly difficult to create a full operating system as many components become closed source. The project has managed to create an Xmas release based on Darwin 9 with a X11 GUI and a command-line only 17.4 Beta based on Darwin 17.

    Other derived projects