Novo padrão Swift (iOS/macOS): o que espera os desenvolvedores
A Apple anunciou oficialmente o lançamento do Swift 6 — mais um passo significativo na evolução da linguagem de programação para os ecossistemas iOS, macOS, watchOS e tvOS. A nova versão traz mudanças fundamentais no gerenciamento de memória, concorrência e compatibilidade com C++. Vamos entender o que mudará para os desenvolvedores e como se preparar para a migração.
Principais novidades do Swift 6
- Modo rigoroso de segurança de memória (Strict Concurrency Checking) — o Swift 6 introduz a verificação obrigatória de condições de corrida em tempo de compilação. Todos os tipos não-Sendable transmitidos entre tarefas causarão erro de compilação. Isso aumenta drasticamente a estabilidade do código multithread.
- Expansão do suporte a Sendable — agora o protocolo Sendable é aplicado automaticamente à maioria dos tipos padrão (Int, String, Array, Dictionary). Os desenvolvedores precisarão marcar explicitamente suas classes personalizadas como @unchecked Sendable, se não forem value types.
- C++ Interop aprimorado — o Swift 6 permite chamar funções e classes C++ diretamente, sem wrappers em Objective-C. Isso é especialmente importante para projetos que usam código legado em C++ (por exemplo, engines de jogos ou bibliotecas de visão computacional).
- Novos recursos para iOS/macOS — novas APIs foram adicionadas para trabalhar com Core Data, SwiftUI e Combine. O desempenho do compilador foi melhorado: a compilação de grandes projetos acelerou em 15-20%.
O que isso significa para os desenvolvedores?
A migração para o Swift 6 exigirá refatoração de código, especialmente se você usa ativamente variáveis globais, singletons ou closures com captura de dados mutáveis. Aqui estão os principais passos:
- Substitua todas as classes transmitidas entre threads por structs ou adicione o marcador
@unchecked Sendable. - Use
actorpara isolar o estado mutável. O Swift 6 torna oactorobrigatório para acesso seguro a recursos compartilhados. - Verifique todos os closures passados para funções assíncronas — eles devem ser explicitamente marcados como
@Sendable. - Para projetos com código C++ — atualize os bindings: o Swift 6 converte automaticamente
std::stringemStringestd::vectoremArray.
Quando atualizar?
O Swift 6 já está disponível no Xcode 16. Recomenda-se iniciar os testes em branches secundárias, mas não force a migração de projetos em produção até o lançamento do Xcode 16.1 (previsto para o final de 2024). Para fins educacionais e novos projetos — use o Swift 6 imediatamente para se acostumar com as novas regras.
Dica do PythonLib
Se você está começando a aprender Swift, preste atenção ao módulo Concurrency — ele se tornou obrigatório para a certificação Apple. Em nosso site, preparamos uma série de lições sobre Swift 6, incluindo migração do Swift 5.9 e análise de erros relacionados ao Sendable. Fique atento às atualizações!