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 नियमों के साथ, 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 टेलीमेट्री, विश्लेषण के फ़ेज़ के समय के मेट्रिक उपलब्ध कराएगा. इससे डेवलपर, अपने बिल्ड की परफ़ॉर्मेंस को ऑप्टिमाइज़ कर सकेंगे.

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

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

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

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