O Swift 6.4 foi lançado com Subprocess 1.0 estável, código WebAssembly até 40 vezes mais rápido, interoperabilidade ampliada com C++20 e Java e novos tipos não copiáveis que reduzem cópias e alocações em operações com arrays. A atualização também torna o Swift Build a toolchain padrão em todas as plataformas suportadas.
- O pacote Subprocess chega à versão 1.0 com API multiplataforma para lançar e interagir com processos externos
- A ponte Wasm via JavaScriptKit ficou até 40 vezes mais rápida que a ponte dinâmica anterior
- Novos tipos UniqueArray, UniqueBox, Ref/MutableRef e o protocolo Iterable reduzem cópias e alocações
- O Proposta SE-: defer com async (github.com) agora aceita await diretamente e o withTaskCancellationShield protege tarefas do cancelamento
- Swift 6.4 faz ponte transparente entre std::span do C++20 e o Span do Swift e amplia a interoperabilidade com Java
O que muda no Swift 6.4
O Swift 6.4 é a nova versão da linguagem mantida pelo projeto Swift, com melhorias de sintaxe, desempenho e ferramentas. Segundo o anúncio oficial, a release amplia o suporte a valores não copiáveis, acelera em até 40 vezes o código gerado para WebAssembly e melhora a interoperabilidade com C++20 e Java.
Na sintaxe, agora é possível escrever AType? em vez de (some AType)? ou (any AType)?. A versão também traz o atributo @diagnose para controlar diagnósticos e avisos do compilador, e permite desambiguar símbolos com nomes idênticos importados de módulos diferentes usando a notação AModuleName::.
Em código concorrente, a instrução defer passou a suportar o await diretamente, eliminando a necessidade de encapsular chamadas assíncronas em uma Task separada. O novo withTaskCancellationShield protege temporariamente uma tarefa do cancelamento, permitindo que código crítico de limpeza termine mesmo após o cancelamento.
O especialista em Swift Concurrency Antoine van der Lee resume o valor prático da atualização:
# publicidade
Menos cópias e alocações com novos tipos
Swift 6.4 reduz cópias desnecessárias em operações comuns com arrays por meio de novos tipos e protocolos de empréstimo. Mas o que cada um faz na prática?
O protocolo Iterable permite iterar sobre elementos com semântica de empréstimo, sem cópias. Outras mudanças incluem os tipos Ref e MutableRef, contêineres armazenáveis para emprestar ou mutar valores individuais; os acessadores borrow e mutate, que leem ou modificam um Span ou InlineArray via propriedade; e suporte para tipos não copiáveis conformarem a Equatable, Comparable e Hashable.
Ferramentas, subprocess 1.0 e interoperabilidade
No front de IDE, o Swift 6.4 traz suporte de depuração mais robusto ao trabalhar com módulos e unifica a toolchain de build entre todas as plataformas suportadas, com o Swift Build como padrão. O pacote Subprocess atingiu a versão 1.0 estável, com API multiplataforma para lançar e interagir com subprocessos externos.
A depuração é um ponto sensível para a comunidade. O usuário boxed, em discussão no Hacker News, expressou um sentimento compartilhado por muitos desenvolvedores: a esperança de que as melhorias do depurador sejam perceptíveis, dada a frequência com que variáveis ficam invisíveis durante a inspeção.
A interoperabilidade também avançou. Os novos atributos @c e @implementation permitem implementar em Swift o conteúdo de um header C, sem declaração separada. O Swift 6.4 faz ponte transparente entre std::span do C++20 e o Span do Swift, estende a interoperabilidade com Java e acelera a ponte Wasm via JavaScriptKit em até 40 vezes em relação à ponte dinâmica.
Por que isso importa para o desenvolvedor brasileiro? Times que mantêm apps iOS e backends em linguagens mistas tendem a colher ganhos imediatos: menos código cola entre C, C++ e Java, builds unificados e chamadas de processo externas sem gambiarras de plataforma.
| Recurso | O que mudou no Swift 6.4 |
|---|---|
| Subprocess 1.0 | API multiplataforma estável para lançar e interagir com processos externos |
| WebAssembly | Ponte via JavaScriptKit até 40 vezes mais rápida que a dinâmica |
| Interoperabilidade | std::span do C++20 com Span do Swift; ampliação do suporte a Java; atributos @c e @implementation |
| Concorrência | await direto no defer e withTaskCancellationShield |
| Tipos não copiáveis | UniqueArray, UniqueBox, Ref/MutableRef, Iterable e acessadores borrow/mutate |
| Toolchain | Swift Build como build padrão em todas as plataformas suportadas |
Arraste para o lado para ver toda a tabela.
Na avaliação do Mercado de TI, o Swift 6.4 é menos uma mudança de paradigma e mais uma remoção sistemática de atritos, exatamente o que a adoção da concorrência estrita do Swift 6 exigia. O próximo passo para quem trabalha com a linguagem é testar a migração dos módulos com o Swift Build e medir o impacto do depurador aprimorado em projetos reais.
Leia também:
Fonte: Infoq