Bazel का रोडमैप

खास जानकारी

Bazel प्रोजेक्ट, आपकी ज़रूरतों के हिसाब से लगातार बेहतर होता रहता है. इसमें नई सुविधाएं जोड़ी जाती हैं और सहायता दी जाती है. साथ ही, मुख्य प्रॉडक्ट की परफ़ॉर्मेंस को बनाए रखा जाता है, उसे फिर से व्यवस्थित किया जाता है, और बेहतर बनाया जाता है.

इन बदलावों के ज़रिए, हम अपनी ओपन-सोर्स कम्यूनिटी को जानकारी देना चाहते हैं और उसे शामिल करना चाहते हैं. इस रोडमैप में, Bazel के डेवलपमेंट से जुड़ी मौजूदा पहलों और आने वाले समय के अनुमानों के बारे में बताया गया है. इससे आपको मौजूदा प्राथमिकताओं और चालू प्रोजेक्ट के बारे में जानकारी मिलती है.

इस रोडमैप में, टारगेट के स्नैपशॉट शामिल हैं. इसे गारंटी के तौर पर नहीं लिया जाना चाहिए. डेवलपर और ग्राहक से मिले सुझाव, शिकायत या राय या बाज़ार में उपलब्ध नए अवसरों के आधार पर, प्राथमिकताओं में बदलाव किया जा सकता है.

नई सुविधाओं के बारे में सूचना पाने के लिए, Google Group कम्यूनिटी में शामिल हों. इसमें इस रोडमैप के अपडेट भी शामिल हैं.

चौथी तिमाही — Bazel 6.0 रिलीज़

चौथी तिमाही में Bazel 6.0 लॉन्च किया जाएगा. यह लंबे समय तक सहायता (एलटीएस) देने वाला नया वर्शन है. Bazel 6.0 में, डिपेंडेंसी मैनेज करने, Android के साथ डेवलप करने, और अन्य कामों के लिए नई और बेहतर सुविधाएं शामिल करने की योजना है. ये सुविधाएं, कम्यूनिटी के अनुरोध पर जोड़ी जा रही हैं.

Bzlmod: बाहरी डिपेंडेंसी मैनेज करने वाला सिस्टम

Bzlmod, ट्रांज़िटिव डिपेंडेंसी को अपने-आप हल कर देता है. इससे प्रोजेक्ट को तेज़ी से और कम संसाधनों का इस्तेमाल करके स्केल किया जा सकता है. Bzlmod को Bazel 5.0 में एक्सपेरिमेंट के तौर पर लॉन्च किया गया था. अब यह आम तौर पर उपलब्ध होगा. साथ ही, यह डायमंड डिपेंडेंसी की समस्या का समाधान करेगा.

  • Bzlmod को ‘एक्सपेरिमेंट के तौर पर उपलब्ध’ से ‘आम तौर पर उपलब्ध’ के तौर पर रोल आउट किया गया
  • इसमें rules\_jvm\_external के लिए सहायता शामिल है. इससे उपयोगकर्ता, Java प्रोजेक्ट के लिए Maven डिपेंडेंसी डाउनलोड कर सकते हैं
  • Bzlmod माइग्रेशन गाइड में, Bzlmod को अपनाने वाली टीमों के लिए टूल, स्क्रिप्ट, और दस्तावेज़ उपलब्ध कराए गए हैं
  • Bazel की सेंट्रल रिपॉज़िटरी में, Bazel के मुख्य BUILD नियम (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) और Bzlmod के लिए ज़रूरी मुख्य डिपेंडेंसी मौजूद होती हैं

इस डेवलपमेंट के बारे में ज़्यादा जानने के लिए, Bzlmod कम्यूनिटी अपडेट देखें या ओरिजनल डिज़ाइन दस्तावेज़ पढ़ें.

Bazel की मदद से Android ऐप्लिकेशन बनाना

