No WWDC 2015 a Apple anunciou uma nova versão da sua linguagem de programação Swift, o Swift 2.0. Desde que foi lançado no WWDC 2014, o Swift sofreu algumas pequenas atualizações nas funcionalidades de sintaxe e uma API estendida acrescentadas com o Swift 1.1 em outubro de 2014 e com o Swift 1.2 em abril de 2015. O Swift é uma linguagem que há vários anos vem sendo desenvolvida, sendo baseada em LLVM como o motor de tempo de execução e que usa técnicas e ferramentas do compilador Clang para fornecer uma linguagem de programação de tipagem estática segura e pode interoperar com frameworks e bibliotecas Objective-C.
Swift 2.0 traz "um desempenho ainda melhor, uma nova API de tratamento de erros e suporte de alta qualidade para verificação de disponibilidade. As APIs da plataforma parecem ainda mais naturais em Swift com melhorias para os SDKs da Apple" de acordo com o post no blog da versão. Além disso, uma melhor integração com os atuais SDKs Apple foi possível graças a nullability e generics annotations estensivas, introduzidas no Swift 1.2. O tratamento de erro usa as palavras-chave padrões da indústria try, catch e throw ao invés da arcaica convenção da linguagem C de retornar nil. Tratamento de erros é uma funcionalidade da linguagem, não uma restrição dos programadores. Extensões de protocolo agora permitem aos protocolos existentes adotar novos métodos de forma semelhante às categorias do Objective-C, permitindo maior flexibilidade na forma como os programas são escritos. Extensas atualizações para o núcleo da biblioteca Swift tem sido feitas para usar o novo recurso, em vez de funções globais.
Swift 2.0 também acrescenta a capacidade de um programa ser compilado tanto para versões mais antigas quanto para as mais recentes do Swift, permitindo que programas usem disponibilidade seletiva para condicionalmente compilar código para plataformas mais recentes, semelhante à ligação fraca disponível em Objective-C ao usar a macro NS_AVAILABLE. Uma nova palavra-chave defer permite que o código seja associado com a limpeza no final de um bloco, semelhante à instrução defer da linguagem Go..
Com mais de 30 anos, o runtime do Objective-C começava a mostrar sua idade no cada vez maior espaço móvel. Sendo uma linguagem de ligação dinâmica, as mensagens enviadas para objetos em Objective-C pagam um custo por mensagem na função objc_msgSend. Além disso, um compilador de otimização não pode sequenciar métodos despachados dinamicamente, resultando em código de aplicativo que precisa adiar para tempo de execução os caminhos de código através da aplicação.
O Swift resolveu esse problema sendo uma linguagem de ligação estática, como o C++. Métodos em Swift são compilados em uma tabela virtual por classe, que compilador de otimização pode ver e executar sequenciamento de métodos. (é um fato amplamente aceito que a maioria das otimizações em JIT ocorrem porque métodos se tornam sequenciáveis, expondo mais otimizações "olho mágico" (peephole) que não são visíveis para a parte.) Embora o Swift não tenha nenhum run-time de otimização JIT (todas otimizações são feitas em tempo de compilação), o fato de que a linguagem Swift ser tão simples permite que o compilador gere código eficiente para métodos e funções.
Além disso, Swift permite que as estruturas sejam tratadas como objetos. Dessa forma, as estruturas ganham a eficiência de armazenamento do C, mas com o poder do C++. Em Swift, um grande array de estruturas é typesafe e armazenado de forma eficiente, o que é benéfico para tipos de dados pequenos. As classes de coleções também são genéricas, diferente do Objective-C, o que significa que seus conteúdos podem ser eficientemente armazenados.
Duas coisas que faltavam no Swift 1.x eram um padrão ABI (que permite que frameworks sejam escritos em Swift) e uma implementação open-source. Com a chegada do Swift 2.0, a Apple prometeu que o Swift será liberado sob uma licença permissiva de código aberto aprovada pela OSI, e rodará não só em iOS e OSX, mas também em Linux. Com bibliotecas padrão e compiladores disponíveis para o sistema operacional mais utilizado em servidores, é dado como certa a explosão de frameworks não-OSX. É pouco provável que a IDE do XCode seja liberada como open-source, deixando o caminho aberto para que outras IDEs cubram a nova variedade de programação Swift. Como a LLVM e o Clang são disponibilizados sob a licença BSD Clang é provável que o Swift seja liberado sob uma licença similar.
O programa de desenvolvimento Apple, que possuía requisitos diferentes para desenvolvedores OSX e iOS, foi atualizado para uma única conta de desenvolvedor, que inclui o Watch OS. Além disso, a adesão de desenvolvimento não é mais necessária no Xcode 7 para instalar um aplicativo iOS em um dispositivo, embora uma conta (gratuita) ainda seja necessária.
Updates: esse post foi atualizado para incluir uma nova palavra chave, o link do post que confirma que será liberada dentro de uma aprovada licença OSI permissiva, e atualizações para a conta de desenvolvedor da Apple. Também confirma que o XCode 7 permitirá side-loading de aplicativos iOS sem um programa de desenvolvedor.