Darwin (operating system)

Darwin is an open-source Unix-like operating system first released by Apple Inc. in 2000. It is composed of code derived from NeXTSTEP, BSD, Mach, and other free software projects' code, as well as code developed by Apple.

Darwin
DeveloperApple Inc.
Written inC, C++, Objective-C, assembly language
OS familyUnix-like,[1][2] BSD[3]
Working stateCurrent
Source modelOpen source
Initial releaseNovember 15, 2000 (2000-11-15)
Latest release21.5.0 / March 18, 2022 (2022-03-18)
Repositorygithub.com/apple/darwin-xnu
PlatformsCurrent: x86-64, 64-bit ARM, 32-bit ARM (32-bit ARM support is closed-source)
Historical: PowerPC (32-bit and 64-bit), IA-32
Kernel typeHybrid
Default
user interface
Command-line interface (Unix shell)
LicenseMostly Apple Public Source License (APSL), with closed-source drivers[4]
Official websiteopensource.apple.com

Darwin forms the Unix-based core set of components upon which macOS (previously OS X and Mac OS X), iOS, watchOS, tvOS, iPadOS and bridgeOS are based (in this context, it has been referred to as "the Darwin subsystem"). 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 (SUSv3).[5][6][7]

History

The heritage of Darwin began with Unix derivatives supplemented by aspects of NeXT's NeXTSTEP operating system (later, since version 4.0, known as OPENSTEP), first released in 1989. After Apple bought NeXT in 1996, 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 source code for the Mach 2.5 microkernel, BSD Unix 4.4 OS, and the Apache Web server components of Mac OS X Server.[8] At the time, interim CEO Steve Jobs alluded to British naturalist Charles Darwin by announcing "because it's about evolution".[9] In 2000, the core operating system components of Mac OS X were released as open-source software under the Apple Public Source License (APSL) 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 (as an ISO image) after each major Mac OS X release that allowed one to install Darwin on PowerPC and Intel x86 systems as a standalone operating system.[10] Minor updates were released as packages that were installed separately. Darwin is now only available as source code.

Simplified history of Unix-like operating systems

Design

Diagram of macOS architecture

Kernel

The kernel of Darwin is XNU, a hybrid kernel which uses OSFMK 7.3[11] (Open Software Foundation Mach Kernel) from the OSF, various elements of FreeBSD (including the process model, network stack, and virtual file system),[12] and an object-oriented device driver API called I/O Kit.[13] The hybrid kernel design provides the flexibility of a microkernel[14] and the performance of a monolithic kernel.[15]

Hardware and software support

Darwin currently includes support for the 64-bit x86-64 variant of the Intel x86 processors used in Intel-based Macs and the 64-bit ARM processors used in the iPhone 5S and later, the 6th generation iPod Touch, the 5th generation iPad and later, the iPad Air family, the iPad Mini 2 and later, the iPad Pro family, the fourth generation and later Apple TVs, the HomePod family, and Macs with Apple silicon such as the 2020 Apple M1 Macs, as well as the Raspberry Pi 3B.[16][17] 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.[18] An open-source port of the XNU kernel also exists for ARM platforms.[19] Older versions supported some or all of 32-bit PowerPC, 64-bit PowerPC, 32-bit x86, and 32-bit ARM.

It supports the POSIX API by way of its BSD lineage (largely FreeBSD userland) 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 (APSL), which the Free Software Foundation (FSF) classifies as a free software license incompatible with the GNU General Public License.[20] 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.[21]

Release history

The following is a table of major Darwin releases with their dates of release and their derivative operating system releases.[22] Note that the corresponding releases may have been released on a different date.

Darwin 0–8 and corresponding Mac OS X releases

Version Date Corresponding releases Notes
0.1 March 16, 1999 Mac OS X Server 1.0 releases
  • Initial release
  • 0.1 is contrived (for sorting and identification) as this identified itself simply as Rhapsody 5.3
0.2 April 14, 1999 Mac OS X Server 1.0.1
0.3 August 5, 1999 Based on Rhapsody 5.5
  • ISO image is available on archive.org
  • After this point the kernel changed from the NeXTSTEP/OPENSTEP/Rhapsody to the newer XNU for Mac OS X