Bazel 6.0 में, बेहतर टूलिंग और कम्यूनिटी की ओर से योगदान की गई सुविधाओं को शामिल किया जाएगा. Bazel टीम को उम्मीद है कि आने वाले समय में, Bazel का इस्तेमाल करने वाले लोगों की संख्या बढ़ेगी और इसका कोडबेस भी बड़ा होगा. इसलिए, Bazel टीम, Android के बिल्ड टूल को Bazel Android के नियमों के साथ इंटिग्रेट करने को प्राथमिकता देगी.

  • यह D8 को v. 3.3.28 पर अपडेट करता है और इसे डिफ़ॉल्ट डेक्सर के तौर पर सेट करता है.
  • 5.X में जोड़ी गई मुख्य कम्यूनिटी की सुविधाओं के साथ मर्ज हो जाता है. इनमें ये शामिल हैं:
    • D8 के साथ पर्सिस्टेंट वर्कर्स
    • D8 का इस्तेमाल करके डिशुगरिंग करना
    • Android मेनिफ़ेस्ट में "uses-permissions" टैग मर्ज करना
    • Android में रिसॉर्स प्रोसेसिंग के दौरान मल्टीप्लेक्स वर्कर

वैकल्पिक टूलचेन

डेवलपर के संतुष्टि सर्वे से पता चला है कि नियम बनाने वाले लोग, टूलचेन को और बेहतर बनाने के लिए सहायता चाहते हैं. Bazel 6.0 में, लेखकों को ज़रूरत के हिसाब से इस्तेमाल की जा सकने वाली, बेहतर परफ़ॉर्मेंस वाली टूलचेन का इस्तेमाल करके नियम लिखने की अनुमति होगी. हालांकि, यह टूलचेन अन्य प्लैटफ़ॉर्म के लिए फ़ॉलबैक के तौर पर उपलब्ध होगी.

Bazel-JetBrains* IntelliJ IDEA के साथ काम करता है

JetBrains ने Bazel के साथ मिलकर, Bazel IntelliJ IDEA प्लगिन को साथ मिलकर बनाए रखने के लिए साझेदारी की है. इससे, कम्यूनिटी के सदस्यों को ज़्यादा ज़िम्मेदारी दी जा सकेगी. साथ ही, सुविधा के अनुरोधों और डेवलपमेंट के लिए ज़्यादा अवसर मिल सकेंगे.

  • IntelliJ प्लगिन v. 2022.2, JetBrains प्लगिन की नई रिलीज़ के साथ काम करता है
  • इससे रिमोट डेवलपमेंट के साथ काम करने की सुविधा बेहतर होती है
  • यह Scala के साथ काम करने जैसी सुविधाओं के लिए, कम्यूनिटी के ज़रिए डेवलपमेंट को बढ़ावा देता है

इस डेवलपमेंट के बारे में ज़्यादा जानने के लिए, Bazel-JetBrains की ब्लॉग पोस्ट पढ़ें.

आने वाले समय में होने वाले बदलाव

आने वाले समय में, Bazel टीम ने इन सुविधाओं को डेवलप करना शुरू कर दिया है. साथ ही, वह 2023 और उसके बाद के सालों में इन सुविधाओं को प्राथमिकता देगी.

Bazel के Android बिल्ड के नियमों को बेहतर बनाना

Android ऐप्लिकेशन डेवलपमेंट के अनुभव को बेहतर बनाने के लिए काम करते रहें. साथ ही, बिल्ड, टेस्ट, और डिप्लॉयमेंट के वर्कफ़्लो पर फ़ोकस करें.

  • R8 पर माइग्रेट करने और उससे जुड़ी सहायता
  • Android के नियमों से जुड़े अपडेट. इनमें Starlark भाषा में अनुवाद करने की सुविधा भी शामिल है
  • ऐप्लिकेशन बंडल के लिए सहायता
  • NDK के नए वर्शन के लिए सहायता
  • कोड कवरेज की जांच करना

ओएसएस लाइसेंस के अनुपालन से जुड़े टूल

डेवलपर ने लाइसेंस के नियमों का पालन करने की पुष्टि करने वाले एक मज़बूत टूल का अनुरोध किया है. इससे यह पक्का किया जा सकेगा कि शामिल किए गए पैकेज उपलब्ध हैं और सुरक्षित हैं. इस प्रोजेक्ट में नियमों और टूल का एक सेट दिया गया है. इससे किसी सॉफ़्टवेयर कॉम्पोनेंट से जुड़े नियमों के पालन और लाइसेंस से जुड़े जोखिमों की पहचान करने और उन्हें कम करने में मदद मिलती है. टारगेट की गई सुविधाओं में ये शामिल हैं:

  • किसी टारगेट के लिए इस्तेमाल किए गए पैकेज का ऑडिट करने की सुविधा
  • संगठन के हिसाब से, लाइसेंस के अनुपालन की जांच करने की सुविधा.

