# Darwin (sistema operacional)

Darwin é um kernel de código aberto lançado pela Apple Inc. em 2000. É composto por código desenvolvido pela Apple, bem como código derivado do NeXTSTEP, BSD, Mach, e outros projetos de software livre.
Darwin forma o conjunto central de componentes sobre os quais macOS (anteriormente OS X e Mac OS X), iOS, watchOS, tvOS e iPadOS são baseados. Sua maioria é compatível com POSIX, mas nunca, por si só, foi certificado como compatível com qualquer versão do POSIX. Começando com o Mac OS X Leopard,o macOS foi certificado como compatível com a versão 3 da Single UNIX Specification (SUSv3).

## História

A herança do Darwin começou com o sistema operacional NeXTSTEP da NeXT (mais tarde, desde a versão 4.0, conhecida como OPENSTEP), lançada pela primeira vez em 1989. Depois que a Apple comprou a NeXT em 1997, anunciou que basearia seu próximo sistema operacional no OPENSTEP. Este foi desenvolvido no Rhapsody em 1997, Mac OS X Server 1.0 em 1999, Mac OS X Public Beta em 2000, e Mac OS X 10.0 em 2001. Em 2000, os principais componentes do sistema operacional Mac OS X foram lançados como software de código aberto a Licença de Fonte Pública da Apple (APSL) como Darwin; os componentes de alto nível, como as estruturas do Cocoa e Carbon, permaneceram como software proprietário. O nome é um tributo ao naturalista britânico Charles Darwin.

## Kernel

O núcleo do Darwin é o XNU, um kernel híbrido que usa OSFMK 7.3 (Open Software Foundation Mach Kernel) da OSF, vários elementos do FreeBSD (incluindo o modelo de processo, pilha de rede, sistema de arquivos virtuais), e um driver de dispositivo orientado a objetos API chamado Kit I/O. O design do kernel híbrido fornece a flexibilidade de um microkernel e o desempenho de um kernel monolítico.

## Suporte a hardware e software

O Darwin atualmente inclui suporte para a variante de 64-bit x86-64 dos processadores Intel x86 usados em Macs e os processadores ARM de 64 bits usados no iPhone 5S, o iPod Touch de 6ª geração, o iPad Air, a quarta geração Apple TV, modelos originais HomePod, e posteriores, bem como os processadores ARM de 32 bits usados no iPhone 5C e mais antigos, gerações anteriores do iPod Touch, o iPad até a quarta geração, e a segunda e terceira geração da Apple TV. Existe uma porta de código aberto do kernel XNU que suporta Darwin nas plataformas Intel e AMD x86 não suportadas oficialmente pela Apple, embora não pareça ter sido atualizada desde 2009. Uma porta de código aberto do kernel XNU também existe para plataformas ARM. Versões mais antigas suportavam alguns ou todos os PowerPC de 32 bits, PowerPC de 64 bits e 32 bits x86.
Ele suporta a API POSIX por meio de sua linhagem BSD (em grande parte FreeBSD userland) e um grande número de programas escritos para vários outros sistemas UNIX-like podem ser compilados em Darwin sem alterações no código-fonte.
Darwin não inclui muitos dos elementos definidores do macOS, como as APIs Carbon e Cocoa ou a interface de usuário Quartz Compositor e Aqua, e, portanto, não pode executar aplicativos Mac. Ele, no entanto, suporta uma série de características menos conhecidas do macOS, como o mDNSResponder, que é o respondente DNS multicast e um componente central da tecnologia de rede Bonjour; e launchd uma avançada framework de gerenciamento de serviços.

## Licença

Em julho de 2003, a Apple lançou o Darwin sob a versão 2.0 da Licença de Fonte Pública da Apple (APSL), que a Free Software Foundation (FSF) classifica como uma licença de software gratuita incompatível com a Licença Pública Geral GNU. Versões anteriores foram lançadas sob uma versão anterior da licença APSL, que não atendeu à definição FSF de software livre, embora tenha cumprido os requisitos da Definição de Código Aberto.

## Versões

