खास जानकारी
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 सेट किया जा सकता है.
- WORKSPACE की सुविधा को पूरी तरह से बंद करने के लिए, नया फ़्लैग
--enable_workspace,falseपर सेट किया जा सकता है. - नई डायरेक्ट्री वॉचिंग एपीआई (देखें #21435, Bazel 7.1 में शिप की गई).
- डिपेंडेंसी वर्शन के अपडेट के दौरान, कार्रवाइयों की बेहतर कैश मेमोरी के लिए, कैननिकल रिपॉज़िटरी के नाम जनरेट करने की बेहतर स्कीम. (#21316, Bazel 7.1 में शिप की गई)
- शेयर की गई रिपॉज़िटरी की बेहतर कैश मेमोरी (#12227 देखें).
- वेंडर और ऑफ़लाइन मोड की सुविधा — इससे उपयोगकर्ता, पहले से डाउनलोड की गई डिपेंडेंसी के साथ बिल्ड चला सकते हैं (#19563 देखें).
- लॉक फ़ाइलों में मर्ज से जुड़ी गड़बड़ियां कम करना (#20396).
- सेगमेंट किया गया 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 में, माइग्रेशन का अस्थायी फ़्लैग उपलब्ध होगा. इससे, उन नियम सेट का अपने-आप इस्तेमाल किया जा सकेगा जो पहले बाइनरी का हिस्सा थे. उम्मीद है कि उन नियम सेट के सभी उपयोगकर्ता, आखिर में अपनी रिपॉज़िटरी पर निर्भर रहेंगे और उन्हें अन्य नियम सेट की तरह लोड करेंगे. ये नियम सेट, कभी भी Bazel का हिस्सा नहीं थे.
Bazel 8 में, मौजूदा एक्सटेंडिंग नियम और सबरूल एपीआई को भी बेहतर बनाया जाएगा. साथ ही, उन्हें एक्सपेरिमेंटल के तौर पर मार्क नहीं किया जाएगा.
Starlark में सुधार
- सिंबॉलिक मैक्रो, मैक्रो लिखने का नया तरीका है. यह
BUILDके उपयोगकर्ताओं, मैक्रो बनाने वाले लोगों, और टूलिंग के लिए ज़्यादा आसान है. लेगसी मैक्रो की तुलना में, सिंबॉलिक मैक्रो की मदद से उपयोगकर्ता, आम तौर पर होने वाली गड़बड़ियों से बच सकते हैं और सबसे सही तरीकों को लागू कर सकते हैं. Bazel को लेगसी मैक्रो के बारे में सीमित जानकारी ही मिलती है. - पैकेज फ़ाइनलाइज़र, कस्टम पैकेज की पुष्टि करने की लॉजिक के लिए, पहली क्लास की सहायता जोड़ने के लिए प्रस्तावित सुविधा है. इसका मकसद,
native.existing_rules()को बंद करना है.
कॉन्फ़िगर करने की सुविधा
- आउटपुट पाथ मैपिंग की सुविधा में लगातार सुधार हो रहा है. इससे, ट्रांज़िशन का इस्तेमाल करने वाले नियम डिज़ाइनर के लिए, रिमोट कैश मेमोरी की बेहतर परफ़ॉर्मेंस और बिल्ड की स्पीड बढ़ाई जा सकती है.
- किसी दिए गए
--platformsके लिए, बिल्ड फ़्लैग अपने-आप सेट करना. - प्रोजेक्ट के लिए काम करने वाले फ़्लैग के कॉम्बिनेशन तय करना और bazelrcs सेट किए बिना, डिफ़ॉल्ट फ़्लैग के साथ टारगेट अपने-आप बनाना.
- बिल्ड फ़्लैग में बदलाव होने पर, बिल्ड के विश्लेषण को फिर से न करना.
प्रोजेक्ट 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 के रजिस्टर किए गए ट्रेडमार्क हैं