1.0 April 12, 2000 Developer preview 3
1.1 April 5, 2000 Developer preview 4
1.2.1 November 15, 2000 Mac OS X Public Beta (code-named "Kodiak")
1.3.1 April 13, 2001 Mac OS X v10.0 (code-named "Cheetah")
  • First commercial release of Darwin
  • All releases of Cheetah (v10.0.0–4) had the same version of Darwin.
1.4.1 October 2, 2001 Mac 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.[23]
5.1 November 12, 2001 Mac OS X v10.1.1
  • Change in numbering scheme to match the Mac OS X build numbering scheme
5.5 June 5, 2002 Mac OS X v10.1.5
6.0.1 September 23, 2002 Mac OS X v10.2 (code-named "Jaguar")
  • GCC upgraded from 2 to 3.1
  • IPv6 and IPSec support
  • mDNSResponder service discovery daemon (Rendezvous)
  • Addition of CUPS, Ruby, and Python
  • Journaling support in HFS+ (Darwin 6.2)
  • Application profiles ("pre-heat files") for faster program launching.[24]
6.8 October 3, 2003 Mac OS X v10.2.8
7.0 October 24, 2003 Mac OS X Panther Mac 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 (Darwin 7.9)[25]
7.9 April 15, 2005 Mac OS X v10.3.9
8.0 April 29, 2005 Mac OS X v10.4.0
  • Download for Darwin 8.0.1 can be found here
  • Mac OS X for Apple TV in Darwin 8.8.2
  • Stable kernel programming interface, finer-grained kernel locking, 64-bit BSD layer
  • launchd service management framework
  • Extended file attributes, access control lists
  • Commands such as cp and mv updated to preserve extended attributes and resource forks[26]
8.11 November 14, 2007 Mac OS X v10.4.11

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 (earlier build numbers represented developer releases).[27]

Darwin 9; iPhone OS introduced

9.0 October 26, 2007
Mac OS X v10.5.0
9.8 August 5, 2009 Mac OS X v.10.5.8

Darwin 10-11; iPhone OS rebranded to iOS

10.0 August 28, 2009
  • Mac OS X Snow Leopard
  • iOS 4
Mac OS X v10.6.0
  • End of official support for PPC architecture (although several fat binaries, such as Kernel, still contain PPC images)
  • 64-bit kernel and drivers
  • libdispatch task parallelization framework
  • OpenCL heterogeneous computing framework
  • Initial support for Automatic Reference Counting
  • Support for blocks in C
  • Transparent file compression in HFS+.[29]
10.8 June 23, 2011 Mac OS X v10.6.8
11.0.0 July 20, 2011 Mac OS X v10.7.0
  • XNU no longer supports PPC binaries (fat binary only for i386, x86_64).
  • 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.2 October 4, 2012 Mac OS X v10.7.5 (supplemental)

Darwin 12–15; Mac OS X rebranded into OS X

Version Date Corresponding releases Notes
12.0.0 February 16, 2012 OS X Mountain Lion OS 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.0 January 27, 2015 OS X v10.8.5 (with Security Update 2015-001)
13.0.0 June 11, 2013 OS X v10.9.0
  • Virtual memory compression
  • Timer coalescing
  • OpenGL 4.1 and OpenCL 1.2
  • Server Message Block version 2 (SMB2) is now the default protocol for sharing files instead of AFP. This is to increase performance and cross-platform compatibility.
  • IPoTB (Internet Protocol over Thunderbolt Bridge).
  • The Open Transport API has been removed
13.4.0 September 17, 2014 OS X v10.9.5
14.0.0 September 18, 2014
OS X v10.10.0
14.5.0 August 13, 2015 OS X v10.10.5
15.0.0 September 16, 2015
  • OS X El Capitan
  • iOS 9
  • watchOS 2
  • tvOS 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 (such as a window or tab) in which the user authenticated the program.
  • LibreSSL replaces OpenSSL
15.6.0 July 18, 2016 OS X v10.11.6 and iOS 9.3.3

Darwin 16–19; OS X rebranded into macOS

