Bazel का रोडमैप

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

खास जानकारी

Bazel कम्यूनिटी को नए साल की शुभकामनाएं. नए साल में, हम 2023 के अपने रोडमैप की जानकारी देंगे. पिछले साल, हमने Bazel 6.0 के प्लान के साथ, 2022 का रोडमैप पब्लिश किया था. हमें उम्मीद है कि इस रोडमैप से, आपको बिल्ड टूलिंग की ज़रूरतों के बारे में जानकारी मिली होगी. Bazel प्रोजेक्ट आपकी ज़रूरतों के हिसाब से लगातार बेहतर होता जा रहा है. इसलिए, हम आपको 2023 के अपडेट के बारे में बताना चाहते हैं.

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

Bazel 7.0 रिलीज़

हम साल 2023 के आखिर तक, Bazel 7.0 लंबे समय तक सहायता (एलटीएस) देने की योजना बना रहे हैं. हमारा मकसद Bazel 7.0 में, उन सभी आइटम को उपलब्ध कराना है जिन पर काम चल रहा है. साथ ही, उन सुविधाओं को बेहतर बनाना है जिनके बारे में हमारे उपयोगकर्ताओं ने हमसे पूछा है.

अलग-अलग प्लैटफ़ॉर्म पर कैश मेमोरी को बेहतर तरीके से शेयर करने की सुविधा

इस विकल्प को चालू करने पर, कैश किए गए आर्टफ़ैक्ट को अलग-अलग बिल्ड लोकल (Mac) और रिमोट (Linux) बिल्ड प्लैटफ़ॉर्म पर शेयर किया जा सकता है. ऐसा मुख्य रूप से Java/Kotlin और Android डेवलपमेंट के लिए किया जाता है. इससे बेहतर परफ़ॉर्मेंस मिलती है और कैश का बेहतर तरीके से इस्तेमाल किया जा सकता है.

Bazel की मदद से Android ऐप्लिकेशन बनाना

मेनिफ़ेस्ट और रिसॉर्स मर्जर को v30.1.3 पर अपडेट किया गया है, ताकि Android ऐप्लिकेशन डेवलपर, मेनिफ़ेस्ट मर्ज करने की नई सुविधाओं का इस्तेमाल कर सकें. जैसे, tools:node="merge".

रिमोट एक्ज़ीक्यूशन में सुधार

Bazel 7.0 में, एसिंक्रोनस एक्ज़ीक्यूशन की सुविधा मिलती है. इससे --jobs फ़्लैग के साथ पैरललिज़्म को बढ़ाकर, रिमोट एक्ज़ीक्यूशन को तेज़ किया जा सकता है.

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

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

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

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

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

डिफ़ॉल्ट रूप से चालू किए गए Bytes के बिना बनाना

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

  • लीज़ सेवा के साथ रिमोट कैश मेमोरी से डेटा हटाने की सुविधा, ताकि आर्टफ़ैक्ट को समय से पहले हटाए जाने पर उपयोगकर्ताओं को गड़बड़ियों का सामना न करना पड़े

  • सिमलिंक के साथ काम करने वाली पते की सुविधा में मौजूद कमियां

  • रिमोट ऐक्शन से मिले इंटरमीडिएट आउटपुट को वापस पाने के विकल्प उपलब्ध कराना

Skymeld की मदद से प्रॉडक्टिविटी बढ़ाना

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

Bazel का इकोसिस्टम और टूलिंग

Bazel की मदद से Android ऐप्लिकेशन बनाना

  • Android के नेटिव नियमों को Starlark पर माइग्रेट करना: Bazel 7.0 के लिए, Android के नियमों को Starlark पर माइग्रेट किया जाता है, ताकि डेवलपमेंट को Bazel से अलग किया जा सके. साथ ही, कम्यूनिटी के योगदान को बेहतर तरीके से चालू किया जा सके. इसके अलावा, हमने इन नियमों को Bazel के मुख्य बाइनरी से अलग कर दिया है. इससे हमें इन्हें ज़्यादा बार रिलीज़ करने में मदद मिलेगी.
  • Android के नियमों को Starlark में माइग्रेट करना
  • R8 की सुविधा: इससे Android ऐप्लिकेशन डेवलपर, R8 के अपडेट किए गए ऑप्टिमाइज़ेशन का इस्तेमाल कर सकते हैं.
  • मोबाइल इंस्टॉल: इससे Android ऐप्लिकेशन डेवलपर, मोबाइल इंस्टॉल के अपडेट किए गए वर्शन की मदद से, Android ऐप्लिकेशन में किए गए किसी भी बदलाव को तुरंत डेवलप, टेस्ट, और डिप्लॉय कर सकते हैं.

सॉफ़्टवेयर के कॉम्पोनेंट की जानकारी (एसबीओएम) जनरेट करने और ओएसएस लाइसेंस के नियमों का पालन करने से जुड़े टूल

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

हस्ताक्षर किए गए बिल्ड

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

Java, C++, और Python के नियमों को Starlark में माइग्रेट करना

Java, C++, और Python के नियमों के सेट को Starlark में पूरी तरह से माइग्रेट किया गया. इस बदलाव से, Bazel के उपयोगकर्ता सिर्फ़ नियम सेट को फ़ोर्क कर पाएंगे, न कि Bazel के बाइनरी कोडबेस को. इससे उपयोगकर्ताओं को ये फ़ायदे मिलेंगे

  • ज़रूरत के हिसाब से नियमों को अपडेट और पसंद के मुताबिक बनाएं
  • Bazel से अलग नियमों को अपडेट करना

Bazel-JetBrains* IntelliJ IDEA के साथ काम करता है

JetBrains के प्लगिन के नए वर्शन के साथ काम करने के लिए, IntelliJ प्लगिन के अपडेट.

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

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

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