Bazel का रोडमैप

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

खास जानकारी

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

  • D8 को 3.3.28 वर्शन पर अपडेट करता है और इसे डिफ़ॉल्ट dexer के तौर पर सेट करता है.
  • 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 भाषा में अनुवाद भी शामिल है
  • ऐप्लिकेशन बंडल के लिए सहायता
  • 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 टेलीमेट्री, विश्लेषण के फ़ेज़ में लगने वाले समय की मेट्रिक देगी. इससे डेवलपर, अपने बिल्ड की परफ़ॉर्मेंस को ऑप्टिमाइज़ कर पाएंगे.

“बिट के बिना बिल्ड” की सुविधा के साथ रिमोट तरीके से प्रोग्राम चलाना

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

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

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