Programing
Swift 6.3: Suporte Oficial ao Android e o Rigor da Concorrência Estrita
Published:
•
Duration: 7:32
0:00
0:00
Transcript
Apresentadora: (Tom caloroso e animado) E aí, pessoal, bem-vindos de volta ao Allur! Eu sou a Juliana Santos e é um prazer ter vocês aqui em mais um episódio do nosso podcast sobre o que há de mais quente no mundo do desenvolvimento. Hoje, a gente vai falar sobre uma daquelas viradas de chave que mudam o rumo de uma tecnologia. Sabe aquela ideia de que o Swift é uma linguagem "presa" no jardim murado da Apple? Pois é, podem esquecer isso. O lançamento do Swift 6.3 chegou chutando a porta e trazendo o Android como um alvo oficialmente suportado. Isso mesmo, nada de experimental, agora é oficial! E pra completar o pacote, a Apple e a comunidade Swift.org decidiram que a brincadeira com concorrência acabou: agora o rigor é total pra evitar aqueles bugs chatos de memória. A gente vai entender hoje por que o Swift tá se posicionando pra bater de frente com Rust e Go, não só no mobile, mas em sistemas de alta performance.
Apresentadora: E pra mergulhar nesse assunto comigo, eu trouxe um cara que manja muito de ecossistema mobile e arquitetura. Ele é desenvolvedor sênior, já quebrou muito a cabeça com integração entre plataformas e tá acompanhando de perto essa evolução do Swift. Seja muito bem-vindo ao Allur, Ricardo Matos!
Convidado: Valeu, Juliana! É um prazer enorme estar aqui no Allur. Cara, esse tema é sensacional. Eu confesso que, como desenvolvedor que viveu a era do "ou você faz iOS ou você faz Android", ver o Swift 6.3 chegando nesse nível de maturidade pro Android me deixa bem empolgado. Tem muita coisa técnica massa pra gente destrinchar hoje!
Apresentadora: Com certeza! E Ricardo, vamos começar pelo que mais chocou a galera: o suporte oficial ao Android. Antes a gente via algumas iniciativas da comunidade, algo meio "na gambiarra", né? O que muda agora que o Android é um *target* oficial no Swift 6.3?
Convidado: Muda tudo, Juliana. Tipo assim, quando a gente fala que é "oficial", a gente tá falando de garantia de estabilidade da toolchain. Antes, você tentava compilar Swift pra Android e era uma aventura, cada versão quebrava alguma coisa. Agora, o Swift.org garante que o Android tem o mesmo status de "cidadão de primeira classe" que o Linux, por exemplo. E o ponto matador aqui é a performance. Diferente de um Flutter ou um React Native, o Swift no Android não roda em cima de uma máquina virtual pesada ou uma ponte de JavaScript. Ele compila código de máquina nativo via LLVM. A gente tá falando de performance nível C++, cara. Pra quem trabalha com processamento de imagem, criptografia ou motor de jogo, isso é um divisor de águas absurdo.
Apresentadora: Nossa, nível C++ é muita coisa! Mas aí eu te pergunto: na prática, como o desenvolvedor Android usa isso? Ele vai escrever a interface em Swift também?
Convidado: Então, essa é a pegada. A ideia aqui não é necessariamente substituir o Kotlin pra fazer a UI (a interface). O grande ganho é na lógica de negócio central, o "core" da aplicação. Imagina que você tem um algoritmo super complexo de sincronização de dados ou um motor financeiro. Em vez de escrever isso em Swift pro iOS e depois reescrever tudo em Kotlin pro Android — o que sempre gera bug de diferença de comportamento —, você escreve uma vez em Swift. O Swift 6.3 gera uma biblioteca compartilhada, um arquivo `.so`, e você chama isso via JNI, que é a Java Native Interface, de um jeito muito mais fluido agora. Você mantém a UI nativa de cada plataforma, mas o "cérebro" do app é um só, em Swift, rodando no talo da performance.
Apresentadora: Massa demais! Economiza tempo e evita aquele "telefone sem fio" entre as implementações, né? Mas ó, nem tudo são flores. O Swift 6.3 também trouxe o que eles chamam de "Concorrência Estrita Obrigatória". E pelo que eu li, o compilador ficou bem mais... digamos... ranzinza. Explica pra gente o que é esse "Rigor da Concorrência".
Convidado: (Risos) "Ranzinza" é um termo carinhoso, Juliana. O compilador agora virou um árbitro de elite. Antes, a gente escrevia código assíncrono e, tipo assim, a gente "torcia" pra não dar um *data race* — que é quando duas threads tentam mexer no mesmo dado ao mesmo tempo. E o problema do data race é que ele não avisa; o app crasha do nada na mão do usuário e você nunca consegue reproduzir no debug. No Swift 6.3, a verificação de concorrência estrita é mandatária. Ou seja, se o seu código não conseguir provar por A mais B, em tempo de compilação, que ele é seguro pra threads, ele simplesmente não compila. Acabou o "eu acho que tá seguro".
Apresentadora: Caramba, então aquele código antigo que a gente tinha, cheio de GCD e closures soltas, provavelmente vai parar de compilar de primeira?
Convidado: Com certeza! Vai dar erro pra todo lado. Mas isso é bom, juro! O Swift usa dois pilares pra resolver isso: o protocolo `Sendable` e os `Actors`. O `Sendable` é tipo um selo de segurança que diz: "esse objeto pode viajar entre threads sem perigo". E os `Actors` são como se fossem "clubes exclusivos" pros dados. Se você quer mexer no saldo de uma conta que tá dentro de um `Actor`, você tem que pedir licença usando um `await`. O Swift garante que só uma pessoa por vez mexe naquilo. É uma mudança de paradigma, né? Você sai de um modelo onde você "esperava" que fosse seguro pra um modelo onde o código é seguro por design.
Apresentadora: É aquela dorzinha necessária pra ter um sistema robusto no futuro, né? Eu imagino que pra quem tem projetos gigantes, essa migração vai ser um desafio. Tem algum caminho das pedras, Ricardo? Alguma dica pra quem tá olhando pro Swift 6.3 e ficando com medo de dar o *update*?
Convidado: O segredo é o incremental, Juliana. O Swift 6.3 traz ferramentas de diagnóstico excelentes. Minha dica é: não tenta resolver tudo de uma vez. Começa identificando as classes que guardam estado e tenta converter pra `Actors`. Usa as anotações como `@MainActor` pra garantir que as coisas de interface rodem na thread principal. É um processo de aprendizado, cara. No começo você briga com o compilador, mas depois de uma semana você fala: "Nossa, como eu vivia sem isso?". É uma paz de espírito saber que seu app não vai crashar por causa de uma race condition boba.
Apresentadora: Com certeza, o sono do desenvolvedor agradece! (Risos). E olhando pro futuro, Ricardo, você acha que o Swift agora começa a beliscar o mercado de linguagens como Go e Rust, já que ele tá saindo desse ecossistema só da Apple?
Convidado: Eu acredito muito nisso. O Swift tem uma ergonomia fantástica, ele é "gostoso" de escrever, sabe? Quase parece um script, mas com a segurança de uma linguagem de sistemas. Agora com suporte oficial ao Android e essa segurança de memória rigorosa, o Swift se posiciona como uma alternativa real pra backend de alta performance e sistemas embarcados também. Ele não é mais só a "linguagem do iPhone", ele é uma linguagem multiplataforma de respeito.
Apresentadora: É, o jogo mudou bastante! Ricardo, o papo tá sensacional, mas a gente tá chegando ao fim. Queria te agradecer muito por ter vindo aqui no Allur clarear esses conceitos pra gente. Valeu mesmo, cara!
Convidado: Eu que agradeço o convite, Juliana! Pra quem quiser se aprofundar, recomendo muito ler o blog oficial no Swift.org e dar uma olhada na documentação de migração da concorrência. Vale a pena o investimento de tempo. Valeu pessoal, até a próxima!
Apresentadora: É isso aí, pessoal! O Swift 6.3 mostra que a maturidade chegou e que as fronteiras entre as plataformas estão ficando cada vez mais finas. Se você quer performance de C++ com uma sintaxe moderna e segura, talvez seja a hora de olhar pro Swift com outros olhos, mesmo que você não seja um "apple dev".
Apresentadora: Valeu por sintonizar o Allur! Não esquece de seguir a gente nas redes sociais e compartilhar esse episódio com aquele seu amigo que ainda acha que Swift só serve pra fazer app de iPhone. Eu sou a Juliana Santos e a gente se vê no próximo episódio. Tchau!
Tags
mobile development
ios
performance
android
swift
concurrency