पुष्टि की गई: 21-04-2020 (अपडेट का इतिहास)
संपर्क जानकारी: laurentlb
लक्ष्य
हमारा लक्ष्य, Bazel को ज़्यादा एक्सटेंड करने लायक बनाना है. उपयोगकर्ता आसानी से अपने नियम लागू कर सकें. साथ ही, नई भाषाओं और टूल के साथ काम कर सकें. हम चाहते हैं कि इन नियमों को लिखने और बनाए रखने का अनुभव बेहतर हो.
हम दो बातों पर फ़ोकस करते हैं:
- भाषा और एपीआई को आसान और असरदार बनाएं.
- कोड को पढ़ने, लिखने, अपडेट करने, डीबग करने, और टेस्ट करने के लिए बेहतर टूल उपलब्ध कराना.
साल 2020 की दूसरी तिमाही
स्वास्थ्य और सबसे सही तरीके:
- P0. बिना नाम वाले मैक्रो को इस्तेमाल करने से बचें. साथ ही, पक्का करें कि नाम एक यूनीक स्ट्रिंग लिटरल हो. यह काम Google के कोडबेस पर फ़ोकस करता है. हालांकि, इससे सार्वजनिक तौर पर उपलब्ध टूलिंग पर असर पड़ सकता है.
- P0. Buildozer कमांड को, चुने गए विकल्पों और वैरिएबल के हिसाब से ज़्यादा भरोसेमंद बनाना.
- P1. Buildifier को उन सूचियों में मौजूद डुप्लीकेट आइटम हटाने के लिए कहें जिन्हें हम टिप्पणियों की वजह से क्रम से नहीं लगाते.
- P1. Buildifier लिंटर को अपडेट किया गया है, ताकि वह सामान्य एक्सप्रेशन को इनलाइन करने का सुझाव दे सके.
- P2. native.existing_rules के इस्तेमाल के उदाहरणों के बारे में जानें और विकल्प सुझाएं.
- P2. प्रेल्यूड फ़ाइल के इस्तेमाल के उदाहरणों के बारे में जानें और विकल्प सुझाएं.
परफ़ॉर्मेंस:
- P1. फ़्लैट एनवायरमेंट और बाइटकोड कंपाइलेशन का इस्तेमाल करके, Starlark इंटरप्रेटर को ऑप्टिमाइज़ करें.
तकनीकी कर्ज़ कम करना:
- P0. @bazel_tools के तहत, नेटिव सिंबल को Starlark में पोर्ट करने की सुविधा जोड़ी गई है.
- P1. अब इस्तेमाल नहीं किए जाने वाले फ़्लैग मिटाएं. इनमें से कुछ फ़्लैग अब भी Google में इस्तेमाल किए जाते हैं. इसलिए, हमें पहले कोडबेस को साफ़ करना होगा:
incompatible_always_check_depset_elements,incompatible_disable_deprecated_attr_params,incompatible_no_support_tools_in_action_inputs,incompatible_new_actions_api. - P1. पक्का करें कि Bazel 4.0 में इन फ़्लैग को फ़्लिप किया जा सकता हो:
incompatible_disable_depset_items,incompatible_no_implicit_file_export,incompatible_run_shell_command_string,incompatible_restrict_string_escapes. - P1. lib.syntax का काम पूरा करना (एपीआई क्लीनअप, Bazel से अलग करना).
- P2. Bazel के Java पैकेज में मामूली बदलाव करने पर, बिल्ड और टेस्ट में लगने वाले समय को 50% तक कम करें.
कम्यूनिटी:
rules_pythonचालू है और कम्यूनिटी इसका रखरखाव करती है.- rules_jvm_external के लिए लगातार सहायता (कोई भी पुल अनुरोध लंबित नहीं है, समस्या की जांच करना, रिलीज़ करना).
- Bazel के दस्तावेज़ों के इन्फ़्रास्ट्रक्चर को बनाए रखना: bazel-website, bazel-blog, और docs में सीएसएस स्टाइल को एक जगह पर इकट्ठा करना और कैननिकल बनाना
- Bazel के दस्तावेज़: e2e doc site build के लिए CI टेस्ट जोड़ें, ताकि रिग्रेशन को रोका जा सके.
साल 2020 की पहली तिमाही
स्वास्थ्य और सबसे सही तरीके:
- टारगेट को अपने मैक्रो कॉल स्टैक को ट्रैक करने की अनुमति दें, ताकि
bazel queryके ज़रिए एक्सपोर्ट किया जा सके --incompatible_no_implicit_file_exportलागू करना- डिपसेट एपीआई (#5817, #10313, #9017) को हटा दिया गया है.
- Buildifier में क्रॉस फ़ाइल ऐनलाइज़र जोड़ें और बंद किए गए फ़ंक्शन की जांच लागू करें.
परफ़ॉर्मेंस:
- Bazel के Java पर आधारित टेस्ट को दो गुना ज़्यादा तेज़ बनाता है.
- Starlark सीपीयू प्रोफ़ाइलर लागू करें.
तकनीकी कर्ज़ कम करना:
- काम न करने वाले आठ फ़्लैग हटाएं (उन्हें फ़्लिप करने के बाद).
- lib.syntax के क्लीनअप का काम पूरा करें (डिपेंडेंसी हटाएं).
- Starlark ऑप्टिमाइज़ेशन: फ़्लैट एनवायरमेंट, बाइटकोड कंपाइलेशन
- अगर हो सके, तो विश्लेषण के चरण से सभी सीरियलाइज़ेशन मिटाएं
- lib.packages को आसान बनाने/ऑप्टिमाइज़ करने के लिए प्लान बनाना
कम्यूनिटी:
- Bazel से जुड़े सभी शब्दों की परिभाषाओं वाली ग्लॉसरी पब्लिश करना