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

  • 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. के रजिस्टर किए गए ट्रेडमार्क हैं.