O cliente Telegram para macOS ganhou um novo repositório aberto: TelegramMessenger/telegram-macos sob a licença GPL-2.0. O repositório anterior overtake/TelegramSwift não recebia commits desde 29 de julho de 2025, tornando impossível compilar um cliente atualizado a partir dele. Junto com ele, foi aberto o motor de rede MTProto, escrito em Rust: seu código está em um repositório separado, e uma comparação com o motor antigo e uma auditoria estão na documentação do cliente. Este motor está sendo preparado pelo Telegram para substituir a biblioteca anterior, tanto para iOS quanto para macOS. Isso diz respeito principalmente aos desenvolvedores de clientes de terceiros e àqueles que estão no canal beta do macOS: na versão beta, o motor já pode ser ativado manualmente.
O que está no repositório
O link para o repositório foi publicado no chat dos beta-testers do cliente em 23 de outubro, às 07:18 UTC. O repositório em si foi criado em 9 de outubro sob outro endereço, macosswift/telegram: de lá, o GitHub agora redireciona para o novo, e o README ainda faz referência ao endereço antigo. O commit «Initial commit» é datado de 20 de outubro, e a última alteração no README foi feita em 22 de outubro. No total, o repositório contém 8.605 arquivos, com quase toda a interface organizada em 156 pacotes Swift na pasta packages/.
O número da build em Telegram-Mac/Info.plist é 283305. Esta é a beta 13.0.283305 de 9 de outubro, o que significa que o código aberto está duas semanas atrasado em relação à beta, que até a noite de 23 de outubro chegou à versão 13.1.0.283366. O módulo HTMLBubbles, que desde 8 de outubro renderiza mensagens em HTML e JavaScript na beta, não está presente no código aberto.
As instruções de build exigem Xcode 16 ou mais recente e o conjunto de ferramentas Rust. O código compartilhado com iOS (TelegramCore, Postbox) é conectado como um submódulo submodules/telegram-ios. Em .gitmodules, o endereço para ele aponta para o GitLab, mas o commit necessário 5bb60920e2 de 9 de outubro também está no Telegram-iOS público. As regras para forks permanecem as mesmas: obter seu próprio API ID, não nomear o fork de Telegram, não usar o logotipo da marca e publicar o código conforme exigido pela GPL.
Repositório projetado para agentes de IA
Na raiz, encontra-se AGENTS.md, um guia "para agentes que escrevem código neste repositório". Ele descreve as regras de código, o mapa de módulos e o processo de lançamento da beta: a build começa quando as alterações são enviadas para o branch beta e o número CFBundleVersion é incrementado. Comentários no código são proibidos, exceto por tags de serviço como //TODOLANG. CLAUDE.md consiste em uma única linha com um link para AGENTS.md, e na pasta .claude/commands estão dois comandos prontos para Claude Code: criação de tela e trabalho com strings de localização.
Motor MTProto em Rust
MTProto é o protocolo pelo qual os clientes Telegram se comunicam com os servidores: criptografia, sessões, conexões com data centers. No iOS e macOS, ele ainda é atendido pelo MtProtoKit, uma biblioteca em Objective-C. Para substituí-la, foi escrito o mtproto-engine. O primeiro commit nele foi feito em 2 de outubro, o último em 13 de outubro, totalizando 16 commits. O código é quase inteiramente em Rust, sob licença GPL-2.0.
De acordo com o README, o motor se conecta ao TelegramCore através de uma camada NetworkEngine e funciona tanto no iOS quanto no macOS. O MtProtoKit permanece como o motor padrão. O novo é selecionado nas configurações de desenvolvedor, no item «Network Engine», e começa a funcionar após a reinicialização. Ambos os motores escrevem o mesmo estado salvo, então a troca não desloga a conta. No Telegram-iOS público, o motor está conectado como um submódulo third-party/mtproto-engine no último commit do repositório da4b217021.
A principal diferença está nos threads. O MtProtoKit executa todas as sessões de todas as contas, toda a análise e toda a criptografia em uma única fila comum. Portanto, o download de um arquivo grande atrasa a entrega de atualizações na sessão principal. O novo motor mantém de dois a quatro threads de trabalho: as sessões principais são atribuídas ao primeiro, downloads e CDN são distribuídos pelos demais, e a descriptografia de uma parte do arquivo de 512 KB não atrasa a sessão principal.
Na beta do macOS, o motor apareceu antes que o código fosse aberto. A string «Rust (restart required)» está presente na build 12.10.283246 de 2 de outubro. Na build seguinte, apareceu a string «Engine switch to rust refused, the server disabled it», o que significa que o servidor Telegram pode proibir a troca. A documentação do repositório chama esse mecanismo de «live kill switch» e atribui sua primeira versão às betas 283247 e 283248.
O que as medições mostram
A comparação dos motores está no repositório do macOS, no arquivo mtproto-rust-vs-mtprotokit.md. Sua versão final é datada de 2 de outubro. As medições foram executadas através da pilha real do TelegramCore contra um cluster Telegram falso atrás de um simulador de rede, e algumas linhas foram coletadas em servidores reais. Estes são os números da própria equipe, não verificados independentemente por ninguém.
| Teste | Rust | MtProtoKit |
|---|---|---|
| Arquivo grande, latência 100 ms, 200 Mbit/s | 22,3 MB/s | 6,7 MB/s |
| Arquivo grande via CDN, mesma rede | 13,7 MB/s | 6,8 MB/s |
| Espera normal por resposta em interrupção de rede de 6 s | 72 ms | 4,3 s |
| Primeira resposta após o fim da interrupção | 0,07 s | 1,11 s |
| 10.000 pequenas requisições, tempo de CPU | 0,20 s | 1,05 s |
Um conjunto separado de 47 cenários testa os motores contra um servidor hostil que envia lixo, repete respostas e rompe conexões. O Rust passou por todos os 47 e nunca executou uma requisição duas vezes. O MtProtoKit terminou limpo em 18. Em 11 cenários, ele travou, em dois entrou em um loop infinito com carga de CPU, e em 24 executou requisições repetidamente, totalizando 49.395 vezes.
Auditoria e carteira
Na pasta docs/security-audit, encontra-se o relatório de auditoria da pilha de rede do macOS de 2 de outubro. Segundo ele, no aplicativo, o MtProtoKit ainda executa cada troca de chaves de autorização, e o novo motor funciona com o parâmetro generate_key = 0, ou seja, não cria chaves por si só. O relatório descreve duas vulnerabilidades de alta gravidade no MtProtoKit, comuns ao Telegram para iOS: falha e travamento do cliente antes que a autenticidade do servidor seja verificada. No mesmo dia, o commit c371b688c7 com a correção da troca de chaves do MtProtoKit foi incluído no Telegram-iOS público.
A carteira TON no Mac também é baseada em Rust. A porta manual da carteira de packages/Wallet foi removida, e o macOS usa o código comum da carteira e a biblioteca wallet-engine em Rust sob licença Apache-2.0 de telegram-ios. Ela é conectada através do gerador de bindings UniFFI, e suas strings de serviço já estão na beta do macOS na build 12.10.283234 de 25 de setembro.
Na mesma organização TelegramMessenger, em 11 de outubro, apareceu um fork do motor JavaScript QuickJS-ng. Os commits nele foram feitos em nome da mesma conta macosswift, que também está no mtproto-engine. Eles aceleram o interpretador e a alocação de memória. Onde o fork é usado, o código aberto ainda não mostra.




