खास जानकारी
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 को वर्शन 30.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 में, विश्लेषण के चरण के समय के मेट्रिक उपलब्ध हैं. इससे डेवलपर, अपने बिल्ड की परफ़ॉर्मेंस को ऑप्टिमाइज़ कर सकते हैं.
डिफ़ॉल्ट रूप से, 'बाइट के बिना बिल्ड' की सुविधा चालू है
'बाइट के बिना बिल्ड' की सुविधा से, इंटरमीडिएट आर्टफ़ैक्ट डाउनलोड करने से बचकर परफ़ॉर्मेंस को ऑप्टिमाइज़ किया जा सकता है. साथ ही, नेटवर्क बैंडविथ पर बिल्ड को बॉटलनेक होने से रोका जा सकता है. इसमें ये सुविधाएं जोड़ी गई हैं:
लीज सर्विस के साथ, रिमोट कैश इविक्शन की सुविधा. इससे आर्टफ़ैक्ट के समय से पहले इविक्ट होने पर, उपयोगकर्ताओं को गड़बड़ियां नहीं दिखती हैं
सिमलिंक की सुविधा में मौजूद कमियों को ठीक किया गया है
रिमोट कार्रवाइयों से इंटरमीडिएट आउटपुट पाने के विकल्प दिए गए हैं
Skymeld की मदद से बिल्ड की प्रॉडक्टिविटी बढ़ाना
Bazel 7.0 में Skymeld की सुविधा है. यह एक ऐसा इवैल्युएशन मोड है जिससे मल्टी-टारगेट बिल्ड का वॉल टाइम कम हो जाता है. Skymeld, विश्लेषण और एक्ज़ीक्यूशन के चरणों के बीच की रुकावट को खत्म करता है. इससे बिल्ड की स्पीड बेहतर होती है. खास तौर पर, कई टॉप-लेवल टारगेट वाले बिल्ड के लिए. हालांकि, सिंगल-टारगेट बिल्ड के लिए, कोई खास अंतर नहीं दिखता है.
Bazel इकोसिस्टम और टूलिंग
Bazel की मदद से Android ऐप्लिकेशन बनाना
- Android के नेटिव नियमों को Starlark पर माइग्रेट करना: Bazel 7.0 के लिए, Android के नियमों को Starlark पर माइग्रेट किया जाता है. इससे डेवलपमेंट को Bazel से अलग किया जा सकता है और कम्यूनिटी के योगदान को बेहतर तरीके से शामिल किया जा सकता है. इसके अलावा, हमने इन नियमों को Bazel के कोर बाइनरी से अलग कर दिया है. इससे हम ज़्यादा बार रिलीज़ कर सकते हैं.
- Android के नियमों को Starlark पर माइग्रेट करना
- R8 की सुविधा: इससे Android ऐप्लिकेशन के डेवलपर, R8 के अपडेट किए गए ऑप्टिमाइज़ेशन का इस्तेमाल कर सकते हैं.
- Mobile Install: इससे Android ऐप्लिकेशन के डेवलपर, Mobile Install के अपडेट किए गए वर्शन की मदद से, 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 के रजिस्टर्ड ट्रेडमार्क हैं