Version Date Corresponding releases Notes
16.0.0 September 13, 2016
  • macOS Sierra
  • iOS 10
  • watchOS 3
  • tvOS 10
  • bridgeOS 1
macOS v10.12.0 and iOS 10.0.1 (initial release version)
  • 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 (OS X v10.8). Objective-C applications that use garbage collection will no longer work.
  • Native support for PPTP was removed.
16.5.0 March 27, 2017 macOS 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.0 July 19, 2017 macOS v10.12.6 and iOS 10.3.3
17.0.0 September 19, 2017
  • macOS High Sierra
  • iOS 11
  • watchOS 4
  • tvOS 11
  • bridgeOS 2
  • 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 ("kexts") will require explicit approval by the user before being able to run.
17.5.0 March 29, 2018 macOS 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.0 June 1, 2018 macOS v10.13.5
17.7.0 July 9, 2018 macOS v10.13.6 and iOS 11.4.1
18.0.0 September 24, 2018
18.2.0 October 30, 2018 macOS v10.14.1 and iOS 12.1
  • Added support for the new Radeon Vega 20 GPUs in the new MacBooks
19.0.0 September 19, 2019
  • macOS Catalina
  • iOS 13
  • watchOS 6
  • tvOS 13
  • bridgeOS 4
19.2.0 December 10, 2019 macOS 10.15.2 and iOS 13.3
19.3.0 January 28, 2020 macOS 10.15.3 and iOS 13.3.1
  • System Extensions replace Kexts and runs in userspace, outside of the kernel.[31]
  • DriverKit replaces I/O Kit. It Introduces "Dexts" (Driver Extensions) 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.[32][33][34]
19.4.0 March 24, 2020
19.5.0 April 30, 2020 macOS 10.15.5 and iOS 13.5
19.6.0 June 1, 2020 macOS 10.15.6 beta 2 and iOS 13.6.0 beta 2

Darwin 20 onwards

Version Date Corresponding releases Notes
20.0.0 June 22, 2020
  • macOS Big Sur
  • iOS 14
  • watchOS 7
  • tvOS 14
  • bridgeOS 5
macOS 11.0 beta 1 and iOS 14.0 beta 1
20.1.0 September 3, 2020 macOS 11.0 and iOS 14.0
20.2.0 November 12, 2020 macOS 11.1 and iOS 14.3
20.3.0 February 1, 2021 macOS 11.2, iOS 14.4, iPadOS 14.4, watchOS 7.3 and tvOS 14.4.
20.4.0 April 20, 2021 macOS 11.3, iOS 14.5, iPadOS 14.5, watchOS 7.4 and tvOS 14.5.
20.5.0 May 24, 2021 macOS 11.4 and iOS 14.6
20.6.0 June 2, 2021 macOS 11.5 beta 2 and iOS 14.7 beta 2
21.0.0 June 7, 2021
  • macOS Monterey
  • iOS 15
  • watchOS 8
  • tvOS 15
  • bridgeOS 6
macOS 12.0 beta 1 and iOS 15.0 beta 1
21.0.1 October 25, 2021 macOS 12.0
21.1.0 October 25, 2021 macOS 12.0.1 and iOS 15.0
21.2.0 December 7, 2021 macOS 12.1 and iOS 15.2
21.3.0 January 26, 2022 macOS 12.2 and iOS 15.3
21.4.0 March 14, 2022 macOS 12.3 and iOS 15.4
21.5.0 June 24, 2022 macOS 12.4 and iOS 15.5
21.6.0 July 20, 2022 macOS 12.5 and iOS 15.6
22.0 June 6, 2022 macOS Ventura

iOS 16

watchOS 9

tvOS 16

bridgeOS 7

macOS 13.0 beta 1 and iOS 16.0 beta 1

The command uname -r in Terminal will show the Darwin version number ("20.3.0"), and the command uname -v will show the XNU build version string, which includes the Darwin version number. The command sw_vers will show the corresponding ProductName ("macOS"), the ProductVersion number ("11.2.3") and the BuildVersion string ("20D91").

Derived projects

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

OpenDarwin

GNOME running on 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.[35]

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."[36] The last stable release was version 7.2.1, released on July 16, 2004.[37]

