Telegramning macOS mijozida yangi ochiq repozitoriy paydo boʻldi: TelegramMessenger/telegram-macos GPL-2.0 litsenziyasi ostida. Avvalgi overtake/TelegramSwift repozitoriysiga 2025-yil 29-iyuldan beri kommitlar qabul qilinmagan edi va undan dolzarb mijozni yigʻish imkonsiz edi. U bilan birga Rustda yozilgan MTProto tarmoq dvigateli ham ochildi: uning kodi alohida repozitoriyda joylashgan, eski dvigatel bilan taqqoslash va audit esa mijoz hujjatlarida keltirilgan. Telegram bu dvigatelni ham iOS, ham macOS uchun avvalgi kutubxonani almashtirishga tayyorlamoqda. Bu, avvalambor, uchinchi tomon mijozlarini ishlab chiquvchilarga va macOS beta-kanalida boʻlganlarga tegishli: beta-versiyada dvigatelni qoʻlda yoqish mumkin.
Repozitoriyda nimalar bor
Repozitoriyga havola 23-oktabr kuni UTC vaqti bilan 07:18 da mijozning beta-testchilari chatiga joylashtirildi. Repozitoriyning oʻzi 9-oktabr kuni boshqa manzil, macosswift/telegram ostida yaratilgan: u yerdan GitHub endi yangi manzilga yoʻnaltiradi va README hali ham eski manzilga ishora qiladi. «Initial commit» kommiti 20-oktabrga toʻgʻri keladi, READMEga oxirgi oʻzgartirish 22-oktabrda kiritilgan. Repozitoriyda jami 8 605 ta fayl mavjud, deyarli butun interfeys packages/ papkasidagi 156 ta Swift paketiga boʻlingan.
Telegram-Mac/Info.plistdagi yigʻish raqami — 283305. Bu 9-oktabrdagi 13.0.283305 beta-versiyasi, yaʼni ochiq kod 23-oktabr oqshomiga kelib 13.1.0.283366 ga yetgan beta-versiyadan ikki hafta orqada. 8-oktabrdan boshlab beta-versiyada HTML va JavaScriptda xabarlarni chizadigan HTMLBubbles moduli ochiq kodda mavjud emas.
Yigʻish boʻyicha koʻrsatma Xcode 16 yoki undan yangiroq versiyasini va Rust toʻplamini talab qiladi. iOS bilan umumiy kod (TelegramCore, Postbox) submodules/telegram-ios submodyuli orqali ulanadi. .gitmodulesda uning uchun GitLab manzili koʻrsatilgan, ammo 9-oktabrdagi kerakli 5bb60920e2 kommiti ommaviy Telegram-iOSda ham mavjud. Forklar uchun qoidalar avvalgidek: oʻz API IDni olish, forkni Telegram deb nomlamaslik, brend logotipini olmaslik va GPL talablariga muvofiq kodni nashr etish.
Repozitoriy AI-agentlar uchun moʻljallangan
Ildiz papkasida AGENTS.md joylashgan boʻlib, u "ushbu repozitoriyda kod yozadigan agentlar uchun" qoʻllanma hisoblanadi. Unda kod qoidalari, modullar xaritasi va beta-versiyani chiqarish tartibi tasvirlangan: yigʻish beta tarmogʻiga oʻzgarishlar yuborilganda va CFBundleVersion raqami oshirilganda boshlanadi. Koddagi izohlar, //TODOLANG kabi xizmat yorliqlaridan tashqari, taqiqlangan. CLAUDE.md AGENTS.md ga havoladan iborat bir qatordan tashkil topgan, .claude/commands papkasida esa Claude Code uchun ikkita tayyor buyruq mavjud: ekran yaratish va lokalizatsiya satrlari bilan ishlash.
Rustdagi MTProto dvigateli
MTProto — Telegram mijozlari serverlar bilan bogʻlanadigan protokol: shifrlash, sessiyalar, maʼlumotlar markazlariga ulanishlar. iOS va macOSda uni hozirgacha Objective-Cda yozilgan MtProtoKit kutubxonasi taʼminlab kelgan. Uni almashtirish uchun mtproto-engine yozilgan. Undagi birinchi kommit 2-oktabrda, oxirgisi 13-oktabrda qilingan, jami 16 ta kommit mavjud. Kod deyarli butunlay Rustda yozilgan, litsenziyasi GPL-2.0.
READMEga koʻra, dvigatel TelegramCorega NetworkEngine qatlami orqali ulanadi va ham iOS, ham macOSda ishlaydi. MtProtoKit sukut boʻyicha dvigatel boʻlib qoladi. Yangisi ishlab chiquvchilar sozlamalarida, «Network Engine» bandida tanlanadi va qayta ishga tushirilgandan soʻng ishlay boshlaydi. Ikkala dvigatel ham bir xil saqlangan holatni yozadi, shuning uchun almashtirish akkauntni tizimdan chiqarmaydi. Ommaviy Telegram-iOSda dvigatel third-party/mtproto-engine submodyuli orqali da4b217021 repozitoriysining oxirgi kommitiga ulangan.
Asosiy farq oqimlarda. MtProtoKit barcha akkauntlarning barcha sessiyalarini, barcha tahlil va barcha shifrlashni bitta umumiy navbatda bajaradi. Shuning uchun katta faylni yuklash asosiy sessiyada yangilanishlarni yetkazib berishni kechiktiradi. Yangi dvigatel ikki-toʻrtta ishchi oqimni ushlab turadi: asosiy sessiyalar birinchisiga biriktirilgan, yuklamalar va CDN qolganlariga taqsimlangan va 512 KB hajmdagi fayl qismini shifrdan chiqarish asosiy sessiyani sekinlashtirmaydi.
macOS beta-versiyasida dvigatel kod ochilishidan oldin paydo boʻlgan. «Rust (restart required)» satri 2-oktabrdagi 12.10.283246 yigʻishda mavjud. Keyingi yigʻishda «Engine switch to rust refused, the server disabled it» satri paydo boʻldi, yaʼni Telegram serveri almashtirishni taqiqlashi mumkin. Repozitoriy hujjatlari bu mexanizmni «live kill switch» deb ataydi va uning birinchi versiyasini 283247 va 283248 beta-versiyalariga tegishli deb hisoblaydi.
Oʻlchovlar nimani koʻrsatadi
Dvigatellarni taqqoslash macOS repozitoriysida, mtproto-rust-vs-mtprotokit.md faylida joylashgan. Uning yakuniy versiyasi 2-oktabrga toʻgʻri keladi. Oʻlchovlar TelegramCorening haqiqiy steki orqali tarmoq simulyatori ortidagi soxta Telegram klasteriga qarshi oʻtkazilgan, baʼzi satrlar esa haqiqiy serverlarda olingan. Bular jamoaning oʻz raqamlari, ularni hech kim mustaqil ravishda qayta tekshirmagan.
| Test | Rust | MtProtoKit |
|---|---|---|
| Katta fayl, kechikish 100 ms, 200 Mbit/s | 22,3 MB/s | 6,7 MB/s |
| CDN orqali katta fayl, xuddi shu tarmoq | 13,7 MB/s | 6,8 MB/s |
| Tarmoq uzilganda 6 s davomida odatiy javob kutish | 72 ms | 4,3 s |
| Uzilish tugagandan soʻng birinchi javob | 0,07 s | 1,11 s |
| 10 000 ta kichik soʻrov, protsessor vaqti | 0,20 s | 1,05 s |
47 ta ssenariydan iborat alohida toʻplam axlat yuboradigan, javoblarni takrorlaydigan va ulanishlarni uzadigan dushman serverga qarshi dvigatellarni tekshiradi. Rust barcha 47 tasidan oʻtdi va birorta ham soʻrovni ikki marta bajarmadi. MtProtoKit 18 tasini toza yakunladi. 11 ta ssenariyda u qotib qoldi, ikkitasida protsessorga yuklama bilan cheksiz siklga kirdi, 24 tasida esa soʻrovlarni takroran, jami 49 395 marta bajardi.
Audit va hamyon
docs/security-audit papkasida 2-oktabrdagi macOS tarmoq steki auditi hisoboti joylashgan. Unga koʻra, MtProtoKit ilovada hali ham har bir avtorizatsiya kalit almashinuvini bajaradi, yangi dvigatel esa generate_key = 0 parametri bilan ishlaydi, yaʼni kalitlarni oʻzi yaratmaydi. Hisobot MtProtoKitdagi ikkita yuqori ahamiyatga ega zaiflikni tasvirlaydi, ular iOS uchun Telegram bilan umumiy: serverning haqiqiyligi tekshirilmasdan oldin mijozning ishdan chiqishi va qotib qolishi. Xuddi shu kuni ommaviy Telegram-iOSga MtProtoKit kalit almashinuvini tuzatish bilan c371b688c7 kommiti kiritildi.
Macdagi TON hamyoni ham Rustga asoslangan. packages/Walletdan hamyonning qoʻlda portlangan versiyasi olib tashlangan va macOS telegram-iosdan hamyonning umumiy kodini va Apache-2.0 litsenziyasi ostidagi Rustda yozilgan wallet-engine kutubxonasini oladi. U UniFFI bogʻlanish generatori orqali ulanadi va uning xizmat satrlari macOS beta-versiyasida 25-sentabrdagi 12.10.283234 yigʻishda allaqachon mavjud.
Xuddi shu TelegramMessenger tashkilotida 11-oktabr kuni QuickJS-ng JavaScript dvigatelining forki paydo boʻldi. Undagi kommitlar mtproto-enginedagi kabi macosswift akkaunti nomidan qilingan. Ular interpretator va xotira taqsimotini tezlashtiradi. Fork qayerda ishlatilishi ochiq kodda hozircha koʻrsatilmagan.




