A Apple anunciou no WWDC 2017 que abriu o código do migrador do Swift 4 que está incluso no Xcode 9.
O migrador do Swift foi completamente reescrito para ser parte do compilador, e para suportar tanto o Swift 3 como o Swift 4. O migrador realiza esse trabalho através de uma série de passos.
- Pre-fix-it Pass: que é executado quando o compilador não consegue verificar os tipos no arquivo de entrada. Quando isso acontece, o migrador aplica todas sugestões de correções do compilador e tenta novamente por duas vezes com o objetivo de produzir uma representação de código AST (Abstract Syntax Tree);
- AST Passes: Que é realizada após o pré-fix-it pass se estiver migrando antes do Swift 4. Isso leva em conta qualquer alteração no nível da API do SDK anterior, adaptando o código para a API do novo SDK;
- Post-fix-it Pass: que tenta aplicar todas as sugestões de correções fornecidas pelo compilador no modo Swift 4. Esse passo é executado até sete vezes desde que a cada etapa novos problemas podem se tornar visíveis.
Para ambos fases pre-fix-it e post-fix-it, o migrador irá aplicar por padrão todas correções associadas à erros, enquanto correções associadas a avisos são opcionais.
Vale a pena notar que, embora a migração para o Swift 4 é encorajada, não é algo obrigatório, desde que o Swift 3.2 e 4 podem coexistir. Adicionalmente, não se deve esperar que a migração da base de código irá produzir automaticamente um projeto compilável, muito menos código correto ou idiomático. Uma série de problemas conhecidos com a migração para o Swift 4, incluindo qualquer gambiarra aplicável, estão documentados nas notas de lançamento do Xcode 9, disponível para todos desenvolvedores registrados.