खास जानकारी
Bazel प्रोजेक्ट आपकी ज़रूरतों के हिसाब से लगातार बेहतर होता जा रहा है. इसलिए, हम 2024 का अपडेट शेयर करना चाहते हैं.
इस रोडमैप में, Bazel के डेवलपमेंट से जुड़ी मौजूदा पहल और आने वाले समय के अनुमानों के बारे में बताया गया है. इससे आपको मौजूदा प्राथमिकताओं और चालू प्रोजेक्ट के बारे में जानकारी मिलती है.
Bazel 8.0 रिलीज़
हम साल 2024 के आखिर तक, Bazel 8.0 लंबे समय तक सहायता (एलटीएस) उपलब्ध कराने का प्लान बना रहे हैं. इन सुविधाओं को लागू करने का प्लान है.
Bzlmod: बाहरी डिपेंडेंसी मैनेज करने वाला सिस्टम
Bzlmod, ट्रांज़िटिव डिपेंडेंसी को अपने-आप हल करता है. इससे प्रोजेक्ट को तेज़ी से और कम संसाधनों में स्केल किया जा सकता है.
Bazel 8 में, हम WORKSPACE के साथ काम करने की सुविधा को डिफ़ॉल्ट रूप से बंद कर देंगे. हालांकि, --enable_workspace
का इस्तेमाल करके इसे चालू किया जा सकेगा. Bazel 9 में, WORKSPACE के साथ काम करने की सुविधा को हटा दिया जाएगा. Bazel 7.1 से, नए वर्शन का इस्तेमाल करने के लिए --noenable_workspace
सेट किया जा सकता है.
Bazel 8.0 में, Bazel की बाहरी डिपेंडेंसी मैनेज करने की सुविधा को बेहतर बनाया जाएगा. इसमें ये शामिल हैं:
- नए फ़्लैग
--enable_workspace
कोfalse
पर सेट करके, WORKSPACE की सुविधा को पूरी तरह से बंद किया जा सकता है. - डायरेक्ट्री वॉचिंग एपीआई का नया वर्शन (देखें #21435, Bazel 7.1 में उपलब्ध है).
- डिपेंडेंसी के वर्शन अपडेट के दौरान, कार्रवाइयों को बेहतर तरीके से कैश मेमोरी में सेव करने के लिए, कैननिकल रिपॉज़िटरी के नाम जनरेट करने की बेहतर स्कीम. (#21316, Bazel 7.1 में शिप किया गया)
- शेयर की गई रिपॉज़िटरी की बेहतर कैश मेमोरी (#12227 देखें).
- वेंडर और ऑफ़लाइन मोड के लिए सहायता — इससे उपयोगकर्ता, पहले से डाउनलोड की गई डिपेंडेंसी के साथ बिल्ड चला सकते हैं (#19563 देखें).
- लॉक की गई फ़ाइलों में मर्ज करने से जुड़ी समस्याएं कम की गईं (#20396).
- Segmented MODULE.bazel (#17880)
- मॉड्यूल एक्सटेंशन से जनरेट की गई रिपॉज़िटरी को बदलने की अनुमति दें (#19301)
- बेहतर दस्तावेज़ (जैसे, #18030, #15821), माइग्रेशन गाइड, और माइग्रेशन टूलिंग.
रिमोट एक्ज़ीक्यूशन में सुधार
- एसिंक्रोनस एक्ज़ीक्यूशन के लिए सहायता जोड़ी गई. इससे फ़्लैग
--jobs
के साथ पैरललिज़्म बढ़ने से, रिमोट एक्ज़ीक्यूशन की स्पीड बढ़ जाती है. - नए कॉम्पैक्ट एक्ज़ीक्यूशन लॉग की मदद से, कैश मेमोरी में मौजूद डेटा न मिलने की वजह से होने वाली गड़बड़ियों को आसानी से ठीक किया जा सकता है. इससे लॉग का साइज़ 100 गुना कम हो जाता है और इसके रनटाइम ओवरहेड में काफ़ी कमी आ जाती है. इसके बारे में ज़्यादा जानने के लिए, #18643 देखें.
- डिस्क कैश मेमोरी के लिए गार्बेज कलेक्शन लागू करें (#5139 देखें).
- रिमोट आउटपुट सेवा लागू करें, ताकि किसी भी बिल्ड आउटपुट को लेज़ी डाउनलोड किया जा सके (#20933 देखें).
Android, C++, Java, Python, और Proto के नियमों को माइग्रेट करना
Android, C++, Java, और Python के नियम सेट को अलग-अलग रिपॉज़िटरी में पूरी तरह से माइग्रेट करना और उन्हें Bazel के रिलीज़ वर्शन से अलग करना. इस कोशिश से, Bazel का इस्तेमाल करने वाले लोगों और नियम बनाने वालों को
- Bazel से अलग नियमों को अपडेट करें.
- ज़रूरत के हिसाब से नियमों को अपडेट करें और उनमें बदलाव करें.
नियमों के सेट की नई जगह bazelbuild/rules_android
, rules_cc
, rules_java
, rules_python
, और google/protobuf
होगी. rules_proto
को बंद किया जा रहा है.
Bazel 8, माइग्रेशन का एक अस्थायी फ़्लैग उपलब्ध कराएगा. यह फ़्लैग, उन rulesets का अपने-आप इस्तेमाल करेगा जो पहले बाइनरी का हिस्सा थीं. इन नियमों के सभी उपयोगकर्ताओं को आखिर में अपनी रिपॉज़िटरी पर निर्भर रहना होगा. साथ ही, उन्हें उन नियमों को उसी तरह लोड करना होगा जो कभी Bazel का हिस्सा नहीं थे.
Bazel 8, मौजूदा एक्सटेंडिंग नियमों और सबनियम एपीआई को भी बेहतर बनाएगा. साथ ही, उन्हें गैर-एक्सपेरिमेंटल के तौर पर मार्क करेगा.
Starlark में किए गए सुधार
- सिंबॉलिक मैक्रो, मैक्रो लिखने का एक नया तरीका है. यह
BUILD
उपयोगकर्ताओं, मैक्रो बनाने वालों, और टूलिंग के लिए ज़्यादा आसान है. लेगसी मैक्रो की तुलना में सिंबॉलिक मैक्रो, उपयोगकर्ताओं को सामान्य गलतियों से बचने और सबसे सही तरीकों को लागू करने में मदद करते हैं. Bazel को लेगसी मैक्रो के बारे में सीमित जानकारी होती है. - पैकेज फ़ाइनलाइज़र, कस्टम पैकेज की पुष्टि करने के लॉजिक के लिए बेहतर सहायता जोड़ने की सुविधा है. इनका मकसद,
native.existing_rules()
को बंद करने में हमारी मदद करना है.
कॉन्फ़िगर करने की सुविधा
- आउटपुट पाथ मैपिंग में सुधार जारी है. इससे ट्रांज़िशन का इस्तेमाल करने वाले नियम डिज़ाइनर के लिए, रिमोट कैश की परफ़ॉर्मेंस और बिल्ड स्पीड बेहतर होगी.
- किसी
--platforms
के लिए सही बिल्ड फ़्लैग अपने-आप सेट करता है. - प्रोजेक्ट के साथ काम करने वाले फ़्लैग कॉम्बिनेशन तय करें. साथ ही, bazelrcs सेट किए बिना, डिफ़ॉल्ट फ़्लैग के साथ अपने-आप टारगेट बनाएं.
- बिल्ड फ़्लैग में बदलाव होने पर, हर बार बिल्ड विश्लेषण को फिर से न करें.
Project Skyfocus - कम से कम डेटा स्ट्रक्चर सेव करना
Bazel, इंक्रीमेंटल बिल्ड को तेज़ी से बनाने के लिए, रैम में कई स्टेट सेव करता है. हालांकि, डेवलपर अक्सर सोर्स फ़ाइलों के छोटे सबसेट में बदलाव करते हैं. उदाहरण के लिए, बाहरी डिपेंडेंसी में से किसी एक में शायद ही कभी बदलाव किया जाता है. Skyfocus की मदद से, Bazel एक्सपेरिमेंट के तौर पर ऐसी सुविधा देगा जिससे गैर-ज़रूरी इंक्रीमेंटल स्टेट को हटाया जा सकेगा. साथ ही, Bazel के मेमोरी फ़ुटप्रिंट को कम किया जा सकेगा. हालांकि, इससे इंक्रीमेंटल बिल्ड के अनुभव पर कोई असर नहीं पड़ेगा.
शुरुआत में, इसका मकसद सिर्फ़ रीटेन किए गए हीप की मेट्रिक को बेहतर बनाना है. पीक हीप में कमी आ सकती है, लेकिन इसे शुरुआती स्कोप में शामिल नहीं किया गया है.
अन्य सुविधाएं
- मोबाइल इंस्टॉल v3, Android ऐप्लिकेशन को धीरे-धीरे डिप्लॉय करने का आसान और बेहतर तरीका है.
- रिपॉज़िटरी कैश मेमोरी और Bazel के
install_base
के लिए कचरा इकट्ठा करना. - सैंडबॉक्सिंग का ओवरहेड कम हो गया है.
Bazel-JetBrains* IntelliJ IDEA के साथ काम करता है
JetBrains प्लगिन के नए वर्शन के साथ काम करने के लिए, IntelliJ प्लगिन के अपडेट.
इस रोडमैप में टारगेट के स्नैपशॉट दिए गए हैं. इन्हें गारंटी के तौर पर नहीं लिया जाना चाहिए. डेवलपर और ग्राहक के सुझाव/राय या बाज़ार में उपलब्ध नए अवसरों के आधार पर, प्राथमिकताओं में बदलाव किया जा सकता है.
नई सुविधाओं के बारे में सूचना पाने के लिए, Google Group कम्यूनिटी में शामिल हों. इसमें इस रोडमैप के अपडेट भी शामिल हैं.
*कॉपीराइट © 2022 JetBrains s.r.o. JetBrains और IntelliJ, JetBrains s.r.o के रजिस्टर किए हुए ट्रेडमार्क हैं