स्टारलार्क रोडमैप

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 8.0 · 7.5 · 7.4 · 7.3 · 7.2

पिछली बार पुष्टि करने की तारीख: 21-04-2020 (अपडेट का इतिहास)

संपर्क करने के लिए ईमेल पता: laurentlb

लक्ष्य

हमारा लक्ष्य, Bazel को ज़्यादा बेहतर बनाना है. उपयोगकर्ताओं को अपने नियम आसानी से लागू करने चाहिए. साथ ही, उन्हें नई भाषाओं और टूल का इस्तेमाल करना चाहिए. हम इन नियमों को लिखने और उन्हें मैनेज करने के अनुभव को बेहतर बनाना चाहते हैं.

हम इन दो चीज़ों पर फ़ोकस करते हैं:

  • भाषा और एपीआई को आसान बनाएं, लेकिन साथ ही उसे बेहतर बनाएं.
  • कोड को पढ़ने, लिखने, अपडेट करने, डीबग करने, और टेस्ट करने के लिए बेहतर टूल उपलब्ध कराएं.

साल 2020 की दूसरी तिमाही

वेबसाइट को बेहतर बनाने और सबसे सही तरीके:

  • P0. बिना नाम वाले मैक्रो का इस्तेमाल न करें. साथ ही, पक्का करें कि नाम एक यूनीक स्ट्रिंग लिटरल हो. यह काम, Google के कोडबेस पर फ़ोकस करता है. हालांकि, इससे सार्वजनिक तौर पर उपलब्ध टूल पर असर पड़ सकता है.
  • P0. चुनिंदा और वैरिएबल के लिए, Buildozer के निर्देशों को भरोसेमंद बनाएं.
  • P1. Buildifier को उन सूचियों से डुप्लीकेट आइटम हटाने के लिए कहें जिन्हें हम टिप्पणियों की वजह से क्रम से नहीं लगाते.
  • P1. Buildifier linter को अपडेट करके, सामान्य एक्सप्रेशन को इनलाइन करने का सुझाव दें.
  • 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, और दस्तावेज़ों में सीएसएस स्टाइल को एक ही जगह पर इकट्ठा करना और कैननिकल बनाना
  • Bazel दस्तावेज़: दस्तावेज़ की पूरी साइट बनाने के लिए सीआई टेस्ट जोड़ें, ताकि समस्याएं न आएं.

साल 2020 की पहली तिमाही

वेबसाइट को बेहतर बनाने और सबसे सही तरीके:

  • bazel query की मदद से एक्सपोर्ट करने के लिए, टारगेट को अपने मैक्रो कॉल स्टैक को ट्रैक करने की अनुमति दें
  • --incompatible_no_implicit_file_export लागू करना
  • काम नहीं करने वाले depset API (#5817, #10313, #9017) हटाएं.
  • Buildifier में क्रॉस फ़ाइल विश्लेषक जोड़ें, बंद किए गए फ़ंक्शन की जांच लागू करें.

परफ़ॉर्मेंस:

  • Bazel के Java-based टेस्ट को दोगुना तेज़ बनाएं.
  • Starlark सीपीयू प्रोफ़ाइलर लागू करें.

तकनीकी क़र्ज़ कम करना:

  • काम न करने वाले आठ फ़्लैग हटाएं.
  • lib.syntax क्लीनअप का काम पूरा करें (डिपेंडेंसी हटाएं).
  • Starlark ऑप्टिमाइज़ेशन: फ़्लैट एनवायरमेंट, बाइटकोड कंपाइलेशन
  • अगर हो सके, तो विश्लेषण के चरण से सभी सीरियलाइज़ेशन मिटाएं
  • lib.packages को आसान बनाने/ऑप्टिमाइज़ करने के लिए प्लान बनाएं

कम्यूनिटी:

  • Bazel से जुड़े सभी शब्दों की परिभाषाओं वाली ग्लॉसरी पब्लिश करना