Bazel का रोडमैप

खास जानकारी

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

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

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

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

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

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

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

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

  • 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 टीम, Android के बिल्ड टूल को Bazel के Android नियमों के साथ इंटिग्रेट करने को प्राथमिकता देगी. ऐसा इसलिए, क्योंकि आने वाले समय में इसका इस्तेमाल बढ़ने और कोडबेस के बढ़ने की उम्मीद है.

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

ज़रूरी नहीं टूलचेन

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

Bazel-JetBrains* IntelliJ IDEA के लिए सहायता

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

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

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

आने वाले समय में होने वाला डेवलपमेंट

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

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

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

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

ओएसएस लाइसेंस के अनुपालन की जांच करने वाले टूल

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

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

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

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

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

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

साइन किए गए बिल्ड

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

मानकीकृत प्लैटफ़ॉर्म एपीआई

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

बिल्ड के विश्लेषण के मेट्रिक

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

“बाइट्स के बिना बिल्ड” की मदद से रिमोट एक्ज़ीक्यूशन

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

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

*कॉपीराइट © 2022 JetBrains s.r.o. JetBrains और IntelliJ, JetBrains s.r.o. के रजिस्टर किए गए ट्रेडमार्क हैं.