Tabela de grandes lançamentos do Darwin e suas datas e lançamentos no macOS. Observe que a versão correspondente do macOS pode ter sido lançada em uma data diferente; consulte as páginas do macOS para essas datas.
| Darwin | Lançamento | Versão do MacOS |
| 0.1 | 16 de março de 1999 | Lançamento do Mac OS X Server 1.0 |
| 0.2 | 14 de abril de 1999 | Lançamento do Mac OS X Server 1.0 |
| 0.3 | 5 de agosto de 1999 | Lançamento do Mac OS X Server 1.0 |
| 1.0 | 12 de abril de 2000 | Developer preview 3 |
| 1.1 | 5 de abril de 2000 | Developer preview 4 |
| 1.2.1 | 15 de novembro de 2000 | Beta público do Mac OS X "Kodiak" |
| 1.3.1 | 13 de abril de 2001 | Mac OS X 10.0 Cheetah |
| 1.4.1 | 2 de outubro de 2001 | Mac OS X 10.1 Puma |
| 5.1 | | Mac OS X 10.1.1 |
| 5.5 | | Mac OS X 10.1.5 |
| 6.0.1 | 23 de setembro de 2002 | Mac OS X 10.2 Jaguar |
| 6.8 | | Mac OS X 10.2.8 |
| 7.0 | 24 de outubro de 2003 | Mac OS X 10.3 Panther |
| 7.9 | | Mac OS X 10.3.9 |
| 8.0 | 29 de abril de 2005 | Mac OS X 10.4 Tiger |
| 8.11 | | Mac OS X 10.4.11 |
| 9.0 | 26 de outubro de 2007 | Mac OS X 10.5 Leopard |
| 9.8 | | Mac OS X 10.5.8 |
| 10.0 | 28 de agosto de 2009 | Mac OS X 10.6 Snow Leopard |
| 10.8 | | Mac OS X 10.6.8 |
| 11.0.0 | 20 de julho de 2011 | Mac OS X 10.7 Lion |
| 11.4.2 | | Mac OS X 10.7.5 |
| 12.0.0 | 16 de fevereiro de 2012 | OS X 10.8 Mountain Lion |
| 12.6.0 | | OS X 10.8.5 |
| 13.0.0 | 11 junho de 2013 | OS X 10.9 Mavericks |
| 13.4.0 | | OS X 10.9.5 |
| 14.0.0 | 18 de setembro 2014 | OS X 10.10 Yosemite |
| 14.5.0 | | OS X 10.10.5 |
| 15.0.0 | 13 de agosto de 2015 | OS X 10.11.0 |
| 15.6.0 | | OS X 10.11.6 |
| 16.0.0 | 13 de setembro de 2016 | macOS 10.12 Sierra |
| 16.5.0 | | macOS 10.12.4 |
| 17.0.0 | 19 de setembro de 2017 | macOS 10.13 High Sierra |
| 17.5.0 | | macOS 10.13.4 |
| 17.6.0 | | macOS 10.13.5 |
| 17.7.0 | | macOS 10.13.6 |
| 18.0.0 | 24 de setembro de 2018 | macOS 10.14 Mojave |
| 18.2.0 | | macOS 10.14.1 |
| 19.0.0 | 19 de setembro de 2019 | macOS 10.15 Catalina |
| 19.2.0 | | macOS 10.15.2 |
| 19.3.0 | | macOS 10.15.3 |
| 19.4.0 | 24 de março de 2020 | macOS 10.15.4 |
O salto nos números de versão de Darwin 1.4.1 para 5.1 com o lançamento do Mac OS X v10.1.1 foi projetado para ligar Darwin à versão Mac OS X e ao sistema de numeração de compilação, que por sua vez é herdado do NeXTSTEP. No sistema de numeração de compilação do macOS, cada versão tem um número de compilação inicial único, que identifica a versão inteira do macOS que faz parte. Mac OS X v10.0 tinha números de compilação começando com 4, 10.1 tinha números de compilação começando com 5, e assim por diante (números de compilação anteriores representavam lançamentos de desenvolvedores).
O comando uname -r no Terminal mostrará o número da versão de Darwin, e o comando uname -v mostrará a string de versão de compilação XNU, que inclui o número da versão de Darwin.

## Projetos derivados

Devido à natureza do software livre de Darwin, houve projetos que visam modificar ou melhorar o sistema operacional.

### OpenDarwin

OpenDarwin era um sistema operacional baseado no sistema Darwin. Foi fundada em abril de 2002 pela Apple Inc. e pela Internet Systems Consortium. Seu objetivo era aumentar a colaboração entre os desenvolvedores da Apple e a comunidade de software livre. A Apple se beneficiou do projeto porque as melhorias no OpenDarwin seriam incorporadas aos lançamentos do Darwin; e a comunidade de código livre/aberto beneficiou-se de ter controle total sobre seu próprio sistema operacional, que poderia então ser usado em distribuições de software livre, como GNU-Darwin.
Em 25 de julho de 2006, a equipe OpenDarwin anunciou que o projeto estava sendo encerrado, pois eles achavam que OpenDarwin tinha "se tornado uma mera instalação de hospedagem para projetos relacionados ao Mac OS X", e que os esforços para criar um sistema operacional Darwin independente haviam falhado. Eles também afirmam: "Disponibilidade de recursos, interação com representantes da Apple, dificuldade de construção e rastreamento de recursos e falta de interesse da comunidade contribuíram para isso." O último lançamento estável foi a versão 7.2.1, lançada em 16 de julho de 2004.

### PureDarwin

PureDarwin é um projeto para criar uma imagem bootável de sistema operacional do código-fonte Darwin lançado pela Apple. Desde o encarramento do OpenDarwin e o lançamento de imagens bootáveis desde Darwin 8.x, tem sido cada vez mais difícil criar um sistema operacional completo à medida que muitos componentes se tornaram de codigo fechado. O projeto conseguiu criar uma versão de Natal baseada em Darwin 9 com uma GUI X11 e uma com apenas linha de comando, a 17.4 Beta baseada em Darwin 17.

### Outros projectos derivados

* MacPorts (anteriormente DarwinPorts), Fink e Homebrew são projetos bem conhecidos para portar programas UNIX para o sistema operacional Darwin e fornecer gerenciamento de pacotes. Além disso, vários gerenciadores de pacotes padrão UNIX , como RPM, pkgsrc e Portage, têm portas Darwin. Alguns deles operam em seu próprio namespace para não interferir com o sistema base.
* GNU-Darwin é um projeto que porta pacotes de software livre para Darwin. Eles empacotam imagens do Sistema Operacional de forma semelhante a uma distribuição Linux.
* O projeto Darwine foi uma portabilidade do wine que permite executar o software Microsoft Windows em Darwin.
* SEDarwin é uma porta de estrutura de controle de acesso obrigatório TrustedBSD e partes da estrutura SELinux para Darwin. Foi incorporado ao Mac OS X 10.5.
* O projeto Darbat é um porto experimental de Darwin para a família de micronúcleos L4. Ele tem como objetivo ser binário compatível com os binários darwinianos existentes.
* O projeto Darling é uma camada de compatibilidade para a execução de binários macOS em sistemas Linux. Usa algum código fonte de Darwin.
* Existem vários projetos que se concentram no suporte ao driver: por exemplo, drivers wireless, drivers para NIC, drivers de modem, leitores de cartão, e os sistemas de arquivos ext2 e ext3.