Darwin (operating system)

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
Darwin
128px
Developer Apple Inc.
Written in C, C++, Objective-C
OS family Unix (BSD)
Working state Current
Source model Open source
Initial release November 15, 2000; 23 years ago (2000-11-15)
Latest release 15.2.0 (December 8, 2015; 8 years ago (2015-12-08)) [±]
Platforms PowerPC, x86, ARM
Kernel type Hybrid (mostly monolithic)
Default user interface Command-line interface
License Mostly Apple Public Source License, with proprietary drivers[1]
Official website opensource.apple.com

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

Darwin forms the core set of components upon which OS X and iOS are based. It is mostly POSIX compatible, but has never, by itself, been certified as being compatible with any version of POSIX. Starting with Leopard, OS X has been certified compatible with the Single UNIX Specification version 3 (SUSv3).[2][3][4]

History

Simplified history of Unix-like operating systems.

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 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. Minor updates were released as packages that were installed separately. Darwin is now only available as source code,[5] except for the ARM variant, which has not been released in any form separately from iOS. However, the older versions of Darwin are still available in binary form,[6] and a hobbyist developer winocm took the official Darwin source code and ported it to ARM.[7]

Design

Kernel

The kernel of Darwin is XNU, a hybrid kernel that combines the Mach 3 microkernel, various elements of BSD (including the process model, network stack, and virtual file system),[8] and an object-oriented device driver API called I/O Kit.[9] The hybrid kernel design leverages the flexibility of a microkernel[citation needed] 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 and later, the 6th generation iPod Touch and later, the iPad Air and iPad Pro, and the fourth generation Apple TV, 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, although it does not appear to have been updated since 2009.[10] An open-source port of the XNU kernel also exists for ARM platforms.[11] 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 Mac OS X, 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 Mac OS X, 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 is approved as a free software license by the Free Software Foundation (FSF). 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.

Mascot

The Darwin developers decided to adopt a mascot in 2000, and chose Hexley the Platypus, over other contenders, such as an Aqua Darwin fish, Clarus the Dogcow, and an orca. Hexley is a cartoon platypus who – mimicking the BSD Daemon – usually wears a cap resembling a demon's horns and carries a trident which symbolizes the forking of processes. Hexley was designed by Jon Hooper. Apple does not sanction Hexley as a logo for Darwin.[12]

The name Hexley is an accidental misspelling of the last name of Thomas Henry Huxley, a 19th-century English biologist who was a well-known champion of Charles Darwin's theory of evolution (nicknamed "Darwin's bulldog"). The name was chosen under the misunderstanding that he was an assistant of Darwin, rather than a prominent biologist in his own right. By the time the spelling mistake had been discovered, it was deemed too late to change, and the erroneous name was kept.[13]

Release history

The following is a table of major Darwin releases with their dates of release and their corresponding Mac OS X releases.[14] Note that the corresponding Mac OS X release may have been released on a different date; refer to the Mac OS X pages for those dates.

Version Date Corresponding releases Notes
0.1 March 16, 1999 (1999-03-16) Mac OS X developer previews
  • Developer preview 1
  • 0.1 is contrived (for sorting and identification) as this identified itself simply as Mac OS 10.0
0.2 November 10, 1999 (1999-11-10) Developer preview 2
1.0 February 2000 (2000-02) Developer preview 3
1.1 April 5, 2000 (2000-04-05) Developer preview 4
1.2.1 November 15, 2000 (2000-11-15) Mac OS X Public Beta Code-named "Kodiak"
1.3.1 April 13, 2001 (2001-04-13) 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 (2001-10-02) 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.[15]
5.1 November 12, 2001 (2001-11-12)
  • Mac OS X v10.1.1
  • Change in numbering scheme to match the Mac OS X build numbering scheme
5.5 June 5, 2002 (2002-06-05) Mac OS X v10.1.5
6.0.1 September 23, 2002 (2002-09-23) Mac OS X v10.2
6.8 October 3, 2003 (2003-10-03) Mac OS X v10.2.8
7.0 October 24, 2003 (2003-10-24) Mac OS X Panther
7.9 April 15, 2005 (2005-04-15) Mac OS X v10.3.9
8.0 April 29, 2005 (2005-04-29) Mac OS X Tiger
Mac OS X for Apple TV
8.11 November 14, 2007 (2007-11-14) Mac OS X v10.4.11
9.0 October 26, 2007 (2007-10-26) Mac OS X Leopard
iPhone OS 1
9.8 August 5, 2009 (2009-08-05) Mac OS X v.10.5.8
10.0 August 28, 2009 (2009-08-28) Mac OS X Snow Leopard
iOS 4
10.8 June 23, 2011 (2011-06-23) Mac OS X v10.6.8
11.0.0 July 20, 2011 (2011-07-20) Mac OS X Lion
iOS 5[21]
  • 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
11.4.2 October 4, 2012 (2012-10-04) Mac OS X v10.7.5 (supplemental)
12.0.0 February 16, 2012 (2012-02-16) OS X Mountain Lion
  • OS X v10.8.0
  • Mac OS X was rebranded into OS X.
12.6.0 January 27, 2015 (2015-01-27) OS X v10.8.5 (with Security Update 2015-001)
13.0.0 June 11, 2013 (2013-06-11) OS X Mavericks
iOS 6
OS X v10.9.0
13.4.0 September 17, 2014 (2014-09-17) OS X v10.9.5
14.0.0 September 18, 2014 (2014-09-18) OS X Yosemite
iOS 7, iOS 8
OS X v10.10.0
14.5.0 August 13, 2015 (2015-08-13) OS X v10.10.5
15.0.0 September 16, 2015 (2015-09-16) OS X El Capitan
iOS 9
OS X v10.11.0 and iOS 9.0
15.2.0 December 8, 2015 (2015-12-08) OS X v10.11.2

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 Mac OS X, every version has a unique beginning build number, which identifies what whole version of Mac OS X 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). The point release number in the Darwin version is always the same as the second point number in the Mac OS X version. In the case of Mac OS X v10.1.1 (the version where the jump in version numbers was made), this was build 5M28 and the 10.1.1 release, from which a version number of 5.1 was derived.[22]

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 are many 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.[23]

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

PureDarwin

In 2007, the PureDarwin project was launched to continue where OpenDarwin left off, and is currently working to produce a release based on Darwin 11. There is a version available based on Darwin 10.5.8. This release has X11, DTrace, and ZFS.[25] PureDarwin nano is another release of PureDarwin that is supposed to be minimalistic.

Other

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. opensource.apple.com/static/iso
  7. github.com/darwin-on-arm/xnu
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found. Requires an Apache SVN client.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. As found on a jailbroken iPhone 4S
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.
  28. Lua error in package.lua at line 80: module 'strict' not found.
  29. Lua error in package.lua at line 80: module 'strict' not found.
  30. Lua error in package.lua at line 80: module 'strict' not found.
  31. Lua error in package.lua at line 80: module 'strict' not found.
  32. Lua error in package.lua at line 80: module 'strict' not found. Project inactive since March 15, 2006.
  33. Lua error in package.lua at line 80: module 'strict' not found.
  34. Lua error in package.lua at line 80: module 'strict' not found.
  35. Lua error in package.lua at line 80: module 'strict' not found.
  36. Lua error in package.lua at line 80: module 'strict' not found.
  37. Lua error in package.lua at line 80: module 'strict' not found.

External links