Skip to Content
मूल अवधारणाएँजंग कोर वास्तुकला

जंग कोर वास्तुकला

एंड्रॉइड और आईओएस के बीच पूर्ण समानता की गारंटी देने और उच्चतम स्तर के प्रदर्शन को प्राप्त करने के लिए, ट्रेसलेट का मुख्य तर्क पूरी तरह से रस्ट में लिखा गया है। इसमें स्थिति मशीन, HTTP सिंक इंजन, SQLite दृढ़ता परत और बैटरी बजट गणना शामिल है।


जंग क्यों?

रस्ट में कोर इंजन लिखने से क्रॉस-प्लेटफ़ॉर्म पृष्ठभूमि निष्पादन में कई महत्वपूर्ण चुनौतियाँ हल हो जाती हैं:

  1. शून्य विसंगतियां: अलग-अलग स्विफ्ट और कोटलिन कार्यान्वयन के बजाय एकल, साझा कोडबेस पर भरोसा करके, हम यह सुनिश्चित करते हैं कि आईओएस और एंड्रॉइड सभी परिस्थितियों में समान व्यवहार करें। यदि कोई बग ठीक हो गया है, तो उसे हर जगह ठीक कर दिया जाता है।
  2. निडर समवर्ती: बैकग्राउंड सिंक इंजन भारी मल्टीथ्रेडेड लोड के तहत त्रुटिहीन रूप से काम करता है। रस्ट का सख्त कंपाइलर डेटा-रेस स्वतंत्रता की गारंटी देता है, जब स्थानों को रिकॉर्ड किया जाता है और पृष्ठभूमि थ्रेड्स पर एक साथ अपलोड किया जाता है, तो समवर्ती बग से बचा जाता है।
  3. प्रदर्शन और सुरक्षा: रस्ट सी-लेवल प्रदर्शन और लगभग-शून्य मेमोरी फ़ुटप्रिंट के साथ संचालित होता है, जो इसे बैटरी-बाधित पृष्ठभूमि निष्पादन के लिए एकदम सही बनाता है। यह कचरा संग्रहकर्ता के बिना मेमोरी सुरक्षा की गारंटी देता है, यह सुनिश्चित करता है कि बैकग्राउंड इंजन कभी भी शून्य पॉइंटर्स या आउट-ऑफ-मेमोरी त्रुटियों के कारण क्रैश न हो।

यह कैसे काम करता है: UniFFI बाइंडिंग्स

रस्ट और देशी प्लेटफार्मों के बीच अंतर को पाटने के लिए ट्रैसलेट मोज़िला के UniFFI (यूनिवर्सल फॉरेन फंक्शन इंटरफ़ेस) का उपयोग करता है।

  1. परिभाषा: हम रस्ट में कोर एपीआई को परिभाषित करते हैं (उदाहरण के लिए, ट्रैकिंग शुरू करने, डेटा सिंक करने या स्थान अपडेट को संभालने के तरीके)।
  2. जेनरेशन: यूनीएफएफआई स्वचालित रूप से रस्ट कोड को पार्स करता है और आईओएस के लिए सुरक्षित, मुहावरेदार स्विफ्ट बाइंडिंग और एंड्रॉइड के लिए कोटलिन बाइंडिंग उत्पन्न करता है।
  3. निष्पादन: जब फ़्लटर प्लगइन मूल iOS/एंड्रॉइड कोड को कॉल करता है, तो मूल कोड UniFFI-जनरेटेड बाइंडिंग को कॉल करता है, जो अंतर्निहित रस्ट लॉजिक को निर्बाध रूप से निष्पादित करता है।

क्योंकि बाइंडिंग स्वचालित रूप से उत्पन्न होती हैं, इसलिए बनाए रखने के लिए कोई मैन्युअल जेएनआई (जावा नेटिव इंटरफ़ेस) या ऑब्जेक्टिव-सी ब्रिजिंग कोड नहीं है। यह पूरी तरह से टाइप-सुरक्षित है।


पूर्व-संकलित बायनेरिज़ (कोई जंग टूलचेन आवश्यक नहीं)

मोबाइल विकास में रस्ट के साथ एक आम समस्या यह है कि डेवलपर्स को रस्ट टूलचेन स्थापित करने, क्रॉस-संकलन लक्ष्यों को कॉन्फ़िगर करने और लंबे समय तक निर्माण समय को सहन करने के लिए मजबूर किया जाता है।

ट्रैसलेट पूर्व-संकलित बायनेरिज़ वितरित करके इसे हल करता है।

जब आप अपने फ़्लटर प्रोजेक्ट में tracelet प्लगइन जोड़ते हैं, तो आपको अपनी मशीन पर रस्ट इंस्टॉल करने की आवश्यकता नहीं होती है। ट्रैसलेट की CI/CD पाइपलाइन स्वचालित रूप से प्रत्येक रिलीज़ के लिए मूल लाइब्रेरी बनाती और प्रकाशित करती है।

एंड्रॉइड संकलन

  • रस्ट कोड को सभी प्रमुख एंड्रॉइड आर्किटेक्चर (arm64-v8a, armeabi-v7a, x86, x86_64) के लिए एक मूल साझा लाइब्रेरी (.so) में संकलित किया गया है।
  • ये लाइब्रेरी, जेनरेट की गई कोटलिन बाइंडिंग के साथ, एंड्रॉइड आर्काइव (.aar) में पैक की गई हैं।
  • जब आप अपना फ़्लटर ऐप बनाते हैं, तो ग्रैडल स्वचालित रूप से ट्रैसलेट रिपॉजिटरी से पूर्व-निर्मित .aar डाउनलोड करता है।

आईओएस संकलन

  • रस्ट कोड को iOS उपकरणों (arm64) और सिमुलेटर (arm64, x86_64) के लिए एक स्थिर लाइब्रेरी (.a) में संकलित किया गया है।
  • इन लाइब्रेरीज़ को जनरेट की गई स्विफ्ट बाइंडिंग के साथ Apple XCFramework (TraceletCore.xcframework) में बंडल किया गया है।
  • जब आप pod install चलाते हैं, तो CocoaPods (या स्विफ्ट पैकेज मैनेजर) स्वचालित रूप से टैग किए गए GitHub रिलीज़ से सीधे पूर्व-संकलित TraceletCore.xcframework डाउनलोड करता है।

यह पूर्व-संकलित वितरण सुनिश्चित करता है कि आपका फ़्लटर बिल्ड बिजली की तेजी से बना रहे, और आपकी सीआई/सीडी पाइपलाइन कस्टम रस्ट सेटअप की आवश्यकता के बिना आउट-ऑफ-द-बॉक्स काम करती है।