Bazel का रोडमैप

खास जानकारी

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 ऐप्लिकेशन

Manifest और Resource Merger को 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 के रजिस्टर किए हुए ट्रेडमार्क हैं