Bazel का रोडमैप

खास जानकारी

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

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

यह रोडमैप स्नैपशॉट टारगेट करता है और इसे गारंटी के तौर पर नहीं लिया जाना चाहिए. डेवलपर और ग्राहक के सुझाव या मार्केट के नए अवसरों के हिसाब से प्राथमिकताएं बदली जा सकती हैं.

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

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

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

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

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

  • Bzlmod, 'प्रयोग' से 'आम तौर पर उपलब्ध' हो गया
  • इसमें rules\_jvm\_external के लिए सहायता शामिल है. इसकी मदद से उपयोगकर्ता Java प्रोजेक्ट के लिए, Maven डिपेंडेंसी डाउनलोड कर सकते हैं
  • Bzlmod Migration गाइड उन टीमों को टूल, स्क्रिप्ट, और दस्तावेज़ उपलब्ध कराती है जो Bzlmod का इस्तेमाल करना चाहती हैं
  • Bazel सेंट्रल रिपॉज़िटरी, Bazel BUILD के मुख्य नियम (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) होस्ट करता है. साथ ही, Bzlmod के लिए ज़रूरी मुख्य डिपेंडेंसी भी होस्ट करता है

इस डेवलपमेंट के बारे में ज़्यादा जानने के लिए, Bzlmod कम्यूनिटी अपडेट देखें या ओरिजनल डिज़ाइन दस्तावेज़ पढ़ें.

Bazel के साथ Android ऐप्लिकेशन का बिल्ड

Bazel 6.0 में, बेहतर टूल और कम्यूनिटी सुविधाओं के साथ मर्ज किए गए योगदान शामिल होंगे. आने वाले समय में इसका इस्तेमाल और कोड बेस बढ़ने की संभावना को ध्यान में रखते हुए, Bazel टीम, Bazel Android के नियमों के साथ Android बिल्ड टूल के इंटिग्रेशन को प्राथमिकता देगी.

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

वैकल्पिक टूलचेन

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

Bazel-JetBrains* IntelliJ IDEA सहायता

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

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

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

फ़्यूचर डेवलपमेंट

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

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

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

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

ओएसएस लाइसेंस का पालन करने से जुड़े टूल

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

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

देखें कि GitHub पर नियम_लाइसेंस लागू करने की प्रोसेस जारी है या नहीं.

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

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

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

साइन किए हुए बिल्ड

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

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

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

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

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

“बिल्ड बिना बाइट्स” का इस्तेमाल करके, गेम को कहीं से भी चलाना

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

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

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