Darwin (operating system)

Last updated

Darwin
Developer Apple Inc.
Written in C, C++, Objective-C, assembly language
OS family Unix-like [1] [2]
Working stateCurrent
Source model Open source
Initial releaseNovember 15, 2000;19 years ago (2000-11-15)
Latest release 19.3.0 (January 28, 2020;5 months ago (2020-01-28)) [±]
Repository https://github.com/apple/darwin-xnu
PlatformsCurrent: x86-64, 64-bit ARM
Historical: PowerPC, IA-32, 32-bit ARM (32-bit ARM support was closed-source)
Kernel type Hybrid
Default user interface Command-line interface
License Mostly Apple Public Source License (APSL), with closed-source drivers [3]
Official website opensource.apple.com

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.

Contents

Darwin forms the core set of components upon which macOS (previously OS X and Mac OS X), 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 (SUSv3). [4] [5] [6]

History

The heritage of Darwin began with NeXT's NeXTSTEP operating system (later, since version 4.0, known as OPENSTEP), 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. [7] At the time interim CEO Steve Jobs alluded to British naturalist Charles Darwin by announcing "because it's about evolution". [8] 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. [9] Minor updates were released as packages that were installed separately. Darwin is now only available as source code, [10] 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. [11]

Simplified history of Unix-like operating systems. Unix timeline.en.svg
Simplified history of Unix-like operating systems.

Design

Diagram of Mac OS X architecture Diagram of Mac OS X architecture.svg
Diagram of Mac OS X architecture

Kernel

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

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. [17] An open-source port of the XNU kernel also exists for ARM platforms. [18] 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 (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. [19] 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. [20]

Release history

The following is a table of major Darwin releases with their dates of release and their corresponding macOS releases. [21] 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 (for sorting and identification) as this identified itself simply as Rhapsody 5.3
0.2April 14, 1999Mac OS X Server 1.0.1
0.3August 5, 1999Based 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.0April 12, 2000Developer preview 3
1.1April 5, 2000Developer preview 4
1.2.1November 15, 2000 Mac OS X Public Beta Code-named "Kodiak"
1.3.1April 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.1October 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. [22]
5.1November 12, 2001Mac 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.1.5
6.0.1September 23, 2002 Mac OS X v10.2
6.8October 3, 2003Mac OS X v10.2.8
7.0October 24, 2003 Mac OS X Panther Mac OS X v10.3.0
7.9April 15, 2005Mac OS X v10.3.9
8.0April 29, 2005 Mac OS X Tiger
Mac OS X for Apple TV
Mac OS X v10.4.0
8.11November 14, 2007Mac OS X v10.4.11
9.0October 26, 2007 Mac OS X Leopard
iPhone OS 1
Mac OS X v10.5.0
9.8August 5, 2009Mac OS X v.10.5.8
10.0August 28, 2009 Mac OS X Snow Leopard
iOS 4
Mac OS X v10.6.0
10.8June 23, 2011Mac OS X v10.6.8
11.0.0July 20, 2011 Mac OS X Lion
iOS 5 [28]
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.2October 4, 2012Mac OS X v10.7.5 (supplemental)
12.0.0February 16, 2012 OS X Mountain Lion OS X v10.8.0
12.6.0January 27, 2015OS X v10.8.5 (with Security Update 2015-001)
13.0.0June 11, 2013 OS X Mavericks
iOS 6
OS X v10.9.0
13.4.0September 17, 2014OS X v10.9.5
14.0.0September 18, 2014 OS X Yosemite
iOS 7, iOS 8
OS X v10.10.0
14.5.0August 13, 2015OS X v10.10.5
15.0.0September 16, 2015 OS 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 (such as a window or tab) in which the user authenticated the program.
  • LibreSSL replaces OpenSSL
15.6.0July 18, 2016OS X v10.11.6 and iOS 9.3.3
16.0.0September 13, 2016 macOS Sierra
iOS 10
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.0March 27, 2017macOS 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 v10.12.6 and iOS 10.3.3
17.0.0September 19, 2017 macOS 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 ("kexts") will require explicit approval by the user before being able to run.
17.5.0March 29, 2018macOS 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 v10.13.5
17.7.0July 9, 2018macOS v10.13.6 and iOS 11.4.1
18.0.0September 24, 2018 macOS Mojave
iOS 12
18.2.0October 30, 2018macOS v10.14.1 and iOS 12.1
  • Added support for the new Radeon Vega 20 GPUs in the new MacBooks
19.0.0September 19, 2019 macOS Catalina
iOS 13
19.2.0December 10, 2019macOS 10.15.2 and iOS 13.3
19.3.0January 28, 2020macOS 10.15.3 and iOS 13.3.1
  • System Extensions replace Kexts and runs in userspace, outside of the kernel. [29]
  • DriverKit replaces IOKit. 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. [30] [31] [32]
19.4.0March 24, 2020 macOS Catalina
iOS 13
19.5.0April 30, 2020macOS 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, 2020 macOS 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 (earlier build numbers represented developer releases). [33]

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

GNOME running on OpenDarwin. GNOME 2 running on openDarwin (2004).png
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. [34]

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

PureDarwin

PureDarwin is a project to create a bootable operating system image from Apple's released source code for Darwin. [37] 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 [38] and a command-line only 17.4 Beta based on Darwin 17. [39]

Other derived projects

See also

Related Research Articles

macOS is a series of proprietary graphical operating systems developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop, laptop and home computers, and by web usage, it is the second most widely used desktop OS, after Microsoft Windows.

Mach is a kernel developed at Carnegie Mellon University to support operating system research, primarily distributed and parallel computing. Mach is often mentioned as one of the earliest examples of a microkernel. However, not all versions of Mach are microkernels. Mach's derivatives are the basis of the operating system kernel in GNU Hurd and of Apple's XNU kernel used in macOS, iOS, iPadOS, tvOS, and watchOS.

The history of macOS, Apple's current Mac operating system originally named Mac OS X until 2012 and then OS X until 2016, began with the company's project to replace its "classic" Mac OS. That system, up to and including its final release Mac OS 9, was a direct descendant of the operating system Apple had used in its Macintosh computers since their introduction in 1984. However, the current macOS is a Unix operating system built on technology that had been developed at NeXT from the 1980s until Apple purchased the company in early 1997.

PF is a BSD licensed stateful packet filter, a central piece of software for firewalling. It is comparable to netfilter (iptables), ipfw, and ipfilter.

MkLinux is an open-source software computer operating system begun by the Open Software Foundation Research Institute and Apple Computer in February 1996, to port Linux to the PowerPC platform, and Macintosh computers. The name refers to the Linux kernel being adapted to run as a server hosted on the Mach microkernel, version 3.0.

XNU computer operating system kernel

XNU is the computer operating system (OS) kernel developed at Apple Inc. since December 1996 for use in the macOS operating system and released as free and open-source software as part of the Darwin OS, which is the basis for the Apple TV Software, iOS, iPadOS, watchOS, and tvOS OSes. XNU is an abbreviation of X is Not Unix.

Architecture of macOS The architecture of macOS.

The architecture of macOS describes the layers of the operating system that is the culmination of Apple Inc.'s decade-long research and development process to replace the classic Mac OS.

A hybrid kernel is an operating system kernel architecture that attempts to combine aspects and benefits of microkernel and monolithic kernel architectures used in computer operating systems.

The following tables compare general and technical information for a number of file systems.

FreeBSD Free Unix-like operating system

FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD), which was based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular open-source BSD operating system, accounting for more than three-quarters of all installed simply, permissively licensed BSD systems.

