Klien Telegram untuk macOS kini memiliki repositori terbuka baru: TelegramMessenger/telegram-macos di bawah lisensi GPL-2.0. Repositori sebelumnya, overtake/TelegramSwift, belum menerima commit sejak 29 Juli 2025, sehingga tidak mungkin lagi untuk membangun klien yang mutakhir darinya. Bersamaan dengan itu, engine jaringan MTProto yang ditulis dalam Rust juga telah dibuka: kodenya berada di repositori terpisah, dan perbandingan dengan engine lama serta auditnya tersedia dalam dokumentasi klien. Telegram sedang menyiapkan engine ini untuk menggantikan pustaka sebelumnya, baik untuk iOS maupun macOS. Ini terutama relevan bagi pengembang klien pihak ketiga dan mereka yang berada di saluran beta macOS: di versi beta, engine ini sudah dapat diaktifkan secara manual.
Apa yang Ada di Repositori
Tautan ke repositori diposting di chat penguji beta klien pada 23 Oktober pukul 07:18 UTC. Repositori itu sendiri dibuat pada 9 Oktober di alamat lain, macosswift/telegram: dari sana, GitHub sekarang mengarahkan ke yang baru, dan README masih merujuk ke alamat lama. Commit "Initial commit" bertanggal 20 Oktober, dan perubahan terakhir pada README dilakukan pada 22 Oktober. Total ada 8.605 file di repositori, dengan hampir seluruh antarmuka diatur dalam 156 paket Swift di folder packages/.
Nomor build di Telegram-Mac/Info.plist adalah 283305. Ini adalah beta 13.0.283305 dari 9 Oktober, yang berarti kode terbuka tertinggal dua minggu dari versi beta, yang pada malam 23 Oktober telah mencapai 13.1.0.283366. Modul HTMLBubbles, yang sejak 8 Oktober menggambar pesan HTML dan JavaScript di versi beta, tidak ada dalam kode terbuka.
Instruksi build memerlukan Xcode 16 atau yang lebih baru dan Rust toolchain. Kode yang sama dengan iOS (TelegramCore, Postbox) dihubungkan sebagai submodule submodules/telegram-ios. Dalam .gitmodules, alamat GitLab ditentukan untuknya, tetapi commit yang diperlukan 5bb60920e2 dari 9 Oktober juga ada di Telegram-iOS publik. Aturan untuk fork tetap sama: dapatkan API ID Anda sendiri, jangan menamai fork "Telegram", jangan menggunakan logo merek dagang, dan publikasikan kode sesuai persyaratan GPL.
Repositori Dirancang untuk AI Coding Agents
Di root terdapat AGENTS.md, panduan "untuk agen yang menulis kode di repositori ini". Ini menjelaskan aturan kode, peta modul, dan urutan rilis beta: build dimulai ketika perubahan dikirim ke branch beta dan nomor CFBundleVersion ditingkatkan. Komentar dalam kode dilarang, kecuali untuk label layanan seperti //TODOLANG. CLAUDE.md terdiri dari satu baris dengan tautan ke AGENTS.md, dan di folder .claude/commands terdapat dua perintah siap pakai untuk Claude Code: membuat layar dan bekerja dengan string lokalisasi.
Engine MTProto Berbasis Rust
MTProto adalah protokol yang digunakan klien Telegram untuk berkomunikasi dengan server: enkripsi, sesi, koneksi ke pusat data. Di iOS dan macOS, ini masih dilayani oleh MtProtoKit, pustaka berbasis Objective-C. Untuk menggantikannya, mtproto-engine telah ditulis. Commit pertama dibuat pada 2 Oktober, yang terakhir pada 13 Oktober, dengan total 16 commit. Kode ini hampir seluruhnya dalam Rust, dengan lisensi GPL-2.0.
Menurut README, engine ini terhubung ke TelegramCore melalui lapisan NetworkEngine dan berfungsi di iOS maupun macOS. MtProtoKit tetap menjadi engine default. Yang baru dipilih di pengaturan developer, di item "Network Engine", dan mulai berfungsi setelah restart. Kedua engine menulis status tersimpan yang sama, sehingga pergantian tidak akan membuat akun logout. Di Telegram-iOS publik, engine ini terhubung sebagai submodule third-party/mtproto-engine ke commit terakhir repositori da4b217021.
Perbedaan utamanya terletak pada thread. MtProtoKit menjalankan semua sesi dari semua akun, semua parsing, dan semua enkripsi dalam satu antrean umum. Oleh karena itu, mengunduh file besar menunda pengiriman pembaruan di sesi utama. Engine baru mempertahankan dua hingga empat thread pekerja: sesi utama ditetapkan ke yang pertama, unduhan dan CDN didistribusikan ke yang lain, dan dekripsi bagian file 512 KB tidak memperlambat sesi utama.
Di beta macOS, engine muncul sebelum kode dibuka. String "Rust (restart required)" ada di build 12.10.283246 dari 2 Oktober. Di build berikutnya, muncul string "Engine switch to rust refused, the server disabled it", yang berarti server Telegram dapat melarang pergantian. Dokumentasi repositori menyebut mekanisme ini "live kill switch" dan menempatkan versi pertamanya pada beta 283247 dan 283248.
Hasil Pengukuran
Perbandingan engine terletak di repositori macOS, dalam file mtproto-rust-vs-mtprotokit.md. Versi finalnya bertanggal 2 Oktober. Pengukuran dijalankan melalui stack TelegramCore asli terhadap kluster Telegram palsu di belakang simulator jaringan, dan beberapa baris diambil di server nyata. Ini adalah angka internal tim, belum diverifikasi secara independen oleh pihak lain.
| Tes | Rust | MtProtoKit |
|---|---|---|
| File besar, latensi 100 ms, 200 Mbit/s | 22,3 MB/s | 6,7 MB/s |
| File besar melalui CDN, jaringan yang sama | 13,7 MB/s | 6,8 MB/s |
| Waktu respons normal saat jaringan terputus selama 6 detik | 72 ms | 4,3 detik |
| Respons pertama setelah putus koneksi berakhir | 0,07 detik | 1,11 detik |
| 10.000 permintaan kecil, waktu CPU | 0,20 detik | 1,05 detik |
Satu set terpisah dari 47 skenario menguji engine terhadap server hostile yang mengirimkan sampah, mengulang respons, dan memutuskan koneksi. Rust melewati semua 47 skenario dan tidak pernah menjalankan permintaan dua kali. MtProtoKit berhasil menyelesaikan 18 skenario dengan bersih. Dalam 11 skenario, ia macet, dalam dua skenario ia masuk ke loop tak terbatas dengan beban CPU, dan dalam 24 skenario ia menjalankan permintaan berulang kali, total 49.395 kali.
Audit dan Wallet
Di folder docs/security-audit terdapat laporan audit stack jaringan macOS dari 2 Oktober. Menurut laporan tersebut, di aplikasi MtProtoKit masih melakukan setiap pertukaran kunci otorisasi, sedangkan engine baru bekerja dengan parameter generate_key = 0, yang berarti tidak membuat kunci sendiri. Laporan tersebut menjelaskan dua kerentanan tingkat tinggi di MtProtoKit, yang umum dengan Telegram untuk iOS: crash dan hang klien sebelum keaslian server diverifikasi. Pada hari yang sama, commit c371b688c7 dengan perbaikan pertukaran kunci MtProtoKit masuk ke Telegram-iOS publik.
Wallet TON di Mac juga didasarkan pada Rust. Port manual wallet dari packages/Wallet telah dihapus, dan macOS mengambil kode wallet umum serta pustaka wallet-engine berbasis Rust di bawah lisensi Apache-2.0 dari telegram-ios. Ini terhubung melalui generator binding UniFFI, dan string layanannya sudah ada di beta macOS di build 12.10.283234 dari 25 September.
Di organisasi TelegramMessenger yang sama, pada 11 Oktober muncul fork dari engine JavaScript QuickJS-ng. Commit di dalamnya dibuat atas nama akun macosswift yang sama dengan di mtproto-engine. Commit ini mempercepat interpreter dan alokasi memori. Kode terbuka belum menunjukkan di mana fork ini digunakan.




