macOS के लिए Telegram क्लाइंट को एक नया ओपन रिपॉजिटरी मिला है: TelegramMessenger/telegram-macos, जो GPL-2.0 लाइसेंस के तहत है। पिछला रिपॉजिटरी overtake/TelegramSwift 29 जुलाई 2025 से कोई कमिट प्राप्त नहीं कर रहा था, और उससे एक अद्यतन क्लाइंट बनाना संभव नहीं था। इसके साथ ही, Rust में लिखा गया MTProto नेटवर्क इंजन भी खोला गया है: इसका कोड एक अलग रिपॉजिटरी में है, और पुराने इंजन के साथ इसकी तुलना और ऑडिट क्लाइंट के डॉक्यूमेंटेशन में है। Telegram इस इंजन को iOS और macOS दोनों के लिए पुरानी लाइब्रेरी के प्रतिस्थापन के रूप में तैयार कर रहा है। यह मुख्य रूप से थर्ड-पार्टी क्लाइंट डेवलपर्स और macOS बीटा चैनल पर मौजूद लोगों के लिए प्रासंगिक है: बीटा पर इंजन को मैन्युअल रूप से चालू किया जा सकता है।
रिपॉजिटरी में क्या है
रिपॉजिटरी का लिंक 23 अक्टूबर को 07:18 UTC पर क्लाइंट के बीटा-टेस्टर्स चैट में पोस्ट किया गया था। रिपॉजिटरी खुद 9 अक्टूबर को एक अलग पते, macosswift/telegram, के तहत बनाया गया था: GitHub अब वहां से नए पर रीडायरेक्ट करता है, और README अभी भी पुराने पते का संदर्भ देता है। "Initial commit" नामक कमिट 20 अक्टूबर का है, README में अंतिम संशोधन 22 अक्टूबर को किया गया था। रिपॉजिटरी में कुल 8,605 फाइलें हैं, लगभग पूरा इंटरफ़ेस packages/ फोल्डर में 156 Swift पैकेजों में व्यवस्थित है।
Telegram-Mac/Info.plist में बिल्ड नंबर 283305 है। यह 9 अक्टूबर का बीटा 13.0.283305 है, जिसका अर्थ है कि ओपन कोड बीटा से दो सप्ताह पीछे है, जो 23 अक्टूबर की शाम तक 13.1.0.283366 तक पहुंच गया था। HTMLBubbles मॉड्यूल, जो 8 अक्टूबर से बीटा में HTML और JavaScript पर संदेश प्रदर्शित करता है, ओपन कोड में मौजूद नहीं है।
बिल्ड निर्देश के लिए Xcode 16 या नया और Rust टूलसेट की आवश्यकता है। iOS के साथ साझा कोड (TelegramCore, Postbox) को submodules/telegram-ios सबमॉड्यूल के रूप में जोड़ा गया है। .gitmodules में इसके लिए GitLab का पता दिया गया है, लेकिन आवश्यक कमिट 5bb60920e2 9 अक्टूबर का है और सार्वजनिक Telegram-iOS में भी मौजूद है। फोर्क के लिए नियम वही हैं: अपना API ID प्राप्त करें, फोर्क को Telegram न कहें, ब्रांडेड लोगो का उपयोग न करें और GPL के अनुसार कोड प्रकाशित करें।
रिपॉजिटरी AI एजेंटों के लिए डिज़ाइन किया गया है
रूट में AGENTS.md है, जो "इस रिपॉजिटरी में कोड लिखने वाले एजेंटों के लिए" एक गाइड है। इसमें कोड नियम, मॉड्यूल मैप और बीटा रिलीज़ प्रक्रिया का वर्णन है: बिल्ड तब शुरू होता है जब beta ब्रांच में बदलाव भेजे जाते हैं और CFBundleVersion नंबर बढ़ाया जाता है। कोड में टिप्पणियां निषिद्ध हैं, सिवाय //TODOLANG जैसे सेवा टैग के। CLAUDE.md में AGENTS.md के लिंक वाली एक पंक्ति है, और .claude/commands फोल्डर में Claude Code के लिए दो तैयार कमांड हैं: एक स्क्रीन बनाना और लोकलाइज़ेशन स्ट्रिंग्स के साथ काम करना।
Rust में MTProto इंजन
MTProto वह प्रोटोकॉल है जिसके माध्यम से Telegram क्लाइंट सर्वर से जुड़ते हैं: एन्क्रिप्शन, सेशन, डेटा-सेंटर कनेक्शन। iOS और macOS में इसे अभी भी MtProtoKit, एक Objective-C लाइब्रेरी द्वारा प्रबंधित किया जाता है। इसके प्रतिस्थापन के रूप में mtproto-engine लिखा गया है। इसमें पहला कमिट 2 अक्टूबर को किया गया था, अंतिम 13 अक्टूबर को, कुल 16 कमिट हैं। कोड लगभग पूरी तरह से Rust में है, लाइसेंस GPL-2.0 है।
README के अनुसार, इंजन NetworkEngine लेयर के माध्यम से TelegramCore से जुड़ता है और iOS और macOS दोनों पर काम करता है। MtProtoKit डिफ़ॉल्ट इंजन बना हुआ है। नया डेवलपर सेटिंग्स में "Network Engine" आइटम में चुना जाता है, और रीस्टार्ट के बाद काम करना शुरू कर देता है। दोनों इंजन एक ही सहेजी गई स्थिति लिखते हैं, इसलिए स्विच करने से अकाउंट लॉगआउट नहीं होता है। सार्वजनिक Telegram-iOS में इंजन को third-party/mtproto-engine सबमॉड्यूल के रूप में रिपॉजिटरी के अंतिम कमिट da4b217021 पर जोड़ा गया है।
थ्रेड्स में मुख्य अंतर है। MtProtoKit सभी अकाउंट्स के सभी सेशन, सभी पार्सिंग और सभी एन्क्रिप्शन को एक सामान्य कतार में निष्पादित करता है। इसलिए, एक बड़ी फाइल अपलोड करने से मुख्य सेशन में अपडेट की डिलीवरी में देरी होती है। नया इंजन दो से चार वर्कर थ्रेड्स रखता है: मुख्य सेशन पहले के लिए आरक्षित होते हैं, अपलोड और CDN बाकी में वितरित होते हैं, और 512 KB के फाइल के हिस्से को डिक्रिप्ट करने से मुख्य सेशन धीमा नहीं होता है।
macOS बीटा में इंजन कोड खुलने से पहले ही आ गया था। "Rust (restart required)" स्ट्रिंग 2 अक्टूबर के बिल्ड 12.10.283246 में मौजूद है। अगले बिल्ड में "Engine switch to rust refused, the server disabled it" स्ट्रिंग दिखाई दी, जिसका अर्थ है कि Telegram सर्वर स्विचिंग को प्रतिबंधित कर सकता है। रिपॉजिटरी डॉक्यूमेंटेशन इस मैकेनिज्म को "live kill switch" कहता है और इसके पहले वर्जन को बीटा 283247 और 283248 से संबंधित करता है।
माप क्या दिखाते हैं
इंजनों की तुलना macOS रिपॉजिटरी में mtproto-rust-vs-mtprotokit.md फाइल में है। इसका अंतिम वर्जन 2 अक्टूबर का है। माप एक नकली नेटवर्क सिम्युलेटर के पीछे एक नकली Telegram क्लस्टर के खिलाफ वास्तविक TelegramCore स्टैक के माध्यम से चलाए गए थे, और कुछ पंक्तियाँ वास्तविक सर्वर पर ली गई थीं। ये टीम के अपने आंकड़े हैं, किसी ने भी स्वतंत्र रूप से इनकी दोबारा जांच नहीं की है।
| टेस्ट | Rust | MtProtoKit |
|---|---|---|
| बड़ी फाइल, 100 ms विलंबता, 200 Mbit/s | 22.3 MB/s | 6.7 MB/s |
| CDN के माध्यम से बड़ी फाइल, वही नेटवर्क | 13.7 MB/s | 6.8 MB/s |
| 6 सेकंड के नेटवर्क आउटेज पर सामान्य प्रतिक्रिया प्रतीक्षा | 72 ms | 4.3 s |
| आउटेज समाप्त होने के बाद पहली प्रतिक्रिया | 0.07 s | 1.11 s |
| 10,000 छोटे अनुरोध, प्रोसेसर समय | 0.20 s | 1.05 s |
47 परिदृश्यों का एक अलग सेट इंजनों को एक शत्रुतापूर्ण सर्वर के खिलाफ जांचता है, जो कचरा भेजता है, प्रतिक्रियाओं को दोहराता है और कनेक्शन तोड़ता है। Rust ने सभी 47 पास किए और कभी भी अनुरोध को दो बार निष्पादित नहीं किया। MtProtoKit ने 18 को साफ-सुथरा समाप्त किया। 11 परिदृश्यों में यह अटक गया, दो में प्रोसेसर लोड के साथ एक अनंत लूप में चला गया, और 24 में अनुरोधों को दोहराया, कुल 49,395 बार।
ऑडिट और वॉलेट
docs/security-audit फोल्डर में 2 अक्टूबर का macOS नेटवर्क स्टैक ऑडिट रिपोर्ट है। इसके अनुसार, MtProtoKit अभी भी एप्लिकेशन में प्रत्येक ऑथराइज़ेशन की एक्सचेंज को निष्पादित करता है, और नया इंजन generate_key = 0 पैरामीटर के साथ काम करता है, यानी यह खुद कीज़ नहीं बनाता है। रिपोर्ट MtProtoKit में दो उच्च-गंभीरता वाली कमजोरियों का वर्णन करती है, जो iOS के लिए Telegram के साथ साझा हैं: सर्वर की प्रामाणिकता की पुष्टि होने से पहले क्लाइंट का क्रैश होना और अटक जाना। उसी दिन, MtProtoKit की एक्सचेंज के सुधार के साथ कमिट c371b688c7 सार्वजनिक Telegram-iOS में शामिल किया गया था।
Mac पर TON वॉलेट भी Rust पर आधारित है। packages/Wallet से वॉलेट का मैन्युअल पोर्ट हटा दिया गया है, और macOS telegram-ios से वॉलेट का साझा कोड और Apache-2.0 लाइसेंस के तहत Rust में wallet-engine लाइब्रेरी लेता है। यह UniFFI बाइंडिंग जनरेटर के माध्यम से जुड़ता है, और इसकी सेवा स्ट्रिंग्स macOS बीटा में 25 सितंबर के बिल्ड 12.10.283234 में पहले से ही मौजूद हैं।
उसी TelegramMessenger संगठन में 11 अक्टूबर को JavaScript इंजन QuickJS-ng का एक फोर्क दिखाई दिया। इसमें कमिट उसी macosswift अकाउंट के नाम से किए गए हैं, जो mtproto-engine में भी है। वे इंटरप्रेटर और मेमोरी एलोकेशन को गति देते हैं। ओपन कोड अभी तक यह नहीं दिखाता है कि फोर्क का उपयोग कहाँ किया जाता है।