Mac OS X Snow Leopard Seventh major release of OS X

Mac OS X Snow Leopard is the seventh major release of Mac OS X, Apple's desktop and server operating system for Macintosh computers.

The Berkeley Software Distribution (BSD) was an operating system based on Research Unix, developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berkeley. Today, "BSD" often refers to its descendants, such as FreeBSD, OpenBSD, NetBSD, or DragonFly BSD, and systems based on those descendants.

Macintosh operating systems Family of operating systems for Macintosh computers

The family of Macintosh operating systems developed by Apple Inc. includes the graphical user interface-based operating systems it has designed for use with its Macintosh series of personal computers since 1984, as well as the related system software it once created for compatible third-party systems.

NetBSD Open-source Unix-like operating system

NetBSD is a free and open-source Unix-like operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked. It continues to be actively developed and is available for many platforms, including servers, desktops, handheld devices, and embedded systems.

OpenZFS umbrella project that develops the ZFS filesystem as an open-source project

OpenZFS is an open-source storage platform that encompasses the functionality of traditional filesystems and volume manager. It includes protection against data corruption, support for high storage capacities, efficient data compression, snapshots and copy-on-write clones, continuous integrity checking and automatic repair, remote replication with ZFS send and receive, and RAID-Z.

Darling (software)

Darling is a free and open-source macOS compatibility layer for GNU/Linux. It duplicates functions of macOS by providing alternative implementations of the libraries and frameworks that macOS programs call. This method of duplication differs from other methods that might also be considered emulation, where macOS programs run in a virtual machine. Darling has been called the counterpart to WINE for running OS X apps.

System Integrity Protection Security mechanism of OS X

System Integrity Protection is a security feature of Apple's macOS operating system introduced in OS X El Capitan (2015). It comprises a number of mechanisms that are enforced by the kernel. A centerpiece is the protection of system-owned files and directories against modifications by processes without a specific "entitlement", even when executed by the root user or a user with root privileges (sudo).

NextBSD

NextBSD was an operating system initially based on the trunk version of FreeBSD as of August 2015. It is a fork of FreeBSD which implements new features developed on branches but not yet implemented in FreeBSD. As of 2019 the website seems defunct, and the later commits on GitHub date from July, 2016.

The History of the Berkeley Software Distribution begins in the 1970s.

