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 बाइनरी के सोर्स की पहचान कर सकते हैं. साथ ही, अपने सिस्टम को नुकसान पहुंचाने वाली ऐसी बाइनरी से बचा सकते हैं जिनकी पुष्टि नहीं हुई है.

स्टैंडर्डाइज़्ड प्लैटफ़ॉर्म एपीआई

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

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

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

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

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

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

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