- Expande a linguagem, a biblioteca padrão, o sistema de build e o suporte a plataformas como um todo, melhorando a experiência do desenvolvedor
- As principais mudanças incluem interoperabilidade com C aprimorada, adição do SDK oficial para Android, melhorias para ambientes embarcados e expansão da ferramenta de documentação DocC
- O Swift Package Manager aumenta a consistência de builds multiplataforma por meio de um motor de build unificado e de suporte a Swift Syntax pré-compilado
- O Swift Testing adiciona novos recursos, como registro de problemas em nível de aviso, cancelamento de testes e anexos de imagem, reforçando a flexibilidade dos testes
- Com o lançamento oficial do SDK para Android, a área de desenvolvimento multiplataforma do Swift se expande, tornando possível a integração com apps Kotlin/Java
Principais atualizações do Swift 6.3
- O Swift 6.3 oferece funcionalidades expandidas em linguagem, biblioteca padrão, sistema de build e suporte a plataformas
- Interoperabilidade com C aprimorada, adição do SDK oficial para Android, melhorias para ambientes embarcados e expansão da ferramenta de documentação DocC são as mudanças centrais
- O objetivo é melhorar a experiência do desenvolvedor e a integração do desenvolvimento multiplataforma
Linguagem e biblioteca padrão
-
Interoperabilidade com C
- O novo atributo
@c permite expor funções ou enums em Swift para código C
- É possível definir um nome de declaração em C personalizado no formato
@c(MyLibrary_callFromC)
- Ao usar
@c junto com @implementation, é possível implementar em Swift funções declaradas em headers C
- Nessa combinação, o Swift valida se há correspondência com a declaração C existente
-
Seletores de nome de módulo (Module Name Selectors)
- Ao importar APIs com o mesmo nome de vários módulos, é possível fazer chamadas com o módulo explicitado no formato
ModuleA::getValue()
- A sintaxe
Swift::Task permite acessar APIs de concorrência (concurrency) e de processamento de strings
-
Controle de desempenho de APIs de biblioteca
- @specialize: fornece implementação previamente especializada para tipos específicos em APIs genéricas
- @inline(always): força o inlining, expandindo o corpo da função no ponto de chamada
- @export(implementation): expõe a implementação da função em bibliotecas com ABI estável para permitir otimizações adicionais
- As propostas relacionadas podem ser consultadas no painel Swift Evolution
Melhorias em pacotes e build
- O Swift Package Manager inclui uma prévia de integração do Swift Build, oferecendo uma experiência de build consistente em todas as plataformas
- A consistência do desenvolvimento multiplataforma é reforçada por meio de um motor de build unificado
- Os usuários podem testar diretamente em seus pacotes e relatar problemas
- Principais melhorias do SwiftPM 6.3
- Suporte a Prebuilt Swift Syntax: bibliotecas dedicadas a macros podem usar binários swift-syntax pré-compilados
- Controle flexível de herança de documentação: plugins imperativos que geram grafos de símbolos podem controlar se incluem ou não documentação herdada
- Recurso de exploração de traits do pacote: o comando
swift package show-traits permite verificar os traits suportados pelo pacote
- Mais detalhes estão incluídos nas notas de versão do SwiftPM 6.3
Atualizações das bibliotecas centrais
-
Swift Testing
- Registro de problemas em nível de aviso: com
Issue.record(..., severity: .warning), exibe apenas um aviso sem falha no teste
- Recurso de cancelamento de testes: com
try Test.cancel(), é possível interromper o teste em execução e subtarefas
- Suporte a anexos de imagem: permite anexar imagens durante testes nas plataformas Apple e Windows
- Propostas relacionadas: ST-0012, ST-0013, ST-0014, ST-0015, ST-0016, ST-0017, ST-0020
-
DocC
- Suporte a saída em Markdown: gera documentação em Markdown com a opção
--enable-experimental-markdown-output
- Conteúdo HTML estático por página: inserção de HTML de resumo em `` para melhorar SEO e acessibilidade
- Expansão de anotações em blocos de código: adiciona novas opções de formatação como
nocopy, highlight, showLineNumbers e wrap
- Pode ser ativado com a opção
--enable-experimental-code-block-annotations
Plataformas e ambientes
-
Embedded Swift
- Inclui várias melhorias, como interoperabilidade com C aprimorada, melhorias de depuração e avanços na finalização do modelo de linkage
- Os detalhes podem ser vistos no blog “Embedded Swift Improvements coming in Swift 6.3”
-
Android
- Primeiro lançamento do SDK oficial do Swift para Android
- Permite desenvolver apps Android nativos em Swift e dar suporte a builds Android de pacotes Swift
- A integração com apps Kotlin/Java é possível por meio de Swift Java e Swift Java JNI Core
- É considerado um marco importante para a expansão do desenvolvimento multiplataforma do Swift
- O guia inicial está disponível no documento “Getting Started with the Swift SDK for Android”
Próximos passos
- O toolchain do Swift 6.3 pode ser instalado pela página Install Swift
- Os desenvolvedores já podem experimentar os novos recursos e enviar feedback
1 comentários
Comentários no Hacker News
Fico feliz em ver um lançamento tão ótimo saindo em Swift
Não uso desde o v3, mas por volta de 2015~17 o Swift poderia até ter substituído o Python
Porque era simples, rápido e se encaixava bem no ecossistema de C/C++. Na época em que a IBM impulsionava o lado de servidor, parecia realmente possível
Mas a Apple não conseguiu atrair a comunidade o suficiente, e no fim o Swift acabou ficando como uma linguagem só da Apple. Agora a complexidade também subiu para o nível de C++
Gosto de Swift, mas fora do ecossistema da Apple ainda parece que ele não passou da massa crítica. No fim, migrei para TypeScript no ano passado
Acima de tudo, acho que quase ninguém quer colocar voluntariamente um gatekeeper chamado Apple na stack
Projeto TensorFlow Swift
O CircuitPython também era útil para prototipagem embarcada. O Swift não conseguiu ocupar bem esse espaço
Além disso, o Swift só chegou ao Linux em 2016, ao Windows em 2020, e ao FreeBSD apenas em 2025
Em meados dos anos 2010 surgiram várias linguagens novas como Go, Julia, Rust, TypeScript e Solidity, e todo mundo só tinha fôlego para aprender uma ou duas
Eu queria que o Swift se tornasse uma linguagem para a stack inteira, mas a realidade não foi essa
Parece que a Apple desperdiçou a oportunidade
Por exemplo, o ClearSurgery é todo escrito em Swift, até os componentes em tempo real no Linux
Na semana passada, portei o sistema operacional xv6-riscv para Zig, Nim, LISP e Swift
Graças aos avanços do Embedded Swift, ele pareceu uma linguagem de alta produtividade. As abstrações que encapsulam acesso à memória também eram elegantes
Mas a velocidade de compilação era tão lenta que acabei focando em Nim
É uma pena que não tenham mencionado a melhoria na velocidade de compilação do Swift
Compilar mais devagar que Rust prejudica muito a experiência de desenvolvimento
Se você está acostumado aos builds rápidos do Go, o Swift realmente torna o desenvolvimento iterativo um sofrimento. A linguagem em si é excelente, mas o ciclo de feedback é lento demais
O Swift 6.3 incluiu pela primeira vez um SDK oficial para Android
Para Windows há um post no blog de 5 anos atrás,
e para Linux há um guia para GNOME
Seria bom se, como no antigo OpenSTEP, desse para desenvolver uma vez e distribuir para várias plataformas
As melhorias nos tipos noncopyable são a parte mais subestimada deste lançamento
Agora ficou muito mais realista modelar propriedade única no Swift
O atributo
@cdo Swift 6.3 agora permite expor funções Swift para código CMas fico me perguntando por que isso foi adicionado tão tarde. Colocar interoperabilidade com C++ antes disso parece uma prioridade estranha
Já exportar Swift para C tende a criar um espaguete de FFI, e é fácil surgir bug de ABI com enum, ownership e tratamento de null
Especialmente quando entram closures no meio, a calling convention pode desencontrar e você pode perder um dia inteiro depurando
Antigamente, quando eu criava uma dylib em Swift para programas em C, precisava usar
@cdecl, então fico feliz em ver suporte oficial agoraAs mudanças reais, além do marketing, podem ser vistas no CHANGELOG e na
lista de propostas do Swift Evolution
O 6.3 foi principalmente um lançamento focado em trabalho de integração — stdlib, interoperabilidade com C/C++, swift-java, sistema de build etc.
O SPM está absorvendo aos poucos as funções do Xcode, e o novo engine
swift-builde os módulos prebuilt também estão em fase experimentalMas a interação entre SPM e Xcode ainda é instável, e a complexidade interna está aumentando
O progresso da linguagem em si é discreto, mas estão em andamento trabalhos estruturais profundos como controle de tempo de vida e colorização de concorrência
Como há vários SOs, dispositivos e ambientes de CI entrelaçados, os desenvolvedores Swift estão sempre em uma situação de equilibrar-se em meio às mudanças
swift-builddeve se tornar o padrãoSegundo um post no fórum oficial,
o Xcode já o usa internamente, mas os problemas de performance são graves
Há também uma discussão relacionada.
Se SPM e Xcode passarem a usar o mesmo engine, talvez isso melhore, mas não tenho grandes expectativas
Fico curioso sobre como está a toolchain nas versões mais recentes do Swift. Queria saber se Swift Lint e Swift Format são suportados
Uma linguagem moderna deveria ter formatador embutido e regras de lint recomendadas. Não é só a linguagem, o ecossistema como um todo importa
swift formateswift format lintdiretamente, sem dependências externas