References

  1. "Kernel Architecture Overview". Kernel Programming Guide.
  2. "darwin-xnu/README.md at master". Archived from the original on March 31, 2019. Retrieved November 21, 2019.
  3. "Binary Drivers required for PureDarwin". Archived from the original on November 18, 2009. Retrieved July 20, 2009.
  4. "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.
  5. The Open Group (May 18, 2007). "Mac OS X Version 10.5 Leopard on Intel-based Macintosh computers certification" . Retrieved February 11, 2013.
  6. "macOS version 10.13 High Sierra on Intel-based Mac computers". The Open Group. Retrieved November 19, 2017.
  7. 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.
  8. Kahney, Leander. "Apple Opens OS Code". Wired. Condé Nast. Retrieved February 17, 2020.
  9. web.archive.org/web/20161007041552/https://opensource.apple.com/static/iso/
  10. Hubbard, Jordan (October 31, 2007). "Re: Darwin 9.0 Source Code Available."". darwinos-users (Mailing list). Archived from the original on February 25, 2008. Retrieved November 27, 2007.
  11. github.com/darwin-on-arm/xnu
  12. Jim Magee. WWDC 2000 Session 106 - Mac OS X: Kernel. 14 minutes in.
  13. "Mac Technology Overview: Kernel and Device Drivers Layer". Apple Developer Connection . Retrieved February 11, 2013.
  14. Singh, Amit (January 7, 2004). "XNU: The Kernel" . Retrieved February 11, 2013.
  15. Roch, Benjamin. "Monolithic kernel vs. Microkernel". CiteSeerX   10.1.1.89.9877 .Cite journal requires |journal= (help)
  16. "Additional Features". Porting UNIX/Linux Applications to OS X. Apple Inc.
  17. "Voodoo XNU Kernel Source". Requires an Apache SVN client.
  18. "XNU on ARMv7".
  19. "FSF's Opinion of the Apple Public Source License (APSL) 2.0".
  20. "The Problems with older versions of the Apple Public Source License (APSL)".
  21. "Open Source Releases". Apple Developer Connection . Retrieved February 11, 2013.
  22. "Technical Note TN2029: Mac OS X v10.1". Apple Developer Connection. Archived from the original on November 14, 2001.
  23. Siracusa, John (September 5, 2002). "Mac OS X 10.2 Jaguar". Ars Technica . Retrieved May 31, 2008.
  24. Siracusa, John (November 9, 2003). "Mac OS X 10.3 Panther". Ars Technica . Retrieved May 31, 2008.
  25. Siracusa, John (April 28, 2005). "Mac OS X 10.4 Tiger". Ars Technica . Retrieved May 30, 2008.
  26. Siracusa, John (October 28, 2007). "Mac OS X 10.5 Leopard: the Ars Technica review". Ars Technica . Retrieved May 30, 2008.
  27. Siracusa, John (August 31, 2009). "Mac OS X 10.6 Snow Leopard: the Ars Technica review". Ars Technica . Retrieved November 29, 2009.
  28. As found on a jailbroken iPhone 4S
  29. https://developer.apple.com/videos/play/wwdc2019/702/
  30. "SystemExtensions". Apple Developer Documentation.
  31. "DriverKit". Apple Developer Documentation.
  32. System Extensions and DriverKit. Apple Developer Documentation.
  33. 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.
  34. "OpenDarwin". OpenDarwin Project. Archived from the original on January 6, 2006.
  35. OpenDarwin Core Team and Administrators (July 25, 2006). "OpenDarwin Shutting Down". OpenDarwin Project. Archived from the original on August 4, 2006.
  36. "OpenDarwin 7.2.1 Released". August 5, 2004. Archived from the original on August 5, 2004. Retrieved October 7, 2019.
  37. "PureDarwin".
  38. PureDarwin Xmas (2015)
  39. "PureDarwin 17.4 Beta". GitHub. PureDarwin. November 30, 2019. Retrieved January 11, 2020.
  40. "Security Enhanced Darwin". SEDarwin. January 22, 2007. Archived from the original on October 5, 2011.
  41. "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.
  42. "L4/Darwin (aka Darbat)". Ertos.nicta.com.au. May 9, 2007. Archived from the original on December 19, 2013.
  43. "Darling: macOS translation layer for Linux". www.darlinghq.org. Retrieved January 11, 2020.
  44. yuriwho (May 5, 2002). "WirelessDriver Home Page". Wirelessdriver.sourceforge.net. Retrieved July 12, 2010.
  45. "iwi2200 Darwin". SourceForge. March 27, 2009. Retrieved June 13, 2010.
  46. "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.
  47. "RealTek network driver for Mac OS X/Darwin". SourceForge. March 15, 2006. Retrieved June 3, 2010.Project inactive since March 15, 2006.
  48. fansui; et al. (August 1, 2007). "RTL8150LMEthernet". SourceForge. Retrieved June 13, 2010.
  49. "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.
  50. "Mac OS X PC Card ATA Driver". Pccardata.sourceforge.net. December 20, 2001. Retrieved July 12, 2010.
  51. "Mac OS X Ext2 Filesystem | Download Mac OS X Ext2 Filesystem software for free at". Sourceforge.net. October 14, 2002. Retrieved July 12, 2010.
  52. "ext2 filesystem in user space". SourceForge. July 14, 2008. Retrieved June 13, 2010.