PureDarwin

PureDarwin is a project to create a bootable operating system image from Apple's released source code for Darwin.[38] Since the halt 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. In 2015 the project created a preview release based on Darwin 9 with an X11 GUI,[39] followed by a command-line only 17.4 Beta based on Darwin 17.[40]

Other derived projects

  • MacPorts (formerly DarwinPorts), Fink, and Homebrew are projects to port UNIX programs to the Darwin operating system and provide package management. In addition, several standard UNIX package managers—such as RPM, pkgsrc, and Portage—have Darwin ports. Some of these operate in their own namespace so as not to interfere with the base system.
  • GNU-Darwin is a project that ports packages of free software to Darwin. They package OS images in a way similar to a Linux distribution.
  • The Darwine project was a port of Wine that allows one to run Microsoft Windows software on Darwin.
  • SEDarwin is a port of TrustedBSD mandatory access control framework and portions of the SELinux framework to Darwin.[41] It was incorporated into Mac OS X 10.5.[42]
  • The Darbat project is an experimental port of Darwin to the L4 microkernel family. It aims to be binary compatible with existing Darwin binaries.[43]
  • The Darling project is a compatibility layer for running macOS binaries on Linux systems. It uses some Darwin source code.[44]
  • There are various projects that focus on driver support: e.g., wireless drivers,[45][46] wired NIC drivers[47][48][49] modem drivers,[50] card readers,[51] and the ext2 and ext3 file systems.[52][53]

See also

  • A/UX
  • mkLinux
  • OSF/1