Github पर, rules_license लागू करने की प्रोसेस देखें.

Bzlmod: बाहरी डिपेंडेंसी मैनेज करने वाला सिस्टम

लॉन्च के समय, Bzlmod, ट्रांज़िटिव डिपेंडेंसी की विश्वसनीयता और स्केलेबिलिटी को बेहतर बनाता है. अगले तीन सालों में, Bzlmod का लक्ष्य WORKSPACE को Bazel वर्कस्पेस की डिपेंडेंसी मैनेज करने वाले डिफ़ॉल्ट सबसिस्टम के तौर पर बदलना है. इन सुविधाओं को टारगेट किया गया है:

  • हर्मेटिक बिल्ड के लिए सहायता
  • वेंडर/ऑफ़लाइन मोड, वर्शन किए गए रेफ़रंस के नियमों को स्थानीय कॉपी में पिन करता है
  • Bazel Central Registry में, कम्यूनिटी के योगदान को शामिल किया जाता है. साथ ही, Bazel के मुख्य नियमों और प्रोजेक्ट को अपनाया जाता है
  • Bzlmod, Bazel प्रोजेक्ट बनाने के लिए डिफ़ॉल्ट टूल बन जाता है

हस्ताक्षर किए गए बिल्ड

Bazel, Windows और Mac के लिए भरोसेमंद बाइनरी उपलब्ध कराएगा. इन पर Google की कुंजियों से हस्ताक्षर किए गए होंगे. इस सुविधा की मदद से, कई प्लैटफ़ॉर्म पर काम करने वाले डेवलपर/डेव-ऑप्स, Bazel बाइनरी के सोर्स की पहचान कर सकते हैं. साथ ही, अपने सिस्टम को नुकसान पहुंचाने वाली ऐसी बाइनरी से बचा सकते हैं जिनकी पुष्टि नहीं हुई है.

Standardized Platforms API

Platforms API का नया वर्शन, एक से ज़्यादा भाषाओं और प्लैटफ़ॉर्म के लिए बनाए गए ऐप्लिकेशन के आर्किटेक्चर कॉन्फ़िगरेशन को स्टैंडर्ड बनाएगा. इस सुविधा की मदद से, डेवलपर अपने बड़े बिल्ड में डेवलपमेंट के दौरान होने वाली महंगी गड़बड़ियों और मुश्किलों को कम कर सकते हैं.

विश्लेषण के लिए मेट्रिक बनाना

Bazel टेलीमेट्री, विश्लेषण के चरण में लगने वाले समय की मेट्रिक उपलब्ध कराएगी. इससे डेवलपर, अपने बिल्ड की परफ़ॉर्मेंस को ऑप्टिमाइज़ कर पाएंगे.

“Builds without the Bytes” की मदद से रिमोट एक्ज़ीक्यूशन

बाइट के बिना बनाए गए टारगेट, परफ़ॉर्मेंस को ऑप्टिमाइज़ करेंगे. इसके लिए, Bazel को सिर्फ़ ज़रूरी आर्टफ़ैक्ट डाउनलोड करने की अनुमति दी जाएगी. इससे नेटवर्क बैंडविड्थ पर बिल्ड की परफ़ॉर्मेंस में रुकावट नहीं आएगी. रिमोट बिल्ड के लिए जोड़ी गई सुविधाओं में ये शामिल हैं:

  • एसिंक्रोनस डाउनलोड का इस्तेमाल करें, ताकि लोकल और रिमोट ऐक्शन, डिपेंडेंट आउटपुट डाउनलोड होते ही शुरू हो जाएं
  • सिमलिंक के लिए सहायता जोड़ना
  • बिल्ड पूरा होने के बाद, रिमोट ऐक्शन से इंटरमीडिएट आउटपुट वापस पाना

*Copyright © 2022 JetBrains s.r.o. JetBrains और IntelliJ, JetBrains s.r.o. के रजिस्टर्ड ट्रेडमार्क हैं.