Bazel का रोडमैप

समस्या की शिकायत करें स्रोत देखें

खास जानकारी

आपकी ज़रूरतों को ध्यान में रखते हुए, 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 के एक्सटर्नल डिपेंडेंसी मैनेजमेंट की सुविधा को बेहतर बनाने के लिए कई बदलाव किए गए हैं. जैसे:

  • 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, मौजूदा नियमों और सब-रूल एपीआई को भी बेहतर बनाएगा. साथ ही, उन्हें 'एक्सपेरिमेंट नहीं है' के तौर पर मार्क करेगा.

स्टारलार्क में सुधार

  • सिंबलिक मैक्रो, मैक्रो लिखने का एक नया तरीका है. यह मैक्रो, BUILD, मैक्रो लेखक, और टूल के लिए काम का है. बैजल के पास लेगसी मैक्रो की तुलना में, सीमित जानकारी है. सिंबॉलिक मैक्रो से, लोगों को सामान्य गलतियों से बचने और सबसे सही तरीके लागू करने में मदद मिलती है.
  • पैकेज फ़ाइनलाइज़र, कस्टम पैकेज की पुष्टि करने वाले लॉजिक के लिए बेहतर सुविधाओं को जोड़ने का सुझाव दिया जाता है. इनका मकसद, native.existing_rules() का बहिष्कार करना है.

कॉन्फ़िगर करने की सुविधा

  • आउटपुट पाथ मैपिंग को स्थिर बनाया जा रहा है: ट्रांज़िशन का इस्तेमाल करने वाले रूल डिज़ाइनर के लिए, रिमोट कैश मेमोरी की बेहतर परफ़ॉर्मेंस का वादा किया जा रहा है और स्पीड को बेहतर बनाया जा रहा है.
  • दिए गए --platforms के हिसाब से, बिल्ड फ़्लैग अपने-आप सेट करें.
  • प्रोजेक्ट के साथ काम करने वाले फ़्लैग के कॉम्बिनेशन तय करें और bazelrcs सेट किए बिना डिफ़ॉल्ट फ़्लैग के साथ अपने-आप टारगेट तैयार करें.
  • हर बार बिल्ड फ़्लैग बदलने पर बिल्ड विश्लेषण को फिर से न करें.

प्रोजेक्ट स्काईफ़ोकस - रिटेन किए गए डेटा स्ट्रक्चर को कम से कम करना

बैजल के पास रैम में बहुत कुछ होता है, ताकि गेम तेज़ी से बढ़े. हालांकि, डेवलपर अक्सर सोर्स फ़ाइलों के एक छोटे सबसेट को बदल देते हैं (उदाहरण के लिए, कोई भी बाहरी डिपेंडेंसी आम तौर पर कभी नहीं होती). Skyफ़ोकस के साथ, Bazel को एक प्रयोग करने का मौका मिलेगा. इसकी मदद से, वह ग़ैर-ज़रूरी इंक्रीमेंटल स्थिति को कम कर पाएगा और Bazel की मेमोरी फ़ुटप्रिंट कम कर देगा. साथ ही, वह पहले जैसा ही तेज़ी से इंक्रीमेंटल (बढ़ने वाला) बिल्ड अनुभव देगा.

शुरुआती स्कोप का मकसद सिर्फ़ रिटेन की गई हीप मेट्रिक को बेहतर बनाना है. पीक हीप को कम करने की संभावना है, लेकिन इसे शुरुआती स्कोप में शामिल नहीं किया गया है.

अन्य सुविधाएं

  • मोबाइल इंस्टॉल v3, Android ऐप्लिकेशन को बार-बार डिप्लॉय करने का आसान और बेहतर तरीका है.
  • डेटा स्टोर करने की जगह की कैश मेमोरी और Bazel के install_base के लिए, कचरा इकट्ठा करने की सुविधा.
  • सैंडबॉक्सिंग ओवरहेड कम करता है.

Bazel-JetBrains* IntelliJ IDEA सहायता

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

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

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

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