References

  1. "Kernel Architecture Overview". Kernel Programming Guide.
  2. "darwin-xnu/README.md at master". GitHub. Archived from the original on March 31, 2019. Retrieved November 21, 2019.
  3. "Apple - Public Source - Darwin FAQ". Archived from the original on November 19, 2004. Retrieved August 9, 2021.
  4. "Binary Drivers required for PureDarwin". Archived from the original on November 18, 2009. Retrieved July 20, 2009.
  5. "Mac OS X Leopard - Technology - UNIX". Leopard Technology Overview. Apple Inc. Archived from the original on December 27, 2008. Leopard is now an Open Brand UNIX 03 Registered Product, conforming to the SUSv3 and POSIX 1003.1 specifications for the C API, Shell Utilities, and Threads.
  6. The Open Group (May 18, 2007). "Mac OS X Version 10.5 Leopard on Intel-based Macintosh computers certification". Retrieved February 11, 2013.
  7. "macOS version 10.13 High Sierra on Intel-based Mac computers". The Open Group. Retrieved November 19, 2017.
  8. Walsh, Jeff (March 22, 1999). "Apple goes open source with key OS components". InfoWorld. Vol. 21, no. 12. IDG InfoWorld. p. 40. Retrieved February 17, 2020.
  9. Kahney, Leander. "Apple Opens OS Code". Wired. Condé Nast. Retrieved February 17, 2020.
  10. "Apple ISO download directory". Archived from the original on October 7, 2016.
  11. Jim Magee. WWDC 2000 Session 106 - Mac OS X: Kernel. 14 minutes in. Archived from the original on December 11, 2021.
  12. "Mac Technology Overview: Kernel and Device Drivers Layer". Apple Developer Connection. Retrieved February 11, 2013.
  13. Singh, Amit (January 7, 2004). "XNU: The Kernel". Retrieved February 11, 2013.
  14. Roch, Benjamin. "Monolithic kernel vs. Microkernel". CiteSeerX 10.1.1.89.9877. {{cite journal}}: Cite journal requires |journal= (help)
  15. "Additional Features". Porting UNIX/Linux Applications to OS X. Apple Inc.
  16. "XNU board config for BCM2837". GitHub. December 16, 2021.
  17. "Raspberry Pi 3 Model B". Quad Core 1.2GHz Broadcom BCM2837
  18. "Voodoo XNU Kernel Source". Requires an Apache SVN client.
  19. "XNU on ARMv7". GitHub. January 25, 2022.
  20. "FSF's Opinion of the Apple Public Source License (APSL) 2.0".
  21. "The Problems with older versions of the Apple Public Source License (APSL)".
  22. "Open Source Releases". Apple Developer Connection. Retrieved February 11, 2013.
  23. "Technical Note TN2029: Mac OS X v10.1". Apple Developer Connection. Archived from the original on November 14, 2001.
  24. Siracusa, John (September 5, 2002). "Mac OS X 10.2 Jaguar". Ars Technica. Retrieved May 31, 2008.
  25. Siracusa, John (November 9, 2003). "Mac OS X 10.3 Panther". Ars Technica. Retrieved May 31, 2008.
  26. Siracusa, John (April 28, 2005). "Mac OS X 10.4 Tiger". Ars Technica. Retrieved May 30, 2008.
  27. Prabhakar, Ernie (November 9, 2001). "Darwin Version - New Scheme in Software Update 1". darwin-development (Mailing list). Archived from the original on January 14, 2009. Retrieved June 2, 2008.
  28. Siracusa, John (October 28, 2007). "Mac OS X 10.5 Leopard: the Ars Technica review". Ars Technica. Retrieved May 30, 2008.
  29. Siracusa, John (August 31, 2009). "Mac OS X 10.6 Snow Leopard: the Ars Technica review". Ars Technica. Retrieved November 29, 2009.
  30. As found on a jailbroken iPhone 4S
  31. "System Extensions and DriverKit - WWDC19 - Videos".
  32. "SystemExtensions". Apple Developer Documentation.
  33. "DriverKit". Apple Developer Documentation.
  34. System Extensions and DriverKit. Apple Developer Documentation.
  35. "OpenDarwin". OpenDarwin Project. Archived from the original on January 6, 2006.
  36. OpenDarwin Core Team and Administrators (July 25, 2006). "OpenDarwin Shutting Down". OpenDarwin Project. Archived from the original on August 4, 2006.
  37. "OpenDarwin 7.2.1 Released". August 5, 2004. Archived from the original on August 5, 2004. Retrieved October 7, 2019.
  38. "PureDarwin".
  39. PureDarwin Xmas (2015)
  40. "PureDarwin 17.4 Beta". GitHub. PureDarwin. November 30, 2019. Retrieved January 11, 2020.
  41. "Security Enhanced Darwin". SEDarwin. January 22, 2007. Archived from the original on October 5, 2011.
  42. "What's New In Mac OS X: Mac OS X v10.5". Mac OS X Reference Library. Apple Inc. November 13, 2009. Archived from the original on December 8, 2009.
  43. "L4/Darwin (aka Darbat)". Ertos.nicta.com.au. May 9, 2007. Archived from the original on December 19, 2013.
  44. "Darling: macOS translation layer for Linux". www.darlinghq.org. Retrieved January 11, 2020.
  45. yuriwho (May 5, 2002). "WirelessDriver Home Page". Wirelessdriver.sourceforge.net. Retrieved July 12, 2010.
  46. "iwi2200 Darwin". SourceForge. March 27, 2009. Retrieved June 13, 2010.
  47. "Port BSD tulip driver(s) to Darwin OS | Download Port BSD tulip driver(s) to Darwin OS software for free at". SourceForge.net. Retrieved July 12, 2010.
  48. "RealTek network driver for Mac OS X/Darwin". SourceForge. March 15, 2006. Retrieved June 3, 2010. Project inactive since March 15, 2006.
  49. fansui; et al. (August 1, 2007). "RTL8150LMEthernet". SourceForge. Retrieved June 13, 2010.
  50. "ZyXEL Modem Drivers for OS X/Darwin | Download ZyXEL Modem Drivers for OS X/Darwin software for free at". SourceForge.net. May 14, 2002. Retrieved July 12, 2010.
  51. "Mac OS X PC Card ATA Driver". Pccardata.sourceforge.net. December 20, 2001. Retrieved July 12, 2010.
  52. "Mac OS X Ext2 Filesystem | Download Mac OS X Ext2 Filesystem software for free at". SourceForge.net. October 14, 2002. Retrieved July 12, 2010.
  53. "ext2 filesystem in user space". SourceForge. July 14, 2008. Retrieved June 13, 2010.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.